Skip to main content
Supported on: Android SDK 1.0.33+
You can A/B test this survey with no extra code — create an experiment on it in the Console and the SDK serves the assigned variant automatically. See Servable Surface Experiments.
The surveys module lets you collect user feedback through in-app surveys. Surveys can trigger automatically based on events (like in-app messages) or be presented manually from your code.

How It Works

Surveys are configured in the Console with content, question types, and trigger rules. Like in-app messages, they can appear automatically when trigger conditions are met — no code required for trigger-based surveys.

Present a Survey Manually

The SDK uses the foreground Activity captured at configure time to launch its internal SurveyActivity. If the survey ID is unknown or the config hasn’t loaded, the call is a no-op and an SDK log line explains why.

Module Access

Module Methods

9 Question Types

Question types and their content are defined entirely in the Console. The SDK renders them automatically based on the survey configuration.

Smart Review Prompting

The SDK supports a two-step review-prompt flow: an in-app screener routes happy users to the Google In-App Review dialog and unhappy users to a feedback form. Configure the prompt in the Console under Feedback → Review Prompts and target it like any other survey — the SDK presents it automatically when trigger conditions match.

AppDNASurveyDelegate

All 3 methods on this delegate fire from SurveyManager alongside the analytics events. Register your delegate via AppDNA.surveys.setDelegate(...).
  • onSurveyPresented(surveyId) — fires when the survey view appears (alongside the survey_shown event).
  • onSurveyCompleted(surveyId, responses) — fires when the user submits the final question. responses is a List<SurveyResponse> (one entry per answered question with questionId + the raw answer), suitable for forwarding to your own analytics or CRM.
  • onSurveyDismissed(surveyId) — fires when the user closes the survey before completing it (back button, swipe-to-dismiss, outside tap).
Implement the delegate to capture survey responses and lifecycle events:

SurveyResponse

Cast answer to the type matching the question (see Question Types).

Example Implementation

Rich Media

Survey questions support rich media content configured in the Console:
  • Header images — add images above survey questions
  • Icons in options — use icon references in choice options (Lucide, Material, or emoji)
  • Thank-you animations — Lottie or confetti effects on survey completion
  • Haptic feedback — triggered on option selection and submission
See the Rich Media guide for details on supported formats.

Auto-Tracked Events

Full Example

Surveys are created in the Console under Feedback > Surveys. Trigger-based surveys appear automatically — manual presentation with present() is for precise control over timing.