Summarize this documentation using AI
Overview
If you’re using Customer.io for retention, rich push is one of the fastest ways to lift conversion on high-intent moments—cart abandonment, back-in-stock, replenishment, and winback—because the message lands on-device with visual context (image/GIF/video, deep links, and action buttons). If you want help mapping the SDK events to real revenue flows (and avoiding the usual identity + token pitfalls), book a strategy call and we’ll pressure-test your tracking plan.
In most D2C programs, rich push works best when it’s treated like a performance channel: tight audience rules, clean identity stitching, and deterministic event capture from the app—not “spray and pray” notifications.
How It Works
Rich push in Customer.io is only as good as your app-side instrumentation. The SDK’s job is to (1) register the device for push, (2) associate that device with the right person profile, and (3) emit the on-device events that power segmentation and message timing.
- Device registration: Your iOS/Android app obtains a push token (APNs/FCM). The Customer.io SDK (or your integration layer) sends that token to Customer.io so the workspace can target that device.
- Identity stitching: Anonymous sessions are common in D2C apps (browse without login). You typically track anonymously first, then call
identifyat login/checkout so Customer.io merges device + event history into the known customer profile. In practice, this is where most retention programs break—tokens end up attached to the wrong profile or never get merged. - Event-driven orchestration: Your app tracks events like
Product Viewed,Added to Cart,Checkout Started,Order Completed. Customer.io uses those events to trigger campaigns and to qualify segments (e.g., “Added to cart in last 2 hours AND no purchase”). - Rich payload rendering: The push payload includes media URLs and optional actions. The OS renders the rich content (image/GIF/video) and buttons; your app handles deep links so taps land on the right PDP/cart/checkout screen.
Step-by-Step Setup
Before you touch creative, get the SDK plumbing right. Rich push is unforgiving: if tokens aren’t registered, identities aren’t stitched, or deep links aren’t handled, you’ll “send” a lot of pushes that never convert (or never deliver).
- Install the Customer.io Mobile SDK for your platform
Add the iOS/Android (or React Native/Flutter/Expo) SDK per your app stack, and verify the SDK initializes on app launch in all environments (dev/stage/prod). - Enable push permissions and capture the device token
Request notification permission at a meaningful moment (post-purchase, loyalty opt-in, or “track my order”), then ensure APNs/FCM token retrieval works reliably. - Register the token with Customer.io
When the token changes (fresh install, OS refresh), update Customer.io immediately. Token churn is real—treat it like a first-class data flow. - Implement
identifyat the right moments
Callidentifywhen you have a stable customer identifier (email, customer_id). Do it at login and at checkout completion. If you support guest checkout, identify at order confirmation using the email captured. - Track retention-critical events from the app
At minimum:Product Viewed,Added to Cart,Checkout Started,Order Completed. Include properties you’ll actually segment on (SKU, category, price, cart_value, currency, inventory_status). - Set up deep links for push taps and action buttons
Define a consistent scheme (e.g.,myapp://product?sku=,myapp://cart,myapp://checkout) and confirm it works from a cold start. - Send a rich push test end-to-end
Validate: permission granted → token registered → person identified → push delivered → media renders → tap opens correct screen → conversion event tracks.
When Should You Use This Feature
Rich push is best when the visual does the selling and the timing is tight. If the customer needs context to make a decision—what product, what shade, what bundle—rich media outperforms plain text almost every time.
- Cart recovery with product image: A customer adds a serum + moisturizer bundle and drops. Rich push shows the exact bundle image and deep links back to the cart. This tends to lift recovery because the customer doesn’t have to “remember” what they were buying.
- Back-in-stock / low inventory: Rich push with the product hero image and a “Shop now” button. Works especially well for limited drops and sizes/colors.
- Replenishment: For consumables, use last purchased SKU + image and a one-tap “Reorder” deep link. This is where identity stitching matters—if the device is tied to the wrong profile, you’ll recommend the wrong product.
- Reactivation: For lapsed app users, rich push with a best-seller image and a personalized category based on last viewed/purchased. Keep the segment tight to avoid training people to ignore you.
Operational Considerations
Once rich push is live, the work shifts from “can we send it” to “can we target it precisely and measure it cleanly.” Most teams underestimate how much segmentation and data hygiene determines results.
- Segmentation depends on event quality: If
Added to Cartfires twice, or fires without SKU/cart_value, your cart recovery audience will bloat and performance will tank. - Identity stitching is the difference between personalization and spam: Make sure anonymous browsing merges into the known profile after login/checkout. If you can’t rely on merge behavior, default to broader messaging or delay until identity is confirmed.
- Token lifecycle management: Devices rotate tokens. Handle token refresh and app reinstalls; otherwise you’ll see “sent” volumes with declining delivery rates.
- Orchestration across channels: Decide when push should yield to email/SMS. For example: push at +30 minutes post-abandon, email at +4 hours, SMS only for high AOV carts with explicit consent.
- Deep link parity: If the push links to a PDP variant that the app can’t resolve (missing SKU/variant ID), you’ll create drop-off right at the moment of intent.
Implementation Checklist
Use this as a pre-flight before you scale volume. It’s easier to fix tracking when you’re sending 50 pushes/day than when you’re sending 50,000.
- Customer.io SDK installed and initialized on app launch (all environments)
- Push permission prompt strategy defined (where/when) and implemented
- APNs/FCM token captured and reliably registered/updated in Customer.io
identifyimplemented at login + checkout/order confirmation- Core events tracked with usable properties (SKU, category, value, currency)
- Anonymous-to-known merge behavior validated with real devices
- Deep links implemented and tested from cold start for taps + action buttons
- Test rich payload renders correctly (image/GIF/video) across OS versions
- Basic suppression rules in place (purchased already, opted out, frequency caps)
Expert Implementation Tips
These are the small operator moves that usually drive the big lifts—because they keep your audiences clean and your messages landing at the exact moment the customer is still “in market.”
- Track a single “source of truth” cart event: If your app and backend both emit cart events, dedupe with an idempotency key (cart_id + timestamp bucket) so you don’t trigger multiple recoveries.
- Send variant-level identifiers: “Blue / Size M” matters. Include
variant_idand the image URL for that variant so the rich push matches what they chose. - Use an “intent decay” window: For cart abandonment, push works best fast. In many D2C apps, +20 to +60 minutes is the sweet spot; after that, shift to email where you can re-sell the value prop.
- Instrument push engagement events: Track
Push Delivered,Push Opened, and downstreamCheckout Started/Order Completedto separate creative issues from delivery/token issues. - Guardrails for reactivation: Add “last push opened within X days” as a throttle. If they haven’t opened the last 10 pushes, more rich media won’t save it—fix your segment or switch channel.
Common Mistakes to Avoid
Rich push failures usually aren’t about the image. They’re about identity, payload assumptions, and teams shipping without validating the full loop from event → segment → send → open → conversion.
- Identifying too late (or not at all): If you only call
identifyafter purchase, your browse/cart pushes can’t be personalized and you’ll miss the highest-intent window. - Attaching one device to multiple profiles: Shared devices happen (family iPad). Without careful identity rules, you’ll send the wrong product to the wrong person.
- Missing deep link handling from cold start: The push opens the app, but not the right screen—conversion drops and you’ll blame creative.
- Using rich media without caching/fallback: If the image URL is slow or blocked, the notification looks broken. Always have a clean text fallback.
- No suppression on purchase: If
Order Completedis delayed or not tracked, customers get “complete your order” after they already paid. That’s a fast path to opt-outs.
Summary
Rich push is a retention lever when you pair strong creative with clean SDK tracking and identity stitching. If your device tokens, identify calls, and event properties are solid, you can run high-intent flows (cart, back-in-stock, replenishment) that reliably drive repeat revenue.
Implement Rich Push with Propel
If you’re already running retention in Customer.io, the biggest unlock is usually not “sending more pushes”—it’s tightening the app-side tracking so segments and triggers behave predictably at scale. If you want a second set of eyes on your SDK event map, identity stitching rules, and cart/reorder flows, book a strategy call and we’ll walk through what to instrument and what to cut.