Push Notifications (SDK): Track, Stitch Identity, and Trigger Retention in Customer.io

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 running push through Customer.io, the “make or break” work happens in your SDK implementation: device registration, clean identity stitching, and event tracking that’s consistent enough to automate off of. If you want a second set of operator eyes on your tracking plan before you ship it, book a strategy call—it’s usually cheaper than debugging a month of broken attribution and missing devices.

In most D2C retention programs, push wins when it’s tied to high-intent behavior (browse, cart, back-in-stock, reorder windows) and when your device + user identity is reliable. Otherwise you end up “sending” messages that never reach the right person, or worse, you hit the wrong person at the wrong time.

How It Works

Push in Customer.io is basically: your app/site SDK collects permission + device tokens, ties those tokens to a person profile, and then your campaigns/journeys target those people based on events and attributes. The retention lift doesn’t come from the notification itself—it comes from the fact that your tracking makes the audience precise and the timing automatic.

  • Device registration: The SDK captures the push token (APNs for iOS, FCM for Android, browser token for web push) and sends it to Customer.io as a device tied to a profile.
  • Identity stitching: You start with an anonymous user (app install / site visitor), then you identify them when you have a durable key (login, account created, email captured). Customer.io links the device to that known person so future pushes land correctly.
  • Event-driven targeting: You track events like Product Viewed, Added to Cart, Checkout Started, Order Completed. Journeys use those events to trigger push sequences, apply delays, frequency caps, and exit rules.
  • Segmentation based on device + behavior: You can segment by platform (iOS/Android/Web), permission status, recency, and purchase behavior so you don’t blast everyone with the same message.

Real scenario: A shopper views a best-selling serum twice, adds it to cart, then bounces. If your SDK fires Added to Cart and the user is identified (or you’ve stitched anonymous activity after they enter email at checkout), you can trigger a push 30–60 minutes later: “Still thinking about the serum? Your cart’s saved.” If identity/device tracking is off, that push either never sends (no device on profile) or sends to the wrong profile (duplicate users).

Step-by-Step Setup

The fastest way to get push working is to treat it like a data pipeline project, not a messaging project. Get the SDK installed, confirm devices are attaching to the right profiles, then layer in events and only then build journeys.

  1. Install the correct Customer.io SDK for your app:
    • iOS: add the Customer.io iOS SDK and enable push capabilities (APNs).
    • Android: add the Customer.io Android SDK and configure Firebase Cloud Messaging (FCM).
    • Web: implement web push with service worker + browser permission flow (only if web push is part of your plan).
  2. Initialize the SDK early in app startup:
    • Do it on every app open so Customer.io can maintain device state and update tokens.
    • Confirm you’re using the right workspace/site ID and environment keys (prod vs staging).
  3. Implement permission prompts intentionally:
    • Don’t prompt on first launch unless you have a strong value exchange.
    • Common D2C pattern: prompt after “track my order”, “save my size”, “back-in-stock alerts”, or after second product view.
  4. Register device tokens with Customer.io:
    • iOS: send APNs token updates to the SDK when the token changes.
    • Android: ensure FCM token refresh is handled and forwarded.
    • Verify in Customer.io that the person profile shows a device entry after opt-in.
  5. Identify users as soon as you have a stable identifier:
    • Call identify on login/account creation (or when email/phone is captured if you treat that as identity).
    • Pass traits you’ll actually segment on (e.g., email, first_order_date, vip_tier, preferred_category).
    • After identify, confirm the device is now attached to the known profile (not stuck on an anonymous profile).
  6. Track your retention-critical events:
    • Product Viewed (include product_id, category, price).
    • Added to Cart (include cart_id, items, value).
    • Checkout Started (include value, shipping_method if known).
    • Order Completed (include order_id, items, value, is_subscription).
  7. Validate data in Customer.io before building journeys:
    • Pick 5 internal test users, run through browse → cart → purchase, and confirm events land with expected properties.
    • Confirm device presence, platform, and push opt-in status are visible and segmentable.
  8. Build one push journey and prove delivery end-to-end:
    • Start with a simple cart abandonment push (single message) before you build multi-step flows.
    • Add exit conditions: if Order Completed happens, stop the journey.

When Should You Use This Feature

Push is strongest when you’re reacting to intent and shortening time-to-next-action. If you’re trying to “newsletter” your way into retention, push will just create churn and opt-outs. Tie it to moments where the customer already raised their hand.

  • Cart recovery: Trigger from Added to Cart with a short delay; exit on purchase. This is where device + identity stitching matters most.
  • Browse-to-cart nudges: If someone viewed the same product 2–3 times in 24 hours but didn’t add to cart, push can convert without discounting.
  • Reorder and replenishment: Use Order Completed + product-level metadata to time a reminder (e.g., 21–35 days for skincare, 45–60 for supplements).
  • Reactivation: Segment by “no purchase in 60+ days” and “push opted-in” and trigger a winback sequence that respects frequency caps.
  • Back-in-stock / price drop (if you track it): Works best when the event includes the exact SKU and the user previously viewed or wished it.

Operational Considerations

Push looks simple on the surface, but in practice it tends to break at the seams: duplicate profiles, missing tokens, and events that don’t line up across app + web. Treat this as a systems problem—segmentation and orchestration depend on clean data flow.

  • Segmentation depends on permission + device state: Build audiences that explicitly require a valid device and opt-in status. Otherwise you’ll inflate “sent” volume with undeliverable messages and misread performance.
  • Identity stitching is the retention foundation: If a customer browses anonymously, then logs in later, you need their earlier events to be attributed to the same person (or you’ll miss triggers and send irrelevant pushes).
  • Event naming and properties must be stable: Decide your canonical event schema once. If one team ships add_to_cart and another ships Added To Cart, your journeys will silently under-trigger.
  • Cross-channel orchestration: Coordinate push with email/SMS so you don’t stack touches. A common pattern is push first (fast), then email later (richer content), with suppression if the customer converts.
  • Frequency and fatigue: Push opt-outs climb fast in D2C when you over-message. Use frequency caps and suppress recent purchasers from promo pushes.

Implementation Checklist

If you want push to drive revenue (not just “engagement”), you need a short checklist that forces correctness. Run this before you scale sends beyond internal testing.

  • SDK installed and initialized in production builds (iOS/Android/web as applicable)
  • Push permission flow implemented with intentional timing (not immediate on first launch)
  • Device tokens reliably registered and updated (token refresh handled)
  • identify called on login/account creation (and consistently uses the same customer ID)
  • Anonymous → known stitching confirmed via test accounts (device follows the person)
  • Retention events tracked with consistent naming and required properties
  • Segments built to require “has valid device + opted-in”
  • At least one journey proven end-to-end (trigger → send → conversion → exit)
  • Frequency caps and exit conditions applied to prevent over-messaging

Expert Implementation Tips

These are the small operator moves that keep push profitable after the first month, when volume goes up and edge cases start showing up.

  • Delay your cart push just enough to avoid “I’m still shopping”: For many D2C apps, 30–90 minutes after Added to Cart is a sweet spot. Immediate pushes often annoy people who simply got interrupted.
  • Use product context in the payload: Pass product_name or primary_image_url (where supported) from event properties so the message matches what they actually wanted.
  • Build platform-specific variants: iOS and Android behave differently (delivery, rendering, permission rates). Segment by platform and tune copy + timing separately.
  • Protect recent purchasers: Suppress promo pushes for X days after Order Completed unless it’s order-related (shipping, replenishment, how-to-use).
  • Instrument “notification opened” and “deep link landed”: Click/open is not the same as landing on the right screen. Track the deep link destination event so you can optimize the actual flow.

Common Mistakes to Avoid

Most push programs don’t fail because of copy. They fail because the underlying tracking makes targeting unreliable, and then teams compensate by blasting more.

  • Prompting for permission on first launch: You’ll tank opt-in rates and permanently reduce your reachable audience.
  • Not calling identify (or calling it inconsistently): Devices stay tied to anonymous profiles, and your “known customer” segments miss huge chunks of your audience.
  • Duplicate profiles from mismatched IDs: If web uses email as ID and app uses an internal user ID, you’ll fragment behavior and send conflicting messages.
  • Building journeys before validating events: Teams ship flows that trigger for 20% of users because one event property is missing in production.
  • No exit conditions: The customer buys, and you still send the cart recovery push. That’s how you train people to ignore you (or opt out).
  • Measuring “sent” instead of delivered/reached: If tokens are stale or opt-in isn’t required in the segment, your reporting will look fine while revenue impact is flat.

Summary

Push in Customer.io pays off when your SDK implementation is clean: devices register reliably, users are identified consistently, and events are stable enough to automate from. If you’re confident in those three things, cart recovery and repeat-purchase automations become straightforward.

Implement Push with Propel

If you’re already on Customer.io, the fastest path is usually: confirm identity stitching, standardize the event schema, then ship 1–2 revenue journeys (cart recovery + replenishment) before expanding. If you want help pressure-testing the tracking plan and the orchestration rules so you don’t end up debugging duplicates and missing devices later, book a strategy call.

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