Capture Push Metrics (SDK): Make Push Reporting Trustworthy Enough to Optimize 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 sending mobile push through Customer.io, capturing push metrics is what separates “we sent pushes” from “push is driving incremental repeat purchase.” When the SDK is wired correctly, you get reliable delivery/open signals tied to the right customer profile—so your cart recovery, replenishment, and winback journeys can actually learn and improve. If you want a second set of eyes on your tracking plan before you scale volume, book a strategy call and we’ll pressure-test it like an operator would.

In most retention programs, push is the fastest lever—but it’s also the easiest channel to mis-measure. One broken identify call or a missing device token, and suddenly “push open rate dropped” is just a tracking problem disguised as a performance problem.

How It Works

Push metrics in Customer.io depend on the SDK being the source of truth for device identity and engagement signals. The platform can’t infer opens or deliveries reliably from your backend alone—you need app-side instrumentation so Customer.io can attribute what happened on-device back to the right person.

  • Device registration: the SDK collects and registers the device token (APNs/FCM) and associates it with a Customer.io profile. This is what makes a device “pushable.”
  • Identity stitching: the SDK ties that device to a known user via identify. If you send push before this is stable, you’ll end up with orphaned devices and fragmented profiles.
  • Engagement capture: when a user interacts with a notification (open/tap), the SDK reports that event back so Customer.io can record opens and attribute downstream behavior.
  • Reporting + optimization loop: once metrics are flowing, you can segment by push engagement (e.g., “opened push in last 7 days”) and orchestrate smarter frequency, channel fallback, and reactivation logic.

Practical example: you run a cart abandonment push 30 minutes after a user leaves checkout. If the SDK isn’t capturing opens, you’ll over-credit “no one opens push” and compensate with heavier discounting. When metrics are accurate, you can split “push openers” vs “non-openers” and reserve discounts for the people who truly need them.

Step-by-Step Setup

You’re aiming for two outcomes here: (1) every device that should receive push is registered and attached to the correct person, and (2) every push interaction is logged consistently. Do this in a staging build first, then validate in production with a small internal cohort before you roll out to your full audience.

  1. Install the Customer.io mobile SDK
    Add the SDK to your iOS/Android app (or your wrapper like React Native/Flutter) and enable the push module for your platform.
  2. Initialize the SDK as early as possible
    Initialize on app launch so the SDK can capture device state and handle notification opens from cold start. In practice, initializing late is how opens “mysteriously” disappear.
  3. Implement identify on login (and any time identity becomes known)
    Call identify with your stable customer identifier (e.g., customer_id or your internal user id) immediately after authentication. If you support guest browsing, decide when you want to create an anonymous profile and how you’ll merge it after login.
  4. Register the push token and keep it updated
    Ensure the SDK receives the APNs/FCM token and updates it when it changes. Token churn is normal; missing updates is what causes silent delivery drops.
  5. Enable push open handling
    Wire the app delegate / notification handlers so the SDK is notified when a push is opened (foreground, background, and cold start). This is the most common gap when teams say “delivery looks fine but opens are zero.”
  6. Track downstream commerce events from the app
    Push metrics become retention metrics when you can connect the open to what happened next. Track events like Viewed Product, Added to Cart, Started Checkout, and Order Completed with order id and value.
  7. Validate in Customer.io
    Use an internal test segment and send a push. Confirm: (a) the device appears on the person profile, (b) the message shows delivered, (c) opening the push records an open, and (d) your next in-app event lands on the same profile.

When Should You Use This Feature

Capturing push metrics is table stakes anytime you plan to use push as a performance channel, not just a broadcast channel. If you can’t trust opens/deliveries, you can’t tune frequency, creative, or fallback logic without guessing.

  • Cart recovery on mobile: measure whether the cart push is being opened—and build a second step that only triggers if the push wasn’t opened (e.g., SMS/email fallback after 2 hours).
  • Repeat purchase and replenishment: segment “push engagers” vs “push ignorers” to avoid burning your best customers with too much noise.
  • Reactivation: run winback pushes to lapsed app users and use open signals to decide whether to continue push attempts or switch to email-only.
  • Product drops / back-in-stock: push is often the highest intent channel—metrics help you spot deliverability issues fast (token problems, permission declines, etc.).

Operational Considerations

Once metrics are flowing, the real work is making the data usable for segmentation and orchestration. This is where programs tend to break: you have “some push data,” but it’s not clean enough to drive decisions.

  • Segmentation reality: create segments around push eligibility (has device token + opted in) and engagement (opened in last X days). Don’t mix “installed app” with “pushable”—those are different audiences.
  • Identity stitching: decide how you handle guest users. If guests can add to cart and later log in, you need a consistent approach to merging anonymous activity so your cart recovery isn’t split across profiles.
  • Data flow timing: push opens can arrive slightly delayed depending on app state/network. Don’t build razor-thin decision windows (e.g., “if not opened within 2 minutes, send SMS”) unless you’ve tested latency.
  • Orchestration with other channels: use push metrics to control frequency caps and channel fallback. In practice, this is where you protect LTV—stop spamming people who never open push and double down on those who do.
  • Attribution hygiene: treat “opened push” as an engagement signal, not revenue attribution by itself. Pair it with downstream events (checkout/order) to understand lift.

Implementation Checklist

Before you declare push “ready,” run through this list with your engineering owner and whoever owns retention reporting. It’s faster to fix this now than after you’ve built 12 journeys on top of bad data.

  • SDK installed and initialized on app launch (not lazily later)
  • identify called with a stable user id immediately after login
  • Anonymous-to-known user merge plan documented (and tested)
  • Device token captured and updated on refresh
  • Notification open handlers wired for background + cold start
  • Test push confirms delivered + opened metrics in Customer.io
  • Commerce events tracked from app and land on the same profile as the push open
  • Segments created for pushable users and recent push engagers

Expert Implementation Tips

These are the operator moves that usually make the difference between “push works” and “push is a predictable revenue lever.”

  • Gate push journeys on pushability: always check for a valid device + permission status before entering a push-first flow. Otherwise you’ll think your campaign underperformed when it never had a deliverable audience.
  • Use engagement tiers: build tiers like Opened push in 7d, Opened in 30d, No opens in 90d. Then tune frequency and incentives by tier.
  • Instrument deep links consistently: if your push opens to a PDP or cart, make sure the deep link path is stable and track a “Landing Viewed” event. It’s the easiest way to debug “opens are fine but conversion is down.”
  • Watch for duplicate profiles: if you see the same person with multiple profiles (common when identify is inconsistent), fix identity before scaling sends. Duplicates distort frequency caps and engagement segments.

Common Mistakes to Avoid

Most push metric issues aren’t “Customer.io problems.” They’re app wiring issues that show up as marketing performance noise.

  • Calling identify too late: if the device token is registered before the user is identified (or identified inconsistently), you’ll end up with misattributed opens and unreachable devices.
  • Only handling opens in one app state: teams often track opens when the app is already running, but miss cold start opens—which is where a lot of commerce traffic happens.
  • Assuming delivery = permission: a device token existing doesn’t always mean the user is opted in today. Keep permission status current if your platform supports it.
  • Building fallback logic without validating latency: if you trigger SMS because “push wasn’t opened” but your open events arrive late, you’ll double-message your best customers.
  • No QA segment: not maintaining an internal segment for ongoing testing makes it harder to catch silent tracking regressions after app releases.

Summary

If push is part of your retention mix, capturing push metrics via the SDK is non-negotiable. Get identity stitching and open handling right, then use engagement segments to control frequency and channel fallback. If you can’t trust the metrics, you’ll end up optimizing the wrong thing.

Implement Push Metrics with Propel

When we implement push tracking for D2C teams, the goal isn’t “more data”—it’s cleaner segmentation and fewer blind spots in your journeys. If you’re using Customer.io and want help validating SDK identity stitching, push open capture, and the segments that actually drive repeat purchase, book a strategy call and we’ll map the instrumentation to your highest-leverage retention 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