Customer.io Quick Start Guide (SDK): Track the Right Users and Events for Retention

Customer.io partner logo

Table of Contents

Summarize this documentation using AI

This banner was added using fs-inject

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Overview

If you’re standing up Customer.io for a D2C retention program, the “quick start” that matters isn’t creating a workspace—it’s getting SDK tracking clean enough that your cart recovery, replenishment, and winback automations trigger on the right person every time. If you want a second set of eyes on your tracking plan before you bake in bad data, book a strategy call and we’ll pressure-test the identity + event model against the flows you actually want to run.

In most retention programs, we’ve seen performance bottleneck not because the emails are bad—but because the app/web SDK is missing one key event, or “identify” happens too late, so the system can’t stitch anonymous browsing to the eventual purchaser.

How It Works

Customer.io becomes your retention engine once your app or site reliably sends three things: a person identity, the attributes you’ll segment on, and the behavioral events that power triggers and exits. The SDK is the most direct way to get that in with high fidelity—especially on mobile where “web pixel only” setups tend to miss key moments (push tokens, app opens, deep link attribution, etc.).

  • Install the SDK in your iOS/Android (or React Native/Flutter) app and/or your web app. This establishes the pipeline for device-level events and (on mobile) device tokens for push.
  • Start anonymous when someone first opens the app or visits the site. You can still track product views, category browsing, and add-to-cart before they log in.
  • Call identify as soon as you have a stable customer identifier (email, customer ID, or hashed ID). This is the moment that makes retention work because it stitches pre-login activity to the known profile.
  • Track events with consistent naming + properties (e.g., Product Viewed, Added to Cart, Checkout Started, Order Completed). Those properties become your segmentation inputs and your message personalization.
  • Use attributes for “state,” events for “behavior”. For example: store last_order_date and lifetime_value as attributes; send Order Completed as an event with order_id, total, and items.

Real D2C scenario: A shopper adds a cleanser to cart on mobile, gets distracted, and later completes purchase after logging in. If you tracked Added to Cart anonymously but only identify after purchase, your cart recovery flow either won’t fire or will fire on an “anonymous” profile you can’t message. If you identify at login (or email capture) and merge that anonymous activity, you can trigger a push within 30 minutes and suppress it instantly if Order Completed comes through.

Step-by-Step Setup

The fastest path is to set up the minimum tracking that unlocks revenue flows first (cart recovery + post-purchase), then expand into browse abandon and reactivation once you trust identity stitching.

  1. Create your workspace and confirm your primary identifier.
    Decide what Customer.io should treat as the “person” key (commonly email or an internal customer ID). Don’t skip this—changing identity rules later is where data gets messy.
  2. Install the appropriate SDK(s).
    Implement Customer.io’s Mobile SDK for iOS/Android (or your wrapper like React Native/Flutter) and/or your Web SDK. Make sure the SDK initializes on app start/page load so you capture early-session behavior.
  3. Implement identify at the earliest reliable moment.
    Trigger identify when the user logs in, creates an account, or submits email/SMS for an offer. In practice, “identify only after checkout” is the #1 reason cart recovery underperforms.
  4. Send core person attributes.
    At minimum: email (if you have it), phone (if you message via SMS), first_name, accepts_marketing (or your consent flags), signup_date, last_order_date, orders_count, lifetime_value.
  5. Track the “money events” with clean properties.
    Start with:
    • Product Viewed: product_id, sku, name, category, price
    • Added to Cart: cart_id, product_id, quantity, price
    • Checkout Started: cart_id, cart_value, item_count
    • Order Completed: order_id, total, subtotal, discount, shipping, items (array), currency
  6. Verify events in Customer.io Activity Logs.
    Confirm the right person receives the right events (especially around login). Test: browse anonymously → add to cart → identify → ensure the same profile shows the earlier events.
  7. Create 2–3 “starter segments” that map to revenue flows.
    Examples: “Added to Cart in last 2 hours AND no Order Completed,” “Purchased once AND last_order_date > 30 days,” “High intent browsers: 3+ Product Viewed in 24 hours AND no purchase.”
  8. Only then build campaigns/workflows.
    Once tracking is stable, wire segments/events into triggered flows with tight exit rules (e.g., exit cart recovery the instant Order Completed fires).

When Should You Use This Feature

SDK-based tracking is the right move when you need retention triggers to be accurate across sessions and devices, and when you care about mobile-specific signals like push tokens, app opens, and deep link behavior.

  • Cart recovery that actually suppresses correctly when someone completes purchase on another device or after logging in.
  • Browse abandonment and product discovery nudges driven by real product/category views—not just “page visited” noise.
  • Repeat purchase and replenishment when you can calculate time-since-purchase and product-specific reorder windows from Order Completed item data.
  • Reactivation when you can trust “last seen” (app open/site visit) and don’t accidentally winback people who are still active.

Operational Considerations

Once you go live, the work shifts from “sending events” to keeping your data model stable while the product and engineering teams keep shipping. This is where retention orchestration either scales cleanly—or slowly breaks.

  • Segmentation depends on naming consistency. If one team sends AddedToCart and another sends Added to Cart, your segments will silently miss people. Lock an event taxonomy early.
  • Identity stitching is the foundation. Decide what happens when a user changes email, checks out as guest, or logs in on a second device. If your identify logic is inconsistent, you’ll see duplicate profiles and undercounted conversions.
  • Data flow timing matters for real-time flows. Cart recovery and browse abandon are time-sensitive. If events batch or arrive late, you’ll message too late (or worse, after purchase). Validate event latency from app → Customer.io.
  • Orchestration needs strong exit rules. Every revenue flow should have explicit suppression/exit conditions (e.g., exit on Order Completed, suppress if support_ticket_open attribute is true, etc.).
  • Mobile push requires device management hygiene. If you don’t handle token refresh and logout correctly, you’ll send to old devices or the wrong user on shared phones.

Implementation Checklist

If you want a clean “go/no-go” before launching automations, run this checklist with both marketing and engineering in the room. It catches the issues that usually show up only after you’ve already shipped flows.

  • SDK initializes on app start / site load in all environments (prod + staging).
  • identify fires at login and at any email/phone capture moment (not only post-purchase).
  • Anonymous pre-login events merge into the identified profile after identify.
  • Core events implemented: Product Viewed, Added to Cart, Checkout Started, Order Completed.
  • Event properties include stable IDs (product_id, sku, order_id, cart_id) and revenue fields (total, currency).
  • Consent attributes exist and are enforced in messaging (email/SMS/push).
  • Event latency tested (cart → Customer.io within minutes, not hours).
  • At least 2 starter segments created and validated against real users.
  • At least 1 workflow has an explicit purchase exit condition and is QA’d end-to-end.

Expert Implementation Tips

These are the small choices that keep your retention program from getting brittle as volume grows and the app evolves.

  • Track “cart value” at the moment of the event. Don’t try to reconstruct it later from product price tables—promos, bundles, and dynamic pricing will make it wrong.
  • Send item arrays on Order Completed. This unlocks product-specific replenishment (e.g., “reorder your vitamins” vs generic “come back”).
  • Use one canonical customer ID across systems. Even if you message by email, a stable internal ID makes merges and deduplication far less painful.
  • Instrument logout explicitly. On mobile, clear or re-associate device tokens on logout; shared devices are common in some households and can create “wrong person” pushes.
  • QA with real sequences, not single events. The sequence is what matters: anonymous view → add to cart → identify → purchase → ensure cart flow suppresses and post-purchase flow starts.

Common Mistakes to Avoid

Most “Customer.io isn’t working” complaints are really tracking design problems. Fix these and your flows start behaving like you expected.

  • Identifying too late. If identify only happens after purchase, you lose the ability to recover carts and stitch browse intent.
  • Relying on email as the only identifier in mobile. If the user hasn’t provided email yet, you need a plan for anonymous activity and later merge.
  • Event spam without intent. Tracking every click creates noisy segments. Prioritize events that map to retention decisions (view, cart, checkout, purchase, app open).
  • Missing exit conditions. Cart recovery without a purchase exit will keep sending after conversion—guaranteed CX complaints.
  • Inconsistent property schemas. If price is sometimes a string and sometimes a number, your conditions and liquid formatting will break at the worst time.

Summary

If you’re implementing Customer.io via SDK, treat identity stitching and a tight event taxonomy as the real “quick start.” Once those are solid, cart recovery, repeat purchase, and winback flows become straightforward—and measurable.

If you’re unsure whether your current tracking can support the flows you want, fix the data model first, then build automations.

Implement Quick Start Guide with Propel

When teams ask for help with a “quick start,” it’s usually because they want campaigns live fast without discovering two weeks later that identity and events don’t line up. That’s the gap we tend to close: define the event + attribute spec, validate stitching, and QA the first revenue workflows end-to-end inside Customer.io.

If you want to sanity-check your SDK tracking plan (or debug why a cart flow isn’t triggering), book a strategy call and we’ll walk through your current instrumentation and the exact retention flows you’re trying to run.

Contact us

Get in touch

Our friendly team is always here to chat.

Here’s what we’ll dig into:

Where your lifecycle flows are underperforming and the revenue you’re missing

How AI-driven personalisation can move the needle on retention and LTV

Quick wins your team can action this quarter

Whether Propel AI is the right fit for your brand, stage, and stack