Amplitude's Guides and Surveys Android SDK enables you to deploy Guides and Surveys in your Android applications.
The Guides and Surveys Android SDK requires:
Add the following dependencies to your application's build.gradle.kts
file:
dependencies {
// Amplitude Engagement SDK
implementation("com.amplitude:amplitude-engagement-android:1.0+")
// Amplitude Analytics SDK (required dependency)
implementation("com.amplitude:analytics-android:1.+")
}
import com.amplitude.android.engagement.AmplitudeEngagement
import com.amplitude.android.engagement.AmplitudeInitOptions
// Initialize the SDK
val amplitudeEngagement = AmplitudeEngagement(
context = applicationContext,
apiKey = "YOUR_API_KEY",
options = AmplitudeInitOptions()
)
// Add the plugin to your Amplitude instance
val amplitude = Amplitude(applicationContext)
amplitude.add(amplitudeEngagement.getPlugin())
Parameter | Type | Description |
---|---|---|
apiKey |
string |
Required. API key of the Amplitude project you want to use. |
initOptions.serverZone |
EU or US |
Optional. Sets the Amplitude server zone. Set this to EU for Amplitude projects created in EU data center. Default: US |
initOptions.logLevel |
LogLevel.None or LogLevel.Error or LogLevel.Warn or LogLevel.Verbose or LogLevel.Debug . |
Optional. Sets the log level. Default: LogLevel.Warn |
initOptions.locale |
string |
Optional. Sets the locale for localization. Default: undefined . Not setting a language means the default language is used. |
// Basic boot with user ID
amplitudeEngagement.boot(userId = "USER_ID")
// Advanced boot with options
val bootOptions = AmplitudeBootOptions(
user = AmplitudeEndUser(
userId = "USER_ID",
deviceId = "DEVICE_ID",
userProperties = mapOf("key" to "value")
)
)
amplitudeEngagement.boot(bootOptions)
Required for screen targeting and the Time on Screen trigger.
// Track screen views to trigger guides based on screens
amplitudeEngagement.screen("HomeScreen")
Pin and tooltip guides require the ability for the SDK to target specific elements on screen.
Use Amplitude Engagement's .amplitudeView
modifier to tag Jetpack Compose views. Pass your instance of AmplitudeEngagement
as a parameter to .amplitudeView
. Configure a CompositionLocalProvider
and access it in your view hierarchy or pass your instance as a parameter to your composable views.
// Jetpack Compose Tagging
@Composable
fun MyView() {
// Use your instance of Amplitude Engagement by creating a Composition context or passing as a param
val engagement = LocalEngagement.current
Box() {
Button(modifier = Modifier.amplitudeView(engagement, "my-button"))
}
}
Guides and Surveys also supports non-Jetpack Compose views. The SDK uses the tag
, contentDescription
, or resourceName
fields to check for a matching selector. You need to set only one of these.
Configure this in your existing layout XMLs or programmatically by setting the properties on the view instance.
<!-- in my_layout.xml -->
<LinearLayout>
<Button
<!-- Set either contentDescription or tag to your desired selector -->
android:contentDescription="my-button"
android:tag="my-button" />
</LinearLayout>
// Non Jetpack Compose Programmatic Tagging
val button = Button(this)
// Set the contentDescription
button.contentDescription = "my-button"
// Or, set the tag
button.tag = "my-button"
Configure the visual theme mode if your app supports light and dark modes.
// Set the theme mode
amplitudeEngagement.setThemeMode(ThemeMode.DARK) // Options: LIGHT, DARK, SYSTEM
Reset a guide or survey to a specific step.
amplitudeEngagement.reset(key = "GUIDE_KEY", stepIndex = 0)
Parameter | Type | Description |
---|---|---|
key |
string |
Required. The guide or survey's key. |
stepIndex |
number |
Required. The zero-based index of the step to reset to. Defaults to the initial step. |
Retrieve a list of all live guides and surveys along with their status.
val guidesAndSurveys = amplitudeEngagement.list()
Display a specific guide or survey. Ignores any targeting rules and limits except for page targeting.
amplitudeEngagement.show(key = "GUIDE_KEY")
Parameter | Type | Description |
---|---|---|
key |
string |
Required. The guide or survey's key. |
If you don't use the plugin, but want to trigger Guides using events, call forwardEvent
with any events want to use as triggers.
// Forward events from Amplitude to trigger guides
val event = BaseEvent()
amplitudeEngagement.forwardEvent(event)
Close all active guides and surveys.
amplitudeEngagement.closeAll()
To use preview mode to test a guide or survey in your app, configure a custom URL scheme.
In Amplitude, navigate to your Project's settings.
On the General tab, locate the URL scheme (mobile) field. Copy its value, for example, amp-abc123
.
Add the following intent filter to the main activity to your project's AndroidManifest.xml
file:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Add your URL scheme from Amplitude Dashboard here -->
<!-- ex: android:scheme="amp-12345" -->
<data android:scheme="<your-unique-scheme-id>" />
</intent-filter>
</activity>
// In your Activity
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
amplitudeEngagement.handlePreviewLinkIntent(intent)
}
June 23rd, 2025
Need help? Contact Support
Visit Amplitude.com
Have a look at the Amplitude Blog
Learn more at Amplitude Academy
© 2025 Amplitude, Inc. All rights reserved. Amplitude is a registered trademark of Amplitude, Inc.