{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"redocly_category":"Products","product_name":"Engage Studio","type":"markdown"},"seo":{"title":"Push Events Table","description":"Treasure Data Product Documentation · Collect and Unify · Segment and Activate · Experiment and Analyze · Decisioning Automate with AI Scale and Trust.","siteUrl":"https://docs.treasuredata.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"push-events-table","__idx":0},"children":["Push Events Table"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Beta Feature"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Mobile Push is currently in beta. The schema and implementation details described in this document are provided as examples and may change. You should design your own table schema based on your specific tracking requirements and business needs."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you implement Mobile Push notifications with Engage Studio, your mobile app tracks user interactions and sends event data to Treasure Data. This data is stored in a dedicated table (recommended name: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["push_events"]},") within your Treasure Data database."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This document describes a sample schema, event types, and best practices for working with push notification event data. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The schema provided here is an example. You should customize it based on your application's requirements and data governance policies."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"table-schema","__idx":2},"children":["Table Schema"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sample-table-structure","__idx":3},"children":["Sample Table Structure"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Customize for Your Needs"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The table structure shown below is a sample implementation. Design your own schema based on:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your tracking requirements"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Data governance and privacy policies"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Analytics and reporting needs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Compliance requirements (GDPR, CCPA, etc.)"]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Column Name"},"children":["Column Name"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Data Type"},"children":["Data Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["INTEGER"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unix timestamp (seconds) when the event occurred"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Event type: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["delivery"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["open"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dismiss"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["link_open"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink_open"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_register"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["td_campaign_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Campaign identifier from Engage Studio (passed from notification payload)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["platform"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mobile platform: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["android"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ios"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fcm_token"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Firebase Cloud Messaging device token (required for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_register"]}," events)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User identifier (e.g., customer ID, email hash) if user is logged in"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Additional data (e.g., URL for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["link_open"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink_open"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["device_model"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Device model (optional enhancement)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["os_version"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Operating system version (optional enhancement)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["app_version"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["STRING"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Application version (optional enhancement)"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sample-table-creation-query","__idx":4},"children":["Sample Table Creation Query"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"-- Sample push_events table creation (customize for your needs)\nCREATE TABLE IF NOT EXISTS mobile.push_events (\n  time INTEGER,\n  type STRING,\n  td_campaign_id STRING,\n  platform STRING,\n  fcm_token STRING,\n  user_id STRING,\n  value STRING,\n  device_model STRING,\n  os_version STRING,\n  app_version STRING\n)\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"event-types","__idx":5},"children":["Event Types"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-delivery-event","__idx":6},"children":["1. Delivery Event"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logged when a push notification is successfully delivered and displayed to the user."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Type:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["delivery"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample Event:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"time\": 1734134400,\n  \"type\": \"delivery\",\n  \"td_campaign_id\": \"cmp_20251214_promo\",\n  \"platform\": \"android\",\n  \"user_id\": \"user_12345\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When Tracked:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onMessageReceived()"]}," is called in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MyFirebaseMessagingService"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS (foreground)"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["willPresent notification"]}," is called in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UNUserNotificationCenterDelegate"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS (background)"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["didReceiveRemoteNotification"]}," is called for a notification with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["content-available: 1"]},". This requires the app-side setup described in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-ios#enabling-delivery-and-dismiss-tracking-required-app-side-setup"},"children":["iOS Developer Guide"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-open-event","__idx":7},"children":["2. Open Event"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logged when a user taps on the notification to open the app."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Type:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["open"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample Event:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"time\": 1734134410,\n  \"type\": \"open\",\n  \"td_campaign_id\": \"cmp_20251214_promo\",\n  \"platform\": \"ios\",\n  \"user_id\": \"user_12345\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When Tracked:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": When notification is tapped and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MainActivity"]}," receives ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PushAction.OPEN"]}," intent"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["didReceive response"]}," is called with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UNNotificationDefaultActionIdentifier"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3-dismiss-event","__idx":8},"children":["3. Dismiss Event"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logged when a user dismisses (swipes away) the notification without opening it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Type:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dismiss"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample Event:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"time\": 1734134420,\n  \"type\": \"dismiss\",\n  \"td_campaign_id\": \"cmp_20251214_promo\",\n  \"platform\": \"android\",\n  \"user_id\": \"user_12345\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When Tracked:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deleteIntent"]}," is triggered in notification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["didReceive response"]}," is called with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UNNotificationDismissActionIdentifier"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4-link-open-event","__idx":9},"children":["4. Link Open Event"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logged when a user taps on a web URL link from the notification."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Type:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["link_open"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample Event:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"time\": 1734134430,\n  \"type\": \"link_open\",\n  \"td_campaign_id\": \"cmp_20251214_promo\",\n  \"platform\": \"android\",\n  \"user_id\": \"user_12345\",\n  \"value\": \"https://example.com/promo?utm_campaign=promo\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When Tracked:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": When action button with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PushAction.ACTION_LINK"]}," is tapped"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS"]},": When action button with identifier ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ACTION_OPEN_LINK"]}," is tapped"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}," field contains the full URL that was opened."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"5-deeplink-open-event","__idx":10},"children":["5. Deeplink Open Event"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logged when a user taps on an app deeplink from the notification."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Type:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink_open"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample Event:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"time\": 1734134440,\n  \"type\": \"deeplink_open\",\n  \"td_campaign_id\": \"cmp_20251214_promo\",\n  \"platform\": \"ios\",\n  \"user_id\": \"user_12345\",\n  \"value\": \"myapp://product/12345\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When Tracked:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": When action button with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PushAction.ACTION_DEEPLINK"]}," is tapped"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS"]},": When action button with identifier ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ACTION_OPEN_DEEPLINK"]}," is tapped"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}," field contains the deeplink URI."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"6-token-register-event","__idx":11},"children":["6. Token Register Event"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logged when the app registers or updates the FCM device token with Treasure Data."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event Type:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_register"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample Event:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"time\": 1734134400,\n  \"type\": \"token_register\",\n  \"fcm_token\": \"dQw4w9WgXcQ:APA91bF...\",\n  \"platform\": \"android\",\n  \"user_id\": \"user_12345\",\n  \"app_version\": \"1.2.3\",\n  \"os_version\": \"14\",\n  \"device_model\": \"Pixel 7\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When Tracked:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onNewToken()"]}," is called in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MyFirebaseMessagingService"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["iOS"]},": When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["didReceiveRegistrationToken"]}," is called in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MessagingDelegate"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Also triggered on app launch to ensure token is up-to-date"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For logged-in users, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," should be included"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For anonymous users, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," can be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," — it will be associated later when the user logs in"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"user-id-association","__idx":12},"children":["User ID Association"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"linking-tokens-to-users","__idx":13},"children":["Linking Tokens to Users"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_register"]}," event is crucial for linking device tokens to user identities. Here's how the association works:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"scenario-1-user-already-logged-in","__idx":14},"children":["Scenario 1: User Already Logged In"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a user installs the app and is already logged in (or logs in immediately):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"type\": \"token_register\",\n  \"fcm_token\": \"ABC123...\",\n  \"user_id\": \"user_12345\",\n  \"platform\": \"android\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The token is immediately associated with the user."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"scenario-2-anonymous-user-not-logged-in","__idx":15},"children":["Scenario 2: Anonymous User (Not Logged In)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a user installs the app but doesn't log in yet:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"type\": \"token_register\",\n  \"fcm_token\": \"ABC123...\",\n  \"user_id\": null,\n  \"platform\": \"android\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The token is registered but not yet linked to a user."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"scenario-3-user-logs-in-later","__idx":16},"children":["Scenario 3: User Logs In Later"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the previously anonymous user logs in, send a new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_register"]}," event:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"type\": \"token_register\",\n  \"fcm_token\": \"ABC123...\",\n  \"user_id\": \"user_12345\",\n  \"platform\": \"android\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Treasure Data can now link all previous events with this ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fcm_token"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_12345"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"name-resolution-query","__idx":17},"children":["Name Resolution Query"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To resolve anonymous tokens to users, use this query:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"WITH latest_tokens AS (\n  SELECT\n    fcm_token,\n    user_id,\n    time,\n    ROW_NUMBER() OVER (PARTITION BY fcm_token ORDER BY time DESC) AS rn\n  FROM mobile.push_events\n  WHERE type = 'token_register'\n    AND user_id IS NOT NULL\n)\nSELECT\n  fcm_token,\n  user_id\nFROM latest_tokens\nWHERE rn = 1\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"analytics-queries","__idx":18},"children":["Analytics Queries"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"campaign-performance-overview","__idx":19},"children":["Campaign Performance Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get delivery, open, and click rates for all campaigns:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"SELECT\n  td_campaign_id,\n  COUNT(CASE WHEN type = 'delivery' THEN 1 END) AS deliveries,\n  COUNT(CASE WHEN type = 'open' THEN 1 END) AS opens,\n  COUNT(CASE WHEN type = 'link_open' OR type = 'deeplink_open' THEN 1 END) AS clicks,\n  COUNT(CASE WHEN type = 'dismiss' THEN 1 END) AS dismissals,\n  ROUND(100.0 * COUNT(CASE WHEN type = 'open' THEN 1 END) / NULLIF(COUNT(CASE WHEN type = 'delivery' THEN 1 END), 0), 2) AS open_rate_pct,\n  ROUND(100.0 * COUNT(CASE WHEN type = 'link_open' OR type = 'deeplink_open' THEN 1 END) / NULLIF(COUNT(CASE WHEN type = 'delivery' THEN 1 END), 0), 2) AS click_rate_pct\nFROM mobile.push_events\nWHERE time >= CAST(strftime('%s', 'now', '-30 days') AS INTEGER)\nGROUP BY td_campaign_id\nORDER BY deliveries DESC\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"platform-comparison","__idx":20},"children":["Platform Comparison"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Compare performance between Android and iOS:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"SELECT\n  platform,\n  COUNT(CASE WHEN type = 'delivery' THEN 1 END) AS deliveries,\n  COUNT(CASE WHEN type = 'open' THEN 1 END) AS opens,\n  ROUND(100.0 * COUNT(CASE WHEN type = 'open' THEN 1 END) / NULLIF(COUNT(CASE WHEN type = 'delivery' THEN 1 END), 0), 2) AS open_rate_pct\nFROM mobile.push_events\nWHERE td_campaign_id = 'cmp_20251214_promo'\nGROUP BY platform\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"time-to-open-analysis","__idx":21},"children":["Time-to-Open Analysis"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Analyze how quickly users open notifications:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"WITH delivery_times AS (\n  SELECT\n    td_campaign_id,\n    user_id,\n    fcm_token,\n    time AS delivery_time\n  FROM mobile.push_events\n  WHERE type = 'delivery'\n),\nopen_times AS (\n  SELECT\n    td_campaign_id,\n    user_id,\n    fcm_token,\n    time AS open_time\n  FROM mobile.push_events\n  WHERE type = 'open'\n)\nSELECT\n  CASE\n    WHEN (o.open_time - d.delivery_time) < 60 THEN '< 1 minute'\n    WHEN (o.open_time - d.delivery_time) < 300 THEN '1-5 minutes'\n    WHEN (o.open_time - d.delivery_time) < 3600 THEN '5-60 minutes'\n    WHEN (o.open_time - d.delivery_time) < 86400 THEN '1-24 hours'\n    ELSE '> 24 hours'\n  END AS time_bucket,\n  COUNT(*) AS count\nFROM delivery_times d\nJOIN open_times o\n  ON d.td_campaign_id = o.td_campaign_id\n  AND d.user_id = o.user_id\n  AND d.fcm_token = o.fcm_token\nGROUP BY time_bucket\nORDER BY MIN(o.open_time - d.delivery_time)\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"most-clicked-links","__idx":22},"children":["Most Clicked Links"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Identify which links receive the most clicks:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"SELECT\n  td_campaign_id,\n  value AS clicked_url,\n  COUNT(*) AS click_count,\n  COUNT(DISTINCT user_id) AS unique_users\nFROM mobile.push_events\nWHERE type IN ('link_open', 'deeplink_open')\n  AND value IS NOT NULL\nGROUP BY td_campaign_id, value\nORDER BY click_count DESC\nLIMIT 20\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"daily-active-tokens","__idx":23},"children":["Daily Active Tokens"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Track daily active device tokens:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"SELECT\n  DATE(time, 'unixepoch') AS event_date,\n  platform,\n  COUNT(DISTINCT fcm_token) AS active_tokens\nFROM mobile.push_events\nWHERE time >= CAST(strftime('%s', 'now', '-30 days') AS INTEGER)\n  AND type IN ('delivery', 'open', 'link_open', 'deeplink_open')\nGROUP BY event_date, platform\nORDER BY event_date DESC, platform\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"user-engagement-funnel","__idx":24},"children":["User Engagement Funnel"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Analyze the engagement funnel for a specific campaign:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"WITH funnel_data AS (\n  SELECT\n    user_id,\n    MAX(CASE WHEN type = 'delivery' THEN 1 ELSE 0 END) AS delivered,\n    MAX(CASE WHEN type = 'open' THEN 1 ELSE 0 END) AS opened,\n    MAX(CASE WHEN type IN ('link_open', 'deeplink_open') THEN 1 ELSE 0 END) AS clicked\n  FROM mobile.push_events\n  WHERE td_campaign_id = 'cmp_20251214_promo'\n  GROUP BY user_id\n)\nSELECT\n  SUM(delivered) AS total_delivered,\n  SUM(opened) AS total_opened,\n  SUM(clicked) AS total_clicked,\n  ROUND(100.0 * SUM(opened) / NULLIF(SUM(delivered), 0), 2) AS open_rate_pct,\n  ROUND(100.0 * SUM(clicked) / NULLIF(SUM(opened), 0), 2) AS click_through_rate_pct\nFROM funnel_data\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"data-retention-and-archival","__idx":25},"children":["Data Retention and Archival"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"partition-strategy","__idx":26},"children":["Partition Strategy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For large-scale deployments, consider partitioning the table by date:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"-- Create monthly partitioned tables\nCREATE TABLE mobile.push_events_202512 AS\nSELECT * FROM mobile.push_events\nWHERE time >= 1733011200 AND time < 1735689600\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"archive-old-events","__idx":27},"children":["Archive Old Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Archive events older than 90 days to a separate table:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"CREATE TABLE mobile.push_events_archive AS\nSELECT * FROM mobile.push_events\nWHERE time < CAST(strftime('%s', 'now', '-90 days') AS INTEGER)\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then delete from the main table:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"DELETE FROM mobile.push_events\nWHERE time < CAST(strftime('%s', 'now', '-90 days') AS INTEGER)\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"best-practices","__idx":28},"children":["Best Practices"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-use-dedicated-table-for-push-events","__idx":29},"children":["1. Use Dedicated Table for Push Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Recommended:"]}," Store push notification events in a separate ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["push_events"]}," table."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Reason:"]}," Push events have a different schema from general app events (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event_app"]},"), making it easier to query and analyze."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-include-user-id-when-available","__idx":30},"children":["2. Include User ID When Available"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Always include ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," in events when the user is logged in. This enables:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["User-level analytics"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cross-device tracking"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Personalized campaign optimization"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3-batch-event-uploads","__idx":31},"children":["3. Batch Event Uploads"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Upload events in batches (up to 500 events per request) to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reduce network overhead"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Improve app performance"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure reliable delivery even with poor network conditions"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4-implement-retry-logic","__idx":32},"children":["4. Implement Retry Logic"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If event upload fails:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Keep events in local queue"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retry with exponential backoff"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Limit maximum retry attempts (e.g., 3-5 times)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"5-monitor-event-quality","__idx":33},"children":["5. Monitor Event Quality"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Regularly check for:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Missing required fields (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["td_campaign_id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["platform"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Duplicate events (same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["td_campaign_id"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fcm_token"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Abnormal event patterns (e.g., opens without deliveries)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"6-add-custom-fields-as-needed","__idx":34},"children":["6. Add Custom Fields as Needed"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enhance the schema with additional fields relevant to your business:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["device_model"]},": Track performance by device type"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["os_version"]},": Identify OS-specific issues"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["app_version"]},": Correlate events with app releases"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["location"]},": Geo-based analytics (ensure privacy compliance)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security-and-privacy","__idx":35},"children":["Security and Privacy"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"data-protection","__idx":36},"children":["Data Protection"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Do not log PII"]},": Avoid storing email addresses, phone numbers, or other personally identifiable information in events"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Hash user IDs"]},": Consider hashing user IDs before sending to Treasure Data"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use write-only keys"]},": Mobile apps should use write-only API keys, never master keys"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Encrypt in transit"]},": All data uploads use HTTPS"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"gdprprivacy-compliance","__idx":37},"children":["GDPR/Privacy Compliance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your app serves users in privacy-regulated regions:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Obtain user consent before tracking events"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Provide opt-out mechanisms"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Implement data deletion workflows"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Document data retention policies"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-documentation","__idx":38},"children":["Related Documentation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/marketing-cloud/engage-studio/channels/mobile-push/mobile-push-setup"},"children":["Mobile Push Setup"]}," - Configure Firebase and Treasure Data integration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-android"},"children":["Android Developer Guide"]}," - Implement push notifications on Android"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/marketing-cloud/engage-studio/channels/mobile-push/developer-guide-ios"},"children":["iOS Developer Guide"]}," - Implement push notifications on iOS"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/marketing-cloud/engage-studio/channels/mobile-push"},"children":["Campaign Creation"]}," - Create and send Mobile Push campaigns"]}]}]},"headings":[{"value":"Push Events Table","id":"push-events-table","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Table Schema","id":"table-schema","depth":2},{"value":"Sample Table Structure","id":"sample-table-structure","depth":3},{"value":"Sample Table Creation Query","id":"sample-table-creation-query","depth":3},{"value":"Event Types","id":"event-types","depth":2},{"value":"1. Delivery Event","id":"1-delivery-event","depth":3},{"value":"2. Open Event","id":"2-open-event","depth":3},{"value":"3. Dismiss Event","id":"3-dismiss-event","depth":3},{"value":"4. Link Open Event","id":"4-link-open-event","depth":3},{"value":"5. Deeplink Open Event","id":"5-deeplink-open-event","depth":3},{"value":"6. Token Register Event","id":"6-token-register-event","depth":3},{"value":"User ID Association","id":"user-id-association","depth":2},{"value":"Linking Tokens to Users","id":"linking-tokens-to-users","depth":3},{"value":"Scenario 1: User Already Logged In","id":"scenario-1-user-already-logged-in","depth":4},{"value":"Scenario 2: Anonymous User (Not Logged In)","id":"scenario-2-anonymous-user-not-logged-in","depth":4},{"value":"Scenario 3: User Logs In Later","id":"scenario-3-user-logs-in-later","depth":4},{"value":"Name Resolution Query","id":"name-resolution-query","depth":3},{"value":"Analytics Queries","id":"analytics-queries","depth":2},{"value":"Campaign Performance Overview","id":"campaign-performance-overview","depth":3},{"value":"Platform Comparison","id":"platform-comparison","depth":3},{"value":"Time-to-Open Analysis","id":"time-to-open-analysis","depth":3},{"value":"Most Clicked Links","id":"most-clicked-links","depth":3},{"value":"Daily Active Tokens","id":"daily-active-tokens","depth":3},{"value":"User Engagement Funnel","id":"user-engagement-funnel","depth":3},{"value":"Data Retention and Archival","id":"data-retention-and-archival","depth":2},{"value":"Partition Strategy","id":"partition-strategy","depth":3},{"value":"Archive Old Events","id":"archive-old-events","depth":3},{"value":"Best Practices","id":"best-practices","depth":2},{"value":"1. Use Dedicated Table for Push Events","id":"1-use-dedicated-table-for-push-events","depth":3},{"value":"2. Include User ID When Available","id":"2-include-user-id-when-available","depth":3},{"value":"3. Batch Event Uploads","id":"3-batch-event-uploads","depth":3},{"value":"4. Implement Retry Logic","id":"4-implement-retry-logic","depth":3},{"value":"5. Monitor Event Quality","id":"5-monitor-event-quality","depth":3},{"value":"6. Add Custom Fields as Needed","id":"6-add-custom-fields-as-needed","depth":3},{"value":"Security and Privacy","id":"security-and-privacy","depth":2},{"value":"Data Protection","id":"data-protection","depth":3},{"value":"GDPR/Privacy Compliance","id":"gdprprivacy-compliance","depth":3},{"value":"Related Documentation","id":"related-documentation","depth":2}],"frontmatter":{"seo":{"title":"Push Events Table"}},"lastModified":"2026-06-03T03:06:28.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/marketing-cloud/engage-studio/channels/mobile-push/push-events-table","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}