Update Customer.io Mobile SDK from 3.x to 3.4 (Retention-Safe Upgrade Guide)

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 moving from 3.x to 3.4, treat it less like a “library bump” and more like a retention data integrity project. Most revenue-impacting automations in Customer.io depend on clean identity stitching and consistent event payloads—and SDK upgrades are where that quietly breaks. If you want a second set of eyes on your tracking plan before you ship, book a strategy call and we’ll pressure-test it like an operator would.

The goal of this update is simple: keep your app-side identify calls, device registration, and event schema stable so your cart recovery, replenishment, and winback campaigns don’t lose triggers or mis-attribute users.

How It Works

At runtime, the Customer.io SDK does three retention-critical jobs: (1) it ties a device/session to a person via identify, (2) it sends behavioral events via track that power segments and journey triggers, and (3) it helps Customer.io stitch anonymous pre-login activity to a known customer once they log in.

  • Installation/initialization sets up the SDK and any required modules (push/in-app) so device tokens and app lifecycle signals can be captured reliably.
  • Identity stitching happens when you move a user from anonymous → known. In practice, this is where teams lose revenue: if you identify too late (or inconsistently), your “Viewed Product → Added to Cart → Checkout Started” chain won’t belong to the right profile.
  • Event tracking is your retention engine. Your campaigns don’t run on “the app exists”—they run on specific events like product_viewed, add_to_cart, checkout_started, purchase, and “soft” intent like search or category_viewed.

A realistic D2C scenario: a shopper browses products while logged out, adds an item to cart, then logs in at checkout. If you don’t stitch anonymous activity correctly during the upgrade, your cart abandonment flow will either (a) never trigger, or (b) trigger on an anonymous profile that can’t be messaged—both look like “email underperformed” when it’s really tracking.

Step-by-Step Setup

Plan the upgrade like a release: lock your event schema first, then update the SDK, then validate identity + events in a staging build before you touch any live journeys. The exact code differs by platform (iOS/Android/React Native/etc.), but the operator workflow is consistent.

  1. Inventory your current tracking contract.
    Export or document your current identify fields (customer ID, email/phone if used, loyalty tier, last purchase date) and your top revenue events (cart, checkout, purchase). This is your “do not break” list.
  2. Update the SDK dependency to 3.4 in your app.
    Bump the version in your package manager (SPM/CocoaPods/Gradle/npm depending on your stack) and rebuild. Keep this change isolated in a PR so you can roll back quickly if needed.
  3. Re-confirm SDK initialization happens exactly once.
    Initialize on app start (not per screen). Multiple initializations are a common cause of duplicate events and flaky device registration—both poison segmentation.
  4. Verify identify runs at the right time.
    Call identify immediately after authentication (and also on app launch if you persist a logged-in session). Use a stable customer identifier (your internal user ID) as the primary key. Don’t rotate identifiers.
  5. Re-validate anonymous → known stitching.
    In most retention programs, we’ve seen this break when teams refactor login flows during an SDK upgrade. Test: browse logged out, fire product_viewed and add_to_cart, then log in and ensure subsequent events and the cart state sit on the same person in Customer.io.
  6. Confirm event names and payloads didn’t drift.
    If you change add_to_cart to added_to_cart “for consistency,” your existing campaigns won’t magically follow. Keep names stable or update every downstream trigger/segment.
  7. Test push/in-app device registration if you use them.
    If your retention stack includes push for cart recovery or replenishment reminders, verify device tokens are still being captured after the upgrade and tied to the identified user.
  8. Run a staging-to-prod validation pass.
    Send test events from a QA build, then check Customer.io Activity Logs for: correct person, correct event name, correct timestamp, and expected attributes.

When Should You Use This Feature

SDK updates are worth prioritizing when your retention performance depends on app behavior—especially when email alone isn’t carrying the program. If the app is your main shopping surface, your SDK is effectively your “retention sensor.”

  • Cart recovery in mobile-first shopping. You need reliable add_to_cart and checkout_started events plus identity stitching when customers log in late.
  • Repeat purchase and replenishment. Accurate purchase events (with items, categories, and timestamps) let you build “bought X, hasn’t bought again in Y days” segments without guesswork.
  • Reactivation based on real inactivity. If your “inactive 30 days” segment is built on app events, an SDK regression can accidentally mark active users as inactive and spam them with winbacks.
  • Product discovery automations. Browse and search events (category viewed, search query, product viewed) power the kind of personalized follow-up that lifts AOV and repeat rate.

Operational Considerations

The upgrade itself is straightforward; the operational risk is downstream. Retention systems are brittle because segments, journeys, frequency rules, and attribution all assume your tracking is consistent.

  • Segmentation dependencies: Audit which segments reference app events/attributes. If a segment uses “did add_to_cart in last 4 hours,” even a small timestamp or naming change will drop users out.
  • Data flow timing: Mobile networks are messy. If events queue and flush later, your “send within 30 minutes” cart recovery logic may miss the window. Validate event delivery latency post-upgrade.
  • Identity resolution rules: Decide what is authoritative: internal user ID vs email vs phone. In practice, this tends to break when apps identify by email in one place and by user ID in another—creating duplicates and splitting LTV across profiles.
  • Orchestration realities: If you run multi-channel (email + push + SMS), your suppression logic depends on unified profiles. Any duplicate-person spike after the upgrade will increase over-messaging and hurt deliverability.

Implementation Checklist

Use this as your release gate. If you can’t check these off, you’re not “done”—you’re just hoping nothing breaks in revenue-critical flows.

  • SDK updated to 3.4 and initialization confirmed to run once per app lifecycle
  • identify called on login and on app start for persisted sessions
  • Stable identifier chosen (prefer internal user ID) and used consistently
  • Anonymous browsing → login flow tested and verified in Customer.io person activity
  • Top retention events validated: product_viewed, add_to_cart, checkout_started, purchase
  • Event payloads validated (sku, product_id, price, quantity, currency, cart_id/order_id)
  • Push/in-app device registration verified (if applicable)
  • Key segments and journeys smoke-tested against real test profiles

Expert Implementation Tips

This is the stuff that keeps your retention program from quietly bleeding after an SDK change—even when “everything compiles.”

  • Version your event schema internally. Keep a simple tracking spec doc and treat it like an API. When marketing asks for a new attribute, add it without renaming existing keys.
  • Send a cart identifier early. For cart recovery, include cart_id (or a stable cart token) on add_to_cart and checkout_started. It makes deduping and “latest cart wins” logic much easier.
  • Track value on purchase in a consistent format. Pick one: integer cents or decimal dollars—then stick to it. Inconsistent revenue formats break LTV segments and post-purchase branching.
  • Use a QA journey as a canary. Create a private internal journey that triggers on your key events and pings Slack/email. After the upgrade, you’ll see immediately if events stopped or duplicated.

Common Mistakes to Avoid

Most “SDK upgrade issues” show up as retention performance drops a week later. These are the usual culprits.

  • Renaming events during the upgrade. Even “small cleanup” changes force you to update every trigger, segment, and report that references the old name.
  • Calling identify with different identifiers across platforms. iOS identifies by user ID, Android identifies by email—now you have two people and half the events on each.
  • Identifying too late in the funnel. If you only identify on purchase, your cart recovery and browse follow-ups won’t have a messageable profile at the time it matters.
  • Not testing offline/poor network behavior. Events can batch and arrive late; if your journeys depend on tight windows, validate delivery timing.
  • Ignoring duplicates after release. A spike in duplicate profiles is a red alert for over-messaging, broken suppression, and messy attribution.

Summary

Update to 3.4 when you can validate identity stitching and event consistency end-to-end—not just that the app builds. If your key retention journeys depend on app events, treat this as a revenue release with a tracking QA plan.

Implement Update To 3.4 with Propel

If you’re coordinating an SDK bump alongside new journeys (cart recovery refresh, replenishment, winback), it’s worth running the upgrade with a tight tracking spec and a staging validation pass. We’ll map your app-side events to the segments and triggers you actually use in Customer.io, then help you QA identity stitching so you don’t ship silent breakage. If that would help, book a strategy call and we’ll walk through your current 3.x setup and the safest path to 3.4.

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