Authentication
To use the SDK, you need a public API key (beginning with pk_) to send data to Customer.io. If you upgrade from an earlier SDK version, or use in-app messaging with an SDK version before 5.1.0, you also need your Site ID.
Get your public key
You’ll use a public key, which starts with An integration that feeds data into Customer.io.pk_ and is shown in code samples as cdpApiKey, to initialize the SDK and send data to Customer.io. You’ll get this key when you set up your mobile app as a data in
- Go to Integrations.
- Select your Flutter integration in the Overview tab. If you don’t see a Flutter integration, you’ll need to set it up.
- Go to Settings and find your public key. It starts with
pk_. Copy this key into your initialization call. If you’re upgrading from a previous version of the SDK, you should set thesiteIdthat you used in previous versions as themigrationSiteIdin your config.
DARTCustomerIO.initialize( config: CustomerIOConfig( cdpApiKey: '<your CDP API Key>', //migrationSiteId is required if you're updating from a previous version migrationSiteId: '<your siteId>', region: Region.us, // Replace with Region.EU if your Customer.io account is in the EU. autoTrackDeviceAttributes: true, inAppConfig: InAppConfig(), ), );
Set up a new integration
If you don’t already have a public key, you’ll need to set up a new data in An integration that feeds data into Customer.io.
- Go to Integrations and click Add integration.
- Select Flutter.
- Enter a Name for your integration, like “My Flutter App”.
- Click the Copy and paste code tab. The code sample includes your public key (beginning with
pk_) ascdpApiKey. Copy this key and keep it handy; you’ll need it to initialize the SDK.
- Click Test connection to check that Customer.io receives data from your app, and then click Complete setup. If you aren’t ready to test your app yet, click Save for later.
Remember, you can also connect your Flutter app to services outside of Customer.io—like your analytics provider, data warehouse, or CRM.
Get your Site ID
If you’re upgrading from a previous version of the SDK, you set your Site ID as your migrationSiteId. The SDK uses it to send remaining tasks to Customer.io when your audience updates your app.
If you use an SDK version before 5.1.0, you also need your Site ID for InAppConfig. In 5.1.0 and later, the SDK uses your public key for in-app messages, so you can leave the Site ID out of InAppConfig().
-
Go to and select Workspace Settings in the upper-right corner of the Customer.io app and go to API and Webhook Credentials.
-
Copy the Site ID for the set of credentials that you want to send your in-app messages from. If you don’t have a set of credentials, click Create Tracking API Key.
-
Set this key as your
migrationSiteId. If you use an SDK version before 5.1.0, also pass it toInAppConfig.DARTCustomerIO.initialize( config: CustomerIOConfig( cdpApiKey: '<your API Key>', //required if you're updating from a previous version migrationSiteId: '<your siteId>', region: Region.us, // Replace with Region.EU if your Customer.io account is in the EU. autoTrackDeviceAttributes: true, inAppConfig: InAppConfig(siteId: '<your siteId>'), ), );
Securing your credentials
To simplify things, code samples in our documentation sometimes show API keys directly in your code. But you don’t have to hard-code your keys in your app. You can use environment variables, management tools that handle secrets, or other methods to keep your keys secure if you’re concerned about security.
To be clear, the keys that you’ll use to initialize the SDK don’t provide read access to data in Customer.io; they only write data to Customer.io. A bad actor who found your credentials can’t use your keys to read data from our servers.