Skip to content


This article provides several Web SDK troubleshooting scenarios.

Impressions are lower than expected

Triggers take time to sync to the device on session start; this can result in a race condition if users log an event or purchase right after starting a session. One potential workaround could be changing the campaign to trigger off of session start, then segmenting off the intended event or purchase. Note that this would deliver the in-app message on the next session start after the event has occurred.

Expected in-app message did not display

Most in-app message issues can be broken down into two main categories: delivery and display. To troubleshoot why an expected in-app message did not display on your device, you should first ensure that the in-app message was delivered to the device, then troubleshoot message display.

In-app message delivery

The SDK requests in-app messages from Braze servers on session start. To check if in-app messages are being delivered to your device, you’ll need to ensure that in-app messages are being both requested by the SDK and returned by Braze servers.

Check if messages are requested and returned

  1. Add yourself as a test user on the dashboard.
  2. Set up an in-app message campaign targeted at your user.
  3. Ensure that a new session occurs in your application.
  4. Use the event user logs to check that your device is requesting in-app messages on session start. Find the SDK Request associated with your test user’s session start event.
    • If your app was meant to request triggered in-app messages, you should see trigger in the Requested Responses field under Response Data.
    • If your app was meant to request original in-app messages, you should see in_app in the Requested Responses field under Response Data.
  5. Use the event user logs to check if the correct in-app messages are being returned in the response data.

Troubleshoot messages not being requested

If your in-app messages are not being requested, your app might not be tracking sessions correctly, as in-app messages are refreshed upon session start. Also, be sure that your app is actually starting a session based on your app’s session timeout semantics:

The SDK request found in the event user logs displaying a successful session start event.

Troubleshoot messages not being returned

If your in-app messages are not being returned, you’re likely experiencing a campaign targeting issue:

  • Your segment does not contain your user.
    • Check your user’s Engagement tab to see if the correct segment appears under Segments.
  • Your user has previously received the in-app message and was not re-eligible to receive it again.
    • Check the campaign re-eligibility settings under the Delivery step of the Campaign Composer and make sure the re-eligibility settings align with your testing setup.
  • Your user hit the frequency cap for the campaign.
  • If there was a control group on the campaign, your user may have fallen into the control group.
    • You can check if this has happened by creating a segment with a received campaign variant filter, where the campaign variant is set to Control, and checking if your user fell into that segment.
    • When creating campaigns for integration testing purposes, make sure to opt out of adding a control group.

In-app message display

If your app is successfully requesting and receiving in-app messages, but they are not being shown, some device-side logic may be preventing display:

  • Triggered in-app messages are rate-limited based on the minimum time interval between triggers, which defaults to 30 seconds.
  • If you have custom in-app message handling through braze.subscribeToInAppMessage or appboy.subscribeToNewInAppMessages, check that subscription to ensure it is not affecting in-app message display.
New Stuff!