Quick Start Guide
UpdatedBefore you can take advantage of our SDK, you need to install the module(s) you want to use, initialize the SDK, and understand the order of operations.
Prerequisites
Before you start, you’ll need two keys. See Authentication you don’t have them, or don’t know where to find them.
- Your sourceAn integration that feeds data into Customer.io—a source of data. API Key (sometimes referenced as a
CDP_API_KEY
). - Your Site IDEquivalent to the user name you’ll use to interface with the Journeys Track API; also used with our JavaScript snippets. You can find your Site ID under Settings > Workspace Settings > API Credentials to initialize the
MessagingInApp
package.
1. Create an Android Source
Before you can integrate your app, you need to tell Customer.io that you have an Android app. This is what we call a sourceAn integration that feeds data into Customer.io—a source of data..
Your source provides the API key you’ll use to initialize the SDK.
- Go to Data & Integrations > Integrations and click Add Integration.
- Select Android.
- Enter a Name for your integration, like “My Android App”.
- We’ll present you with a code sample containing a
cdpApiKey
that you’ll use to initialize the SDK. Copy this key and keep it handy. - Click Complete Setup to finish setting up your integration.
Now the Integrations page shows that your Android integration is connected to your workspace. You can also connect your Android integration to other services if you want to send your mobile data to other places outside of Customer.io—like your analytics provider, data warehouse, or CRM.
2. Install and Initialize the SDK
Use the instructions below to install and initialize the SDK. We’ve based the code samples for these steps on sample apps in our Android SDK repository. Check out the samples directory to see complete working examples for both Kotlin and Java.
- Before you add Customer.io dependencies, update your repositories in your
build.gradle
orsettings.gradle
file.android { repositories { google() mavenCentral() } ... }
- Add Customer.io packages as dependencies in your
build.gradle
file.dependencies { implementation "io.customer.android:datapipelines:4.5.3" implementation "io.customer.android:messaging-push-fcm:4.5.3" implementation "io.customer.android:messaging-in-app:4.5.3" }
Initialize the
CustomerIOBuilder
in yourApplication
class, so you can access it from any part of your application using theinstance()
method. Within the builder, you can add and configure modules.If you’re in our EU region, make sure that you set
Region.EU
.- (Optional) Add and configure the
MessagingInApp
module. You’ll need your Site ID. This tells the SDK which Customer.io workspace your messages come from. - (Optional) Add the
MessagingPushFCM
module to send push notifications.
class MainApplication : Application() { @Inject lateinit var preferences: PreferenceRepository override fun onCreate() { super.onCreate() // Step 3 CustomerIOBuilder( applicationContext = this, cdpApiKey = "your_cdp_api_key" ).apply { // If you're in the EU, set Region.EU region(Region.US) // Step 4: optional, support in-app messages // Again, if you're in the EU, set Region.EU addCustomerIOModule( ModuleMessagingInApp( config = MessagingInAppModuleConfig.Builder( siteId = "your_site_id", region = Region.US ).setEventListener(InAppMessageEventListener()).build() ) ) // Step 5: optional, support push notifications addCustomerIOModule(ModuleMessagingPushFCM()) build() } } }
Add a way to
identify
people. While we support anonymous events, most of Customer.io’s features rely on identified people.We’ve provided an example from our sample apps. You’ll find our sample apps in the SDK’s
/samples
directory. They can help you better understand how to implement our SDK.private fun login( email: String, name: String, isGuest: Boolean = false, onLoginSuccess: () -> Unit ) { viewModelScope.launch(Dispatchers.IO) { userRepository.login(email = email, name = name, isGuest = isGuest) CustomerIO.instance().identify( userId = email, traits = mapOf("name" to name, "is_guest" to isGuest) ) CustomerIO.instance().track( name = "login", properties = mapOf("name" to name, "email" to email) ) withContext(Dispatchers.Main) { onLoginSuccess.invoke() } } }