The Customer.io integration includes two components:
Data Destination -- send Chameleon data to Customer.io (to use in sending other messaging, such as emails)
Data Source -- get Customer.io data (webhooks) into Chameleon (for targeting Tours and personalizing content)
You can also use custom webhooks to get data into Chameleon
To configure and use this integration, go to the Integrations page on the Chameleon Dashboard, and find the Customer.io integration option. Click "Configure" to send up your data flow, by enabling the 'Send Chameleon data to Customer.io' toggle.
This will then send Chameleon events automatically to Customer.io from the client-side.
The Customer.io code needs to be installed on the pages of your product where Chameleon Experiences are seen by end-users, and users need to be identified with the same ID as they are to Chameleon.
The events sent by Chameleon are:
Started Tour (Chameleon)
Completed Tour (Chameleon)
Exited Tour (Chameleon)
Step Seen (Chameleon) -- by request, to avoid flooding you with events.
Previewed Tour (Chameleon) -- for admins only
You can view this within your Customer.io account, on the Activity page:
Event properties sent as part of these events include the Tour name, URL, and others where relevant (e.g. Step number).
You can then use this activity by users to be a part of an event-triggered email campaign. You can also use these events as part of your Customer.io segments, which can then be further used for any notification or message you send via Customer.io.
For full details of all Chameleon data sent to Customer.io, use our schema Google Sheet:
You can send data from Customer.io to Chameleon in real-time using webhooks. There are three types of data you can update within Chameleon using incoming webhooks.
To set this up, start by visiting your Customer.io Integrations page, under Settings, and find the Webhooks option.
There will be two types available and you can use either or both to send data to Chameleon:
Reporting webhooks send data about message activity
Webhooks allow you to send a webhook to another service as part of a workflow or campaign.
In both cases, when setting up the webhook, you'll need the Endpoint URL and you can get this from the integration page in the Chameleon dashboard:
Use POST requests (to send data)
No specific Headers are required.
Authentication is built into the Endpoint URL (which contains your unique Chameleon account token)
If using a
uidkey (unique ID) for a user, ensure it matches the
uidbeing sent to Chameleon as part of your Chameleon installation
Any data/content can be added as properties within the webhook request Body
Our current integration is not set up to sync segments across the two tools, however, you can utilize Customer.io's API to do this.
Their documentation currently states that you can pull a list of people in a given segment using their
/v1/exports/customers endpoint in their API. Alternatively, you can create a segment-triggered campaign based on the segment, set the email inside to “Queue Draft” in the webhook, and then monitor the
email_drafted events for that
Note: The above is a modification of their API FAQ question #5, "Can I get a webhook when a customer gets added to a segment?". Please see Customer.io's API website for the most up-to-date endpoints and webhook information. Please let us know if you implement it differently and we should update our help article.
🔻 What fields can be sent to the webhook in the JSON payload?
The webhook can be configured to "set user properties" or "log an event" simply by using a different endpoint in the Chameleon REST API. For the case of sending user properties, you can send anything you would otherwise send to
For example, you could set a property when a user reaches a milestone in your application, such as
upsell_readiness_score, and use this as a filter within a Target Audience to show an Experience (e.g. prompting the user to book a sales meeting).
🔻 What fields cannot be sent to the webhook?
Certain attribute names are reserved. These include
created_at and are listed here.
While nested field two-levels deep are supported, further nesting (object within object within object) is not.
🔻 How do we map Customer.io User IDs to Chameleon UIDs?
Typically the 'User ID' (UID) you send to Chameleon (within the
chmln.identify call) is a Database ID and thus also used to identify users within Customer.io.
To check the UID being sent for any Chameleon user, open the developer console and enter