Skip to Content
Email MarketingCustomer.io

Customer.io

Sync customer profiles and funnel events to Customer.io for automated email and push notification workflows. AppFunnel uses the Customer.io CDP (Customer Data Platform) API to identify users, track events, and keep subscription data in sync.

What It Does

  • Identifies users via the CDP API when an email is captured (or on any subsequent event). Customer profiles include name, email, location, funnel data, and subscription status.
  • Tracks events for triggering workflows. Every AppFunnel event is forwarded as a Customer.io event, so you can build automations like onboarding sequences, purchase confirmations, or renewal reminders.
  • Syncs subscription data as customer attributes, including active subscription count, subscription status, and plan details.
  • Syncs marketing consent so your Customer.io segments respect opt-in status.

Setup

Navigate to Settings > Integrations > Customer.io in your project.

  1. Region: Select US or EU based on your Customer.io account region. This determines the API endpoint (cdp.customer.io vs. cdp-eu.customer.io).
  2. CDP Pipelines Write Key: Found in your Customer.io workspace under Settings > Workspace > API & Webhook Credentials > CDP Pipelines. This is the write key for the Pipelines source, not the Tracking API key.

Customer.io Integration Setup Insert image: The Customer.io integration settings page showing the Region selector (US/EU) and CDP Pipelines Write Key input field

AppFunnel uses the CDP API (not the Tracking API). Make sure you copy the Pipelines Write Key, not the Site ID or Tracking API Key.

How It Works

Customer Identification

When a visitor provides their email (user.registered event), AppFunnel sends an identify call to Customer.io with the following attributes:

AttributeDescription
emailCustomer email address
nameCustomer name (if provided)
date_of_birthDate of birth (if provided)
genderGender (if provided)
country, city, stateLocation data
project_idYour AppFunnel project ID
first_campaign_slugThe campaign where this customer was first seen
campaign_base_urlFull URL of the customer’s first campaign
marketing_consentWhether the customer has opted in to marketing
created_atUnix timestamp of when the customer was created
last_session_idID of the most recent session
funnelDataAll session variable data (quiz answers, selections, etc.)

On every subsequent event, AppFunnel re-identifies the customer to keep attributes up to date.

Subscription Sync

When a subscription.created event fires, AppFunnel additionally syncs subscription attributes:

AttributeDescription
has_active_subscriptionBoolean: whether the customer has any active subscription
active_subscription_countNumber of active subscriptions
subscriptionsArray of subscription objects with id, status, priceId, currentPeriodStart, currentPeriodEnd, createdAt

Event Tracking

All AppFunnel events are forwarded to Customer.io as track calls. The event name matches the AppFunnel event type (e.g., purchase.complete, subscription.renewal), and the event payload is passed as properties.

You can use these events in Customer.io to trigger campaigns, segment users, or build reporting workflows.

Events are only sent for identified customers (those with an email address). Anonymous page views are not forwarded to Customer.io.

Event Mapping

Customer.io receives all AppFunnel event types. Unlike Meta Ads, events are forwarded with their original AppFunnel event names by default:

AppFunnel EventCustomer.io Event
page.viewpage.view
user.registereduser.registered
checkout.startcheckout.start
checkout.payment_addedcheckout.payment_added
purchase.completepurchase.complete
customer.first_purchasecustomer.first_purchase
subscription.createdsubscription.created
subscription.renewalsubscription.renewal
marketing.consent_givenmarketing.consent_given
Last updated on