On this page: Systematically diagnose why your Live activities fail to appear, update, or end so you can resolve profile token, campaign configuration, payload, and delivery issues across both unitary and broadcast use cases.
Find your scenario find-your-scenario
Scenario 1: Profile or push token issues scenario-1-profile-or-push-token-issues
[Applies to both unitary and broadcast use cases]{class="badge informative"}
The trigger API accepts the request, but the Live activity does not appear. Common causes:
- Profile does not exist in Adobe Experience Platform.
- The required push token has not been synced to the profile: a Live activity push token on iOS or the standard FCM registration token on Android.
- Push-token details contain incorrect configuration, such as a wrong
appId, platform, or iOSattributeType.
For broadcasts: Sample several audience profiles to check token registration. On iOS, profile-token checks apply to remote start events, not channel-based update or end events. On Android, also verify the device’s FCM topic subscription using Scenario 6.
Verify that the profile exists
For iOS and Android, start with this check. For broadcasts, repeat it for several audience profiles.
- In Journey Optimizer, navigate to Customer
>Profiles. - Search using the namespace and identity value from your API request.
- If the profile is not found, either it does not exist or ingestion has not completed. Create the profile or wait for ingestion to complete before triggering the Live activity.
- If the profile is found, continue with the token checks for your platform.
Check the push token
Pre-checks
-
iOS app requirements:
- iOS 16.1+
NSSupportsLiveActivitiesset toYESinInfo.plistActivityAttributesproperly implemented.
-
Mobile SDK Integration:
- Adobe Experience Platform Mobile SDK (messaging SDK 5.11.0+)
Messaging.registerLiveActivitiesimplemented and called with Live activity push token.
Debugging steps
| accordion |
|---|
| 1. Check if Live activity push token is synced |
|
You can use Assurance to verify token registration:
You can also check in Adobe Experience Platform profile.
If no events are found, the app is not calling |
| accordion | |||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Validate token details on profile | |||||||||||||||||||||||
Validate each field:
If any field is incorrect, update the mobile app, re-register using If |
Pre-checks
-
Android app requirements:
- Run the app on Android 16.1 (API level 36.1) or later, with
targetSdkset to36. - Ensure that
POST_NOTIFICATIONSandPOST_PROMOTED_NOTIFICATIONSpermissions are granted. - Create the notification channel used by the Live activity.
- Run the app on Android 16.1 (API level 36.1) or later, with
-
Mobile SDK integration:
- Integrate the Adobe Experience Platform Mobile SDK with Messaging and the Live Activities extension.
- Forward the FCM registration token to the SDK using
MobileCore.setPushIdentifier(token).
Debugging steps
| accordion |
|---|
| 1. Verify FCM token registration |
|
Android uses the standard FCM registration token for Live activities. There is no
If the registration event or profile token is missing, verify that the app forwards the FCM registration token to the SDK using |
| accordion | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Validate token details on the profile | ||||||||||||||||||||
Validate each field:
If any field is incorrect, correct the app configuration as needed, forward the FCM token again using If |
Scenario 2: Campaign configuration and payload issues scenario-2-campaign-configuration-and-payload-issues
[Applies to both unitary and broadcast use cases]{class="badge informative"}
The profile exists and has valid tokens, but the Live activity does not appear. Possible causes:
- Wrong surface or channel configuration.
- Incorrect API payload structure.
- Payload fields do not match the app implementation: iOS
ActivityAttributesor the Android style-provider mapping. - Stale
timestamp(critical for update/end).
For broadcasts: The campaign must be API-triggered Marketing, not Transactional. The payload uses audience instead of recipients. See Scenario 6 for platform-specific broadcast payloads and Adobe Developer documentation for complete API specifications.
Pre-checks
- Confirm that the campaign is API-triggered Transactional (unitary) or API-triggered Marketing (broadcast). Keep High Throughput disabled because it is incompatible with Live activities.
- Verify that the profile exists and its tokens are synced using the iOS checks in Scenario 1.
Debugging steps
| accordion |
|---|
| 1. Verify campaign surface configuration |
|
| accordion | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Validate API payload structure | ||||||||||||||||||||||||||
|
When executing the campaign via API, ensure the payload follows the correct structure. Unitary payload:
Common payload issues:
Critical: Always use a fresh timestamp
Optional fields (all event types):
About
|
| accordion | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. Align payload with iOS implementation | |||||||||||||||||||||||||||||||
|
Ensure your API payload matches your iOS app’s Validate the mapping:
Validation checklist:
Common mistakes:
For more examples, refer to Create Live activity page. |
| accordion |
|---|
| 4. Test with Assurance |
|
Verify API execution and payload delivery using Assurance:
|
Pre-checks
- Confirm that the campaign is API-triggered Transactional (unitary) or API-triggered Marketing (broadcast). Keep High Throughput disabled because it is incompatible with Live activities.
- Verify that the profile exists and its FCM token is synced using the Android checks in Scenario 1.
Debugging steps
| accordion |
|---|
| 1. Verify campaign surface configuration |
|
| accordion | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Validate API payload structure | ||||||||||||||||||||||||||||||||
|
Place Android Live activity fields under Unitary start payload:
Replace the sample timestamp with the current Unix epoch time in seconds. The For broadcasts, use an API-triggered Marketing campaign with Common payload issues:
Timestamp and lifecycle checks:
End-event dismissal: For |
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. Align the payload with the Android implementation | |||||||||||||||||||||
|
The app’s style provider determines how
Common mistakes:
For more examples, refer to Create Live activities. |
| accordion |
|---|
| 4. Test with Assurance |
|
Use Assurance on a connected Android test device.
|
Scenario 3: Delivery failures and error analysis scenario-3-delivery-failures-and-error-analysis
[Applies to both unitary and broadcast use cases]{class="badge informative"}
In this scenario, all previous checks have passed:
- Profile exists with valid push tokens for the device platform.
- Campaign and payload pass the configuration checks.
- For iOS unitary update or end events, the per-instance update token is synced. Android does not require a separate update token.
If the Live activity still does not appear, update, or end, check campaign processing, delivery to the push provider (APNs on iOS or FCM on Android), and device-side behavior.
For broadcasts: Reports show metrics across all audience members. Some profiles may succeed while others fail.
Check campaign reports check-campaign-reports
For both iOS and Android, start with the campaign report. It shows whether Journey Optimizer attempted the send, excluded the profile, or hit an error.
-
Navigate to your Live activity Campaign.
-
Click the Reports button.
-
Select View all time report.
-
Check the Sending Statistics metrics to understand delivery success:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 Metric What it means What to look for Targeted Number of profiles qualified for the audience Should include your test profile Sends Total push notifications attempted Should match your API calls Delivered Reported delivery metric Compare with Sends; verify device rendering separately Send errors Push notifications that failed to send Investigate the error reasons Send exclusions Profiles excluded by Adobe Journey Optimizer Check if your profile was excluded -
If Send errors > 0, check the Error Reasons table. Use step 1 in the tab for your platform to interpret the errors.
-
If Send exclusions > 0, check the Excluded Reasons table:
table 0-row-3 1-row-3 2-row-3 3-row-3 Common exclusion Meaning Resolution Profile opted out User has opted out of notifications Check profile consent status Token denylisted Token marked as invalid Re-register the token (iOS) or forward the current FCM token (Android), or check denylist status Profile not eligible Profile does not meet campaign criteria Review campaign audience rules -
Review the Live activity lifecycle section:
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 Metric What to check Remote starts Should show count of API-triggered starts Updates Should show count of update events Ends Should show count of end events Totals count Overall Live activity event volume If these metrics are zero or do not match your API calls, investigate campaign processing and push provider delivery using the platform-specific checks below.
Learn more in the Live activity campaign report page.
Check delivery for your platform
Pre-checks
-
Previous scenarios validated:
- Profile exists with correct
liveActivityPushNotificationDetails. - Campaign surface and Activity type are correct.
- API payload is valid with a current timestamp.
- Update tokens are synced (unitary update and end events only).
- Profile exists with correct
-
API call confirmed:
- The trigger API accepted the request. This does not confirm delivery or device rendering.
- Campaign ID and recipient details are correct.
Debugging steps
| accordion | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. Interpret send errors | ||||||||||||||||||
|
Skip this step if the campaign report shows no send errors. Otherwise, match the error from the Error Reasons table to the following common APNs errors:
|
| accordion | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Check message feedback events in profile | ||||||||||||||||||
If |
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. Verify Live activity delivery to APNs in Assurance | |||||||||||||||||||||
|
| accordion |
|---|
| 4. Check device-side behavior |
|
If Adobe shows successful delivery but the device does not show the Live activity:
|
| accordion |
|---|
| 5. Escalation to Adobe Support |
|
If you have completed all steps and the issue remains unresolved, contact Adobe Customer Care with: Required information:
|
Pre-checks
-
Previous scenarios validated:
- Profile exists with valid
pushNotificationDetails, including the current FCM token, Android package name, andplatform: "fcm". - Campaign surface targets the correct Android app and uses the matching FCM credentials.
- The
fcmpayload is valid and itstimestampis newer than the previous event for the samenotification_id(ortopic_namefor broadcasts). - Start, update, and end events use the same
notification_id. Unitary events use the same FCM registration token; no separate update token is required.
- Profile exists with valid
-
API call confirmed:
- The API call returned HTTP 202 (accepted). This confirms request acceptance, not delivery or device rendering.
- Campaign ID and recipient details are correct. For broadcasts, verify the audience ID and FCM topic.
Debugging steps
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. Interpret send errors | |||||||||||||||||||||
|
Skip this step if the campaign report shows no send errors. Otherwise, match the error from the Error Reasons table to the following common FCM errors:
|
| accordion | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Check message feedback events in profile | ||||||||||||||||||
If |
| accordion |
|---|
| 3. Inspect FCM delivery in Assurance |
|
Use Assurance on a connected Android test device.
|
| accordion |
|---|
| 4. Check device-side behavior |
|
If Adobe shows successful delivery but the device does not display or update the Live activity:
|
| accordion |
|---|
| 5. Escalation to Adobe Support |
|
If you have completed all steps and the issue remains unresolved, contact Adobe Customer Care with: Required information:
|
Scenario 4: Live activity update token not synced scenario-4-live-activity-update-token-not-synced
[Applies to unitary use cases only]{class="badge informative"}
[Applies to iOS only]{class="badge positive"}
The Live activity starts on the device, but accepted update or end API requests do not update or dismiss it. A possible cause is that the per-instance Live activity update token has not synced to Adobe’s system. Complete the checks below to confirm whether token sync is the issue.
Understanding update tokens
When a Live activity starts on a device, iOS generates a unique update token for that specific Live activity instance. This token is required for:
- Sending updates to the Live activity
- Ending the Live activity remotely
Each Live activity instance has its own unique update token. Adobe needs this token to deliver update and end events.
Expected behavior
For update and end events to work, the following must occur:
- Live activity starts successfully on the device.
- Device generates an update token for that Live activity instance.
- Mobile SDK captures and sends the update token to Adobe.
- Update token is synced and stored in Adobe’s system.
- Subsequent API calls for update/end use this token for delivery.
Pre-checks:
- User permission: The first time a Live activity starts on a device, iOS displays a system prompt: “Allow [App Name] to provide Live activity updates?” The user must tap “Allow” for update tokens to be generated and synced. If the user taps “Do not Allow”, no update tokens are created and update/end requests will fail. This is a one-time permission per app.
- Profile and campaign validation: Complete Scenario 1 and Scenario 2 checks to ensure profile, tokens, and campaign configuration are correct.
Debugging steps
-
Open your Assurance session.
-
Ensure the session was active when the Live activity started on the device.
-
Filter or search for events with
eventType = "liveActivity.updateToken". -
Select the event and inspect the payload:
- Verify the
tokenfield contains a valid update token string. - Check the
liveActivityIDmatches your Live activity instance. - Confirm the
activityTypematches yourattributes-type.
- Verify the
-
If event is not found:
- The update token was not generated or captured by the SDK.
- Check whether the user granted Live activity permissions.
- Verify the Live activity actually started successfully on the device.
- Confirm the mobile SDK is properly integrated to capture update tokens.
-
If the event is found, proceed to step 2.
-
Navigate to Customer > Profiles in Journey Optimizer.
-
Search for and open the profile.
-
Select the Events tab.
-
Look for
liveActivity.updateTokenevents. -
Check the event details:
- Verify the timestamp is recent (matches when Live activity started).
- Confirm the
tokenandliveActivityIDare present. - Ensure the
activityTypeis correct.
-
If event is not found in profile:
- The update token event may not have been ingested to the profile yet.
- Wait 5-10 minutes and re-check.
- If still missing after 15 minutes, there may be an event ingestion issue.
-
If the event is found, the update token has been synced. Proceed to step 3.
-
In your Assurance session, execute an update or end API call.
-
In the Event List, look for Live activity delivery events (APNs push events).
-
Check for events indicating:
- Push notification sent to APNs.
- Response from APNs (success or error).
- Delivery confirmation.
-
If APNs delivery event is present: The push notification was sent. If the device still does not update, the issue may be on the device side (app not handling the push, network issues, etc.).
-
If APNs delivery event is missing: The update token may not be properly stored or associated with the profile in Adobe’s system.
-
If error events are present: Inspect the error details for specific failure reasons (invalid token, APNs rejected, etc.).
Scenario 5: Checking execution status via the API scenario-5-checking-execution-status-via-the-api
[Applies to unitary use cases only]{class="badge informative"}
After triggering a unitary Live activity, the GET Message Execution API returns the current state of the execution. Use it to confirm whether an execution is queued, in progress, completed, or failed — without waiting for the feedback event to land in the dataset.
The executionId is the message ID returned in the trigger response. For unitary executions, it is prefixed with HUOC-.
Endpoint and example request
Endpoint: GET https://cjm.adobe.io/imp/message/executions/{executionId}
curl --location 'https://cjm.adobe.io/imp/message/executions/HUOC-123456' \
--header 'x-gw-ims-org-id: <IMS_ORG_ID>' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'x-sandbox-name: <SANDBOX_NAME>' \
--header 'x-sandbox-id: <SANDBOX_UUID>' \
--header 'x-api-key: <API_KEY>'
HTTP response codes
Execution status values
The status field in a 200 response indicates execution progress:
PENDINGINPROGRESSCOMPLETEDFAILEDThe 200 response also returns executionType (unitary or batch), executionRunMode (default or test), and a source block with metadata (campaignId, journeyId, batchInstanceId, asset info) tying the execution back to the triggering campaign or journey.
Scenario 6: Broadcast campaign configuration and payload issues broadcast-config
[Applies to Broadcast use cases only]{class="badge informative"}
This section covers troubleshooting scenarios specific to broadcast Live activities, which require different debugging approaches than unitary campaigns.
When profiles have valid tokens but the Live activity does not appear, update, or behave as expected for audience members, the issue typically stems from one of the following:
- The campaign is not configured as API-triggered Marketing.
- The API payload is missing
audienceor the platform-specific broadcast identifier:input-push-channelon iOS ortopic_nameon Android. - Payload fields do not match the iOS
ActivityAttributesimplementation or the Android style-provider mapping. - The Apple push channel is incorrectly configured, or the Android device is not subscribed to the FCM topic.
This troubleshooting scenario applies to all Live activity events in broadcast campaigns: start, update, and end.
Pre-checks:
-
Campaign type:
- Verify that the campaign is created as API-triggered Marketing (required for broadcast/audience-based campaigns).
- Confirm that an audience is defined in the campaign configuration.
-
Profile and token validation: Sample multiple profiles from the audience to verify they have valid
liveActivityPushNotificationDetails. For detailed validation steps, follow Scenario 1.
Debugging steps
| accordion |
|---|
| 1. Verify campaign audience configuration |
|
| accordion | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Validate broadcast API payload structure | |||||||||||||||||||||||||||||
|
The broadcast payload structure differs from unitary campaigns. Verify that your payload follows the correct broadcast format. Required fields for broadcast:
Common payload issues:
Critical broadcast-specific fields:
Always use the latest timestamp:
Optional fields:
Refer to the Adobe Journey Optimizer Messaging API documentation for complete API specifications. |
| accordion | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. Align content-state, attributes, and input-push-channel with iOS implementation | |||||||||||||||||||||||||||||||
|
Ensure that the payload fields match your iOS app’s
Your custom
Include
Critical:
Key validation points:
Common mistakes:
|
| accordion |
|---|
| 4. Test with Assurance |
|
Verify API execution and payload delivery using Assurance:
|
Pre-checks:
- Campaign type: Verify that the campaign is API-triggered Marketing and has an audience defined.
- Profile and token validation: Sample several audience profiles to verify that they have valid
pushNotificationDetailswithplatform: "fcm". Follow the Android checks in Scenario 1. - Topic subscription: Confirm that the test device is subscribed to the FCM topic used for the broadcast.
Debugging steps
| accordion |
|---|
| 1. Verify campaign audience configuration |
|
| accordion | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2. Validate broadcast API payload structure | ||||||||||||||||||||||||||||||||
|
Android broadcasts use an FCM topic. Include Broadcast start payload example:
Replace the sample timestamp with the current Unix epoch time in seconds. Adapt the Common payload issues:
Critical broadcast-specific fields:
Timestamp and optional fields:
Refer to the Adobe Journey Optimizer Messaging API documentation for complete API specifications. |
| accordion | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3. Verify topic subscription and app rendering | |||||||||||||||||||||
Common mistakes:
See the Android broadcast payload example for additional fields and examples. |
| accordion |
|---|
| 4. Test with Assurance |
|
Use Assurance on a connected Android test device that is part of the audience and subscribed to the broadcast topic.
|
Scenario 7: Profile not in audience or stale audience snapshot scenario-7-profile-not-in-audience-or-stale-audience-snapshot
[Applies to Broadcast use cases only]{class="badge informative"}
In this scenario, the campaign and payload are correctly configured, but specific profiles are not receiving the Live activity. This typically occurs when:
- The profile is not a member of the audience linked to the campaign.
- The audience is a batch audience and contains an outdated snapshot of profile data.
- The profile’s push-token details (
liveActivityPushNotificationDetailson iOS orpushNotificationDetailson Android) were updated recently but have not been reflected in the audience snapshot yet.
This troubleshooting scenario applies specifically to broadcast campaigns using audience-based targeting.
Understanding audience evaluation
Adobe Experience Platform uses different audience evaluation methods that determine when profile updates are reflected in the audience:
Pre-checks
-
Campaign and payload validation:
- Complete the checks in Scenario 6 for your platform to ensure the campaign and payload are correct.
- Verify that the
audience.idin the API payload matches the campaign configuration.
-
Profile exists: Confirm that the profile exists in Adobe Experience Platform with valid push-token details. Follow the checks in Scenario 1. The details to look for depend on the platform:
- iOS:
liveActivityPushNotificationDetailswith a valid token. - Android:
pushNotificationDetailsthat includes the current FCM registration token, anappIdmatching the Android package name,platform: "fcm", anddenylisted: false.
- iOS:
-
Topic subscription (Android only): Confirm that the device is subscribed to the exact FCM topic specified in
topic_name. Audience membership does not subscribe the device to the topic. Follow the Android topic-subscription checks in Scenario 6.
Debugging steps
First, confirm whether the profile that should receive the Live activity is actually part of the audience.
-
Navigate to Audiences in Adobe Experience Platform.
-
Search for and open the audience using the
audience.idfrom your campaign. -
Click Browse or Sample profiles to view audience members.
-
Search for your test profile using the namespace and identity value.
-
If profile is not found in the audience:
- The profile does not meet the audience criteria or segment rules.
- Review the audience definition to understand the membership requirements.
- Update the profile data or audience definition to include the profile.
- Wait for audience evaluation to complete (see step 2).
-
If profile is found in the audience: Proceed to step 2 to check data freshness.
Identify whether the audience uses batch, streaming, or edge evaluation, as this determines data freshness.
| note |
|---|
| NOTE |
| Audience evaluation does not register push tokens or subscribe Android devices to FCM topics. It only determines which profile data the audience snapshot contains. |
-
On the Audience details page, check the Evaluation method:
- Batch: Evaluated once daily on a schedule.
- Streaming: Evaluated in real-time when profile updates occur.
- Edge: Evaluated at edge locations in real-time.
Follow the appropriate troubleshooting steps based on the evaluation method:
If the audience uses Batch evaluation:
-
Understand batch audience limitations:
- Batch audiences are evaluated once per day (typically overnight).
- The audience snapshot may be up to 24 hours old.
- If a profile recently registered or refreshed its push-token details (
liveActivityPushNotificationDetailson iOS orpushNotificationDetailson Android), the updated details may not be in the current snapshot. - Updates to profiles will not be reflected until the next batch evaluation.
-
Check when last evaluation occurred:
- In the audience details, look for the Last evaluation timestamp.
- If the profile’s push-token details were updated after this timestamp, the audience snapshot does not include the current token.
-
Resolve stale data:
-
Option 1: Wait for scheduled batch evaluation
- The next batch evaluation will include the updated profile data.
- This happens automatically once per day.
- Best for non-urgent scenarios.
-
Option 2: Trigger on-demand audience evaluation
- Navigate to Audiences in AEP.
- Select your audience.
- Click Evaluate now or Activate on demand.
- Wait for evaluation to complete (this can take several minutes to hours depending on audience size).
- Verify that the profile now has updated data in the audience snapshot.
- Retry the broadcast API call.
-
If the audience uses Streaming evaluation:
-
Understand streaming audience behavior:
- Streaming audiences evaluate in real-time when profile updates occur.
- New profiles: Qualify shortly after creation if they meet segment criteria.
- Updated profiles: Qualify or disqualify shortly after being updated.
- Existing unchanged profiles: Are not re-evaluated unless an update occurs.
-
Identify the issue:
- If a profile already exists and meets the segment criteria, but no update occurs on that profile, it may not be added to a newly created streaming audience.
- The profile must receive an update (any attribute change) to trigger re-evaluation.
-
Resolve the issue:
-
For new profiles: They automatically qualify if criteria are met. No action needed.
-
For existing profiles without recent updates:
- Make a minor update to the profile (for example, update a timestamp field).
- This triggers streaming evaluation and adds the profile to the audience.
- Alternative: Use a batch audience or edge audience for existing profiles.
-
Advanced: Debugging via dataset queries advanced-debugging-via-dataset-queries
message.feedback events in the AJO Message Feedback Event Dataset, with the same schema paths and feedbackStatus values shown below.sent status indicates hand-off to the push provider: APNs on iOS or FCM on Android.Audience: Developers and data engineers. Requires SQL access to Journey Optimizer datasets via Adobe Experience Platform Query Service.
When to use: Assurance is limited to test devices connected during an active session. Use dataset queries to investigate issues reported by production end-users, or to audit delivery history after the fact. The dataset exposes the same lifecycle and failure information as the Assurance plugin.
Locating the dataset
-
In Journey Optimizer, navigate to Data Management
>Datasets. -
Enable the Show system datasets toggle, and open AJO Message Feedback Event Dataset.
Note the exact table name shown on the detail page. The queries below use ajo_message_feedback_event_dataset, replace it with your actual table name if it differs. For the fields of this dataset, see the Adobe Journey Optimizer Schema Reference.
Query by Live activity ID
Use this when you know the Live activity ID (for example, an order UUID or shipment tracking ID) and want every feedback event tied to it across the full lifecycle.
SELECT
timestamp,
identitymap,
_experience.customerJourneyManagement
.messageDeliveryfeedback.feedbackStatus AS status,
_experience.customerJourneyManagement
.messageDeliveryfeedback.messageFailure.reason AS failure_reason,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.event AS la_event,
_experience.customerJourneyManagement
.messageExecution.campaignID AS campaign_id,
_experience.customerJourneyManagement
.messageExecution.batchInstanceID AS batch_id,
_id
FROM ajo_message_feedback_event_dataset
WHERE
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.liveActivityID
= '<YOUR_LIVE_ACTIVITY_ID>'
AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
Query by ECID
Use this when the affected profile’s ECID is known. Replace <YOUR_ECID> with the ECID value retrieved from the profile.
SELECT
timestamp,
_experience.customerJourneyManagement
.messageDeliveryfeedback.feedbackStatus AS status,
_experience.customerJourneyManagement
.messageDeliveryfeedback.messageFailure.reason AS failure_reason,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.event AS la_event,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.liveActivityID AS la_id,
_experience.customerJourneyManagement
.messageExecution.campaignID AS campaign_id,
_id
FROM ajo_message_feedback_event_dataset
WHERE
identityMap['ECID'][0].id = '<YOUR_ECID>'
AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
identityMap is a structured MAP type, not a string. Use the array and struct accessor syntax shown above. String functions such as LIKE will return a DATATYPE_MISMATCH error.identityMap. If the affected profile is identified by a custom namespace rather than ECID, resolve the ECID first: navigate to Profiles in AEP, search for the profile using the custom namespace and identity value, and retrieve the ECID from the profile’s identity details. Use that ECID value in the query above.feedbackStatus values
senterrorfailure_reason for detailsdenylistexcludedelayduplicatebouncela_event field, the dataset records remotestart, not start, for initial delivery events. Filter accordingly when querying by event type.Interpreting the sent status interpreting-the-sent-status
A feedbackStatus of sent confirms that Journey Optimizer successfully handed the notification to the push provider (APNs on iOS, FCM on Android). It does not confirm that the Live activity was rendered on the device.
The dataset does not confirm device rendering after hand-off to the push provider. Device-side failures, such as an OS restriction, a network drop between the provider and the device, or the 8-hour Live activity duration limit being reached on iOS, are not observable from the dataset.
If feedbackStatus is sent but no Live activity appears on the device, investigate behavior outside the Journey Optimizer delivery pipeline. Use Assurance or app-level logging, including logcat on Android, to diagnose device-side behavior.
This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page provides a systematic approach to diagnose why Live activities fail to appear, update, or end even when the API returns HTTP 200, covering profile and token, campaign configuration, payload, and delivery issues for unitary and broadcast use cases on iOS and Android.
Intents:
- Distinguish the unitary (API-triggered Transactional) and broadcast (API-triggered Marketing) debugging paths
- Verify profile existence and Live activity push token sync (Scenario 1)
- Validate campaign surface, Activity type, and API payload structure (Scenario 2)
- Analyze delivery failures via campaign reports and
message.feedbackevents (Scenario 3) - Diagnose unsynced iOS update tokens (Scenario 4) and check unitary execution status via the GET Message Execution API (Scenario 5)
- Troubleshoot broadcast payload and audience-freshness issues (Scenarios 6 and 7) and query the feedback dataset directly (Advanced)
Glossary:
-
pushNotificationDetails: The AEP profile attribute used for Android FCM registration-token details, includingappId,platform, anddenylisted(product-specific) -
topic_name: The FCM topic subscribed to by target Android devices for broadcast Live activities (product-specific) -
Push-to-start token: An iOS APNs token used for remote start; registered by the mobile SDK and stored on the AEP profile (product-specific)
-
Update token: A per-instance APNs token generated when an iOS Live activity starts; required for iOS unitary
updateandendevents. Android uses the same FCM registration token for start, update, and end; no separate update token is required (product-specific) -
input-push-channel: A unique channel identifier created on the Apple Developer Portal for iOS broadcast Live activities (product-specific) -
liveActivityData: A required property on the Adobe SDKLiveActivityAttributesprotocol; the iOS examples includeliveActivityIDfor unitary orchannelIDfor broadcast (product-specific) -
channelID: The value inliveActivityData.channelID; must exactly matchinput-push-channelfor iOS broadcasts (product-specific) -
attributeType / attributes-type: The name of the Swift
ActivityAttributesstruct; stored asattributeType(camelCase) on the profile and sent asattributes-type(hyphenated) in APS JSON — the same value in different representations (product-specific) -
liveActivityPushNotificationDetails: The AEP profile attribute that stores a device’s push-to-start token,appId,platform, andattributeType(product-specific) -
APS payload: The iOS JSON structure sent under
context.requestPayload.aps, containing the event,content-state, and control fields;attributesincludes the iOS struct fields for start events (product-specific) -
Assurance: A debugging tool limited to test devices connected during an active session; use dataset queries for production end-user diagnostics (product-specific)
-
topic_name(Android): The shared FCM topic through which subscribed devices receive broadcast events; the Android equivalent of iOSinput-push-channel -
notification_id(Android): Client-generated identifier for a Live activity instance; keep it unchanged across start, update, and end events to target the same instance -
timestamp(Android): Message ordering key, expressed in epoch seconds -
when(Android): Optional notification display time, expressed in epoch seconds; it does not control message ordering -
dismiss_after(Android): Used only for end events; specifies how many seconds the completed Live activity remains visible before removal
Guardrails:
-
Android audience membership does not subscribe a device to the FCM topic; verify topic subscription separately from audience evaluation.
-
Use API-triggered Transactional campaigns for unitary Live activities and API-triggered Marketing campaigns for broadcasts.
-
The High Throughput option must not be enabled, since it is incompatible with Live activity.
-
Assurance sessions are for test and QA devices only; end-user production devices are not connected to Assurance.
-
Android: unitary Live activities use the same regular FCM push token to start, update, and end, and no separate activity tokens are required; broadcast events reach subscribed devices through the shared FCM topic identified by
topic_name. -
Android
timestampmust strictly increase for every event with the samenotification_id(ortopic_namefor broadcasts); updates are displayed only if their timestamp is newer than the last processed value, and older or equal timestamps are ignored. -
Android
action_type/action_uriare not read by the current Android SDK. -
iOS requirements: a physical iOS device on iOS 16.1 or later; the Xcode Simulator supports local start only (remote push via APNs is not supported on Simulator); remote start from Assurance requires iOS 17.1 or later, a valid push-to-start token, and a valid channel configuration; Adobe Experience Platform Mobile SDK 5.11.0 or later.
-
Batch audiences may be up to 24 hours stale (batch evaluation, once daily); this audience-freshness risk is not applicable to unitary use cases.
-
The first time a Live activity starts on a device, iOS shows a one-time permission prompt; the user must tap “Allow” for update tokens to be generated and synced.
-
For iOS broadcasts,
input-push-channelmust exactly matchliveActivityData.channelID; a mismatch causes delivery failures. -
For iOS, a
feedbackStatusofsentconfirms hand-off to APNs only, not device rendering; device-side failures and the 8-hour Live activity duration limit are not observable from the dataset.
Terminology:
- Canonical name: API Triggered Campaign — Acronym: n/a — campaign types used for Live activities: API-triggered Transactional (unitary), API-triggered Marketing (broadcast)
- Synonyms: “attributeType” = “attributes-type” (the same value; camelCase on the profile, hyphenated in APS JSON)
- Do not confuse:
input-push-channel(in the iOS APS payload) ≠liveActivityData.channelID(in the iOS attributes); their values must match for broadcasts. - Do not confuse: “Push-to-start token” (starts an iOS Live activity, stored on the profile) ≠ “Update token” (updates or ends an iOS unitary instance, per instance)
- Do not confuse: “Unitary” (API-triggered Transactional, individual profile) ≠ “Broadcast” (API-triggered Marketing, audience segment)
- Do not confuse: execution statuses “
PENDING” ≠ “INPROGRESS” ≠ “COMPLETED” ≠ “FAILED” - Do not confuse:
feedbackStatus“sent” ≠ “error” ≠ “exclude” ≠ “delay” - Do not confuse: “
timestamp” (iOS: the current Unix epoch time in seconds for every call; Android: the ordering key that must strictly increase pernotification_idortopic_name) ≠ “when” (Android: optional notification display time that does not control ordering) - Do not confuse:
la_eventvalue “remotestart” (recorded in the dataset for initial delivery) ≠ “start” (theeventfield value in the payload)
FAQ:
- Q: Why does the API return 200 OK but the Live activity does not appear? — A successful response (200 OK) does not guarantee the Live activity appears; the delivery can fail at multiple points, from API request validation through device rendering, so work through Scenarios 1 to 3.
- Q: Can I use Assurance for production end-user devices? — No; Assurance sessions are for test and QA devices only. For production diagnostics, use the dataset queries.
- Q: Why do update and end calls fail after the Live activity started? — The per-instance update token may not be synced; the user must have tapped “Allow” on the one-time permission prompt for update tokens to be generated (Scenario 4).
- Q: How do I check execution status programmatically? — Use the GET Message Execution API; for unitary executions the
executionIdis prefixed withHUOC-, and thestatusfield returnsPENDING,INPROGRESS,COMPLETED, orFAILED. - Q: What does a
feedbackStatusofsentmean on iOS? — It confirms Journey Optimizer successfully handed the notification to APNs; it does not confirm that the Live activity was rendered on the device. - Q: Why are some audience members not receiving a broadcast? — The profile may not be in the audience, or a batch audience snapshot may be up to 24 hours stale; trigger on-demand evaluation or ensure a streaming update occurs (Scenario 7).
Personas:
- marketer: Can open the Reports button on a Live activity Campaign and select View all time report to check Sending Statistics metrics. Can review the Live activity lifecycle section for Remote starts, Updates, Ends, and Totals count figures. The page states that if Send errors are greater than 0, check the Error Reasons table. Where: “Check campaign reports”.
Onboarding:
- Level: Intermediate
- First minimal step: Navigate to Customer, then Profiles, in Journey Optimizer to search for a profile using the namespace and identity value from the API request.
- Success check: The profile is found, and you can continue with the token checks for your platform.
- Previous: Creating the Live activity message before triggering it: Create a Live activity message (mobile-live/create-mobile-live.md)
- Next: Learning more about Live activity campaign reporting metrics: Campaign Live activity report (reports/campaign-global-report-cja-activity.md)