Skip to main content

Use Case: Analytics, Push & Feedback

This guide covers the retention and measurement side of your app: tracking meaningful events, registering for push, measuring user sentiment with surveys, prompting for App Store reviews, and closing the feedback loop.

What You’ll Build


Step 1: Track Meaningful Events

Custom events power everything in AppDNA — analytics, experiment goals, survey triggers, in-app message triggers, and webhook payloads.

What to Track

Focus on events that represent meaningful user actions:

Event Design Guidelines

  • Use snake_case for event names and property keys
  • Include relevant properties (duration, type, count, category)
  • Don’t duplicate auto-tracked events — the SDK already tracks session, onboarding, paywall, billing, push, and experiment events
  • Events automatically include session ID, device info, and active experiment exposures
Custom events can be used as experiment conversion goals, webhook triggers, in-app message triggers, and survey triggers — all configured in the Console with no code changes.

Step 2: Set Up Push Notifications

Register for Push

Track Push Engagement

AppDNA pushes are tracked for you: the SDK records push_delivered and push_tapped (with the delivery id) for every push it handles — on iOS through its automatic notification handler, on Android through its messaging service and AppDNA.handlePushTap(intent), or your forwarding with AppDNA.push.handleMessage / handleTapData. Do not also track those pushes by hand, or they are counted twice. The manual calls below are only for pushes the SDK does not see (for example a push shown by another system), and they run in your app, not in a Notification Service Extension:

Handle Push Tap Callbacks

Route the user to the right screen when they tap a push notification:

Step 3: Measure Love Score with Surveys

Configure surveys in the Console to appear automatically based on events and conditions. For example:
  • NPS survey after 7 days of usage and 5+ sessions
  • CSAT survey after the user completes their 10th workout
  • Feedback prompt after a support interaction
No code needed for trigger-based surveys — they appear automatically.

Manual Trigger

For precise control over timing, present a survey manually:

Capture Survey Responses

Use the survey delegate to react to responses in real-time:

Step 4: Asking for a Store Review

Never ask how the user feels and then show the review dialog only to the ones who answered well. Apple’s App Store Review Guidelines and Google Play’s In-App Review policy both forbid it, and an app that does it risks rejection. The SDK will not do it: the two-step “Enjoying the app?” flow was removed, and the AppDNA Console refuses to generate an onboarding step that pairs a review request with a sentiment question.
Choosing when to ask is entirely allowed — the rule is about asking the user to declare a sentiment and branching on the answer, not about picking a good moment. Ask at a high point, and ask everyone who reaches it. There are exactly two shapes, and they are not interchangeable.

The OS review sheet, on a step the user has reached

Set Request store review on an onboarding step. The SDK asks the OS as the step appears. The step must be one the user leaves themselves: a step that advances on a timer walks out from under the sheet, and the Console refuses that combination. Nothing is reported back — neither store will say whether a prompt appeared, by design.

A button that opens the store listing

Give a button the rate_app action. It opens the app’s store page, where the user can write a review themselves. This is the only shape allowed on a tap: the OS sheet must never be requested in response to a button, which Apple names explicitly. A “Rate us” button wired to anything else asks for a review and then simply advances.
Rate-limited: the native store review dialog is requested at most 3 times per year, at least 90 days apart. The SDK enforces this on top of the OS’s own quota, and a request it cannot make does not count against it.

Step 5: Close the Feedback Loop

React to Feedback in Your App

Use survey callbacks to create follow-up experiences based on sentiment:

Connect Events to Push Campaigns

In the Console, you can target push campaigns based on user behavior and survey responses:
  • Send “We’ve improved based on your feedback” push to users who gave NPS <= 6
  • Send “Share with friends” push to users who gave NPS >= 9
  • Send re-engagement pushes to users who haven’t triggered workout_completed in 7 days
  • Send milestone congratulations for streak_achieved events
These campaigns are configured entirely in the Console under Retention > Push Campaigns — no code changes needed.

View Feedback in the Console

Survey responses flow into the Console dashboard automatically:
  1. Feedback > Love Score — NPS/CSAT trends over time
  2. Feedback > Responses — individual responses with sentiment analysis
  3. Feedback > Alerts — get notified when NPS drops below a threshold

Full Wired Example