Skip to main content

Apps & Multi-Platform Tracking

Apps allow you to track users across different platforms (web, iOS, Android) with separate SDK keys while managing everything in one place.

What are Apps?

Apps represent different platforms or properties where you track users:

  • Web App: Your website or web application
  • iOS App: Your iOS mobile application
  • Android App: Your Android mobile application

Each app gets a unique SDK key for tracking, while all data flows into your Joryio organization.

Why Use Multiple Apps?

Track Across Platforms

See which users engage with your web app vs mobile apps:

User Journey:
1. Visits website (Web App)
2. Signs up on web
3. Downloads iOS app
4. Makes purchase on iOS

Segment by Platform

Target users based on platform usage:

Target: Users who have used iOS app but NOT Android app
Campaign: "Try our Android app"

Analyze Platform Performance

Compare metrics across platforms:

Web App:
- 10,000 active users
- 50,000 events/day
- Most used feature: Export

iOS App:
- 5,000 active users
- 25,000 events/day
- Most used feature: Camera

Creating an App

Step 1: Navigate to Apps

  1. Go to Settings → Apps
  2. Click Create App

Step 2: Configure App

  • Name: Descriptive name (e.g., "My Website", "iOS App")
  • Platform: Choose web, iOS, or Android

Step 3: Get Your SDK Key

After creation, you'll receive a unique SDK key:

jry_sdk_web_abc123...     (Web)
jry_sdk_ios_def456... (iOS)
jry_sdk_android_ghi789... (Android)
SDK Key Format

SDK keys include the platform in the key itself for easy identification.

Using SDK Keys

import JoryioSDK from '@joryio/web-sdk';

const joryio = new JoryioSDK({
sdkKey: 'jry_sdk_web_abc123...' // Your web app SDK key
});

Automatic App Metadata

All events tracked through an SDK automatically include app metadata:

{
"eventName": "Page Viewed",
"properties": {
"page": "/pricing",
// Automatically added:
"$app_id": "app_123",
"$app_name": "My Website",
"$platform": "web",
"$session_id": "session_456"
}
}

This enables powerful segmentation by app/platform.

App Analytics

View analytics for each app:

  1. Go to Settings → Apps
  2. Click View Analytics for an app

Metrics Available

Overall Stats:

  • Total events tracked
  • Active users (last 30 days)
  • Last event timestamp

Events Over Time:

  • Daily event volume
  • Trend analysis

Top Events:

  • Most frequently tracked events
  • Event counts and percentages

Segment by App Usage

Create segments with the App / site usage filter (operators: used app / did not use app). Because an app already implies its platform, you target platforms by picking the matching app(s):

Example 1: Mobile-Only Users

Used app "iOS App"
AND
Did NOT use app "My Website"

Example 2: Cross-Platform Users

Used app "My Website"
AND
Used app "iOS App"

Example 3: App-Specific Behavior

Used app "iOS App"
AND
Performed "Order Completed" within last 30 days

Use for: Encourage mobile app adoption, platform-specific messaging

Managing Apps

View All Apps

Settings → Apps shows all your apps with:

  • App name and platform
  • SDK key (with copy button)
  • Creation date
  • Quick actions

Edit App

  1. Click app name or edit icon
  2. Update the name
  3. Click Save
Cannot Change Platform

The platform type cannot be changed after creation. Create a new app if needed.

Regenerate SDK Key

If an SDK key is compromised:

  1. Click Regenerate Key for the app
  2. Confirm the action
  3. Update your application with the new key
Breaking Change

Regenerating an SDK key immediately invalidates the old key. Update your app before regenerating!

Delete App

  1. Click Delete for the app
  2. Confirm deletion
Data Impact

Deleting an app:

  • Invalidates the SDK key (tracking stops)
  • Events already ingested remain in your analytics store
  • Cannot be undone

Best Practices

1. One App Per Platform

Create separate apps for each platform:

Good

  • "My Website" (web)
  • "iOS App" (iOS)
  • "Android App" (Android)

Bad

  • "All Platforms" (web) - mixing platforms

2. Descriptive Names

Use clear, recognizable names:

Good: "Production Web App", "iOS - App Store" Bad: "App 1", "Test"

3. Secure SDK Keys

  • Never commit SDK keys to public repositories
  • Use environment variables
  • Regenerate if exposed
// Good: Use environment variables
const joryio = new JoryioSDK({
sdkKey: process.env.JORYIO_SDK_KEY
});

// Bad: Hardcoded key
const joryio = new JoryioSDK({
sdkKey: 'jry_sdk_web_abc123...'
});

Common Use Cases

1. Platform-Specific Campaigns

Send targeted messages based on platform:

Segment: iOS users who haven't updated in 30 days
Campaign: "New features in latest iOS app update"

2. Cross-Platform Analytics

Compare user engagement across platforms:

Query: How many users are active on both web and mobile?
Segment: Has used platform "web" AND has used platform "ios"

3. Platform Migration

Encourage users to try other platforms:

Segment: Active web users who haven't downloaded mobile app
Campaign: "Take us on the go - download our mobile app"

4. Platform-Specific Features

Track feature usage by platform:

Event: Feature Used
Properties: { feature: "camera", platform: "ios" }

Analysis: Camera feature only available on mobile

Multi-App User Journey

Track users across their entire journey:

Timeline for user_123:

Day 1 (Web App):
- Signup Completed
- Profile Created
- Viewed Pricing

Day 3 (iOS App):
- App Installed
- Login
- First Purchase

Day 7 (Web App):
- Login
- Settings Updated

Day 14 (Android App):
- App Installed
- Login
- Feature Used

All tracked automatically with app metadata!

Security & Access Control

SDK Key Permissions

SDK keys (client-side) can only:

  • Track events
  • Identify users
  • Send user attributes
  • Cannot access other organization data
  • Cannot send campaigns
  • Cannot delete users

API Key Permissions

API keys (server-side) are managed under Settings → API Keys and carry the permissions you grant them, which can include:

  • All SDK operations
  • Campaign management
  • User queries
  • Analytics access
Never Use API Keys in Client Code

API keys should only be used server-side. Use SDK keys for client-side tracking.

Troubleshooting

Events Not Showing Up

Check SDK key is correct:

// Enable debug mode
const joryio = new JoryioSDK({
sdkKey: 'jry_sdk_web_...',
enableDebug: true // See logs in console
});

Verify app is active:

  • Go to Settings → Apps
  • Check app status
  • Confirm SDK key matches

Analytics Not Updating

Analytics update in real-time but may have a few seconds delay:

  • Check "Last Event" timestamp
  • Verify events are being tracked
  • Try refreshing the page

Cross-Platform User Matching

Users are matched by:

  1. User ID (if identified)
  2. Anonymous ID (before identification)

Ensure you identify users consistently across platforms:

// Web
joryio.identify('user_123');
joryio.setAttributes({
email: 'user@example.com',
name: 'John Doe'
});

// iOS (same user ID)
Joryio.shared.identify("user_123")
Joryio.shared.setAttributes([
"email": "user@example.com",
"name": "John Doe"
])

Next Steps