Filters
Log In
Book demo
Start trial
Get Started
Get Started
Welcome to Customer.io
Quick Start Guide
1. Create your workspace
2. Set up message channels
3. Integrate with Customer.io
4. Add people
5. Send events and make segments
6. Start sending campaigns and workflows
Journeys
Journeys
Getting Started
People
Objects & non-people data
Segmentation
Campaigns & Workflows
Message Channels
Liquid & Personalization
Metrics
Integrations
Integrations
Get Started
Data In
Data Out
APIs
Pipelines API
Track API
App API
Reporting Webhooks
Comparing the Pipelines and Track APIs
Mobile SDKs
Android
iOS
Flutter
React Native
Expo
Account Verification
Billing
Your Account
Workspaces
Privacy & Security
AI Features
AI Features
Use Customer.io with AI
Using our docs with AI
AI Segment Builder
Email content analysis
In-app message suggestions
Releases
Releases
Get Started
Welcome to Customer.io
Quick start guide
Academy: Structured Learning
1. Create your workspace
2. Set up message channels
3. Integrate with Customer.io
4. Add people
5. Send events and make segments
6. Start sending campaigns and workflows
Journeys
Introduction to Journeys
People & Events
Manage people & their attributes
People and their profiles
Add or update people
How to identify people
Manage customer attributes
Manage devices
Resolve duplicate people
What's the Last Visited field, and how do I use it?
Delete people and suppress profile IDs
Export a person's data
Export data for multiple people
Storing and using JSON
Events
Import people or events via CSV
Find people & data
Searching and filtering people
Filter Activity Logs
Using your Data Index
How do I know what data I have available?
Anonymous data
Anonymous people
Anonymous activity
Merging anonymous activity
Anonymous events
How do I create multiple subscription types?
Shortcuts to external services
Objects & non-people data
Overview: Objects vs Collections
Objects
Objects: how they work
Objects: video tutorials
Object types
Objects
Relationships
Import objects or relationships via CSV
Export objects or relationships via CSV
Objects and relationships in campaigns
Use objects in liquid
Objects use cases
Upsell: monetize power users
Adoption: drive feature usage
Awareness: announce events
Conversion: activate people on your event waitlist
Collections
Segmentation
How segments work
Build segments with AI
Data-driven segments
Manual Segments
Segment mobile device audiences
Ad Audiences
Timestamp Conditions
Using JSON in segments
Timestamp Conditions FAQ
Timestamp Rules for Building Segments
Why don't people match 'within the past X days' conditions?
Setting Up Segments for Specific Purposes
Design Studio
Beta
Welcome to Design Studio!
Manage your files
Create & review emails
Keyboard shortcuts
Style your messages
Set global styles
Dark mode
Responsive styles
Visual editor
Get started
Style individual messages
Add & preview liquid
Code editor
Get started
Validate your email
Transformers
MJML framework
CSS inlining
Formatting
Set URL parameters for a single message
CSS cleanup
CSS variables
Accessibility fixes
Use Emmet syntax
Use MSO syntax
Preview email in Design Studio
Manage connected messages
Connect an email to an automation
Edit connected messages & publish changes
Disconnect an email from an automation
Create reusable content
Understand components
Add components to your message
Understand and style standard components
Custom components
How to create & edit a component
Create a component from scratch
Create modifiable, placeholder content
Style custom components
Delete a component
Syntax
Understand syntax
Add conditionals & directives
Loop through data
Create a stylesheet
Migrate components from Parcel
Collaborate with teammates
How to collaborate
Submit & manage feedback
Manage version history
Send a test message
WhatsApp templates
Campaigns & Workflows
Campaigns, broadcasts, and transactional messages
Tags
Campaigns
Campaign concepts & settings
Campaign journeys
Create a campaign
Campaigns page
Triggers, filters, and frequencies
When to use filters
Goals & conversion criteria
Exit conditions
Schedule a campaign
Change the state of a campaign
Troubleshoot campaigns
Why aren't people entering my campaign?
Why aren't people receiving my message?
Edit live campaigns
Edit triggers, filters, or frequencies
Edit goals
Edit workflows
Webhook-triggered campaigns
Webhook campaigns
Send event
Batch update
Follow up on NPS responses
Sync customers from Stripe to Customer.io
Campaign for syncing Mixpanel cohorts
Slack notification for support tickets
Grace periods
Campaign recipes
Our Recipe Book
Send a Welcome Email
Birthday and Anniversary Campaigns
Cart Abandonment
Double Opt-In
Onboarding Campaign
Optimize emails with Just Words
Trial expiration reminders
Cohort tests
Trigger campaigns based on Roles
RSS Feed Email Campaign
Reminders for multiple upcoming trips
Broadcast & newsletters
Introduction to broadcasts
Newsletters
API-triggered broadcasts
Personalize messages with trigger data
Format API-Triggered Broadcasts
Edit live API-triggered broadcasts
Common API-Triggered Broadcast errors
Transactional messages
Getting started: key concepts
Set up a transactional email
Set up a transactional push
Set up a transactional SMS
Transactional examples
Common transactional API errors
Frequently Asked Questions
Campaigns with transactional messages
Workflow builder
Workflow builder
LLM actions: Generate data & decisions with AI
Send event
Batch update
Conditions
Holdout tests
A/B tests
Copy workflow items
Attribute Updates
Create or update person
Set journey attributes
Fix typos in attributes
Reformat timestamp attributes
Branches/flow control
Types of branches
Multi-Split Branches
Random Cohorts
True/False Branches
Exit Blocks
Delays
Time Window
Wait Until...
Randomized delay
Webhooks
Send and receive data with webhook actions
Configure reusable webhooks
Send in-app messages using webhooks
Web push with webhooks
Send direct mail with Lob
Message sending
Default sending settings
Sending behavior options
Queue Draft for Campaign QA
Geolocation and time zone data
Recommended send time
Send messages in users' time zones
Supported time zone formats
Message Limits
Message Channels
Email
Email: Getting Started
Transitioning to Customer.io as a sender
Introduction to Creating Emails
Test your emails
Email Attachments
Deliverability
Email Deliverability Best Practices
Domain Authentication
Delete a domain
Domain warming
Track links with your domain
IP addresses: shared vs dedicated
Spamhaus blocklist listings
Email suppression lists
Google Postmaster Tools
Custom unsubscribe links (RFC 8058)
Authenticating for Apple Private Email Relay
Verify deliverable email addresses with Kickbox
Custom SMTP
Use Your Own SMTP Server
Using Multiple SMTP servers
Use your Mailgun Account
Use your Mailjet Account
Use your Mandrill Account
Use your Postmark Account
Use your SendGrid Account
Use your Sparkpost Account
Use your Oracle Dyn Account
Editors
Choose the right email editor
Drag-and-Drop Emails: The Basics
Drag-and-Drop Editor FAQ
Troubleshooting Your Drag-and-Drop Emails
Email code editor
Design & layouts
Introduction to Email Layouts
Customizing Email Layouts
Archiving Old Layouts
HTML and CSS Email vs. Web
CSS pre-processing
AMP for email
Adding a view in browser link
Resources for templates, code, and best practices
Adapting Foundation's Basic template
Adapting MailChimp's Two-Column template
Senders & headers
How do I add an avatar/logo to my emails?
Set Custom Email Headers
Set custom preheader/preview text
What does the Fake BCC option do?
Create multiple from addresses
Email Recipes
Welcome Email Copy
Gmail Promotions
Send data from Customer.io to Salesforce, Highrise or another CRM
Code editor: send Trustpilot reviews
Push Notifications
Get started
Integrate your app
Migrate from another provider
Registering device tokens
Send push notifications
Custom push payloads
Test push notifications
Push metrics and message statuses
Best practices for push notifications
Frequently Asked Questions
Troubleshooting mobile issues
SMS
Get Started
Send SMS/MMS messages
Link shortening
Inbound messages
Getting started
Inbound statuses and activities
Respond to inbound keywords
Senders
Tracking
Frequently Asked Questions
Smart character encoding
Opt-out keyword handling
Validate Mobile Phone Numbers
Register as a sender
Getting a phone number
Update your privacy policy for SMS
Opt-in and out flow
Brand and campaign registration
What kind of phone number do I need?
HIPAA compliance and privacy regulations
Web & In-App Messages
Get started
Set up your website
Send in-app messages
Global styles for in-app messages
Anonymous messages
Notification Inbox
Set up your notification inbox
Send inbox messages
Trigger inbox messages from your backend
Inbox message metrics
Forms and Surveys
Forms
Lead capture
Surveys
Inline messages
Multi-step messages
In-app metrics
Test your messages
Localize messages
In-App FAQ
Recipes for your website
NPS Surveys
Promotions and offers
Promote upcoming event
Milestones and achievements
Feature adoption
Message editor reference
The visual editor
In-app component reference
Legacy in-app editor
WhatsApp
Get Started
Create content templates
Send a WhatsApp Message
WhatsApp metrics and reporting
Frequently Asked Questions
LINE messaging
Get Started
Send messages
LINE metrics and reporting
Slack Messages
Get Started
Languages & localization
Translate your messages
Set up your localization attribute
Track metrics for translations
Links in messages
Link Tracking
Checking Link Status
Adding URL parameters to links
Track universal links and app links in email
HTTPS Link Tracking
Subscription preferences
Overview of subscription options
Global unsubscribes
The subscription center
Brand your subscription pages
Subscription FAQs
Manage subscription preferences
Subscription preference metrics
Multi-language support for the subscription center
Migrate subscription preferences
Set preferences outside of the subscription center
Send from a personal support rep
Find messages using the Message Library
Assets library: store files
Image requirements
Message Statuses
Deliveries & Drafts data
Liquid & Personalization
Personalize messages with liquid
Liquid upgrade
Liquid syntax list
Liquid recipes
Personalize actions with JavaScript
Reusing content with snippets
Composer errors
Metrics
Metrics Overview
Goals
Campaign and Broadcast Metrics
Home dashboard
Workspace Performance dashboard
Analysis page & reports
Email deliverability metrics
Understanding your A/B test results
Getting conclusive results from A/B tests
Failed and attempted messages
Integrations
Integration Directory
Get Started
Quick start guide
Understanding Integrations in Customer.io
Troubleshooting
Data Compliance and Privacy
Data In
Introduction
Source Specs
Understanding incoming data
Identify
Group
Page
Screen
Track
Alias
Common fields
Custom events
Semantic Events
Understanding Semantic Events
A/B Test events
Customer.io events
Ecommerce Events
Email events
Live chat events
Mobile App Lifecycle Events
Video playback events
Backfill historical data
Proxying requests to Customer.io
Connections
Customer.io API
Journeys Message Metrics
Mobile App Sources
Forms
Get started
Formstack
Jotform
Squarespace
Typeform
Unbounce
Webflow
Wordpress with WPForms
Custom JS integrations
Facebook Lead Ads
Use form data in Customer.io
Forms API (backend integrations)
Edit or disconnect forms
JavaScript
Getting Started
JavaScript Frameworks
Method Reference
Migrate from another service
Managing identities
Cookies and identity management
Utility Methods and Performance
In-app messages
Notification inbox
Content Security Policy (CSP)
Proxying the JavaScript client
Legacy JavaScript
Get started
Identify people
Track and page events
In-app messages
Content Security Policy (CSP)
Track API integrations
Add a Classic Track API integration
Advanced: transform data
Invalid Track API Requests
HubSpot
Beta
Getting Started
Map HubSpot data to Customer.io
Filter incoming data
Deleting Data
HubSpot forms
Reverse ETL
About Reverse ETL
Amazon Redshift
Google BigQuery
Microsoft SQL Server
MySQL
PostgreSQL
Snowflake
Legacy integrations
Reverse ETL Overview
Amazon Redshift
Google BigQuery
Microsoft SQL server
MySQL
PostgreSQL
Snowflake
Salesforce
Getting Started
Map Salesforce data to Customer.io
Map data to other services
Scheduled syncs
Deleting Data
API Call Calculator
Servers
Node.js
Python
Go
Customer Data Platforms
Segment
Segment data-in (classic)
Rudderstack
mParticle (Legacy)
Webhook-based integrations
Using Zapier with the Track API
Zoho integration
Hubspot integration
Data Out
Getting Started
Add a data-out integration
Actions
Action triggers: code mode
Database/Warehouse Integrations
Introduction
Standard integrations
Advanced Integrations
Filtering and mapping actions
Resend past data
Connections
Actable Predictive
Adobe Target
Algolia Insights
Amazon Redshift
Amazon Redshift (Advanced)
Amazon S3
Amazon S3 (Advanced)
Amplitude
Amplitude (Message Metrics)
Attio
Azure blob storage
Bing Ads
Braze
Braze Cohorts
Clevertap
Close
CommandBar
Cordial
Criteo Audiences
Customer.io
Facebook Conversions API
Friendbuy
FullStory
Gainsight PX
Google Ad Conversions
Google Ads (Gtag)
Google Analytics
Google BigQuery
Google BigQuery (Advanced)
Google Cloud Storage
Google Cloud Storage (Advanced)
Google Sheets
Google Tag Manager (GTM)
Heap
HubSpot
Intercom
Koala
LaunchDarkly
LiveLike
LogRocket
Meta (Facebook) Pixel
Metronome
Mixpanel
Mixpanel (Message Metrics)
Moengage
MS Azure Blob Storage (Advanced)
Pinterest Conversions
Pipedrive
PlayerZero
Qualtrics
Reporting Webhooks
Ripe
Rudderstack (legacy)
Salesforce
About this integration
Sent messages as tasks
Frequently Asked Questions
SalesWings
Segment
Segment (Message Metrics)
SendGrid Marketing Campaigns
Slack
Snowflake
Snowflake (Advanced)
Sprig
Talon.One
TikTok Conversions
Twilio
Twilio Engage Messaging
Twilio Studio
Twitter Pixel
Visual Website Optimizer (VWO)
Webhooks
Wisepops
Yandex
Zendesk
API Reference
About our APIs
Comparing the Pipelines and Track APIs
Pipelines API
Track API
App API
Design Studio: HTML best practices
Journeys Webhooks
Mobile SDKs
iOS
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Swift 6
Troubleshooting
Identify and Track Users
Identify people
Track events
Screen tracking
Mobile Lifecycle events
Anonymous activity
Location tracking
Push Notifications
Set up push notifications
Set up rich push
App Groups for push tracking
Deep Links
Push metrics
Sound in push notifications
Provisional Push
Push service certificates
Test your push implementation
In-App Messages
Set up in-app messaging
Inline in-app messages
Page rules
In-app event listeners
Notification inbox
What's New
4.x -> 4.4.0
3.x -> 4.0.0
3.x -> 3.13.0
3.x -> 3.9.0
2.x -> 3.x
1x -> 2.x
Changelog
iOS
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Troubleshooting
Identify and Track Users
Identify people
Track events
Screen tracking
Mobile Lifecycle events
Anonymous activity
Push Notifications
Set up push notifications
Set up rich push
Deep Links
Push metrics
Sound in push notifications
Provisional Push
Push service certificates
Test your push implementation
In-App Messages
Set up in-app messaging
Inline in-app messages
Page rules
In-app event listeners
What's New
3.x -> 3.13.0
3.x -> 3.9.0
2.x -> 3.x
1x -> 2.x
Changelog
iOS
Get Started
Identify people
Track events
Push notifications
Rich push notifications
In-app messages
Test support
Changelog
iOS
Get Started
Identify people
Track events
Push notifications
In-app messages
Test support
Update from 2.10 to 2.11
Migrate from an earlier version
Troubleshooting
Changelog
Android
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Troubleshooting
Identify and Track Users
Identify people
Screen tracking
Mobile Lifecycle events
Anonymous activity
Track events
Location tracking
Push Notifications
Push notifications
Deep Links
Channel
Push service certificates
Test your push implementation
In-App Messages
In-app messages
In-app event listeners
Inline in-app messages
Page rules
Notification inbox
What's New
4.x -> 4.10
3.x -> 4.x
2.x -> 3.x
Changelog
Android
Get Started
Identify people
Track events
Push notifications
In-app messages
Test support
Migrate from an earlier version
Troubleshooting
Changelog
Android
Get Started
Identify people
Track events
Push notifications
Rich push notifications
Test support
Migrate from an earlier version
Changelog
React Native
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Troubleshooting
Identify and Track Users
Identify people
Track events
Screen tracking
Mobile Lifecycle events
Anonymous activity
Location tracking
Push notifications
Set up push notifications
App Groups for push tracking
Deep Links
Handling Multiple Push Providers
Capture Push Metrics
Android channels
In-App Messages
Set up in-app messages
Inline in-app messages
In-app event listeners
Notification inbox
What's new
6.x -> 6.4.0
5.x -> 6.0.0
4.x -> 5.0.0
4.x -> 4.3
3.4x -> 4.x
3.x -> 3.4
2.x -> 3.x
Changelog
React Native
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Troubleshooting
Identify and Track Users
Identify people
Track events
Screen tracking
Mobile Lifecycle events
Anonymous activity
Push notifications
Set up push notifications
Deep Links
Handling Multiple Push Providers
Capture Push Metrics
Android channels
In-App Messages
Set up in-app messages
Inline in-app messages
In-app event listeners
What's new
4.x -> 4.3
3.4x -> 4.x
3.x -> 3.4
2.x -> 3.x
Changelog
React Native
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Troubleshooting
Identify and Track Users
Identify people
Track events
Screen tracking
Mobile Lifecycle events
Anonymous activity
Push notifications
Set up push notifications
Deep Links
Handling Multiple Push Providers
Capture Push Metrics
Android channels
In-App Messages
Set up in-app messages
Inline in-app messages
In-app event listeners
What's new
4.x -> 5.0.0
4.x -> 4.3
3.4x -> 4.x
3.x -> 3.4
2.x -> 3.x
Changelog
React Native
Get Started
Identify people
Track events
Push notifications
Set up push notifications
Deep Links
Handling Multiple Push Providers
Capture Push Metrics
In-App Messages
Set up in-app messages
In-app event listeners
Updates and Troubleshooting
Migrate from an earlier version
Troubleshooting
Changelog
React Native
Get Started
Identify people
Track events
Push notifications
Set up push notifications
Deep Links
Handling Multiple Push Providers
Capture Push Metrics
In-App Messages
Set up in-app messages
In-app event listeners
Updates and Troubleshooting
Migrate from an earlier version
Update to version 3.4
Troubleshooting
Changelog
Expo
Quick Start Guide
Getting Started
How it works
Authentication
Packages and Configuration Options
Troubleshooting
Identify and track people
Identify people
Track events
Screen tracking
Mobile Lifecycle events
Anonymous activity
Location tracking
Push notifications
Set up push notifications
App Groups for push tracking
Deep Links
Capture Push Metrics
Android channels
Multiple push providers
In-App Messages
Inline in-app messages
Notification inbox
Set up in-app messages
In-app event listeners
What's new
3.x -> 3.3
2.x -> 3.x
1x -> 2.x
Changelog
Expo
Get Started
Identify people
Track events
Push notifications
Set up push notifications
Deep Links
Capture Push Metrics
In-App Messages
Set up in-app messages
In-app event listeners
Updates and Troubleshooting
Troubleshooting
Changelog
Flutter
Quick Start Guide
Get Started
How it works
Authentication
Configuration Options
Troubleshooting
Identify & track users
Identify people
Mobile Lifecycle events
Anonymous activity
Screen tracking
Track events
Location tracking
Push notifications
Set up push notifications
App Groups for push tracking
Deep links
Handling multiple push providers
Capture push metrics
Android channels
In-App Messages
In-app messages
Inline in-app messages
Notification inbox
In-app event listeners
What's new
3.x -> 4.0.0
3.x -> 3.5.0
2.x -> 3.0.0
2.x -> 2.2
Upgrade to Flutter 2.x
Changelog
Flutter
Quick Start Guide
Get Started
How it works
Authentication
Configuration Options
Troubleshooting
Identify & track users
Identify people
Mobile Lifecycle events
Anonymous activity
Screen tracking
Track events
Push notifications
Set up push notifications
Deep links
Handling multiple push providers
Capture push metrics
Android channels
In-App Messages
In-app messages
Inline in-app messages
In-app event listeners
What's new
2.x -> 2.2
Upgrade to Flutter 2.x
Changelog
Flutter
Get Started
Identify people
Track events
Update Flutter SDK
Push notifications
Set up push notifications
Deep Links
Handling Multiple Push Providers
Capture Push Metrics
In-App Messages
In-app messages
In-app event listeners
Updates and Troubleshooting
Update iOS
Troubleshooting
Changelog
Account & Workspaces
Account Verification
Audit logs
Tasks: Workspace performance
Billing
How We Bill
Billing for SMS messages
Billing for WhatsApp messages
AI credits
Reducing billing overages
Payment Problems
Canceling Your Account
Plan Features
Your Account
Manage team members
How to add team members
Assign standard roles
Create & assign custom roles
Edit Account Information
Manage your API credentials
Security Best Practices
Two-Factor Authentication
Single Sign-on (SSO)
Account Regions (US and EU)
Enable experimental features
Workspaces
Workspaces in Customer.io
Date and Time Data in Customer.io
Case sensitivity and your data
Search your workspace
New
Privacy & Security
Session cookies and expiration
Allowlist our IP addresses
Customer.io, GDPR, and you!
Security
Mobile and App Store Privacy
Privacy
Respecting your users' privacy
Customer.io Security Qualifications
Troubleshooting
Troubleshooting login and browser issues
Create a HAR file for help troubleshooting
Release Notes
Ai
Use Customer.io with AI
The Customer.io agent
Beta
Ask the agent
How the agent works
Routines
Segment builder
Troubleshooting and feedback
Our MCP Server
Beta
Email content analysis
In-app message suggestions
In-app survey analysis
Use our docs with AI
Loading API documentation...