Implement Identify in Customer.io SDK (So your retention flows don’t break)

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 want cart recovery, replenishment, and winback to actually hit the right person, Identify has to be rock-solid—because it’s the bridge between “someone did something” and “we know who to message.” In Customer.io, Identify is the moment you tell the SDK, “this device/session belongs to this customer,” so events, devices, and attributes all land on one profile instead of splintering into duplicates.

If your team is seeing weird stuff like abandoned cart emails going to the wrong address or purchases not suppressing recovery flows, it’s almost always identity stitching. If you want a second set of eyes on your tracking plan before you scale spend, book a strategy call and we’ll pressure-test where identity tends to break in practice.

How It Works

At a mechanical level, the SDK starts by tracking activity anonymously (device/session-based). The Identify call upgrades that anonymous activity into a known person by attaching a stable identifier (usually your internal customer ID) and optional attributes (email, phone, lifecycle flags). From that point forward, events and device tokens should consistently map back to the same Customer.io person.

  • Anonymous phase: A shopper opens the app, views products, adds to cart. Those events can exist without a known user.
  • Identify moment: When they log in, create an account, or provide an email/phone, the app calls identify with your chosen id and attributes.
  • Stitching: Customer.io associates prior anonymous activity (and the current device) to that identified profile, so downstream segments and campaigns see one person with a full timeline.
  • Ongoing updates: Re-call identify when key attributes change (email updated, SMS opt-in, loyalty tier), keeping segmentation accurate.

Real D2C scenario: A shopper adds a moisturizer to cart while browsing anonymously, then signs in to check order history. If Identify fires at login, your “Cart Abandonment (No Purchase)” journey can still trigger correctly—because the cart event and the email address now live on the same profile. If Identify is late or inconsistent, you’ll either miss the send or message the wrong profile entirely.

Step-by-Step Setup

Most teams don’t fail because they skipped the SDK—they fail because they didn’t decide what the “source of truth” ID is, and they fire Identify at inconsistent moments. Set the rules first, then implement.

  1. Pick your canonical person identifier.
    Use a stable internal customer ID (not email). Emails change; IDs shouldn’t. Decide this once and enforce it everywhere.
  2. Install the Customer.io SDK for your platform.
    Implement the mobile (iOS/Android/React Native/etc.) or web SDK per your app stack, and confirm basic event delivery in a dev environment before shipping.
  3. Initialize the SDK as early as possible.
    Initialize on app launch/page load so anonymous events (product views, add-to-cart) are captured even before login.
  4. Fire identify immediately after authentication or lead capture.
    Call Identify the moment you can confidently link activity to a person:
    • Login success
    • Account created
    • Email captured (e.g., “send my cart” modal)
    • SMS capture (if you’re using phone as a channel attribute)
  5. Send attributes you’ll actually segment on.
    Keep it tight: email/phone (if used), marketing consent flags, first_order_date, last_order_date, loyalty_tier, subscription_status. Avoid dumping your entire user object.
  6. Track events after Identify with clean naming.
    Once identified, track the events your retention programs depend on (e.g., Product Viewed, Added to Cart, Checkout Started, Order Completed). Consistency matters more than volume.
  7. Handle logout explicitly.
    When a user logs out, reset/clear the identified user in the SDK (platform-specific). This prevents the next user on a shared device from inheriting the previous person’s identity.
  8. Validate stitching with a real test run.
    Do one end-to-end flow on a fresh install: anonymous browse → add to cart → identify/login → purchase. Confirm it’s one profile in Customer.io with the full event timeline.

When Should You Use This Feature

Identify isn’t optional in retention—it’s the prerequisite for anything that depends on “who” did the behavior. The best time to invest here is before you scale journeys, because fixing identity after the fact usually means rebuilding segments and rethinking suppression logic.

  • Cart recovery that starts pre-login. If shoppers add to cart before signing in, Identify is what lets you recover that cart once they reveal an email/phone.
  • Repeat purchase and replenishment. You need clean purchase attribution on a single profile so “last purchase date” and “category bought” segments don’t fragment.
  • Reactivation/winback. Dormancy segments break when activity is split across multiple profiles (anonymous + identified, or duplicate identified records).
  • Cross-device continuity. If a customer browses on mobile but buys on desktop, a stable ID strategy plus consistent Identify calls help unify behavior.

Operational Considerations

In most retention programs, the hard part isn’t sending messages—it’s keeping the underlying identity and event stream trustworthy enough that suppression and targeting work at scale.

  • Segmentation depends on identity hygiene. If you segment on “Added to Cart in last 4 hours AND no Order Completed,” duplicate profiles will either double-send or miss sends entirely.
  • Decide which system owns truth. Your app/auth system should own the canonical customer ID. Customer.io should mirror it, not invent it.
  • Attribute drift is real. Email changes, SMS opt-in toggles, loyalty tier updates—re-call Identify (or update person) when those change, or your channel eligibility segments will decay.
  • Event ordering can bite you. Mobile networks drop/queue events. If “Order Completed” arrives late, your cart recovery may send incorrectly unless you use sensible delays and purchase checks.
  • Orchestration with other tools. If you also use a CDP or analytics SDK, align IDs across systems (same internal ID) so you’re not stitching differently in each platform.

Implementation Checklist

If you want this to survive real-world edge cases (poor connectivity, shared devices, partial checkouts), treat Identify like infrastructure—not a one-off task.

  • Canonical internal customer ID chosen and documented (not email)
  • SDK initialized on app launch / site load
  • Anonymous events confirmed flowing (view, add-to-cart)
  • identify fires immediately on login/account creation
  • Lead-capture Identify path implemented (email/SMS capture before login)
  • Logout/reset behavior implemented to prevent identity bleed
  • Key attributes defined (consent flags, lifecycle dates, loyalty tier)
  • Core retention events standardized and QA’d
  • Test plan run: anonymous → identify → purchase, single profile verified

Expert Implementation Tips

The difference between “it works” and “it prints money” is usually a handful of small decisions that keep your audiences clean and your suppression reliable.

  • Identify once you have confidence, not hope. Don’t Identify on “email field blur” unless you truly want that to become the person record. Use explicit submit/verification moments.
  • Use internal ID as id, store email as an attribute. This avoids the nightmare of email-based duplicates after address changes.
  • Send consent as attributes you can segment on. Example: sms_opt_in=true, email_marketing_opt_in=true. Then your journeys can branch cleanly by channel eligibility.
  • Delay cart recovery slightly, then re-check purchase state. A 30–60 minute delay plus a “has purchased since cart event?” check prevents a lot of accidental nagging.
  • Instrument “Checkout Started” separately from “Added to Cart.” It gives you a higher-intent recovery path and better offer control (so you’re not discounting too early).

Common Mistakes to Avoid

These are the issues that show up later as “Customer.io is buggy,” when it’s really identity and tracking discipline.

  • Using email as the primary identifier. It creates duplicates when emails change or when multiple emails exist per customer.
  • Calling Identify too late. If you wait until after purchase confirmation, you’ll lose the ability to stitch pre-purchase intent to the buyer profile.
  • Not resetting identity on logout. Shared devices (tablets, family phones) will contaminate profiles and wreck personalization.
  • Over-sending attributes. Dumping huge JSON blobs increases noise and makes segmentation harder to reason about.
  • Inconsistent event naming across platforms. “AddToCart” on iOS and “Added to Cart” on Android splits segments and breaks triggers.
  • No QA path for stitching. Teams test events in isolation but never confirm that anonymous activity merges into the identified profile.

Summary

Identify is the backbone of retention tracking in Customer.io SDK implementations. Get the ID strategy right, fire Identify at the right moments, and your cart recovery, repeat purchase, and winback logic will target and suppress correctly. If it’s messy, everything downstream gets noisy and expensive.

Implement Identify with Propel

If you’re rolling out Identify and want confidence that your anonymous-to-known stitching won’t create duplicates or misfires, we can map the exact Identify moments and event contract your retention programs rely on. We work directly with Customer.io setups in the wild, where edge cases (logout, delayed events, multi-device) actually matter—so you don’t find out after you’ve scaled journeys.

When you’re ready, book a strategy call and we’ll review your ID schema, Identify triggers, and the minimum event set needed to drive clean cart recovery and repeat purchase flows.

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