Skip to main content
Supported on: iOS SDK 1.0.61+
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

Module Access

Module Methods

8 Question Types

Surveys support the following question types, configured in the Console:
Question types and their content are defined entirely in the Console. The SDK renders them automatically based on the survey configuration.

AppDNASurveyDelegate

All 3 methods on this delegate fire from SurveyManager alongside the existing 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 the public [SurveyResponse] array (one entry per answered question with questionId + answer), suitable for forwarding to your own analytics or CRM.
  • onSurveyDismissed(surveyId:) — fires when the user closes the survey before completing it (X button, swipe-to-dismiss, outside tap).
Implement the delegate to capture survey responses and lifecycle events:

SurveyResponse

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, SF Symbols, 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 cases where you want precise control over timing.