# Customer.io Documentation The markdown files we've produced for use with LLMs are organized by section, as you would find them in our site navigation (the top and lef-side menus on docs.customer.io). ## Get Started - [Welcome to Customer.io](https://docs.customer.io/get-started/welcome.md): While the platform offers plenty of features and options, this guide breaks down the basic things you need to set up to help you get started as quickly as possible. You'll create a workspace, set up your messaging channels, and add people! - [Quick start guide](https://docs.customer.io/get-started/quick-start-guide.md): Welcome to Customer.io! While the platform offers plenty of features and options, this guide provides a basic setup path to get you started quickly and demonstrate some of the things you can do with Customer.io. You'll create a workspace, import at least one person, and set up your messaging channels! - [1. Create your workspace](https://docs.customer.io/get-started/create-workspace.md): After you create your account, you'll make a workspace. You can think of a workspace as a container for your people, data, messages, integrations, etc. You can have more than one workspace, but, in general, you won't share information across workspaces. - [2. Set up message channels](https://docs.customer.io/get-started/set-up-messages.md): If you're new here, you'll need to set up message channels before you can send messages. The setup process, and your involvement, varies depending on whether you want to set up email, in-app messages, push notifications, or SMS/MMS, and so on. - [3. Integrate with Customer.io](https://docs.customer.io/get-started/integrate.md): While you can add people manually or upload CSVs, you'll get the most out of Customer.io when you integrate with us, adding people and tracking the events they perform programmatically. - [4. Add people](https://docs.customer.io/get-started/add-people.md): Learn how to add people to Customer.io, and how to get the most out of your data. **In Customer.io, we refer to the process of adding a person as *identifying* them.** - [5. Send events and make segments](https://docs.customer.io/get-started/segments-and-people-data.md): The real power of Customer.io comes from using the things you know about people, and the things they do, to organize them into groups, automatically trigger campaigns, and so on. - [6. Start sending campaigns and workflows](https://docs.customer.io/get-started/send-messages.md): Set up your first campaign or broadcast to send messages to your audience. ## Journeys - [Introduction to Journeys](https://docs.customer.io/journeys/journeys-overview.md): Welcome to Journeys—Customer.io's messaging interface! The pages in this Getting Started section aim to introduce you to our platform. This page introduces the core concepts involved in working with Customer.io. The following pages dive deeper into each concept. ## Journeys > People & Events ## Journeys > People & Events > Anonymous data - [Anonymous people](https://docs.customer.io/journeys/anonymous-people.md): When people first visit your website or use your app without logging in, they're anonymous. You know they exist and can see their activity, but you don't know who they are. You want to identify these people and convert them into members of your audience, users of your service, or customers. - [Anonymous activity](https://docs.customer.io/journeys/anonymous-activity.md): People you don't know visit your website and use your app. By tracking the things anonymous people do, you can better understand people's behavior before they sign up or login. When you identify anonymous people, we'll associate their anonymous activity with the identified person, so you have a complete history of their activity—triggering campaigns, adding people to segments, and so on. - [Merging anonymous activity](https://docs.customer.io/journeys/merge-anonymous.md): When a person visits your website or uses your app, you can track their activity with an `anonymous_id`. Later, when you identify them, we'll automatically merge their anonymous activity with their profile. - [People and their profiles](https://docs.customer.io/journeys/people-overview.md): In Customer.io, you'll store information about your audience. We show your contacts on the *People* page, including the data that you have about people, the events they've performed, their message history, and so on. - [Add people](https://docs.customer.io/journeys/identifying-people.md): You add people to your workspace using their unique, identifiers—normally their email address or ID. - [Manually add/update people](https://docs.customer.io/journeys/manually-adding-or-updating-people.md): Generally, you'll [integrate your platforms](/get-started/integrate/#integrate-with-customerio) with your Customer.io account to create and update people (your customers). However, sometimes you may need to add an individual person or update an existing user manually for testing or other ad-hoc purposes. You can manually add people through our [REST API](/integrations/api/track/) or through our UI. - [Import people or events via CSV](https://docs.customer.io/journeys/uploading-people.md): You can import a CSV to add new people, update existing people, or both. - [Storing and using JSON](https://docs.customer.io/journeys/getting-started-with-json.md): You can pass data into Customer.io, and store it, in complex JSON. If you're not familiar with JSON, this page can help you get started. If you're familiar with JSON, you can skip this page and move on to [integration planning](/journeys/getting-started-integration-planning/). ## Journeys > People & Events > Attributes & events - [User Attributes](https://docs.customer.io/journeys/attributes.md): Attributes represent the things you know about your audience—their name, preferences, email address, etc. - [Events](https://docs.customer.io/journeys/events.md): Events are actions people perform in your app, on your website, etc—things like button clicks, scrolling to the bottom of a page, or purchases. When you send us events, you can start campaigns and segment your users based on the things they do (or don't do) in your app. - [Anonymous Events](https://docs.customer.io/journeys/anonymous-events.md): Start logging events before people sign up or log into your site, app, or service. When people sign up or log in, you can associate those events with people. Anonymous events help you do things like personalize your onboarding campaigns based on things people did before they signed up. For example, if a customer viewed a pricing plan before signing up for a trial, your onboarding campaign might cover features relevant to the plan they viewed. - [What's the Last Visited field, and how do I use it?](https://docs.customer.io/journeys/last-visited.md): Everybody in your workspace has a *Last Visited* attribute. This value is updated based on page view activity from our JavaScript snippet or Event calls to the API, helping determine the last time that someone was active on your website. - [How do I create multiple subscription types?](https://docs.customer.io/journeys/multiple-subscription-types.md): Before the subscription center existed, we recommended the following options to those who wanted to track preferences at a more granular level than our global unsubscribe and to segment people based on these preferences. We recommend using our [subscription center](/journeys/subscription-center/) moving forward. - [Resolve duplicate people](https://docs.customer.io/journeys/merge-people.md): If you inadvertently create duplicate instances of a person, you can merge them and consolidate information to accurately represent a single "person" in your workspace. ## Journeys > People & Events > Export & delete people - [Exporting Data for a Single Person](https://docs.customer.io/journeys/single-user-export.md): You can export all of your Customer.io data for an individual person. - [Exporting Data for Many People](https://docs.customer.io/journeys/exporting-users.md): You can export data for a group of users to a CSV. You might do this to test your integration when you're getting started, or if you want to transfer a group of people to another workspace or external system. - [Delete people and suppress profile IDs](https://docs.customer.io/journeys/deleting-users.md): You can delete people from Customer.io from our UI or API. No matter which method you choose, when you delete a person, you're deleting all data with them too. There is no way to recover a deleted person's data! ## Journeys > People & Events > Find people & data - [Searching and filtering people](https://docs.customer.io/journeys/filter-search.md): You may want to isolate a specific person, or a set of people by attributes. There are a few different ways to do this from the **People** page. - [Filtering Your Activity Logs](https://docs.customer.io/journeys/filtering-logs.md): If you're trying to see who recently performed a specific event or viewed a specific page, you'll want to look in your account's **Activity Logs**. There, you can view all recent activity, or filter for something specific. - [Using your data index](https://docs.customer.io/journeys/using-data-index.md): The **data index** provides information about all the events and people attributes stored in your Customer.io account. It can help you understand the data that you use (or don't use), and where you use it—segments, campaigns, etc. - [How do I know what data I have available?](https://docs.customer.io/journeys/data-availability.md): If you're not sure what data (events and attributes specifically) you're sending to Customer.io or how your data is used, you can find that information in the **Data Index**. You'll find the Data Index in the left-hand menu, just below *Activity Logs*. - [Manage devices](https://docs.customer.io/journeys/managing-customer-mobile-devices.md): If you want to send push notifications, you can register your users devices with us. [Our SDKs](/integrations/sdk/) automatically associate device tokens with people when you identify a person, but you can also use [our API](/integrations/api/#operation/add_device) to add devices. - [Shortcuts to external services](https://docs.customer.io/journeys/people-shortcuts.md): You can add **shortcuts** from people in Customer.io to external services, making it easy to go from a person in Customer.io to that person's account in your CRM tool, analytics platform, or any other service. You can even set up shortcut webhooks to call an external API from a person's page. ## Journeys > Objects & non-people data - [Overview: Objects vs Collections](https://docs.customer.io/journeys/getting-started-objects-collections.md): When you identify people or send events, you associate data with a person. But what if you want to manage data for a company, a series of educational courses, or other entities? That's what *objects* and *collections* are for in Customer.io: they provide ways to manage non-people data and associate it with people! ## Journeys > Objects & non-people data > Objects - [Objects: how they work](https://docs.customer.io/journeys/objects-start.md): Not to be confused with JSON objects, an *Object* is a way to group people, like an *account* that people belong to, online courses that people enroll in, or recreational leagues that people can join. - [Objects: video tutorials](https://docs.customer.io/journeys/objects-video-tutorials.md): - [Object types](https://docs.customer.io/journeys/object-types.md): - [Objects](https://docs.customer.io/journeys/objects-create.md): Learn how to create, edit, or delete objects. - [Relationships](https://docs.customer.io/journeys/relationships.md): - [Import objects or relationships via CSV](https://docs.customer.io/journeys/import-objects.md): Add or update objects and relationships via CSV to add or update data in Customer.io. This is a good option if you're just getting started and want to quickly add objects or relationships to your workspace. You can also import if your data isn't available through an integration. - [Export objects or relationships via CSV](https://docs.customer.io/journeys/objects-export-many.md): Export data about objects and relationships to CSV files. - [Objects and relationships in campaigns](https://docs.customer.io/journeys/object-and-relationship-campaigns.md): You can trigger campaigns based on changes to objects and relationships. You can target trigger data in messages and specify who should enter a campaign based on the relationship they have to objects. - [Use objects in liquid](https://docs.customer.io/journeys/objects-in-liquid.md): Learn how to reference objects and relationships using liquid. ## Journeys > Objects & non-people data > Objects use cases - [Upsell: monetize power users](https://docs.customer.io/journeys/upsell-users.md): In this object recipe, we'll create a broadcast to upsell power users on a higher tier subscription. The recipients are related to accounts that might upgrade. - [Adoption: drive feature usage](https://docs.customer.io/journeys/feature-adoption.md): In this object recipe, we'll create a campaign to remind people they can share their work to collaborate with team members. The audience is related to accounts who have not shared recently, but have signed in recently. - [Awareness: announce events](https://docs.customer.io/journeys/awareness-announce-events.md): In this object recipe, we'll create a campaign to notify people they can register for an event that they want to attend. The audience has signed up for a waitlist that related them to an event object. - [Conversion: activate people on your event waitlist](https://docs.customer.io/journeys/conversion-activate-waitlist.md): In this object recipe, we'll create a broadcast to annoucnce a series of events that people may want to attend based on other events they've attended. - [Collections](https://docs.customer.io/journeys/collections.md): Collections provide a way to store data in your workspace that you can use in campaigns with Liquid. ## Journeys > Segmentation - [Segmentation Overview](https://docs.customer.io/journeys/segments.md): Segments are groups of people that you organize by shared characteristics or behaviors. You can add people to segments automatically when they achieve certain criteria, or you can create manual, static segments. - [Build segments with AI](https://docs.customer.io/journeys/segment-builder.md): Building segment conditions to target the right audience can be hard, so we've made it possible for you to generate segments by leveraging AI! - [Data-driven segments](https://docs.customer.io/journeys/data-driven-segments.md): Data-driven segments are groups of people that you automatically populate when they meet certain conditions. People enter the segment when they match the conditions and leave the segment when they stop matching the conditions. These kinds of segments help you group people according to real-time activities. - [Manual Segments](https://docs.customer.io/journeys/manual-segments.md): Manual segments let you group people according to business logic outside of Customer.io. As the name suggests, you'll [add people](#add-people-to-a-manual-segment) to, and [remove people](#remove-people-from-a-manual-segment) from, these segments manually. - [Segment mobile device audiences](https://docs.customer.io/journeys/device-segments.md): Devices have their own attributes, and you can segment your audience based on their devices' `platform`, `last_used`, and `last_status` attributes to target or exclude specific people from a campaign based on their devices. - [Ad Audiences](https://docs.customer.io/journeys/ad-audiences-sync.md): In ad networks like Google, Facebook, and Instagram Ads, you can target your ads by importing a list of known users. Customer.io lets you do this programmatically by sending segments into ad networks as audiences. This eliminates the manual process of importing custom lists and ensures parity between the people you communicate with in Customer.io and your Ad Network. - [Timestamp Conditions](https://docs.customer.io/journeys/segmentation-and-timestamp-rules.md): Segments include a variety of timestamp-based rules. This page describes those rules and helps you take advantage of them in segments. - [Using JSON in segments](https://docs.customer.io/journeys/json-in-segments.md): Attributes and event data can contain nested (JSON) values—arrays, objects, and arrays of objects. You can use these nested values to match people in segments, filters, and trigger criteria. If you're not familiar with JSON, we provide some simple options to help you traverse nested attributes. If you *are* familiar with JSON, you can use JSON dot notation as you normally would. - [Timestamp Conditions FAQ](https://docs.customer.io/journeys/faq-timestamps.md): Timestamps and timestamp-based rules can be tricky. Here, we've compiled a list of common problems with timestamps, timestamp formats, and segmentation rules for timestamps to help you troubleshoot segment membership and other time-based issues. - [Timestamp Rules for Building Segments](https://docs.customer.io/journeys/timestamp-rules.md): Timestamp rules aren't always easy. They may require some deep thinking about *when* things happen, not just for one person but for a group of people, and when you want your campaign to go out in relation to those things. This page provides some basic rules to help you build timestamp-based segments, so you can send timely messages to your audience. - [Why don't people match 'within the past X days' conditions?](https://docs.customer.io/journeys/past-x-days-help.md): This problem often comes up when you set up a segment to check that someone has *not* performed an action within the last X days. The reason this happens is because we can only check that criteria if they've been in Customer.io for at least that many days. - [Setting Up Segments for Specific Purposes](https://docs.customer.io/journeys/creating-segments.md): Segments are groups of people matching the same criteria. Here, we'll provide recipes for some commonly-used segments that you can use to get started with Customer.io. ## Journeys > Design Studio - [Welcome to Design Studio!](https://docs.customer.io/journeys/design-studio-overview.md): Design Studio is a flexible email editor that helps you create beautiful, responsive emails faster than ever before. ## Journeys > Design Studio > Create & review emails - [Manage your files](https://docs.customer.io/journeys/file-manager.md): In Design Studio, manage your emails, templates, components, and styles in one place from your dashboard. - [Keyboard shortcuts](https://docs.customer.io/journeys/keyboard-shortcuts.md): - [Set global styles](https://docs.customer.io/journeys/set-styles.md): Global styles in Design Studio let you define reusable design elements—like colors and fonts—that apply across all your messages. Set them once, and every component using that style will automatically update when you make changes. - [Localize emails](https://docs.customer.io/journeys/localize-ds-messages.md): To localize messages you create with Design Studio, you'll need to use liquid or set up branches for each language you want to support. ## Journeys > Design Studio > Create & review emails > Visual editor - [Get started](https://docs.customer.io/journeys/visual-editor-overview.md): In Design Studio, you can create an email with visual blocks, no coding necessary. - [Style your messages](https://docs.customer.io/journeys/properties-menu.md): In Design Studio, the Properties menu lets you style each component of your email. You can adjust layout, set backgrounds, apply text styles, and control how components display on different devices. - [Add & preview liquid](https://docs.customer.io/journeys/liquid-visual-editor.md): In Design Studio, you can personalize your emails using liquid, a templating language that lets you pull in data about your recipients, events, objects, and more. This article shows you have to add liquid using the Personalization panel in the visual editor. ## Journeys > Design Studio > Create & review emails > Code editor - [Get started](https://docs.customer.io/journeys/code-editor-overview.md): In Design Studio code editor, you can create a message from scratch or edit a message made using the visual editor. Build emails using components, HTML, CSS, MJML, and AMP and validate your work with developer tools. - [Validate your email](https://docs.customer.io/journeys/developer-tools.md): In Design Studio, you can use a number of tools to validate your email in the code editor preview. These tools help you catch code issues, debug layout and accessibility, validate links and images, and check your spam score. ## Journeys > Design Studio > Create & review emails > Code editor > Transformers - [MJML framework](https://docs.customer.io/journeys/transformer-mjml.md): [MJML](https://mjml.io/) is a markup language that makes it easier to code responsive emails. In Design Studio, our code editor supports MJML so you can import existing emails with this syntax. This language is not fully supported by our visual editor though. We recommend building your email from [components](/journeys/components-overview/) when possible! - [CSS inlining](https://docs.customer.io/journeys/transformer-css-inlining.md): In the code editor of Design Studio, use the CSS inlining transformer (aka [CSS pre-processing](/journeys/css-pre-processing/)) to convert embedded CSS into inline styles. This can help improve page loading times and tells browsers to treat your styles as the most important. - [Formatting](https://docs.customer.io/journeys/transformer-formatting.md): In the code editor of Design Studio, use the Formatting transformer to apply your choice of formatting to the source code. - [Set URL parameters for a single message](https://docs.customer.io/journeys/transformer-url-parameters.md): Add URL parameters through the code editor in Design Studio to help you track and analyze how your customers interact with your messages. - [CSS cleanup](https://docs.customer.io/journeys/transformer-css-cleanup.md): In the code editor of Design Studio, use the CSS cleanup transformer to remove unused CSS and optimize your CSS selectors. - [CSS variables](https://docs.customer.io/journeys/transformer-css-variables.md): In the code editor of Design Studio, use the CSS variables transformer to convert CSS variables to a format that most email clients support. - [Accessibility fixes](https://docs.customer.io/journeys/transformer-accessibility-fixes.md): In the code editor of Design Studio, use the Accessibility fixes transformer to add or remove common tags and attributes that cause accessibility issues. - [Use Emmet syntax](https://docs.customer.io/journeys/code-editor-emmet.md): The code editor in Design Studio supports [Emmet](https://emmet.io/), a shorthand syntax that expands into full HTML. It’s a fast way to generate repetitive structures like tables, links, or nested divs. - [Use MSO syntax](https://docs.customer.io/journeys/code-editor-mso.md): The code editor in Design Studio includes tools to help you write and manage Microsoft Office (MSO) syntax so your messages render more consistently in Outlook. - [How to support dark mode](https://docs.customer.io/journeys/dark-mode.md): You can customize how your message appears in dark mode when a user's device or inbox is set to that preference. Open an email in the code editor of Design Studio to get started. - [Code custom, responsive styles](https://docs.customer.io/journeys/responsive-styles.md): Design Studio supports mobile-first email development. You can choose to [show or hide certain elements on mobile through the Properties menu](/journeys/properties-menu/#hide-based-on-screen-size) of the visual editor. This article shows you how to customize responsive styles further using `@media` queries in the code editor. - [Preview email in Design Studio](https://docs.customer.io/journeys/preview-email-in-design-studio.md): Preview your emails to make sure your messaging and styling work across different settings in people's browsers and email clients. - [Connect an email to an automation](https://docs.customer.io/journeys/add-email-to-automation.md): [After you create an email in Design Studio](/journeys/visual-editor-overview/), you can add it to a campaign, broadcast, or transactional message. - [Edit connected messages](https://docs.customer.io/journeys/publish-changes.md): If you change a connected message, make sure you publish changes in Design Studio so your connected automation is up-to-date. - [Disconnect an email from an automation](https://docs.customer.io/journeys/disconnect-from-automation.md): You can disconnect an email from a campaign, API-triggered broadcast, newsletter, or transactional message made in Design Studio so you can use it elsewhere. ## Journeys > Design Studio > Create reusable content - [Understand components](https://docs.customer.io/journeys/components-overview.md): Components help you reuse content and structure across your Design Studio messages so you can build faster. - [Add components to your message](https://docs.customer.io/journeys/insert-components.md): Add components to the visual editor of Design Studio to start building your message. After you've dragged a component to the canvas, you can adjust the settings to modify its appearance. - [Understand and style standard components](https://docs.customer.io/journeys/standard-components.md): Standard components come with a predefined set of properties you can modify to customize and brand your Design Studio messages. ## Journeys > Design Studio > Create reusable content > Custom components - [Create a component](https://docs.customer.io/journeys/create-custom-component.md): In Design Studio, organize your code into reusable blocks with custom components. - [Create modifiable, placeholder content](https://docs.customer.io/journeys/component-slots.md): Add slots to determine what content you can modify in the visual editor of Design Studio. You can create text-based slots or drop-zones for components. - [Style custom components](https://docs.customer.io/journeys/component-properties.md): Learn how to define and validate properties for your components in Design Studio. - [Delete a component](https://docs.customer.io/journeys/delete-component.md): Understand how deleting components impacts your emails. ## Journeys > Design Studio > Create reusable content > Custom components > Syntax - [Understand syntax](https://docs.customer.io/journeys/custom-comp-syntax.md): In Design Studio, there are a number of top-level elements available in a custom component file as well as other syntax. - [Add conditionals & directives](https://docs.customer.io/journeys/directives.md): Directives are special attributes that direct an element's behavior. Use them to create conditionals, set an attribute, skip evaluation, and more in your Design Studio components. - [Loop through data](https://docs.customer.io/journeys/component-loops.md): In Design Studio, components support loops, enabling you to iterate with fewer keystrokes. - [Create a stylesheet](https://docs.customer.io/journeys/component-styling.md): In Design Studio, define CSS to style your components. ## Journeys > Design Studio > Collaborate with teammates - [How to collaborate](https://docs.customer.io/journeys/collaborate.md): Collaborate with teammates to review and fine-tune your messages made in Design Studio. - [Submit & manage feedback](https://docs.customer.io/journeys/feedback.md): In Design Studio, get feedback on your messages from your team. - [Manage version history](https://docs.customer.io/journeys/version-history.md): In Design Studio, you can save, manage, and restore previous versions of your messages. - [Send a test message](https://docs.customer.io/journeys/send-test.md): To make sure your message looks right before sending it to your customers, send a test message to your inbox. ## Journeys > Campaigns & Workflows - [Campaigns, broadcasts, and transactional messages](https://docs.customer.io/journeys/types-of-campaigns-and-broadcasts.md): We support a range of campaigns, broadcasts, and transactional messages to help you automate interactions with your audience at the right time. - [Tags](https://docs.customer.io/journeys/tagging-campaigns.md): Tags are another way to organize and compare your campaigns, broadcasts, and transactional messages. You can also assign them to [segments](#manage-tags) and data through your [data index](/journeys/using-data-index/). While you can filter by features like campaign name and trigger type, you can also use tags to group automations based on other information, like themes or goals. Create, assign, edit, and delete as many tags as you need in your workspace. ## Journeys > Campaigns & Workflows > Edit live automations - [Edit triggers, filters, or frequencies in live campaigns](https://docs.customer.io/journeys/campaign-changes.md): Learn how changes to triggers, filters, or frequency settings in live campaigns would impact your customers. - [Edit goals in live campaigns](https://docs.customer.io/journeys/goal-changes.md): Learn how changes to goals in live campaigns would impact your customers and metrics. - [Edit workflows in live campaigns](https://docs.customer.io/journeys/workflow-changes.md): Learn how changes to your campaign workflows impact customers. - [Edit live API-triggered broadcasts](https://docs.customer.io/journeys/apitb-changes.md): Learn how changes to a live API-triggered broadcast impact customers. ## Journeys > Campaigns & Workflows > Campaigns - [Campaign concepts & settings](https://docs.customer.io/journeys/campaigns-in-customerio.md): Campaigns are automated workflows you set up to send people messages and perform other actions when they meet your criteria. They're the most flexible, robust automation offered by Customer.io. This page introduces the concepts behind campaigns to help you get started. - [Create a campaign](https://docs.customer.io/journeys/create-a-campaign.md): Campaigns are automated workflows that send people messages and perform other actions when people meet certain criteria. This page takes you step-by-step through creating a campaign from scratch. - [Campaigns page](https://docs.customer.io/journeys/intro-to-campaigns.md): Campaigns are automated workflows you set up to send people messages and perform other actions when they meet your criteria. This article describes what you can do on the campaigns page. - [Triggers, filters, and frequencies](https://docs.customer.io/journeys/campaign-triggers.md): Campaign triggers determine who enters your campaigns and when. This page describes different kinds of triggers and why you might use them. - [When to use filters](https://docs.customer.io/journeys/campaign-triggers-and-filters.md): This article covers the difference between triggers and filters for all types of campaigns. - [Goals & conversion criteria](https://docs.customer.io/journeys/campaign-conversions.md): A **goal** is what you want your audience to accomplish during your campaign, like purchase a product, sign up, or subscribe. When you set up a goal, you define **conversion criteria**, which are the rules that determine when we mark a message or person as converted. - [Exit conditions](https://docs.customer.io/journeys/campaign-exit-conditions.md): Exit conditions determine if or when a person should exit your campaign. The options available depend on the type of campaign you're building—attribute or segment, event, etc. - [Change the state of a campaign](https://docs.customer.io/journeys/campaign-statuses.md): Campaign states determine whether your customers can enter your campaigns. ## Journeys > Campaigns & Workflows > Campaigns > Webhook-triggered campaigns - [Webhook campaigns](https://docs.customer.io/journeys/webhook-triggered-campaigns.md): Webhook-triggered campaigns let you use your JSON data in Customer.io, without having to reshape it using Zapier or another product first. Where our traditional workflows trigger based on a person, a webhook trigger lets you start a campaign when you receive JSON data (in any shape) from a specific source. - [Send event](https://docs.customer.io/journeys/data-campaign-event-action.md): You can convert the incoming webhook for a webhook-triggered campaign into an event associated with a person—in any workspace within your account. This makes it easy to trigger campaigns or add people to segments based on things that happen outside of Customer.io without having to talk to a developer and write your own integration. - [Batch update](https://docs.customer.io/journeys/batch-update-webhook-campaigns.md): A batch update lets you apply data to a group of up to 1,000 people matching your criteria. For each person your batch update matches, you can update attributes or send events (to trigger a message campaign, for example). - [Follow up on NPS responses](https://docs.customer.io/journeys/satismeter-data-campaign.md): Set up a webhook-triggered campaign to trigger follow-up responses for people who respond to your Satismeter NPS surveys! - [Sync customers from Stripe to Customer.io](https://docs.customer.io/journeys/stripe-data-campaign.md): Use Customer events from Stripe to trigger a campaign syncing customers from Stripe with leads in Customer.io. Then you can send them messages in Customer.io! - [Campaign for syncing Mixpanel cohorts](https://docs.customer.io/journeys/mixpanel-data-campaign.md): Send cohort data from Mixpanel to Customer.io Journeys so you can add people, index events, and more. - [Slack notification for support tickets](https://docs.customer.io/journeys/zendesk-data-campaign.md): Set up a webhook-triggered campaign to notify your Support team about high priority tickets. - [Grace periods](https://docs.customer.io/journeys/grace-periods.md): A grace period is a period of time people wait to enter or exit your campaign. It's meant to prevent people from bouncing in and out of campaigns due to quick changes in data. ## Journeys > Campaigns & Workflows > Campaign recipes - [Send a Welcome Email](https://docs.customer.io/journeys/send-a-welcome-email.md): - [Birthday and Anniversary Campaigns](https://docs.customer.io/journeys/birthday-and-anniversary-campaigns.md): - [Cart Abandonment](https://docs.customer.io/journeys/cart-abandonment.md): Whether you’re an e-commerce company or a product company, the techniques used for cart abandonment can help you increase completion rates in any flow where you have drop off. One of the most powerful concepts you’ll learn is how to store context on a profile for easy recall and personalization later. - [Double Opt-In](https://docs.customer.io/journeys/double-opt-in.md): This document will guide you through the basics of setting up double opt-in functionality for your users. A double opt-in is a good practice to follow in order to improve your deliverability and/or comply with local laws like CASL in Canada. - [Onboarding Campaign](https://docs.customer.io/journeys/onboarding-campaign.md): - [Optimize emails with Just Words](https://docs.customer.io/journeys/just-words.md): Automatically A/B test and optimize emails on the fly with Just Words. - [Trial expiration reminders](https://docs.customer.io/journeys/trial-expiration-reminders.md): - [Cohort tests](https://docs.customer.io/journeys/cohort-testing.md): When you want to A/B test something other than email content, try a cohort test! Randomly assigning people to cohorts gives you a way to perform tests independently of individual messages. - [Trigger campaigns based on Roles](https://docs.customer.io/journeys/role-based-messaging-campaign.md): When you send campaigns customized by people's roles, you'll have a better chance of motivating them to take action than if you sent generic messages to everyone. - [RSS Feed Email Campaign](https://docs.customer.io/journeys/rss-feed-email-campaign.md): - [Reminders for multiple upcoming trips](https://docs.customer.io/journeys/reminders-for-multiple-upcoming-trips.md): ## Journeys > Campaigns & Workflows > Broadcasts - [Introduction to broadcasts](https://docs.customer.io/journeys/broadcasts-in-customerio.md): We offer two types of broadcasts: *Newsletter* and *Messages triggered via API*. - [Newsletters](https://docs.customer.io/journeys/newsletters.md): A newsletter is a single message that you send to a group of people at once. Newsletters make it easy to broadcast a single message to a wide group of people at a predictable time without setting up a campaign workflow. - [API-triggered broadcasts](https://docs.customer.io/journeys/api-triggered-broadcasts.md): An API-triggered broadcast is like an event-triggered campaign, but the event—the `trigger`—represents a group of recipients. - [Using trigger data in your messages](https://docs.customer.io/journeys/previewing-broadcast-data.md): You can use [Liquid](/journeys/liquid-tag-list) to personalize your broadcasts. Any part of message or email layout can contain liquid, including the subject line and from address. You'll personalize broadcasts using `trigger` data that Customer.io doesn't know about until you trigger your broadcast. You can provide example data when you compose your broadcast to preview your broadcast with realistic data that you expect to send in a trigger. - [Formatting API-Triggered Broadcasts](https://docs.customer.io/journeys/api-triggered-data-format.md): When you trigger a broadcast, you can send data to personalize your message or override your audience. This page helps you understand the format of that data and how to set up complex recipient groups. - [Common API-Triggered Broadcast errors](https://docs.customer.io/journeys/api-triggered-errors.md): This page lists some common errors you might encounter when you trigger a broadcast, and troubleshooting options to help you overcome these errors. ## Journeys > Campaigns & Workflows > Transactional messages - [Getting Started: Key Concepts](https://docs.customer.io/journeys/transactional-api.md): Transactional messages are emails, SMS, or push notifications that your audience implicitly opts-into, like a transaction receipt or a password reset request. You can send transactional messages programmatically through Customer.io. This page contains basic information about our transactional messaging service and how it differs from marketing campaigns and messages. - [Set up a transactional email](https://docs.customer.io/journeys/transactional-email.md): Transactional messages are email or push notifications that your audience implicitly opts-into, like a transaction receipt or a password reset request. You can send transactional messages programmatically through Customer.io. - [Set up a transactional push](https://docs.customer.io/journeys/transactional-push.md): Transactional messages are email or push notifications that your audience implicitly opts-into, like a transaction receipt or a password reset request. You can send transactional messages programmatically through Customer.io. - [Set up a transactional SMS](https://docs.customer.io/journeys/transactional-sms.md): Transactional SMS or WhatsApp messages are text messages that your audience implicitly opts-into, like order confirmations, password reset codes, or account verification messages. You can send transactional SMS messages programmatically through Customer.io. - [Transactional examples](https://docs.customer.io/journeys/transactional-api-examples.md): This page contains some example requests to help get you started with our transactional API. - [Common transactional API errors](https://docs.customer.io/journeys/transactional-api-common-api-errors.md): Successful transactional requests return *200 OK*. If you get another response, something probably went wrong! This page can help you better understand and troubleshoot errors you receive from the transactional API. - [Frequently Asked Questions](https://docs.customer.io/journeys/transactional-faq.md): This page contains answers to frequently asked questions about our transactional API. - [Transactional Campaigns](https://docs.customer.io/journeys/transactional-campaign.md): You can use a campaign to send a transactional message. This can be helpful if you want to send non-email transactional messages or you want to perform multiple actions in response to a transactional event. ## Journeys > Campaigns & Workflows > Workflow builder - [Workflow builder](https://docs.customer.io/journeys/workflow-builder.md): Our visual workflow builder helps you construct message and action sequences on an open canvas. After you create a campaign, you'll land on the workflow builder. - [Send event](https://docs.customer.io/journeys/event-action.md): You can create an event within a campaign. This makes it easy to trigger other campaigns or add people to segments. For webhook-triggered campaigns, this makes it easy to reshape and associate data from an outside source with people in your workspace, all without having to talk to a developer or write your own integration. - [Batch update](https://docs.customer.io/journeys/batch-update.md): A batch update lets you apply data to a group of up to 1,000 people matching your criteria. For each person your batch update matches, you can update attributes or send events (to trigger a message campaign, for example). - [Branches](https://docs.customer.io/journeys/branches.md): Add branches to workflows to personalize campaigns for your audience. We offer three branch types that you can place anywhere in a workflow— a True/False Branch, a Multi-Split Branch, and a Random Cohort Branch. They appear on the left hand of your workflow under **Flow Control**. - [Action conditions](https://docs.customer.io/journeys/action-conditions.md): You can control which customers enter your campaigns with triggers, filters, and frequency settings. You can also add **conditions** to messages, data blocks, and delays to filter your audience within your campaign. - [Holdout tests](https://docs.customer.io/journeys/holdout-test.md): A *holdout* is a type of A/B test for emails. But, rather than testing how your audience responds to variations of a message, a holdout test helps you test how your audience responds when they receive a message and when they don't. In a holdout test, some percentage of your audience *won't* receive a message at all. - [A/B tests](https://docs.customer.io/journeys/a-b-test-campaigns.md): A/B testing lets you test different versions of email, push notifications, and SMS messages in your campaign, so you can measure which version performs better. For email, this means you can test subject lines against each other, different versions of your call to action, or try out new designs. For SMS and push notifications, you can test for content, imagery, or even deep links. - [Copy workflow items](https://docs.customer.io/journeys/copying-workflow-items.md): Do you have a successful campaign workflow you want to replicate or a fine-tuned set of messages in one campaign that you want to re-use in another? No problem! You can copy workflow items from one campaign to another, even if your campaigns are in different workspaces! ## Journeys > Campaigns & Workflows > Workflow builder > Delays - [Delivery Time Window](https://docs.customer.io/journeys/delivery-window.md): To make sure that a message gets delivered within a very specific time range, you can set a time window. For example, you can set a message to only send during your business hours, during specific hours in your user's time zone, or prevent messages from sending on the weekends. Whatever works best for you! - [Wait Until...](https://docs.customer.io/journeys/wait-until.md): Use the *Wait Until* item to hold a person in a campaign until they meet a condition or enter a segment. ## Journeys > Campaigns & Workflows > Workflow builder > Attribute Updates - [Create or update person](https://docs.customer.io/journeys/create-update-person.md): This action lets you update a person. You can update the person currently in your campaign workflow, or you can update a related person. If this related person doesn't exist, this action creates a new person! - [Fix typos in attributes](https://docs.customer.io/journeys/how-to-use-attribute-updates-to-fix-typos-in-your-data.md): Have you ever added data to Customer.io and notice typos after the fact? You can create a campaign and use the *Create or Update Person* action to fix typos and make sure that future updates are clean and typo-free. - [Reformat timestamp attributes](https://docs.customer.io/journeys/how-to-use-attribute-updates-to-reformat-timestamps.md): In Customer.io Journeys, you need to format timestamps as Unix epochs to full take advantage of them. If you've already uploaded data with timestamps in a different format, you can use the *Create or Update Person* action to reformat your timestamps. ## Journeys > Campaigns & Workflows > Languages & localization - [Getting started](https://docs.customer.io/journeys/localization-getting-started.md): You can store your audience's language preferences as an attribute, and then use that attribute to send people messages in their preferred language! - [Set up your localization attribute](https://docs.customer.io/journeys/localization-attribute.md): Before you can set up multi-language messages, you need to store your audience's language preferences as an attribute. You can tell us what that attribute is, and then use it to send people messages in their preferred language! - [Localize campaigns](https://docs.customer.io/journeys/localization-campaigns.md): Use your localization attribute to localize campaigns for your audience without having to set up complicated workflows or multi-split branches. - [Localize broadcasts and newsletters](https://docs.customer.io/journeys/localization-broadcasts-newsletters.md): Use your localization attribute to broadcast a message to people in their preferred language! ## Journeys > Campaigns & Workflows > Message sending - [Default sending settings](https://docs.customer.io/journeys/sending-behavior.md): Sending behavior determines how we handle messages for your campaign or broadcast—whether messages send automatically or not, whether we track links or not, etc. - [Sending behavior options](https://docs.customer.io/journeys/queue-draft.md): We offer three sending behavior options for your messages: queue draft, send automatically, and don't send. - [Why did my campaign not send someone a message?](https://docs.customer.io/journeys/messages-not-sending.md): For one reason or another, people may not receive messages because they don't enter your campaign at all, or they do enter, but skip messages on the way. If a customer received or _didn't_ receive a message from your campaign, there might be a few reasons for that. - [Queue Draft for Campaign QA](https://docs.customer.io/journeys/queue-as-draft.md): Great messaging is no simple task. Deep personalization drives higher opens, clicks, engagement, and results. But it also makes your lifecycle campaigns more complex to design, build, and deploy. The more moving parts you add — automation, segmentation, dynamic content, and filters — the more likely that something can go wrong. This article shows you three ways to use 'Queue Drafts' to review your campaigns. - [Send messages in users' timezones](https://docs.customer.io/journeys/timezone-match.md): Customer.io aims to help you send the right messages at the right time to your users. Two critical parts of this are sending messages in a given person's time zone and localizing time in emails. Here, we'll explain how to do both. - [Supported time zone formats](https://docs.customer.io/journeys/example-timezones.md): - [Message Limits](https://docs.customer.io/journeys/message-limits.md): You can set a message limit to determine the maximum number of messages that you can send people within a time frame. Setting a message limit can prevent you from over-messaging people in your workspace. ## Journeys > Message Channels ## Journeys > Message Channels > Email - [Email: Getting Started](https://docs.customer.io/journeys/email-getting-started.md): There are two options for sending mail through Customer.io: you can deliver email through us, or use your existing account with a delivery provider. - [Transitioning to Customer.io as a sender](https://docs.customer.io/journeys/deliverability-getting-started.md): There will always be some measure of deliverability performance variability when you start sending from a new email provider. This article should help you navigate this critical transition and avoid problems. - [Introduction to Creating Emails](https://docs.customer.io/journeys/2-email-basics.md): This article helps you understand how to create emails in Customer.io at a high level. - [Testing Your Emails](https://docs.customer.io/journeys/testing-emails.md): After you create your first email, send yourself a test before activating your campaign. - [Email Attachments](https://docs.customer.io/journeys/email-attachments.md): Customer.io doesn't support attachments of any type in [Campaigns or Broadcasts](/journeys/types-of-campaigns-and-broadcasts/). But, there are other, better ways to send files to recipients! ## Journeys > Message Channels > Email > Deliverability - [Email Deliverability Best Practices](https://docs.customer.io/journeys/email-deliverability-best-practices.md): Email deliverability is whether or not the emails you are sending are reaching the inbox of your recipients. There are a number of factors that can directly influence whether or not your emails arrive in the inbox. All of these best practice guidelines should be addressed to ensure maximum deliverability. - [Domain Authentication](https://docs.customer.io/journeys/authentication.md): You will need to add certain records to your DNS provider to allow Customer.io to send emails using your domain. - [Delete a domain](https://docs.customer.io/journeys/delete-domain.md): You can delete a sending domain when it's not in use. - [Domain warming](https://docs.customer.io/journeys/domain-warming.md): To ensure your emails successfully reach your recipients, it's important to build a good reputation for the domain you're sending emails from, which is where a **domain warm-up process** comes in. - [Track links with your domain](https://docs.customer.io/journeys/link-tracking-custom-domain.md): - [IP addresses: shared vs dedicated](https://docs.customer.io/journeys/ip-addresses.md): You can use our shared IP pools or dedicated IPs to send messages to your customers. - [Email suppression lists](https://docs.customer.io/journeys/esp-suppression.md): Your email service provider (ESP) maintains a list of suppressed email addresses, preventing you from messaging people who have experienced a hard bounce or logged a spam complaint. If you manage email deliveries through Customer.io (you don't have a Custom SMTP server), you can view and manage these suppressions in Customer.io - [Google Postmaster Tools](https://docs.customer.io/journeys/google-postmaster-tools.md): Google Postmaster Tools (GPT) is a service Gmail provides free of charge that shows data about your sending reputation and Gmail spam rates. (Gmail does not notify senders when emails are marked as spam for privacy reasons.) Senders must stay below a 0.3% spam threshold in GPT. - [Custom unsubscribe links (RFC 8058)](https://docs.customer.io/journeys/custom-unsubscribe-links.md): Offering an unsubscribe option to give subscribers the ability to opt out of your marketing messages is not only standard best practice, it’s now a requirement in Google and Yahoo’s [Bulk Sender 2024 Requirements](https://customer.io/blog/email-sending-requirements-gmail-yahoo/). If you are using a custom unsubscribe solution, you’ll need to successfully implement [RFC 8058 List-unsubscribe-post](https://datatracker.ietf.org/doc/html/rfc8058) before June 1st, 2024. - [Authenticating for Apple Private Email Relay](https://docs.customer.io/journeys/authenticating-for-apple-private-email-relay.md): If your app or website utilizes the [Sign In with Apple](https://support.apple.com/en-us/HT210318) login service, then your customers have the optional setting to receive emails from you through the Apple Private Email Relay service. This lets customers hide their email addresses as an added layer of privacy when signing up and logging into your app. - [Verify deliverable email addresses with Kickbox](https://docs.customer.io/journeys/verify-email-deliverable-kickbox.md): Sending messages to undeliverable email addresses can increase your bounce rate and impact overall deliverability. You can use Kickbox to verify the deliverability of addresses before you send messages, helping you maintain high deliverability. ## Journeys > Message Channels > Email > Deliverability > Custom SMTP - [Use Your Own SMTP Server](https://docs.customer.io/journeys/use-your-smtp-server.md): By default, Customer.io takes care of your email delivery. However, you can send mail through any other SMTP server if you'd rather use your own service. - [Using Multiple SMTP servers](https://docs.customer.io/journeys/multiple-smtp-servers.md): You can configure multiple custom SMTP servers to have greater control over your deliverability. If your SMTP provider requires you to use separate servers for bulk and transactional emails, you can configure multiple servers in your custom SMTP settings. - [Use your Mailgun Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-mailgun.md): You can use your Mailgun account to send email through Customer.io with no loss in functionality. - [Use your Mailjet Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-mailjet.md): You can use your Mailjet account to send email through Customer.io with no loss in functionality. - [Use your Mandrill Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-mandrill.md): You can use your Mailchimp Transactional (Mandrill) account to send email through Customer.io with no loss in functionality. - [Use your Postmark Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-postmark.md): You can use your Postmark account to send email through Customer.io with no loss in functionality. - [Use your SendGrid Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-sendgrid.md): You can use your SendGrid account to send email through Customer.io with no loss in functionality. - [Use your Sparkpost Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-sparkpost.md): You can use your Sparkpost account to send email through Customer.io with no loss in functionality. - [Use your Oracle Dyn Account](https://docs.customer.io/journeys/triggered-lifecycle-email-with-oracle-dyn.md): You can use your Oracle Dyn account to send email through Customer.io with no loss in functionality. ## Journeys > Message Channels > Email > Editors - [Choosing the Right Email Editor](https://docs.customer.io/journeys/email-editors.md): We offer several editors for email creation. Check out our newest editor, Design Studio. If that doesn't suit your needs, check out our older editors below. - [Drag-and-Drop Emails: The Basics](https://docs.customer.io/journeys/drag-and-drop.md): Drag-and-drop emails consist of content, rows, and settings. **Content** blocks are discreet pieces of email content, images, text, etc. **Rows** provide the structure of your email—they determine how many pieces of content you can fit across the width of your message. - [Drag-and-Drop Editor FAQ](https://docs.customer.io/journeys/drag-and-drop-faq.md): This page provides answers to common questions and can help you troubleshoot problems when drafting emails with the drag-and-drop editor. - [Troubleshooting Your Drag-and-Drop Emails](https://docs.customer.io/journeys/troubleshooting-email-design.md): We're continuously checking your message for errors, in your links, headers, and any liquid code you write. Some errors might prevent your message from sending, while others might be completely innocuous! Here's a guide for how to find and see the errors in our drag-and-drop editor, as well as how to fix them. - [Email code editor](https://docs.customer.io/journeys/email-code-editor.md): If you're comfortable writing your own HTML, our code editor can help you draft better emails with syntax autocomplete, responsive previews, and developer tools to help you debug your message. ## Journeys > Message Channels > Email > Design & layouts - [Introduction to Email Layouts](https://docs.customer.io/journeys/3-layouts-and-customerio.md): When using our Rich Text and Code editors to design your email templates, there are two parts to emails: the content and the layout. The **layout** is everything except the body of your email. Your content, or message, fits *into* the layout. - [Customizing Email Layouts](https://docs.customer.io/journeys/customizing-layout-starters.md): Customize our starter layouts to quickly produce reusable email layouts that fit your brand and style. - [Archiving Old Layouts](https://docs.customer.io/journeys/archiving-layouts.md): If you find yourself with a Layout that you no longer need, but you _do_ want to keep the campaigns and newsletters associated with it (and their data), you can stay organized by archiving it! - [HTML and CSS Email vs. Web](https://docs.customer.io/journeys/1-html-and-css.md): Quite often, our customers code their own email templates or receive them from a developer, and we'll get questions asking why a given email looks different between what's been coded, what's shown in Customer.io, and what's sent to a particular person. - [CSS pre-processing](https://docs.customer.io/journeys/css-pre-processing.md): By default, we pre-process CSS for emails created in our rich text or code editors, never our drag and drop editor. If you're using a custom email template which has already been pre-processed, add the template to our code editor then disable CSS pre-processing to avoid layout issues. This most frequently happens with responsive email templates on mobile devices. - [AMP for email](https://docs.customer.io/journeys/amp-for-email.md): Engage your audience with dynamic content and reduce the amount of times you have to link your customers out. [AMP](https://amp.dev/about/email) lets your customers complete surveys, RSVP to events, respond to comments, and more from within your emails. - [Adding a view in browser link](https://docs.customer.io/journeys/view-in-browser.md): If you have an image-heavy email, worry about display issues in specific email applications, or simply want to give your customers the option to view your email in the browser rather than just their inbox, you can add a link that generates a web version of the email *personalized for each recipient*. - [Resources for templates, code, and best practices](https://docs.customer.io/journeys/4-email-design-resources.md): This page contains resources to help you develop emails to support your use cases and audience. - [Adapting Foundation's Basic template](https://docs.customer.io/journeys/5-adapt-foundation-basic.md): [Foundation for Emails](https://get.foundation/emails/) is a framework; a code bundle that gives you sets of pre-built components and makes it easier to build responsive emails. That way, you don't have to write all your code from scratch. They've got [a set of pre-built templates](https://get.foundation/emails/email-templates.html) that some of our customers like to use, the *Basic* one being one of them. - [Adapting MailChimp's Two-Column template](https://docs.customer.io/journeys/6-adapt-mc-twocol.md): ## Journeys > Message Channels > Email > Senders & headers - [How do I add an avatar/logo to my emails?](https://docs.customer.io/journeys/adding-sender-image.md): - [Set Custom Email Headers](https://docs.customer.io/journeys/custom-mail-headers.md): Email headers specify specific sending and return options for an email. When sending via SMTP, you can use custom headers to do a great many things: customize messages, tag them, track them, or control specific behaviors. - [Set custom preheader/preview text](https://docs.customer.io/journeys/custom-preheader-text.md): An email's preheader text (more accurately referred to as "preview text") is the small block of text shown in an end-user's email inbox, next to or underneath the subject line. It's often used as a summary or an incentive to open and read the rest of the email. - [What does the Fake BCC option do?](https://docs.customer.io/journeys/fake-bcc.md): *Fake Bcc* is an option available when you're adding a Blind Carbon Copy (BCC) address to your campaigns. It's checked by default. When checked, rather than sending a true BCC we'll send you a separate copy of the email (with a slightly modified subject line containing the user’s email address). This allows you to be copied on emails and open them and click links without worrying about affecting the user’s history. - [Create multiple from addresses](https://docs.customer.io/journeys/multiple-from-addresses.md): You may have messages that should come from different email addresses depending on your use case—onboarding emails from customer success managers, newsletters from a general company address, etc. You can add multiple from addresses to fit your needs. ## Journeys > Message Channels > Email > Email Recipes - [Welcome Email Copy](https://docs.customer.io/journeys/welcome-email-copy.md): Got email writer's block? Here are copy templates for 5 different types of *Welcome emails* that can help get you started. The templates on this page refer to an imaginary productivity app called Prioritizer. - [Gmail Promotions](https://docs.customer.io/journeys/gmail-promotions.md): Google has added annotation support for emails that appear in the Promotions tab of the Gmail app. This means that your promotional emails have more opportunities to make an impression beyond the subject and preheader. You can highlight incentives, share key information from your message, and stand out in the crowded inbox. - [Send data from Customer.io to Salesforce, Highrise or another CRM](https://docs.customer.io/journeys/bcc-salesforce-or-your-crm.md): If you use a CRM or sales software like Salesforce, Highrise, Capsule CRM, SugarCRM, Zoho, Pipedrive and many others, you can often send a BCC to update a contact or lead with new information. With Customer.io, you can set up a BCC on individual emails to send those details to your CRM as needed. - [Code editor: send Trustpilot reviews](https://docs.customer.io/journeys/bcc-trustpilot.md): Send Trustpilot reviews as emails using our code editor. ## Journeys > Message Channels > Push Notifications - [Get started](https://docs.customer.io/journeys/push-getting-started.md): This page can help you understand what you need to do before you send your first push notification. You may need to integrate your app with Customer.io, add your push certificates to your workspace, or register devices. - [Integrate your app](https://docs.customer.io/journeys/push-developer-guide.md): Before you can send push notifications, you need to set up your workspace to send push notifications through your push provider and configure your app to receive push notifications. You can do this with or without our SDKs providing flexibility in how you send and receive push notifications. - [Migrate from another provider](https://docs.customer.io/journeys/push-migration.md): When you move to Customer.io from another push provider, you'll need to import your audience and help them upgrade to a version of your app that uses Customer.io. - [Registering device tokens](https://docs.customer.io/journeys/device-tokens.md): Device (push) tokens are how we identify devices in your audience. This page provides information about how to register tokens, associate them with people in your workspace, and what to do when they expire or are otherwise no longer useful. - [Send push notifications](https://docs.customer.io/journeys/send-push.md): You can send basic push notifications—with a title and a body—as a part of a campaign or broadcast. - [Custom push payloads](https://docs.customer.io/journeys/push-custom-payloads.md): You can send highly customized push notifications using a Custom Payload. If you've integrated with our SDK, custom payloads let you send images and link customers to pages in your app when they tap your message. - [Test push notifications](https://docs.customer.io/journeys/push-qa-testing.md): When it comes to testing your push configuration and messages for quality assurance (QA) purposes, we recommend that you keep separate development/test and production workspaces—*especially* if your workspaces don't share configuration credentials. - [Push metrics and message statuses](https://docs.customer.io/journeys/push-notifications-tracking.md): A push notification can have several different statuses as it goes through the process of being sent. When we attempt to deliver these, you may have told us to try reaching them on one or multiple devices. - [Best practices for push notifications](https://docs.customer.io/journeys/push-best-practices.md): Here are some things you can do to make sure that you can effectively communicate with your audience using push notifications. - [Frequently Asked Questions](https://docs.customer.io/journeys/push-faq.md): This page contains answers to frequent questions about push notifications both in general and in Customer.io. - [Troubleshooting mobile issues](https://docs.customer.io/journeys/troubleshooting-mobile.md): Having trouble with your mobile integration, push notifications, or in-app messages? Here are a few things that can help you fix the problem or gather information if you need to get in touch with Customer.io support. ## Journeys > Message Channels > SMS - [Get Started](https://docs.customer.io/journeys/sms-get-started.md): Get started using Twilio to send SMS to your customers as part of your triggered campaigns! - [Send SMS/MMS messages](https://docs.customer.io/journeys/sms-send-messages.md): Learn how to send SMS and MMS messages using Customer.io. - [Link shortening](https://docs.customer.io/journeys/sms-link-shortening.md): When you enable SMS and turn on the setting *Shorten links*, we shorten links in your SMS and Whatsapp message bodies. This page explains how link shortening works. - [Senders](https://docs.customer.io/journeys/sender-phone-numbers.md): When you enable SMS in Customer.io, we'll sync your phone numbers and short codes. This page explains a bit more about how to add new phone numbers so you can select different senders for different messages. - [Tracking](https://docs.customer.io/journeys/tracking-twilio-messages.md): We track the status of SMS/MMS messages, so you can track the success of your campaigns and segment users based on the messages you've sent them in the past. - [Frequently Asked Questions](https://docs.customer.io/journeys/faq-twilio.md): Answers to common questions about SMS messages with Twilio. - [SMS Opt-Out Keywords](https://docs.customer.io/journeys/sms-keywords.md): While opt-out keywords like `STOP` and `UNSUBSCRIBE` let people change their subscription preferences in Twilio, Customer.io doesn't receive SMS replies directly. But, you can create a webhook-triggered campaign to send unsubscribe information from Twilio to Customer.io so you can reflect and respect your audience's messaging preferences and privacy in Customer.io. - [Validate Mobile Phone Numbers](https://docs.customer.io/journeys/validate-mobile-phone-numbers.md): If you send SMS or WhatsApp messages, you may want to make sure that you're not trying to send messages to landlines or phone number types that you can't deliver SMS and WhatsApp messages to. ## Journeys > Message Channels > Twilio WhatsApp - [Get Started](https://docs.customer.io/journeys/whatsapp-get-started.md): There's a two-step process to send WhatsApp messages through Customer.io. First, you need to set up SMS in Customer.io. Then, you need to enable WhatsApp support across your Twilio and Customer.io accounts. - [Create content templates](https://docs.customer.io/journeys/whatsapp-content-templates.md): WhatsApp messages are based on templates approved by Meta. So, before you can send WhatsApp messages, you'll need to create templates in Twilio and submit them for approval. - [Send a WhatsApp Message](https://docs.customer.io/journeys/send-whatsapp.md): After you've [contacted us to enable WhatsApp support](/journeys/whatsapp-messages/), and created [WhatsApp-approved templates in Twilio](/journeys/whatsapp-content-templates/), you can send a WhatsApp message in any campaign or broadcast where you can send a *SMS* message. - [Frequently Asked Questions](https://docs.customer.io/journeys/faq-whatsapp.md): Answers to common questions about WhatsApp messages in Customer.io. ## Journeys > Message Channels > Web & In-App Messages - [Get started](https://docs.customer.io/journeys/in-app-getting-started.md): In-app messages let you incorporate dynamic, personalized content into your app or website with very little development or engineering and help you continue conversations across channels. By personalizing messages based on the activities your audience performs in- or outside your app, you can maintain highly relevant interactions with your audience. - [Set up your website](https://docs.customer.io/journeys/in-app-web.md): While we call some messages *in-app* messages, they're not limited to mobile apps! You can send in-app messages to your website visitors too. - [Anonymous messages](https://docs.customer.io/journeys/anonymous-in-app.md): You can show in-app messages to anonymous visitors to your website and convert them to members of your audience by inviting them to create an account, become users, or make their first purchase. - [Send in-app messages](https://docs.customer.io/journeys/send-in-app-message.md): Send an in-app message as a part of a campaign or broadcast workflow and put your message in front of people who open your app or visit your website. - [Inline messages](https://docs.customer.io/journeys/inline-in-app.md): Unlike traditional in-app messages, which appear on top of your app or website, inline in-app messages act like a part of the content on your page. They let you dynamically populate parts of your app and talk to your customers without interrupting their experience. - [Multi-step messages](https://docs.customer.io/journeys/multi-step.md): Multi-step messages let you send a single in-app message that contains sub-messages or steps, if you will. With multi-step messages, you can respond to user inputs or feedback without having to set up multiple messages or complicated campaign logic. - [Surveys](https://docs.customer.io/journeys/in-app-surveys.md): With Customer.io, you can send web and in-app surveys (NPS, CSAT, etc) using different arrangements of buttons. We track the buttons your audience clicks, and you can set up conditional branches in your campaigns or broadcasts to handle different responses to your survey. - [In-app metrics](https://docs.customer.io/journeys/in-app-metrics.md): When you send an in-app message, you can see its status per person, and metrics to determine how it's performed across your audience. - [Test your messages](https://docs.customer.io/journeys/test-in-app.md): You can send test messages to prove your integration and make sure your in-app messages behave the way you want them too. - [Localize messages](https://docs.customer.io/journeys/localize-in-app-message.md): If you have a localized app, you may want to deliver in-app messages in the language your audience uses. There are various language settings that can help ensure that your audience gets messages in their preferred language. - [In-App FAQ](https://docs.customer.io/journeys/in-app-faq.md): Frequently asked questions about in-app messages in Customer.io ## Journeys > Message Channels > Web & In-App Messages > Recipes for your website - [NPS Surveys](https://docs.customer.io/journeys/web-nps-survey.md): Net promoter score surveys (NPS) help you measure how likely people are to recommend your product (or a part of your product) to others. With in-app messages, you can send a quick survey to your website visitors to gauge their satisfaction. - [Promotions and offers](https://docs.customer.io/journeys/web-promotion.md): During certain times of the year, like Black Friday or Cyber Monday, you might want to display a banner or modal message on your website that highlights a promotion! With in-app messages, you can announce your promotion and drive sales, increase subscriptions, and so on. - [Promote upcoming event](https://docs.customer.io/journeys/in-app-event-promotion.md): Add a banner or modal message to your website that highlights upcoming events, like webinars, to increase registrations and engagement wih your product. - [Milestones and achievements](https://docs.customer.io/journeys/web-achievements.md): Add a banner or modal message on your website that highlights customers' milestones to encourage them to purchase. - [Feature adoption](https://docs.customer.io/journeys/web-adoption.md): Add a banner or modal message on your website to highlight a new feature! With in-app messages, you can announce features to drive adoption, increase subscriptions, and more. ## Journeys > Message Channels > Web & In-App Messages > Message editor reference - [The visual editor](https://docs.customer.io/journeys/new-in-app-editor.md): Draft in-app messages in your campaign or broadcast workflow. Our in-app editor it easy to build, similar to the way you build emails in Customer.io. And, like our email editor, you can even switch to a full HTML-code view to edit tags and classes directly. - [In-app component reference](https://docs.customer.io/journeys/in-app-components.md): In-app messages use an HTML-like syntax with components similar to HTML elements beginning with `x-`. We've separated these components from standard HTML. - [Legacy in-app editor](https://docs.customer.io/journeys/legacy-in-app-editor.md): If you built messages before July 8, 2024, you'll find them under **Content** > **In-App Messages**. You can edit these messages, but we recommend that you create new messages with our new editor. We'll eventually deprecate the editor that we talk about on this page! ## Journeys > Message Channels > Slack Messages - [Get Started](https://docs.customer.io/journeys/slack.md): Customer.io's Slack Action helps your teams work better together by passing information directly into Slack triggered by user behavior in your app, all customized to your needs. ## Journeys > Message Channels > Webhooks - [Send and receive data with webhooks](https://docs.customer.io/journeys/webhooks-action.md): The *Send and receive data* action represents a webhook. Webhooks let you pass data to, and return data from, just about any public API on the internet. You can use it to send a message, update a person's attributes in Customer.io, update CRM, or take just about any action on a customer that you'd want to do. - [Send in-app messages using webhooks](https://docs.customer.io/journeys/in-app-message-webhooks.md): You can use webhooks to send in-app messages through other platforms. Webhooks provide a way to access public APIs and services outside of Customer.io. We treat webhooks like messages: when someone reaches a webhook in your campaign, we'll execute the webhook, accessing an external API. In this case, we'll show you how to use webhooks to send in-app messages. - [Web push with webhooks](https://docs.customer.io/journeys/web-push-webhooks.md): You can use webhooks to trigger web push messages from other platforms as a part of your campaigns. - [Send direct mail with Lob](https://docs.customer.io/journeys/lob-webhook-integration.md): Using webhooks, you can trigger personalized direct mail right from your campaigns, so you can reach people physically in addition to other message channels. ## Journeys > Message Channels > Links in messages - [Link Tracking](https://docs.customer.io/journeys/link-tracking.md): When link tracking is enabled, we track clicks to help you understand how people are engaging with your messages in campaigns, broadcasts, and transactional use cases. - [Checking Link Status](https://docs.customer.io/journeys/link-checking.md): If you've got a lot of links in your message, you may need to make sure that none of them are broken without clicking each one individually! Here's how to check link health, and get all the link information you need in your messages. - [Adding URL parameters to links](https://docs.customer.io/journeys/url-parameters.md): Adding URL parameters to your emails' links enables you to better track and analyze customers' interactions with the messages you send from Customer.io. From your email settings, you can enable and set custom URL parameters. Then, once enabled, those parameters are appended to all links in your emails. - [Track universal links and app links in email](https://docs.customer.io/journeys/universal-links.md): Deep links take users to content inside your app. Apple's universal links are one type of deep link. Android's app links are another. With universal links and app links, you provide a standard web link and fallback should a user not have your app downloaded. To track them in Customer.io, you must add a special liquid tag, explained below. This article discusses how to set up universal and app links to direct email recipients to a page in your mobile app and track clicks on these links. - [HTTPS Link Tracking](https://docs.customer.io/journeys/track-https-links.md): By default, [tracked links that use your custom subdomain](/journeys/link-tracking-custom-domain/) as specified with the CNAME record will be generated as non-secure HTTP links. To generate secure HTTPS links, you'll configure your link tracking subdomain to point to a server that proxies our link tracking domain (`track.customer.io` or `track-eu.customer.io`) using a valid SSL certificate. ## Journeys > Message Channels > Subscription preferences - [Overview of subscription options](https://docs.customer.io/journeys/subscriptions-overview.md): We provide native unsubscribe functionality for email, SMS, and push notifications. In this article, you'll also learn about non-native subscription options for push, SMS, as well as in-app. - [Global unsubscribes](https://docs.customer.io/journeys/unsubscribes.md): We store a person's global subscription status as an attribute and track messages that cause users to unsubscribe so you can better understand your message and campaign performance. **A person's global subscription status applies to email, push, and SMS.** - [Subscription center](https://docs.customer.io/journeys/subscription-center.md): A subscription center helps you differentiate between the different types of messages you send and lets your audience decide what kinds of campaigns and messages they want to receive. - [Brand your subscription pages](https://docs.customer.io/journeys/subscription-center-branding.md): If you have no subscription topics in your workspace, you can brand the **global unsusbcribe page** that your customers will see when they click your unsubscribe links. If you have at least one subscription topic (even if the subscription center is disabled), you'll have the ability to brand your **subscription preferences page**. - [Subscription FAQs](https://docs.customer.io/journeys/unsubscribe-faqs.md): This article contains a series of frequenctly asked questions that apply to our subscription center and global unsubscribe functionality. - [Multi-language support for the subscription center](https://docs.customer.io/journeys/subscription-center-translation.md): You can translate, aka localize, your subscription center in *Workspace Settings*. - [Migrate subscription preferences](https://docs.customer.io/journeys/migrate-subscription-prefs.md): You may have managed your audience's subscription preferences manually—with your own attributes in a system outside of Customer.io. Before you use our subscription center feature, you probably want to migrate your audience's preferences to the `cio_subscription_preferences` attribute, so that your audience's preferences still apply when you enable the subscription center. - [Set preferences outside of the subscription center](https://docs.customer.io/journeys/set-preferences-outside-center.md): A subscription center helps you differentiate between the types of messages you send and lets your audience decide what kinds of campaigns and messages they want to receive. Your customers can update their preferences from within your Customer.io messages or other locations including, but not limited to, account creation. - [Send from a personal support rep](https://docs.customer.io/journeys/assign-a-personal-support-rep.md): - [Find messages using the Message Library](https://docs.customer.io/journeys/message-library.md): The Message Library helps you search for messages across your campaigns, broadcasts, and newsletters. This makes it easier to find specific messages, or campaigns containing a specific message. - [Image requirements](https://docs.customer.io/journeys/image-support.md): The types of images and media you can use, and their maximum file sizes, depend largely on the platform you send messages to (email, mobile push, slack, etc). - [The Asset Library](https://docs.customer.io/journeys/asset-library.md): On the Assets page, you can store images that you want to reuse across messages, so you don't have to upload the same image over and over again! - [Message Statuses](https://docs.customer.io/journeys/message-statuses.md): Each individual message that you send to a person travels through Customer.io, to a delivery provider, and ultimately to a person. Customer.io logs the status of each individual delivery and journey, so you know whether or not a person has received a message, opened it, and responded to it. - [Deliveries & Drafts data](https://docs.customer.io/journeys/deliveries-drafts-data.md): The Deliveries & Drafts page shows you a list of delivered or drafted messages across all journeys and provides a way to export data within a specified timeline. ## Journeys > Liquid & Personalization - [Liquid upgrade](https://docs.customer.io/journeys/liquid-upgrade.md): We are upgrading how we render liquid in your messages to better support you. The version we use to render your liquid depends on when you created your account with us. - [Liquid syntax list](https://docs.customer.io/journeys/liquid-tag-list.md): This page contains a list of the liquid tags, keys, and filters available to you in Customer.io. If you're new to liquid, you can learn more in our guide about [personalizing messages](/journeys/using-liquid/). - [Personalizing messages with liquid](https://docs.customer.io/journeys/using-liquid.md): Liquid is a templating language that lets you personalize messages based on your audience's data. Any part of your message can contain liquid, meaning that you're not just limited to personalized message content: you can use liquid to personalize your sender information, email subjects, and so on. - [Personalize actions with JavaScript](https://docs.customer.io/journeys/js-in-actions.md): In our *Create Event* and *Create or Update Person* actions, you can use JavaScript or Liquid to access and manipulate variables. This page shows JavaScript methods corresponding to common Liquid use cases, helping you take advantage of JavaScript in your workflow actions. - [Reusing content with snippets](https://docs.customer.io/journeys/snippets.md): *Snippets* are common chunks of content that you can share across your emails, text messages, and more. - [Composer errors](https://docs.customer.io/journeys/composer-errors.md): When you compose messages and use Liquid, you may sometimes see the little **Review Errors** button turn red and animate. ## Journeys > Metrics - [Metrics Overview](https://docs.customer.io/journeys/analytics.md): Metrics throughout Customer.io show you how well your messaging strategies are working or if there's anything unexpected happening. We provide a variety of views so you can learn about everything from workspace-wide performance to Campaign journeys. - [Campaign and Broadcast Metrics](https://docs.customer.io/journeys/campaign-metrics.md): When you start a campaign or trigger a broadcast, it begins generating metrics on the overview page. - [Workspace Dashboard](https://docs.customer.io/journeys/dashboard.md): The Workspace Dashboard gives you a high-level view of how everything in your workspace is running and performing. - [Analysis page & reports](https://docs.customer.io/journeys/run-reports.md): On the **Analysis** page, you can define the specific report criteria you want to see and compare your campaigns, newsletters, and broadcasts. - [Email deliverability metrics](https://docs.customer.io/journeys/deliverability-metrics.md): The **Deliverability** tab in the **Analysis** section of your workspace shows key email metrics by recipient provider. These metrics represent all outbound emails from your workspace over a timeframe you select. This data can help you identify providers you're performing poorly with so that you can take action to improve deliverability and engagement with your emails. - [Understanding your A/B test results](https://docs.customer.io/journeys/understanding-ab-results.md): - [Getting conclusive results from A/B tests](https://docs.customer.io/journeys/conclusive-ab-results.md): Testing messages sent to your user base is a fantastic way to learn about your consumers and continue to improve your messaging strategies. But how can you be sure that your tests are actually telling you what you think they’re telling you? When conducting tests, you should aim to maximize the level of confidence you have in the results of the test. This is where statistical significance comes in. - [Failed and attempted messages](https://docs.customer.io/journeys/message-failed.md): ## Integrations - [Integration Directory](https://docs.customer.io/integrations/directory.md): Search for the integrations we support. Click a card below to go to documentation for an integration in our directory! ## Integrations > Get Started - [Quick start guide](https://docs.customer.io/integrations/getting-started/quick-start-guide.md): We offer a number of ways to get data in and out of Customer.io. This flexibility ensures that you can activate your data in Customer.io and that your data is never stuck with us; you can take advantage of your data in any number of downstream platforms. This page provides some basic instructions to get you started, including how to get your data flowing through Customer.io! - [Understanding Integrations in Customer.io](https://docs.customer.io/integrations/getting-started/how-it-works.md): We make it easy to connect data from sources to destinations—including Journeys—so that you can take advantage of your data, no matter where it comes from or where you want it to go. - [Troubleshooting](https://docs.customer.io/integrations/getting-started/troubleshooting.md): When data doesn't flow into Customer.io or out to other services, you may need to determine if you have a problem with your data-in integration, your data-out actions, or your connection with your incoming and outgoing services. - [Data Compliance and Privacy](https://docs.customer.io/integrations/getting-started/data-compliance.md): We want to help you stay in compliance with GDPR and other regulations. And, if you're a premium customer, we can also help you maintain HIPAA compliance. ## Integrations > Data In - [Introduction](https://docs.customer.io/integrations/data-in/getting-started.md): A *data-in* integration is a website, server library, mobile SDK, or cloud application that sends data into Customer.io. It’s where your data originates. ## Integrations > Data In > Source Specs - [Understanding incoming data](https://docs.customer.io/integrations/data-in/source-spec/incoming-data.md): We map the data you send into Customer.io to your outbound integrations. Your incoming data represents people who visit your website and use your services. This page helps explain the kinds of data you'll send into Customer.io. - [Identify](https://docs.customer.io/integrations/data-in/source-spec/identify-spec.md): The identify method represents a person and their traits, helping you send information about users or customers in your system to your destinations. - [Group](https://docs.customer.io/integrations/data-in/source-spec/group-spec.md): The group method is how you'll associate a person with a group, like the company they work for or the school they attend. It also lets you record custom traits about the group, like industry or number of employees. - [Page](https://docs.customer.io/integrations/data-in/source-spec/page-spec.md): The page method represents pageviews: it's a method you'll invoke when people visit pages on your website. - [Screen](https://docs.customer.io/integrations/data-in/source-spec/screen-spec.md): The screen method represents screen views: it's a method you'll invoke when people view screens in your mobile app. - [Track](https://docs.customer.io/integrations/data-in/source-spec/track-spec.md): The track method is how you'll record actions your users perform. - [Alias](https://docs.customer.io/integrations/data-in/source-spec/alias-spec.md): The alias method helps you merge two user profiles. It's typically useful when you need to merge a person's anonymous activity with their identified profile. - [Common fields](https://docs.customer.io/integrations/data-in/source-spec/common-fields.md): All calls are structured the same way. While you'll only send _some_ information in your calls, our libraries and API capture *implicit* information about the source of the call, the person the call represents, and timing. - [Custom events](https://docs.customer.io/integrations/data-in/custom-events.md): The most flexible method is `track`. It lets you send custom events representing your users' activities on your site. This page contains a few examples to help you capture the information you really want from your data sources. ## Integrations > Data In > Semantic Events - [Understanding Semantic Events](https://docs.customer.io/integrations/data-in/semantic-events/getting-started.md): While events can have any name and `properties` you want, we've predefined a number of events and sets of properties. These *semantic events* are already mapped to our data-out integrations, so you can get up and running quickly. - [A/B Test events](https://docs.customer.io/integrations/data-in/semantic-events/a-b-test.md): A/B tests help you test changes variations to improve on your websites, apps, services, and so on. If you send A/B tests that conform to our specifications, they'll automatically trigger downstream actions so you can capture test results in any number of outbound integrations. - [Customer.io events](https://docs.customer.io/integrations/data-in/semantic-events/cio-journeys.md): Customer.io events are events that perform specific actions in Journeys—our messaging automation tool. These events can remove people from your environment, delete relationships, suppress users, and so on. - [Ecommerce Events](https://docs.customer.io/integrations/data-in/semantic-events/ecommerce.md): Ecommerce `track` events typically contain the same information across platforms—products, brands, orders, cart information, etc. Send events conforming to our ecommerce specification to use our out-of-the-box actions without having to map your own data to each outbound integration. - [Email events](https://docs.customer.io/integrations/data-in/semantic-events/email.md): If you send email events into Customer.io from somewhere other than your own workspace, you should shape your events to use the following common fields. - [Live chat events](https://docs.customer.io/integrations/data-in/semantic-events/live-chat.md): If you send live chat events into Customer.io, you should shape incoming events using the formats on this page. We base our default actions on these formats, making it easier to use your events in downstream integrations. - [Mobile App Lifecycle Events](https://docs.customer.io/integrations/data-in/semantic-events/mobile-app.md): Our Mobile App Lifecycle Event specification helps you send events in a uniform format that automatically maps to the integrations we support. Following this spec makes it easier to use data from your mobile apps without having to re-map your incoming data to each integration. - [Video playback events](https://docs.customer.io/integrations/data-in/semantic-events/video.md): Video events help you observe and report how customers engage with your videos and ad content. Using the specification outlined on this page will help you take advantage of out-of-the-box actions for integrations that rely on video playback events. - [Backfill historical data](https://docs.customer.io/integrations/data-in/importing-old-data.md): As you get started with Customer.io, you might want to backfill historical data for people and events. This page helps you get started. Make sure you understand [how backfilled data can trigger campaigns](#backfill-data-campaigns), if you're already up and running. ## Integrations > Data In > Connections - [Customer.io API](https://docs.customer.io/integrations/data-in/connections/http-api.md): - [Journeys Message Metrics](https://docs.customer.io/integrations/data-in/connections/cio-journeys.md): - [Mobile App Sources](https://docs.customer.io/integrations/data-in/connections/mobile.md): Unlike most other sources, our mobile sources aren't just a way to pass data from one platform to another. They support push notifications and in-app messages from Customer.io Journeys! ## Integrations > Data In > Connections > Forms - [Get started](https://docs.customer.io/integrations/data-in/connections/forms/connected-forms.md): Our form integrations automatically add people and trigger campaigns when they submit your forms. This makes it easy to capture and respond to leads, people who provide feedback, and more. - [Formstack](https://docs.customer.io/integrations/data-in/connections/forms/formstack.md): You can connect forms to your Customer.io workspace to automatically add people and trigger campaigns when they submit your forms. This makes it easy to capture and respond to leads. - [Jotform](https://docs.customer.io/integrations/data-in/connections/forms/jotform.md): Connect Jotforms to your workspace to automatically add people and trigger campaigns when they submit your form. Our Jotform integration relies on a webhook from Jotform. - [Squarespace](https://docs.customer.io/integrations/data-in/connections/forms/squarespace.md): You can connect forms to your Customer.io workspace to automatically add people and trigger campaigns when they submit forms on your Squarespace site. This makes it easy to capture and respond to leads. - [Typeform](https://docs.customer.io/integrations/data-in/connections/forms/typeform.md): Connect Typeforms to your workspace to automatically add people and trigger campaigns when they submit your form. Our typeform integration relies on a webhook from Typeform. - [Unbounce](https://docs.customer.io/integrations/data-in/connections/forms/unbounce.md): You can connect forms to your Customer.io workspace to automatically add people and trigger campaigns when they submit forms on your Unbounce site. This makes it easy to capture and respond to leads. - [Webflow](https://docs.customer.io/integrations/data-in/connections/forms/webflow.md): You can connect forms to your Customer.io workspace to automatically add people and trigger campaigns when they submit forms on your Webflow site. This makes it easy to capture and respond to leads. - [Wordpress with WPForms](https://docs.customer.io/integrations/data-in/connections/forms/wordpress-with-wpforms.md): You can connect forms to your Customer.io workspace to automatically add people and trigger campaigns when they submit forms on your Wordpress site. This makes it easy to capture and respond to leads. - [Custom JS integrations](https://docs.customer.io/integrations/data-in/connections/forms/javascript-form-integrations.md): Our JavaScript forms snippet automatically adds people and triggers campaigns when people submit your forms. This makes it easy to capture and respond to leads, people who provide feedback, and more—even for form providers that don't have a direct integrations with Customer.io. - [Facebook Lead Ads](https://docs.customer.io/integrations/data-in/connections/forms/facebook-lead-ads.md): When you run Facebook ads, you can include forms to capture information about people who are interested in your products and services. This integration lets you add people who fill out your Facebook lead ad form to your Customer.io workspace, then trigger campaigns so you can convert your Facebook leads to customers or users. - [Use form data in Customer.io](https://docs.customer.io/integrations/data-in/connections/forms/forms-in-campaigns.md): You can use form submissions to trigger campaigns and the data in each form submission to personalize messages. This helps you talk to users who fill out your forms. - [Forms API (backend integrations)](https://docs.customer.io/integrations/data-in/connections/forms/forms-api.md): You can use the Customer.io Forms API to capture form submissions from any form provider. This makes it easy to capture and respond to leads based on information you receive in your backend. - [Edit or disconnect forms](https://docs.customer.io/integrations/data-in/connections/forms/edit-disconnect.md): You can edit forms to add, remove, or re-map form fields. If you use forms temporarily, you can also disconnect them from your workspace when you're done. ## Integrations > Data In > Connections > JavaScript - [Getting Started](https://docs.customer.io/integrations/data-in/connections/javascript/js-source.md): - [Method Reference](https://docs.customer.io/integrations/data-in/connections/javascript/method-reference.md): This page describes the anatomy of the major methods available to the JavaScript snippet. The basic tracking methods below are the building blocks of your integrations. They include [Identify](#identify), [Track](#track), [Page](#page), [Group](#group), and [Alias](#alias) calls. - [Migrate from another service](https://docs.customer.io/integrations/data-in/connections/javascript/js-migration.md): Our JavaScript snippet works similarly to other platforms, but you may need to do a bit of work to move from another service to Customer.io. - [Managing identities](https://docs.customer.io/integrations/data-in/connections/javascript/js-source-identities.md): We write the user's IDs to their browser's local storage, and use that as the user ID on cookies whenever possible. Local Storage is meant for storing this type of first-party information and helps us ensure high fidelity, first-party data. - [Cookies and identity management](https://docs.customer.io/integrations/data-in/connections/javascript/js-source-cookies.md): Our JavaScript client library stores cookies on the client. You can recall this information when you need to reuse it and change whether we persist data to protect your audience's personal information. - [Utility Methods and Performance](https://docs.customer.io/integrations/data-in/connections/javascript/utility-methods.md): When you load the JavaScript snippet, you have access to additional methods that control how and when the JavaScript client loads - [In-app messages](https://docs.customer.io/integrations/data-in/connections/javascript/in-app.md): When you use our JavaScript client, you can send in-app messages to your website visitors. This page helps you understand how some in-app features work so that you can better target and display messages. - [Proxying the JavaScript client](https://docs.customer.io/integrations/data-in/connections/javascript/js-source-proxy.md): You can proxy the client-side JavaScript (Analytics.js) and all tracking event requests through your domain. You might want to do this to deal with ad blockers or to keep your analytics requests from being blocked by firewalls. ## Integrations > Data In > Connections > JavaScript > Legacy JavaScript - [Get started](https://docs.customer.io/integrations/data-in/connections/javascript/legacy-js/getting-started.md): It's easy to get started with our JavaScript snippet: just paste the snippet into your pages and you're ready to use Customer.io! - [Identify people](https://docs.customer.io/integrations/data-in/connections/javascript/legacy-js/identify.md): Identifying people sends their data to Customer.io, and makes future calls reference the identified person. - [Track and page events](https://docs.customer.io/integrations/data-in/connections/javascript/legacy-js/events.md): You can send events for people who visit your site, representing their activity on your website. You can also send `page` events to track the pages your audience visits. - [In-app messages](https://docs.customer.io/integrations/data-in/connections/javascript/legacy-js/in-app.md): You don't need to do anything besides install the web SDK and identify people to send in-app messages to your website visitors. However, you may want to understand how some in-app features work to better target and display messages. - [Content Security Policy (CSP)](https://docs.customer.io/integrations/data-in/connections/javascript/legacy-js/content-security-policy.md): CSP is an optional security protocol (specified via a header or meta data) that requires a web app to identify all the content providers that the web app will make use of. This page outlines the minimum required directives to enable full Customer.io functionality. ## Integrations > Data In > Connections > Track API integrations - [Add a Classic Track API integration](https://docs.customer.io/integrations/data-in/connections/classic-api/journeys-sources.md): - [Advanced: transform data](https://docs.customer.io/integrations/data-in/connections/classic-api/cio-journeys-api.md): - [Invalid Track API Requests](https://docs.customer.io/integrations/data-in/connections/classic-api/invalid-api-requests.md): When you send an invalid request to our Track API, we respond with a `400 Bad Request` including additional details. You can use these details to troubleshoot your request. ## Integrations > Data In > Connections > Reverse ETL - [About Reverse ETL](https://docs.customer.io/integrations/data-in/connections/reverse-etl/about-reverse-etl.md): Reverse ETL (Extract, Transform, Load) extracts data from a data warehouse so you can take advantage of your data in services outside of Customer.io. You'll write a query determining the data that you want to send into Customer.io. For example, you might write a query representing `track` events so you can sync records from Snowflake to Mixpanel. - [Amazon Redshift](https://docs.customer.io/integrations/data-in/connections/reverse-etl/amazon-redshift.md): - [Google BigQuery](https://docs.customer.io/integrations/data-in/connections/reverse-etl/google-bigquery.md): - [Microsoft SQL Server](https://docs.customer.io/integrations/data-in/connections/reverse-etl/microsoft-sql.md): - [MySQL](https://docs.customer.io/integrations/data-in/connections/reverse-etl/mysql.md): - [PostgreSQL](https://docs.customer.io/integrations/data-in/connections/reverse-etl/postgresql.md): - [Snowflake](https://docs.customer.io/integrations/data-in/connections/reverse-etl/snowflake.md): ## Integrations > Data In > Connections > Reverse ETL > Legacy integrations - [Reverse ETL Overview](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/reverse-etl.md): Import people, objects, and relationships from your database. Reverse ETL integrations ensure that people in your workspace reflect the latest information from your CRM or other backend system. - [Amazon Redshift](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/redshift-reverse-etl.md): Import people, objects, and relationships from an Amazon Redshift database. This reverse ETL integration makes sure that people in your workspace reflect the latest information from your CRM or other backend system. - [Google BigQuery](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/bigquery-reverse-etl.md): Import people, objects, and relationships from a BigQuery instance. This reverse ETL integration makes sure that people in your workspace reflect the latest information in your data warehouse. - [Microsoft SQL server](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/ms-sql-reverse-etl.md): Import people, objects, and relationships from a Microsoft SQL database. This reverse ETL integration makes sure that people in your workspace reflect the latest information from your CRM or other backend system. - [MySQL](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/sql-reverse-etl.md): Import people, objects, and relationships from a MySQL database. This reverse ETL integration makes sure that people in your workspace reflect the latest information from your CRM or other backend system. - [PostgreSQL](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/postgres-reverse-etl.md): Import people, objects, and relationships from a Postgres database. This reverse ETL integration makes sure that people in your workspace reflect the latest information from your CRM or other backend system. - [Snowflake](https://docs.customer.io/integrations/data-in/connections/reverse-etl/database-sync/snowflake-reverse-etl.md): Import people, objects, and relationships from a Snowflake database. This reverse ETL integration makes sure that people in your workspace reflect the latest information from your CRM or other backend system. ## Integrations > Data In > Connections > Salesforce - [Getting Started](https://docs.customer.io/integrations/data-in/connections/salesforce/getting-started.md): - [Use Salesforce data in Customer.io](https://docs.customer.io/integrations/data-in/connections/salesforce/mapping-to-customerio.md): When you set up a Salesforce integration with Customer.io, you'll need to map your Salesforce data to people, custom objects, or events. - [Map data to other services](https://docs.customer.io/integrations/data-in/connections/salesforce/mapping-data.md): When you send data from Salesforce to Customer.io, you'll convert it to people, events, or custom objects. But when you send data _outside_ of Customer.io, you'll need to map it to the right format for your destination. - [Scheduled syncs](https://docs.customer.io/integrations/data-in/connections/salesforce/syncs.md): When you setup your Salesforce integration, you'll determine how often you want to sync data to Customer.io. - [Deleting Data](https://docs.customer.io/integrations/data-in/connections/salesforce/delete.md): We represent data you delete in Salesforce with events. You can use these events to determine how you handle deleted data in each of your downstream integrations. - [API Call Calculator](https://docs.customer.io/integrations/data-in/connections/salesforce/api-calls-simulator.md): Estimate the number of API calls that your Salesforce integration will make for its initial and incremental syncs. This can help you figure out if your Salesforce integration will exceed your Salesforce plan limits. ## Integrations > Data In > Connections > Servers - [Node.js](https://docs.customer.io/integrations/data-in/connections/servers/node.md): - [Python](https://docs.customer.io/integrations/data-in/connections/servers/python.md): - [Go](https://docs.customer.io/integrations/data-in/connections/servers/go.md): ## Integrations > Data In > Connections > Customer Data Platforms - [Segment](https://docs.customer.io/integrations/data-in/connections/cdps/segment.md): When you send data from Segment to Customer.io, you'll treat Customer.io as a *destination* in Segment. Use Segment's destination actions to capture events and shape data from any of your Segment [source integrations](https://segment.com/catalog/) in Customer.io, including anonymous events. - [Segment data-in (classic)](https://docs.customer.io/integrations/data-in/connections/cdps/segment-destination-classic.md): This page describes Segment's classic integration with Customer.io as a destination. This integration is in maintenance mode. In general, we suggest that you use the newer [Destination Actions](/integrations/data-in/connections/cdps/segment-destination) integration to pipe data from any one of Segment’s hundreds of Source [integrations](https://segment.com/catalog/) into your Customer.io workspace. You can find more details in [Segment's documentation](https://segment.com/docs/connections/destinations/catalog/customer-io/). - [Rudderstack (Legacy)](https://docs.customer.io/integrations/data-in/connections/cdps/rudderstack-in.md): Set up Customer.io as a Rudderstack Destination, connecting data from any of Rudderstack's source integrations to your workspace. - [mParticle (Legacy)](https://docs.customer.io/integrations/data-in/connections/cdps/integrating-with-mparticle.md): mParticle is a customer data platform that allows you to unify your customer data and connect it anywhere to improve marketing performance, enhance analytics, and transform the customer experience. With mParticle you can easily connect Customer.io to your data stream to begin receiving real time event and audience data in Customer.io. ## Integrations > Data In > Connections > Webhook-based integrations - [Using Zapier with the Track API](https://docs.customer.io/integrations/data-in/connections/webhooks/zapier-legacy-api.md): [Zapier](https://zapier.com/apps/customerio/integrations) helps you connect Customer.io to hundreds of other web services. You can set up automated connections called Zaps in minutes and without writing code, to automate your day-to-day tasks and build workflows between apps that otherwise wouldn't be possible. - [Zoho integration](https://docs.customer.io/integrations/data-in/connections/webhooks/integrating-with-zoho-crm.md): Zoho is a clouds suite of tools for business, including [a CRM](https://www.zoho.com/crm/) and [Zoho Flow](https://www.zoho.com/flow/) for workflow automation. Using Zoho Flow, you can connect your Zoho CRM data to Customer.io and start messaging your users in minutes. - [Hubspot integration](https://docs.customer.io/integrations/data-in/connections/webhooks/integrating-with-hubspot.md): You can send data from Hubspot to Customer.io by setting up webhook campaigns in your workspace or by using Zapier. This article specifically covers how to create and update contacts from Hubspot in Customer.io. ## Integrations > Data Out - [Getting Started](https://docs.customer.io/integrations/data-out/getting-started.md): Customer.io has *data out* integrations that let you send data from Customer.io or other sources of data to a destination service. - [Add a data-out integration](https://docs.customer.io/integrations/data-out/add-destination.md): After you've added some data-in integrations, you're ready to forward your data to places where you store or act on your data. We call these *data out*, *outgoing*, or *outbound* integrations. While each data-out integration is different, there are some similar settings for each that you'll use when you set things up with Customer.io. - [Actions](https://docs.customer.io/integrations/data-out/actions.md): Actions determine how we map incoming data to your outgoing integration. ## Integrations > Data Out > Database/Warehouse Integrations - [Introduction](https://docs.customer.io/integrations/data-out/data-warehouses/data-warehouse-intro.md): We offer two types of database and data warehouse integrations. This page explains more about how these integrations work and the differences between them. - [Standard integrations](https://docs.customer.io/integrations/data-out/data-warehouses/data-warehouses-intro.md): Our data warehouse integrations let you send Customer.io data about messages, people, metrics, etc to your data warehouse by way of an Amazon S3 or Google Cloud Project (GCP) storage bucket. From there, you can ingest the data to your warehouse. - [Advanced Integrations](https://docs.customer.io/integrations/data-out/data-warehouses/data-warehouses-cdp.md): We can stream incoming data to your data storage buckets, so you can sync your Customer.io data to a database outside of Customer.io. But these integrations work a little differently from other integrations in Customer.io. This page explains how we create files for your storage buckets which you can then import into your data warehouse or database. - [Filtering and mapping actions](https://docs.customer.io/integrations/data-out/action-mapping.md): In most cases, you'll want to use the default actions as provided for any integration. But, if your use case differs from the out-of-the-box experience, you can change the values that we map to your outgoing integration to fit your specific use case. - [Resend past data](https://docs.customer.io/integrations/data-out/data-replay.md): When you want to migrate from one platform for another, but you don't want to start from scratch, you can send your past your source data to a new destination! ## Integrations > Data Out > Connections - [Actable Predictive](https://docs.customer.io/integrations/data-out/connections/actable-predictive.md): - [Adobe Target](https://docs.customer.io/integrations/data-out/connections/adobe-target.md): - [Algolia Insights](https://docs.customer.io/integrations/data-out/connections/algolia-insights.md): - [Amazon Redshift](https://docs.customer.io/integrations/data-out/connections/amazon-redshift-data-out.md): Send Customer.io data about messages, people, metrics, etc to your Amazon Redshift warehouse by way of an Amazon S3 or Google Cloud Project (GCP) storage bucket. This integration syncs up to every 15 minutes, helping you keep up to date on your audience's message activities. - [Amazon Redshift (Advanced)](https://docs.customer.io/integrations/data-out/connections/amazon-redshift.md): - [Amazon S3](https://docs.customer.io/integrations/data-out/connections/amazon-s3-data-out.md): Send Customer.io data about messages, people, metrics, etc to Amazon S3 storage. From here, you can ingest your data into the data warehouse of your choosing. This integration syncs up to every 15 minutes, helping you keep up to date on your audience's message activities. - [Amazon S3 (Advanced)](https://docs.customer.io/integrations/data-out/connections/amazon-simple-storage-service.md): - [Amplitude](https://docs.customer.io/integrations/data-out/connections/amplitude.md): - [Amplitude (Message Metrics)](https://docs.customer.io/integrations/data-out/connections/amplitude-metrics.md): Take advantage of our native integration to export audience engagement events to Amplitude. - [Attio](https://docs.customer.io/integrations/data-out/connections/attio.md): - [Azure blob storage](https://docs.customer.io/integrations/data-out/connections/ms-azure-data-out.md): Send Customer.io data about messages, people, metrics, etc to Microsoft Azure Blob Storage. From here, you can ingest your data into the data warehouse of your choosing. This integration exports files up to every 15 minutes, helping you keep up to date on your audience's message activities. - [Bing Ads](https://docs.customer.io/integrations/data-out/connections/bing-ads.md): - [Braze](https://docs.customer.io/integrations/data-out/connections/braze.md): - [Braze Cohorts](https://docs.customer.io/integrations/data-out/connections/braze-cohorts.md): - [Clevertap](https://docs.customer.io/integrations/data-out/connections/clevertap.md): - [Close](https://docs.customer.io/integrations/data-out/connections/close.md): - [CommandBar](https://docs.customer.io/integrations/data-out/connections/commandbar.md): - [Cordial](https://docs.customer.io/integrations/data-out/connections/cordial.md): - [Criteo Audiences](https://docs.customer.io/integrations/data-out/connections/criteo-audiences.md): - [Customer.io](https://docs.customer.io/integrations/data-out/connections/customerio.md): - [Facebook Conversions API](https://docs.customer.io/integrations/data-out/connections/facebook-conversions-api.md): - [Friendbuy](https://docs.customer.io/integrations/data-out/connections/friendbuy.md): - [FullStory](https://docs.customer.io/integrations/data-out/connections/fullstory.md): - [Gainsight PX](https://docs.customer.io/integrations/data-out/connections/gainsight-px-cloud-action.md): - [Google Ad Conversions](https://docs.customer.io/integrations/data-out/connections/google-enhanced-conversions.md): - [Google Ads (Gtag)](https://docs.customer.io/integrations/data-out/connections/google-ads.md): - [Google Analytics](https://docs.customer.io/integrations/data-out/connections/google-analytics-4.md): - [Google BigQuery](https://docs.customer.io/integrations/data-out/connections/google-bigquery-data-out.md): Send Customer.io data about messages, people, metrics, etc to your Google BigQuery warehouse by way of an Amazon S3 or Google Cloud Project (GCP) storage bucket. This integration syncs up to every 15 minutes, helping you keep up to date on your audience's message activities. - [Google BigQuery (Advanced)](https://docs.customer.io/integrations/data-out/connections/google-bigquery.md): - [Google Cloud Storage](https://docs.customer.io/integrations/data-out/connections/gcs-data-out.md): Send Customer.io data about messages, people, metrics, etc to your Google Cloud Storage (GCS) instance. From here, you can ingest your data into the data warehouse of your choosing. This integration syncs up to every 15 minutes, helping you stay up to date on your audience's message activities. - [Google Cloud Storage (Advanced)](https://docs.customer.io/integrations/data-out/connections/google-cloud-storage.md): - [Google Sheets](https://docs.customer.io/integrations/data-out/connections/google-sheets-non-etl.md): - [Google Tag Manager (GTM)](https://docs.customer.io/integrations/data-out/connections/google-tag-manager.md): - [Heap](https://docs.customer.io/integrations/data-out/connections/heap.md): - [Hubspot](https://docs.customer.io/integrations/data-out/connections/hubspot.md): - [Intercom](https://docs.customer.io/integrations/data-out/connections/intercom.md): - [Koala](https://docs.customer.io/integrations/data-out/connections/koala.md): - [LaunchDarkly](https://docs.customer.io/integrations/data-out/connections/launchdarkly.md): - [LiveLike](https://docs.customer.io/integrations/data-out/connections/livelike-cloud.md): - [LogRocket](https://docs.customer.io/integrations/data-out/connections/logrocket.md): - [Meta (Facebook) Pixel](https://docs.customer.io/integrations/data-out/connections/meta-pixel.md): - [Metronome](https://docs.customer.io/integrations/data-out/connections/metronome.md): - [Mixpanel](https://docs.customer.io/integrations/data-out/connections/mixpanel.md): - [Mixpanel (Message Metrics)](https://docs.customer.io/integrations/data-out/connections/mixpanel-legacy.md): Take advantage of our native integration to export audience engagement events to Mixpanel. - [Moengage](https://docs.customer.io/integrations/data-out/connections/moengage.md): - [MS Azure Blob Storage (Advanced)](https://docs.customer.io/integrations/data-out/connections/azure-blob-storage.md): - [Pinterest Conversions](https://docs.customer.io/integrations/data-out/connections/pinterest-conversions.md): - [Pipedrive](https://docs.customer.io/integrations/data-out/connections/pipedrive.md): - [PlayerZero](https://docs.customer.io/integrations/data-out/connections/playerzero.md): - [Qualtrics](https://docs.customer.io/integrations/data-out/connections/qualtrics.md): - [Ripe](https://docs.customer.io/integrations/data-out/connections/ripe.md): - [Rudderstack (legacy)](https://docs.customer.io/integrations/data-out/connections/rudderstack-legacy.md): Set up Customer.io as a Rudderstack source, and use Reporting Webhooks to send email events from your workspace to any of Rudderstack's destinations. ## Integrations > Data Out > Connections > Salesforce - [About this integration](https://docs.customer.io/integrations/data-out/connections/salesforce/salesforce-intro.md): - [Sent messages as tasks](https://docs.customer.io/integrations/data-out/connections/salesforce/tasks-in-sf.md): You can send message information to Salesforce—the emails you send, whether or not people click them, and so on. In Salesforce, you'll typically record these events as **Tasks**. When you send [message events](#message-event-triggers) to Salesforce, you'll need to map a few fields to make sure that Salesforce processes your message activity *tasks* properly. - [Frequently Asked Questions](https://docs.customer.io/integrations/data-out/connections/salesforce/salesforce-faq.md): Get answers to common questions about our Salesforce data-out integration. - [SalesWings](https://docs.customer.io/integrations/data-out/connections/saleswings.md): - [Segment](https://docs.customer.io/integrations/data-out/connections/segment.md): - [Segment (Message Metrics)](https://docs.customer.io/integrations/data-out/connections/segment-legacy.md): Set up Customer.io as a Segment Source to pipe data out of Customer.io and into any one of Segment’s hundreds of Destination [integrations](https://segment.com/catalog/). This integration sends data to Segment in `track()` calls. You can send any event supported by our [reporting webhooks](/integrations/api/webhooks/) to Segment. - [SendGrid Marketing Campaigns](https://docs.customer.io/integrations/data-out/connections/sendgrid.md): - [Slack](https://docs.customer.io/integrations/data-out/connections/slack.md): - [Snowflake](https://docs.customer.io/integrations/data-out/connections/snowflake-data-out.md): Send Customer.io data about messages, people, metrics, etc to your Snowflake warehouse by way of an Amazon S3 or Google Cloud Project (GCP) storage bucket. This integration syncs up to every 15 minutes, helping you keep up to date on your audience's message activities. - [Snowflake (Advanced)](https://docs.customer.io/integrations/data-out/connections/snowflake.md): - [Sprig](https://docs.customer.io/integrations/data-out/connections/sprig.md): - [Talon.One](https://docs.customer.io/integrations/data-out/connections/talon-one.md): - [TikTok Conversions](https://docs.customer.io/integrations/data-out/connections/tiktok-conversions.md): - [Twilio](https://docs.customer.io/integrations/data-out/connections/twilio.md): - [Twilio Engage Messaging](https://docs.customer.io/integrations/data-out/connections/engage-messaging-twilio.md): - [Twilio Studio](https://docs.customer.io/integrations/data-out/connections/twilio-studio.md): - [Twitter Pixel](https://docs.customer.io/integrations/data-out/connections/twitter-pixel.md): - [Visual Website Optimizer (VWO)](https://docs.customer.io/integrations/data-out/connections/vwo.md): - [Webhooks](https://docs.customer.io/integrations/data-out/connections/webhook.md): - [Wisepops](https://docs.customer.io/integrations/data-out/connections/wisepops.md): - [Yandex](https://docs.customer.io/integrations/data-out/connections/yandex-data-out.md): Send Customer.io data about messages, people, metrics, etc to Yandex. From here, you can ingest your data into the data warehouse of your choosing. This integration syncs up to every 15 minutes, helping you keep up to date on your audience's message activities. - [Zendesk](https://docs.customer.io/integrations/data-out/connections/zendesk.md): - [Reporting Webhooks](https://docs.customer.io/integrations/data-out/connections/webhooks.md): Reporting Webhooks send real-time message activity events (e.g. sends, opens, clicks) as JSON in an HTTP POST. They're useful in many cases, including analyzing message activity outside of Customer.io. ## Integrations > API - [Customer.io APIs](https://docs.customer.io/integrations/api/customerio-apis.md): We have three APIs and webhooks. This page covers our APIs and the best ways to get data into and out of Customer.io if you're using a terminal, Postman, or writing your own integration. ## Integrations > Mobile SDKs ## Integrations > Mobile SDKs > iOS - [Quick Start Guide](https://docs.customer.io/integrations/sdk/ios/quick-start-guide.md): This guide contains the minimum steps you'll need to follow to install and start using the Customer.io SDK in your iOS app. ## Integrations > Mobile SDKs > iOS > Getting Started - [How it works](https://docs.customer.io/integrations/sdk/ios/getting-started/how-it-works.md): Before 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. - [Authentication](https://docs.customer.io/integrations/sdk/ios/getting-started/auth.md): To use the SDK, you'll need to get two kinds of keys: A CDP *API Key* to send data to Customer.io and a *Site ID*, telling the SDK which workspace your messages come from. - [Packages and Configuration Options](https://docs.customer.io/integrations/sdk/ios/getting-started/packages-options.md): The SDK consists of a few packages. You'll get the most value out of Customer.io when you use all our packages together, but this lets you omit packages for features you don't intend to use. - [Troubleshooting](https://docs.customer.io/integrations/sdk/ios/getting-started/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. ## Integrations > Mobile SDKs > iOS > Identify and Track Users - [Identify people](https://docs.customer.io/integrations/sdk/ios/tracking/identify.md): You need to identify a person using a mobile device before you can send them messages or track events for things they do in your app. You need the **CioDataPipelines** package to identify people. - [Track events](https://docs.customer.io/integrations/sdk/ios/tracking/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Screen tracking](https://docs.customer.io/integrations/sdk/ios/tracking/screen-events.md): Screen events track the screens people view in your app. In addition to tracking the parts of your app people use, screen tracking is vital to sending in-app messages. - [Mobile Lifecycle events](https://docs.customer.io/integrations/sdk/ios/tracking/lifecycle-events.md): By default, the Customer.io SDK for iOS automatically tracks lifecycle events for your users. These are events that represent the lifecycle of your app and your users experiences with it. - [Anonymous activity](https://docs.customer.io/integrations/sdk/ios/tracking/anonymous-activity.md): Before you identify a person, calls you make to the SDK are associated with an `anonymousId`. When you identify that person, we reconcile their anonymous activity with the identified person. ## Integrations > Mobile SDKs > iOS > Push Notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/ios/push/push-setup.md): Our iOS SDK supports push notifications over APN or FCM. This page can help you get started with either service. - [Set up rich push](https://docs.customer.io/integrations/sdk/ios/push/rich-push.md): Set up your app to support push notifications with images and deep links. - [Deep Links](https://docs.customer.io/integrations/sdk/ios/push/deep-links.md): Deep links let you send people who interact with your messages to links in your app. You should set up deep links to make sure that your push notifications are actionable, and take people to screens that matter to your audience. - [Push metrics](https://docs.customer.io/integrations/sdk/ios/push/push-metrics.md): Gather metrics for push notifications sent from Customer.io. - [Sound in push notifications](https://docs.customer.io/integrations/sdk/ios/push/sound-in-push.md): When you send a notification, it can play an alert on your audience's device. The sound file must be bundled in your app, and you'll specify which sound you want to play in your notification payload. - [Provisional Push](https://docs.customer.io/integrations/sdk/ios/push/provisional.md): Provisional push notifications are a way to send notifications on a trial basis. People can then evaluate the notifications and decide whether to authorize them. - [Push service certificates](https://docs.customer.io/integrations/sdk/ios/push/push-certificates.md): Before you can send push notifications, you'll need to add credentials for the push service(s) you use to Customer.io. - [Test your push implementation](https://docs.customer.io/integrations/sdk/ios/push/test-push.md): Before you send push notifications, you should test your implementation to make sure it works as expected. ## Integrations > Mobile SDKs > iOS > In-App Messages - [Set up in-app messaging](https://docs.customer.io/integrations/sdk/ios/in-app/set-up-in-app.md): Incorporate in-app messages to send dynamic, personalized content to people using your app. With in-app messages, you can speak directly to your app's users when they use your app. - [Inline in-app messages](https://docs.customer.io/integrations/sdk/ios/in-app/inline-in-app.md): Inline in-app messages help you send dynamic content into your app. The messages can look and feel like a part of your app, but provide fresh and timely content without requiring app updates. - [Page rules](https://docs.customer.io/integrations/sdk/ios/in-app/target-in-app-messages.md): Sending people in-app messages often depends on the screens they visit in your app. - [In-app event listeners](https://docs.customer.io/integrations/sdk/ios/in-app/in-app-event-listeners.md): When people receive an in-app message, you'll listen for events to handle the message's lifecycle—like dismissing the event or taking a custom action. ## Integrations > Mobile SDKs > iOS > What's New - [3.x -> 3.9.0](https://docs.customer.io/integrations/sdk/ios/whats-new/3.9.0-upgrade.md): This page introduces a new `CioAppDelegateWrapper` pattern for iOS that simplifies push notification setup and eliminates the need for method swizzling. - [2.x -> 3.x](https://docs.customer.io/integrations/sdk/ios/whats-new/3.x-upgrade.md): This page details breaking changes from the previous major version of the SDK, so you understand the development effort required to update your app and take advantage of the latest features. - [1x -> 2.x](https://docs.customer.io/integrations/sdk/ios/whats-new/2.x-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Changelog](https://docs.customer.io/integrations/sdk/ios/whats-new/changelog.md): Check out release history for stable releases of iOS SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > iOS > iOS - [Get Started](https://docs.customer.io/integrations/sdk/ios/1.x/getting-started.md): Before 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. - [Identify people](https://docs.customer.io/integrations/sdk/ios/1.x/identify.md): You need to identify a person using a mobile device before you can send them messages or track events for things they do in your app. You need the **Tracking** package to identify people. - [Track events](https://docs.customer.io/integrations/sdk/ios/1.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Push notifications](https://docs.customer.io/integrations/sdk/ios/1.x/push.md): Our iOS SDK supports push notifications over APN or FCM. Use this page to get started with either service. - [Rich push notifications](https://docs.customer.io/integrations/sdk/ios/1.x/rich-push.md): With rich push, you can do more than just send a simple notification; you can send an image, open a deep link when someone taps your message, and more! - [In-app messages](https://docs.customer.io/integrations/sdk/ios/1.x/in-app.md): Incorporate in-app messages to send dynamic, personalized content to people using your app. With in-app messages, you can speak directly to your app's users when they use your app. - [Test support](https://docs.customer.io/integrations/sdk/ios/1.x/test-support.md): The SDK makes it easy to write unit, integration, UI, or other types of automated tests in your code base. We designed our SDK with first-class support for automated testing, making it easy to inject dependencies and perform mocking in your code. - [Changelog](https://docs.customer.io/integrations/sdk/ios/1.x/changelog.md): Check out release history for stable releases of iOS SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > iOS > iOS - [Get Started](https://docs.customer.io/integrations/sdk/ios/2.x/getting-started.md): Before 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. - [Identify people](https://docs.customer.io/integrations/sdk/ios/2.x/identify.md): You need to identify a person using a mobile device before you can send them messages or track events for things they do in your app. You need the **Tracking** package to identify people. - [Track events](https://docs.customer.io/integrations/sdk/ios/2.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Push notifications](https://docs.customer.io/integrations/sdk/ios/2.x/push.md): Our iOS SDK supports push notifications over APN or FCM. Use this page to get started with either service. - [In-app messages](https://docs.customer.io/integrations/sdk/ios/2.x/in-app.md): Incorporate in-app messages to send dynamic, personalized content to people using your app. With in-app messages, you can speak directly to your app's users when they use your app. - [Test support](https://docs.customer.io/integrations/sdk/ios/2.x/test-support.md): The SDK makes it easy to write unit, integration, UI, or other types of automated tests in your code base. We designed our SDK with first-class support for automated testing, making it easy to inject dependencies and perform mocking in your code. - [Update from 2.10 to 2.11](https://docs.customer.io/integrations/sdk/ios/2.x/update-210-to-211.md): This page explains how to update to version 2.11 of our native iOS SDK. While these changes aren't breaking—you don't have to implement these changes—they will simplify your integration, improve the reliability of your metrics, and improve deep link handling. Updating your integration also sets you up for success in future releases. - [Migrate from an earlier version](https://docs.customer.io/integrations/sdk/ios/2.x/migrate-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Troubleshooting](https://docs.customer.io/integrations/sdk/ios/2.x/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. - [Changelog](https://docs.customer.io/integrations/sdk/ios/2.x/changelog.md): Check out release history for stable releases of iOS SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > Android - [Quick Start Guide](https://docs.customer.io/integrations/sdk/android/quick-start-guide.md): Before 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. ## Integrations > Mobile SDKs > Android > Getting Started - [How it works](https://docs.customer.io/integrations/sdk/android/getting-started/how-it-works.md): Before 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. - [Authentication](https://docs.customer.io/integrations/sdk/android/getting-started/auth.md): To use the SDK, you'll need to get two kinds of keys: A CDP *API Key* to send data to Customer.io and a *Site ID*, telling the SDK which workspace your messages come from. - [Packages and Configuration Options](https://docs.customer.io/integrations/sdk/android/getting-started/packages-options.md): The SDK consists of a few packages. You'll get the most value out of Customer.io when you use all our packages together, but this lets you omit packages for features you don't intend to use. - [Troubleshooting](https://docs.customer.io/integrations/sdk/android/getting-started/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. ## Integrations > Mobile SDKs > Android > Identify and Track Users - [Identify people](https://docs.customer.io/integrations/sdk/android/tracking/identify.md): You need to identify a person using a mobile device before you can send them messages or track events for things they do in your app. - [Screen tracking](https://docs.customer.io/integrations/sdk/android/tracking/screen-events.md): Screen events track the screens people view in your app. In addition to tracking the parts of your app people use, screen tracking is vital for supporting in-app messages. - [Mobile Lifecycle events](https://docs.customer.io/integrations/sdk/android/tracking/lifecycle-events.md): By default, our Android SDK automatically tracks events that represent the lifecycle of your app and your users experiences with it. - [Anonymous activity](https://docs.customer.io/integrations/sdk/android/tracking/anonymous-activity.md): Before you identify a person, calls you make to the SDK are associated with an `anonymousId`. When you identify that person, we reconcile their anonymous activity with the identified person. - [Track events](https://docs.customer.io/integrations/sdk/android/tracking/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. ## Integrations > Mobile SDKs > Android > Push Notifications - [Push notifications](https://docs.customer.io/integrations/sdk/android/push/push.md): Get started setting up push notifications for Android. Our Android SDK supports push notifications over FCM, including rich push messages with links and images. - [Deep Links](https://docs.customer.io/integrations/sdk/android/push/deep-links.md): Deep links let you send people who interact with your messages to links in your app. You should set up deep links to make sure that your push notifications are actionable, and take people to screens that matter to your audience. - [Push service certificates](https://docs.customer.io/integrations/sdk/android/push/push-certificates.md): Before you can send push notifications, you'll need to add your Firebase Cloud Messaging credentials to Customer.io. This authorizes us to send push notifications to your Android app. - [Test your push implementation](https://docs.customer.io/integrations/sdk/android/push/test-push.md): Before you send push notifications, you should test your implementation to make sure it works as expected. ## Integrations > Mobile SDKs > Android > In-App Messages - [In-app messages](https://docs.customer.io/integrations/sdk/android/in-app/in-app.md): Incorporate in-app messages to send dynamic, personalized content to people using your app. With in-app messages, you can speak directly to your app's users when they use your app. - [In-app event listeners](https://docs.customer.io/integrations/sdk/android/in-app/in-app-event-listeners.md): When people receive an in-app message, you'll listen for events to handle the message's lifecycle—like dismissing the event or taking a custom action. - [Inline in-app messages](https://docs.customer.io/integrations/sdk/android/in-app/inline-in-app.md): Inline in-app messages help you send dynamic content into your app. The messages can look and feel like a part of your app, but provide fresh and timely content without requiring app updates. - [Page rules](https://docs.customer.io/integrations/sdk/android/in-app/target-in-app-messages.md): Sending people in-app messages often depends on the screens they visit in your app. ## Integrations > Mobile SDKs > Android > What's New - [3.x -> 4.x](https://docs.customer.io/integrations/sdk/android/whats-new/4.x-upgrade.md): This page details breaking changes from the previous major version of the SDK, so you understand the development effort required to update your app and take advantage of the latest features. - [2.x -> 3.x](https://docs.customer.io/integrations/sdk/android/whats-new/3.x-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Changelog](https://docs.customer.io/integrations/sdk/android/whats-new/changelog.md): Check out release history for stable releases of android SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps. Major versions may include breaking changes. See [our migration guide](/sdk/android/migrate-upgrade) for help updating your SDK integration to take advantage of new features and fixes. ## Integrations > Mobile SDKs > Android > Android - [Get Started](https://docs.customer.io/integrations/sdk/android/3.x/getting-started.md): Before 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. - [Identify people](https://docs.customer.io/integrations/sdk/android/3.x/identify.md): You need to identify a person using a mobile device before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/android/3.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Push notifications](https://docs.customer.io/integrations/sdk/android/3.x/push.md): Get started setting up push notifications for Android. Our Android SDK supports push notifications over FCM, including rich push messages with links and images. - [In-app messages](https://docs.customer.io/integrations/sdk/android/3.x/in-app.md): Incorporate in-app messages to send dynamic, personalized content to people using your app. With in-app messages, you can speak directly to your app's users when they use your app. - [Test support](https://docs.customer.io/integrations/sdk/android/3.x/test-support.md): The SDK makes it easy to write unit, integration, UI, or other types of automated tests in your code base. We designed our SDK with first-class support for automated testing, making it easy to inject dependencies and perform mocking in your code. - [Migrate from an earlier version](https://docs.customer.io/integrations/sdk/android/3.x/migrate-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Troubleshooting](https://docs.customer.io/integrations/sdk/android/3.x/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. - [Changelog](https://docs.customer.io/integrations/sdk/android/3.x/changelog.md): Check out release history for stable releases of android SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps. Major versions may include breaking changes. See [our migration guide](/sdk/android/migrate-upgrade) for help updating your SDK integration to take advantage of new features and fixes. ## Integrations > Mobile SDKs > Android > Android - [Get Started](https://docs.customer.io/integrations/sdk/android/2.x/getting-started.md): Before 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. - [Identify people](https://docs.customer.io/integrations/sdk/android/2.x/identify.md): You need to identify a person using a mobile device before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/android/2.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Push notifications](https://docs.customer.io/integrations/sdk/android/2.x/push.md): Get started setting up push notifications for Android. Our Android SDK supports push notifications over FCM. - [Rich push notifications](https://docs.customer.io/integrations/sdk/android/2.x/rich-push.md): With rich push, you can do more than just send a simple notification; you can send an image, open a deep link when someone taps your message, and more! - [Test support](https://docs.customer.io/integrations/sdk/android/2.x/test-support.md): The SDK makes it easy to write unit, integration, UI, or other types of automated tests in your code base. We designed our SDK with first-class support for automated testing, making it easy to inject dependencies and perform mocking in your code. - [Migrate from an earlier version](https://docs.customer.io/integrations/sdk/android/2.x/migrate-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Changelog](https://docs.customer.io/integrations/sdk/android/2.x/changelog.md): Check out release history for stable releases of android SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps. Major versions may include breaking changes. See [our migration guide](/sdk/android/migrate-upgrade) for help updating your SDK integration to take advantage of new features and fixes. ## Integrations > Mobile SDKs > React Native - [Quick Start Guide](https://docs.customer.io/integrations/sdk/react-native/quick-start-guide.md): React Native lets you build native mobile apps with JavaScript. Our React Native SDK helps you integrate Customer.io to identify people, track their activity, and send both push notifications and in-app messages. ## Integrations > Mobile SDKs > React Native > Getting Started - [How it works](https://docs.customer.io/integrations/sdk/react-native/getting-started/how-it-works.md): Before 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. - [Authentication](https://docs.customer.io/integrations/sdk/react-native/getting-started/auth.md): To use the SDK, you'll need two kinds of API keys: A *CDP API Key* to send data to Customer.io and a *Site ID*, telling the SDK which workspace your messages come from. - [Packages and Configuration Options](https://docs.customer.io/integrations/sdk/react-native/getting-started/packages-options.md): The SDK consists of a few packages. You *must* use the `CioConfig` and `CustomerIO` packages to configure and initialize the React Native SDK. - [Troubleshooting](https://docs.customer.io/integrations/sdk/react-native/getting-started/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. ## Integrations > Mobile SDKs > React Native > Identify and Track Users - [Identify people](https://docs.customer.io/integrations/sdk/react-native/tracking/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/react-native/tracking/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Screen tracking](https://docs.customer.io/integrations/sdk/react-native/tracking/screen-events.md): Screen events track the screens people view in your app. Beyond tracking the parts of your app people use, screen tracking is vital for in-app messages because they target specific screens. - [Mobile Lifecycle events](https://docs.customer.io/integrations/sdk/react-native/tracking/lifecycle-events.md): By default, our Android SDK automatically tracks events that represent the lifecycle of your app and your users experiences with it. - [Anonymous activity](https://docs.customer.io/integrations/sdk/react-native/tracking/anonymous-activity.md): Before you identify a person, calls you make to the SDK are associated with an `anonymousId`. When you identify that person, we reconcile their anonymous activity with the identified person. ## Integrations > Mobile SDKs > React Native > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/react-native/push-notifications/push.md): Our React Native SDK supports push notifications over APN or FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Deep Links](https://docs.customer.io/integrations/sdk/react-native/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Handling Multiple Push Providers](https://docs.customer.io/integrations/sdk/react-native/push-notifications/multiple-push-providers.md): Our React Native SDK supports push notifications over APN or FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Capture Push Metrics](https://docs.customer.io/integrations/sdk/react-native/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the React Native SDK, you're ready to go. But there are some side-cases where you may want to capture metrics outside the SDK. ## Integrations > Mobile SDKs > React Native > In-App Messages - [Set up in-app messages](https://docs.customer.io/integrations/sdk/react-native/in-app-messages/set-up-in-app.md): This page describes how to implement mobile in-app messages. - [Inline in-app messages](https://docs.customer.io/integrations/sdk/react-native/in-app-messages/inline-in-app.md): Inline in-app messages help you send dynamic content into your app. The messages can look and feel like a part of your app, but provide fresh and timely content without requiring app updates. - [Handling and dismissing actions](https://docs.customer.io/integrations/sdk/react-native/in-app-messages/in-app-actions.md): In-app messages often have a call to action. Most basic actions are handled automatically by the SDK. For example, if you set a call-to-action button to open a web page, the SDK will open the web page when the user taps the button. But you can also set up custom actions that require your app to handle the response. If you set up custom actions, you'll need to handle the action yourself and dismiss the resulting message when you're done with it. ## Integrations > Mobile SDKs > React Native > What's new - [4.x -> 4.3](https://docs.customer.io/integrations/sdk/react-native/whats-new/4.3-upgrade.md): Version 4.3 of the Customer.io React Native SDK introduces a new `CioAppDelegateWrapper` pattern for iOS that simplifies push notification setup and eliminates the need for method swizzling. - [3.4x -> 4.x](https://docs.customer.io/integrations/sdk/react-native/whats-new/4.x-upgrade.md): This page provides steps to help you upgrade from react native 3.4 or later so you understand the development effort required to update your app and take advantage of the latest features. - [3.x -> 3.4](https://docs.customer.io/integrations/sdk/react-native/whats-new/update-to-3.4.md): This page explains how to update your SDK install to latest versions that may not require a breaking change. While these changes aren't breaking—you don't _need_ to make these changes—they will simplify your integration, improve the reliability of your metrics, and improve deep link handling on iOS devices. - [2.x -> 3.x](https://docs.customer.io/integrations/sdk/react-native/whats-new/update-to-3x.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Changelog](https://docs.customer.io/integrations/sdk/react-native/whats-new/changelog.md): Check out release history our React Native SDK. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > React Native > React Native - [Get Started](https://docs.customer.io/integrations/sdk/react-native/2.x/getting-started.md): Before you can take advantage of our SDK, you need to install and initialize the SDK. This page also explains how the SDK prioritizes operations. - [Identify people](https://docs.customer.io/integrations/sdk/react-native/2.x/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/react-native/2.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. ## Integrations > Mobile SDKs > React Native > React Native > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/react-native/2.x/push-notifications/push.md): Our React Native SDK supports push notifications over APN or FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Deep Links](https://docs.customer.io/integrations/sdk/react-native/2.x/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Handling Multiple Push Providers](https://docs.customer.io/integrations/sdk/react-native/2.x/push-notifications/multiple-push-providers.md): Our React Native SDK supports push notifications over APN or FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Capture Push Metrics](https://docs.customer.io/integrations/sdk/react-native/2.x/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the React Native SDK, you're ready to go. But there are some side-cases where you may want to capture metrics outside the SDK. ## Integrations > Mobile SDKs > React Native > React Native > In-App Messages - [Set up in-app messages](https://docs.customer.io/integrations/sdk/react-native/2.x/in-app-messages/set-up-in-app.md): This page describes how to implement mobile in-app messages. - [Handling and dismissing actions](https://docs.customer.io/integrations/sdk/react-native/2.x/in-app-messages/in-app-actions.md): In-app messages often have a call to action. Most basic actions are handled automatically by the SDK. For example, if you set a call-to-action button to open a web page, the SDK will open the web page when the user taps the button. But you can also set up custom actions that require your app to handle the response. If you set up custom actions, you'll need to handle the action yourself and dismiss the resulting message when you're done with it. ## Integrations > Mobile SDKs > React Native > React Native > Updates and Troubleshooting - [Migrate from an earlier version](https://docs.customer.io/integrations/sdk/react-native/2.x/updates-and-troubleshooting/migrate-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Troubleshooting](https://docs.customer.io/integrations/sdk/react-native/2.x/updates-and-troubleshooting/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. - [Changelog](https://docs.customer.io/integrations/sdk/react-native/2.x/updates-and-troubleshooting/changelog.md): Check out release history our React Native SDK. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > React Native > React Native - [Get Started](https://docs.customer.io/integrations/sdk/react-native/3.x/getting-started.md): Before you can take advantage of our SDK, you need to install and initialize the SDK. This page also explains how the SDK prioritizes operations. - [Identify people](https://docs.customer.io/integrations/sdk/react-native/3.x/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/react-native/3.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. ## Integrations > Mobile SDKs > React Native > React Native > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/react-native/3.x/push-notifications/push.md): Our React Native SDK supports push notifications over APN or FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Deep Links](https://docs.customer.io/integrations/sdk/react-native/3.x/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Handling Multiple Push Providers](https://docs.customer.io/integrations/sdk/react-native/3.x/push-notifications/multiple-push-providers.md): Our React Native SDK supports push notifications over APN or FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Capture Push Metrics](https://docs.customer.io/integrations/sdk/react-native/3.x/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the React Native SDK, you're ready to go. But there are some side-cases where you may want to capture metrics outside the SDK. ## Integrations > Mobile SDKs > React Native > React Native > In-App Messages - [Set up in-app messages](https://docs.customer.io/integrations/sdk/react-native/3.x/in-app-messages/set-up-in-app.md): This page describes how to implement mobile in-app messages. - [Handling and dismissing actions](https://docs.customer.io/integrations/sdk/react-native/3.x/in-app-messages/in-app-actions.md): In-app messages often have a call to action. Most basic actions are handled automatically by the SDK. For example, if you set a call-to-action button to open a web page, the SDK will open the web page when the user taps the button. But you can also set up custom actions that require your app to handle the response. If you set up custom actions, you'll need to handle the action yourself and dismiss the resulting message when you're done with it. ## Integrations > Mobile SDKs > React Native > React Native > Updates and Troubleshooting - [Migrate from an earlier version](https://docs.customer.io/integrations/sdk/react-native/3.x/updates-and-troubleshooting/migrate-upgrade.md): This page details breaking changes from previous versions, so you understand the development effort required to update your app and take advantage of the latest features. - [Update to version 3.4](https://docs.customer.io/integrations/sdk/react-native/3.x/updates-and-troubleshooting/update-to-3.4.md): This page explains how to update your SDK install to latest versions that may not require a breaking change. While these changes aren't breaking—you don't _need_ to make these changes—they will simplify your integration, improve the reliability of your metrics, and improve deep link handling on iOS devices. - [Troubleshooting](https://docs.customer.io/integrations/sdk/react-native/3.x/updates-and-troubleshooting/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. - [Changelog](https://docs.customer.io/integrations/sdk/react-native/3.x/updates-and-troubleshooting/changelog.md): Check out release history our React Native SDK. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > Expo - [Quick Start Guide](https://docs.customer.io/integrations/sdk/expo/quick-start-guide.md): Expo provides a managed framework to help you build React Native mobile apps. Our Expo plugin relies on our React Native SDK. When you run the prebuild, we'll generate the native files you'll need to integrate Customer.io push notifications in your app. Then you'll add calls to your app to `identify` people, `track` their activity, and listen for notifications. ## Integrations > Mobile SDKs > Expo > Getting Started - [How it works](https://docs.customer.io/integrations/sdk/expo/getting-started/how-it-works.md): Before 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. - [Authentication](https://docs.customer.io/integrations/sdk/expo/getting-started/auth.md): To use the SDK, you'll need two kinds of API keys: A *CDP API Key* to send data to Customer.io and a *Site ID*, telling the SDK which workspace your messages come from. - [Packages and Configuration Options](https://docs.customer.io/integrations/sdk/expo/getting-started/packages-options.md): The SDK consists of a few packages. You *must* use the `CioConfig` and `CustomerIO` packages to configure and initialize the React Native SDK. - [Troubleshooting](https://docs.customer.io/integrations/sdk/expo/getting-started/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. ## Integrations > Mobile SDKs > Expo > Identify and track people - [Identify people](https://docs.customer.io/integrations/sdk/expo/tracking/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/expo/tracking/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Screen tracking](https://docs.customer.io/integrations/sdk/expo/tracking/screen-events.md): Screen events track the screens people view in your app. Beyond tracking the parts of your app people use, screen tracking is vital for in-app messages because they target specific screens. - [Mobile Lifecycle events](https://docs.customer.io/integrations/sdk/expo/tracking/lifecycle-events.md): By default, our Android SDK automatically tracks events that represent the lifecycle of your app and your users experiences with it. - [Anonymous activity](https://docs.customer.io/integrations/sdk/expo/tracking/anonymous-activity.md): Before you identify a person, calls you make to the SDK are associated with an `anonymousId`. When you identify that person, we reconcile their anonymous activity with the identified person. ## Integrations > Mobile SDKs > Expo > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/expo/push-notifications/push.md): The Expo plugin supports push notifications over APN for iOS and FCM for Android. Use this page to get started with push notification services. - [Deep Links](https://docs.customer.io/integrations/sdk/expo/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Capture Push Metrics](https://docs.customer.io/integrations/sdk/expo/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the React Native SDK, you're ready to go. But there are some side-cases where you may want to capture metrics outside the SDK. - [Multiple push providers](https://docs.customer.io/integrations/sdk/expo/push-notifications/multiple-push-providers.md): By default, our Expo plugin expects to be the only push package in your project. It'll automatically handle push notification metrics and fetch a device tokens for you. But if you use our SDK with other push packages like `react-native-firebase`, you may want to make a couple of configuration changes. ## Integrations > Mobile SDKs > Expo > In-App Messages - [Inline in-app messages](https://docs.customer.io/integrations/sdk/expo/in-app-messages/inline-in-app.md): Inline in-app messages help you send dynamic content into your app. The messages can look and feel like a part of your app, but provide fresh and timely content without requiring app updates. - [Set up in-app messages](https://docs.customer.io/integrations/sdk/expo/in-app-messages/in-app.md): This page describes how to implement mobile in-app messages in your Expo project. - [Handle in-app message responses](https://docs.customer.io/integrations/sdk/expo/in-app-messages/handling-and-dismissing-actions.md): This page describes how to implement mobile in-app messages in your Expo project. ## Integrations > Mobile SDKs > Expo > What's new - [1x -> 2.x](https://docs.customer.io/integrations/sdk/expo/whats-new/2.x-upgrade.md): This page helps you upgrade from the 1.0 version of our plugin to 2.0 so can take advantage of the latest features. - [Changelog](https://docs.customer.io/integrations/sdk/expo/whats-new/changelog.md): Check out release history our Expo Plugin. Alpha and beta releases provide access new features and fixes that have been tested internally at Customer.io but have not been tested with a production app or audience. We strongly recommend that you use these versions internally, for acceptance testing or to get a head start integrating new features in your app. ## Integrations > Mobile SDKs > Expo > Expo - [Get Started](https://docs.customer.io/integrations/sdk/expo/1.x/getting-started.md): The Expo plugin takes advantage of our React Native SDK, and requires very little setup. It extends the Expo config to let you customize the prebuild phase of managed workflow builds, which means you don't need to eject to a bare workflow. After you add the plugin to your project, you'll need to install our React Native SDK and run prebuild. The plugin automatically generates and configures the necessary native code files required to make our React Native SDK to work on your project. This plugin has only been tested with Expo SDK versions `45` and `46`, Using `eas` build with EAS managed credentials and a limited set of Android and iOS versions. - [Identify people](https://docs.customer.io/integrations/sdk/expo/1.x/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/expo/1.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. ## Integrations > Mobile SDKs > Expo > Expo > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/expo/1.x/push-notifications/push.md): The Expo plugin supports push notifications over APN for iOS and FCM for Android. Use this page to get started with push notification services. - [Deep Links](https://docs.customer.io/integrations/sdk/expo/1.x/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Capture Push Metrics](https://docs.customer.io/integrations/sdk/expo/1.x/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the React Native SDK, you're ready to go. But there are some side-cases where you may want to capture metrics outside the SDK. ## Integrations > Mobile SDKs > Expo > Expo > In-App Messages - [Set up in-app messages](https://docs.customer.io/integrations/sdk/expo/1.x/in-app/in-app.md): This page describes how to implement mobile in-app messages in your Expo project. - [Handling and dismissing actions](https://docs.customer.io/integrations/sdk/expo/1.x/in-app/handling-and-dismissing-actions.md): This page describes how to implement mobile in-app messages in your Expo project. ## Integrations > Mobile SDKs > Expo > Expo > Updates and Troubleshooting - [Troubleshooting](https://docs.customer.io/integrations/sdk/expo/1.x/updates-and-troubleshooting/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. - [Changelog](https://docs.customer.io/integrations/sdk/expo/1.x/updates-and-troubleshooting/changelog.md): Check out release history our Expo Plugin. Alpha and beta releases provide access new features and fixes that have been tested internally at Customer.io but have not been tested with a production app or audience. We strongly recommend that you use these versions internally, for acceptance testing or to get a head start integrating new features in your app. ## Integrations > Mobile SDKs > Flutter - [Quick Start Guide](https://docs.customer.io/integrations/sdk/flutter/quick-start-guide.md): Before you can take advantage of our SDK, you need to install and initialize the SDK. ## Integrations > Mobile SDKs > Flutter > Get Started - [How it works](https://docs.customer.io/integrations/sdk/flutter/getting-started/how-it-works.md): Before 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. - [Authentication](https://docs.customer.io/integrations/sdk/flutter/getting-started/auth.md): To use the SDK, you'll need to get two kinds of keys: A [*CDP API Key*](#get-your-cdp-api-key) to send data to Customer.io and a [*Site ID*](#get-your-site-id) that tells the SDK which workspace your messages come from. - [Configuration Options](https://docs.customer.io/integrations/sdk/flutter/getting-started/packages-options.md): The SDK consists of a few packages. You'll get the most value out of Customer.io when you use all our packages together, but this lets you omit packages for features you don't intend to use. - [Troubleshooting](https://docs.customer.io/integrations/sdk/flutter/getting-started/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. ## Integrations > Mobile SDKs > Flutter > Identify & track users - [Identify people](https://docs.customer.io/integrations/sdk/flutter/tracking/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Mobile Lifecycle events](https://docs.customer.io/integrations/sdk/flutter/tracking/lifecycle-events.md): By default, the Customer.io SDK automatically tracks lifecycle events for your users. These are events that represent the lifecycle of your app and your users' experiences with it. - [Anonymous activity](https://docs.customer.io/integrations/sdk/flutter/tracking/anonymous-activity.md): Before you identify a person, calls you make to the SDK are associated with an `anonymousId`. When you identify that person, we reconcile their anonymous activity with the identified person. - [Screen tracking](https://docs.customer.io/integrations/sdk/flutter/tracking/screen-events.md): Screen events track the screens people view in your app. They help you track the parts of your app your users engage with and are vital in determining where you display in-app messages. - [Track events](https://docs.customer.io/integrations/sdk/flutter/tracking/track-events.md): Events are things people do in your app. They help you track your audience's behaviors, activity, and metrics. You can use them to segment your audience, trigger messaging campaigns, and see how people use your app. ## Integrations > Mobile SDKs > Flutter > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/flutter/push-notifications/push-setup.md): Our Flutter SDK supports push notifications over FCM—including rich push messages with links and images. This page helps you add push support to your app. - [Deep links](https://docs.customer.io/integrations/sdk/flutter/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Handling multiple push providers](https://docs.customer.io/integrations/sdk/flutter/push-notifications/multiple-push-providers.md): Our Flutter SDK supports push notifications over FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Capture push metrics](https://docs.customer.io/integrations/sdk/flutter/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the Flutter SDK, you're ready to go. For more advanced use cases, see this document. ## Integrations > Mobile SDKs > Flutter > In-App Messages - [In-app messages](https://docs.customer.io/integrations/sdk/flutter/in-app-messages/in-app.md): This page describes how to implement mobile in-app messages. - [Inline in-app messages](https://docs.customer.io/integrations/sdk/flutter/in-app-messages/inline-in-app.md): Inline in-app messages help you send dynamic content into your app. The messages can look and feel like a part of your app, but provide fresh and timely content without requiring app updates. - [Handling and dismissing actions](https://docs.customer.io/integrations/sdk/flutter/in-app-messages/in-app-actions.md): In-app messages often have a call to action. Most basic actions are handled automatically by the SDK. For example, if you set a call-to-action button to open a web page, the SDK will open the web page when the user taps the button. But you can also set up custom actions that require your app to handle the response. If you set up custom actions, you'll need to handle the action yourself and dismiss the resulting message when you're done with it. ## Integrations > Mobile SDKs > Flutter > What's new - [2.x -> 2.2](https://docs.customer.io/integrations/sdk/flutter/whats-new/2.2-upgrade.md): Version 2.2 of the Customer.io Flutter SDK introduces a new `CioAppDelegateWrapper` pattern for iOS that simplifies push notification setup and eliminates the need for method swizzling. - [Upgrade to Flutter 2.x](https://docs.customer.io/integrations/sdk/flutter/whats-new/2.x-upgrade.md): This page provides steps to help you upgrade from our Flutter 1.x SDK so you understand the development effort required to update your app and take advantage of the latest features. - [Changelog](https://docs.customer.io/integrations/sdk/flutter/whats-new/changelog.md): Check out the release history for the Flutter SDK. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Integrations > Mobile SDKs > Flutter > Flutter - [Get Started](https://docs.customer.io/integrations/sdk/flutter/1.x/getting-started.md): Before you can take advantage of our SDK, you need to install and initialize the SDK. This page also explains how the SDK prioritizes operations. - [Identify people](https://docs.customer.io/integrations/sdk/flutter/1.x/identify.md): Use `CustomerIO.identify()` to identify a person. You need to identify a mobile user before you can send them messages or track events for things they do in your app. - [Track events](https://docs.customer.io/integrations/sdk/flutter/1.x/track-events.md): Events represent things people do in your app so that you can track your audience's activity and metrics. Use events to segment your audience, trigger campaigns, and capture usage metrics in your app. - [Update Flutter SDK](https://docs.customer.io/integrations/sdk/flutter/1.x/update.md): This page explains how to update the Flutter SDK to the latest version. ## Integrations > Mobile SDKs > Flutter > Flutter > Push notifications - [Set up push notifications](https://docs.customer.io/integrations/sdk/flutter/1.x/push-notifications/push.md): Our Flutter SDK supports push notifications over FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Deep Links](https://docs.customer.io/integrations/sdk/flutter/1.x/push-notifications/deep-links.md): Deep links are links that send a person from push notifications to pages in your app. If you set a deep link when you send your push notification, users can tap the notification to go to the place you specify. - [Handling Multiple Push Providers](https://docs.customer.io/integrations/sdk/flutter/1.x/push-notifications/multiple-push-providers.md): Our Flutter SDK supports push notifications over FCM—including rich push messages with links and images. Use this page to add support for your push provider and set your app up to receive push notifications. - [Capture Push Metrics](https://docs.customer.io/integrations/sdk/flutter/1.x/push-notifications/push-metrics.md): If you've already set up rich push capabilities with the Flutter SDK, you're ready to go. For more advanced use cases, see this document. ## Integrations > Mobile SDKs > Flutter > Flutter > In-App Messages - [In-app messages](https://docs.customer.io/integrations/sdk/flutter/1.x/in-app-messages/in-app.md): This page describes how to implement mobile in-app messages. - [Handling and dismissing actions](https://docs.customer.io/integrations/sdk/flutter/1.x/in-app-messages/in-app-actions.md): In-app messages often have a call to action. Most basic actions are handled automatically by the SDK. For example, if you set a call-to-action button to open a web page, the SDK will open the web page when the user taps the button. But you can also set up custom actions that require your app to handle the response. If you set up custom actions, you'll need to handle the action yourself and dismiss the resulting message when you're done with it. ## Integrations > Mobile SDKs > Flutter > Flutter > Updates and Troubleshooting - [Update iOS](https://docs.customer.io/integrations/sdk/flutter/1.x/updates-and-troubleshooting/migrate-upgrade.md): This page explains how to upgrade the native iOS SDK to version 2.11. While these changes aren't breaking—you don't _need_ to make these changes—they will simplify your integration and improve the reliability of your metrics and deep link handling on iOS devices. - [Troubleshooting](https://docs.customer.io/integrations/sdk/flutter/1.x/updates-and-troubleshooting/troubleshooting.md): If you're having trouble with the SDK, here are some basic steps to troubleshoot your problems, and solutions to some known issues. - [Changelog](https://docs.customer.io/integrations/sdk/flutter/1.x/updates-and-troubleshooting/changelog.md): Check out the release history for the Flutter SDK. Stable releases have been tested thoroughly and are ready for use in your production apps. ## Account & Workspaces - [Account Verification](https://docs.customer.io/accounts-and-workspaces/account-verification.md): **Before you can send emails** to your audience through Customer.io, you'll need to request verification of your account. We verify all accounts to filter out bad actors that might try to abuse our services. - [UI Changes in 2025](https://docs.customer.io/accounts-and-workspaces/2025-ui-update.md): We've updated our user interface so that all of our integrations are in one place. ## Account & Workspaces > Billing - [How We Bill](https://docs.customer.io/accounts-and-workspaces/how-we-bill.md): Your subscription determines how we bill for profiles and the integrations available to you. You can find the details of your subscription on the [Plans & Billing page](https://fly.customer.io/settings/billing/your-plan). - [Reducing billing overages](https://docs.customer.io/accounts-and-workspaces/reduce-billing-overages.md): Every month, we count the number of people and objects in your account for billing purposes. If you exceed your plan's monthly limits, we'll charge you for the overage. By accounting for your plan's limits and deleting unnecessary profiles, you can reduce overages and keep your billing predictable. - [Payment Problems](https://docs.customer.io/accounts-and-workspaces/payment-problems.md): We understand that unexpected things happen and our billing team is here to help. Send us an email at [billing@customer.io](mailto:billing@customer.io). To help you plan, we've provided an outline of how we approach payment issues. We understand that each situation is different so please reach out to our billing team to discuss your options. - [Canceling Your Account](https://docs.customer.io/accounts-and-workspaces/canceling.md): We really hate to see you go, but we understand sometimes things change. But, before you leave, we'd love it if you'd [get in touch with our team](https://customer.io/contact/) and **let us know if there is something we can do better**. If something isn't working right or you find a feature difficult to use, we want to make it better! - [Plan Features](https://docs.customer.io/accounts-and-workspaces/plan-features.md): Customer.io offers different billing plans. These plans determine how much information you can store before incurring overages, and, in some cases, what features you can use. ## Account & Workspaces > Your Account - [Edit Account Information](https://docs.customer.io/accounts-and-workspaces/editing-account-information.md): You can edit your account information, including your account's primary technical contact, billing address, and logo. - [Manage team members](https://docs.customer.io/accounts-and-workspaces/add-remove-team-members.md): Manage who has access to your account and workspaces. Assign full account access (Account Admin), partial account access (Member), or workspace access (Workspace Admin, Author, or Viewer). - [Manage your API credentials](https://docs.customer.io/accounts-and-workspaces/managing-credentials.md): You can find your API credentials under *Account Settings* > *API Credentials*. You'll use different API credentials to send data to, and get data from, each workspace in your account. It's generally a good security practice to use different credentials for each integration and rotate credentials regularly. - [Security Best Practices](https://docs.customer.io/accounts-and-workspaces/security-best-practices.md): From our side, we’re working hard to keep [your data safe](/journeys/security), but there are also a few measures you, as an Account Admin, can take to make your Customer.io account security bulletproof. - [Two-Factor Authentication](https://docs.customer.io/accounts-and-workspaces/two-factor-auth.md): Two-Factor Authentication (2FA) is an additional layer of security on your Customer.io account. By default, we require you verify your login attempt through a magic link sent to your email. You can also enable 2FA through an authentication app. - [Single Sign-on (SSO)](https://docs.customer.io/accounts-and-workspaces/login-with-sso.md): Organizations that need enhanced security requirements can configure their Customer.io account to use Single Sign-on (SSO). - [Account Regions (US and EU)](https://docs.customer.io/accounts-and-workspaces/data-centers.md): When you create an account with Customer.io, you select your region, which determines where we store your data: in the United States (US) or European Union (EU). - [Enable experimental features](https://docs.customer.io/accounts-and-workspaces/beta-experimental-features.md): The *Experimental Features* setting lets you try out features we're working on and presents you the opportunity to tell us how you feel about them. ## Account & Workspaces > Workspaces - [Workspaces in Customer.io](https://docs.customer.io/accounts-and-workspaces/workspaces.md): Workspaces are a way of working with multiple products, sites or apps from a single Customer.io account. Everyone starts with one (its name is the same as your account name), and you can add or remove them as needed. - [Date and Time Data in Customer.io](https://docs.customer.io/accounts-and-workspaces/datetime-displays.md): Throughout Customer.io, we try to give you as much insight as we can into what happens and when. We know that timing of messages is critical, so we want to make sure you know exactly when your messages are sent or drafted, for example, or when a particular user was created. - [Case sensitivity and your data](https://docs.customer.io/accounts-and-workspaces/case-sensitivity.md): When you send data to Customer.io, you should format it consistently so it's easier to reference in liquid to personalize messages and send data to other platforms. ## Account & Workspaces > Privacy & Security - [Session cookies and expiration](https://docs.customer.io/accounts-and-workspaces/login-session.md): We manage your session and the sessions of your team members in the Customer.io user interface with a secure HTTP-only cookie. As an administrator, you can limit the duration of sessions as necessary to fit your own security policies. - [Allowlist our IP addresses](https://docs.customer.io/accounts-and-workspaces/ip-addresses.md): If you use a firewall or an allowlist, you may need to allow traffic from our IP addresses to support traffic from Customer.io based on the features you use. - [Customer.io, GDPR, and you!](https://docs.customer.io/accounts-and-workspaces/gdpr-faq.md): [GDPR (General Data Protection Regulation)](https://gdpr-info.eu/) is a regulation to strengthen and unify data protection for EU citizens. In a nutshell, its goal is to protect individuals' data and grant them rights over access to and usage of that data. - [Security](https://docs.customer.io/accounts-and-workspaces/security.md): The information below discusses the policies and procedures Customer.io has in place when dealing with Customer data. - [Mobile and App Store Privacy](https://docs.customer.io/accounts-and-workspaces/mobile-privacy.md): We're dedicated to safeguarding your users' privacy while empowering you with the flexibility to handle data as you need to. Apple and Google both require developers to provide information about their privacy practices in the App Store and Google Play Store. Here's what you need to know about our mobile SDK privacy practices. - [Privacy](https://docs.customer.io/accounts-and-workspaces/privacy.md): We all deserve to know what's happening with our data. This page helps you understand our privacy settings and some basics about our privacy policies. - [Respecting your users' privacy](https://docs.customer.io/accounts-and-workspaces/user-privacy.md): You want to maintain a healthy relationship with your customers, and that means both respecting their privacy and responsibly using the data you collect. - [Customer.io Security Qualifications](https://docs.customer.io/accounts-and-workspaces/security-certifications.md): We're serious about data privacy and security—not just for our company, but for you and your users. This page lists the certifications we've earned to ensure your data is safe with us. ## Account & Workspaces > Troubleshooting - [Troubleshooting login and browser issues](https://docs.customer.io/accounts-and-workspaces/login-trouble.md): If you have trouble logging into Customer.io, we have a few tips to help you get back up and running. - [Create a HAR file for help troubleshooting](https://docs.customer.io/accounts-and-workspaces/create-a-har-file-for-help-troubleshooting.md): Sometimes troubleshooting issues requires additional information about the network requests your browser generates when the issue occurs. When this is the case, our support team may ask you to record a HAR file (a log of network requests) while you are experiencing the issue so that we can dig deeper into the situation on our end and ultimately find a solution to whatever is going on. ## Ai - [Use Customer.io with AI](https://docs.customer.io/ai/cio-with-llms.md): AI is exciting and new—to you and us! Learn more about how we're enabling AI features across our platform. - [Use our docs with AI](https://docs.customer.io/ai/use-docs-with-ai.md): You can use our documentation and API specifications with your AI tool of choice, making it easy to search and get answers from our docs right from your editor or other AI tools. - [Segment builder](https://docs.customer.io/ai/ai-segment-builder.md): When you go to create a segment, we'll provide a brief list of suggestions and even help you build a segment from a plain-text description. - [Email content analysis](https://docs.customer.io/ai/content-analysis.md): Email inboxes are noisy these days, and providers have taken steps to filter messages. Our AI-powered content analysis feature helps you understand your email content and improve deliverability so that your messages aren't inadvertently filtered out. - [In-app message suggestions](https://docs.customer.io/ai/in-app-suggestions.md): Building in-app messages can sometimes be a challenge—while we have a block-based editor, you also need to think about positioning, design, the pages or screens you want to show, and more. With AI, we'll suggest some messages to get you started and help you build messages faster.