Summarize this documentation using AI
Overview
If you want push to reliably drive repeat purchase and cart recovery, getting push certificates right is the non-negotiable foundation. In Customer.io, push service certificates (APNs for iOS, FCM for Android) are what let Customer.io authenticate with Apple/Google and actually deliver notifications to the devices your SDK is registering.
If you’re trying to make push a dependable revenue channel (not a “sometimes it sends” channel), it’s worth tightening this up early. If you want a second set of eyes on your setup and tracking plan, book a strategy call—especially if you’re stitching anonymous browsing → logged-in purchase across app + web.
How It Works
Push delivery is a chain: your app registers a device token, your SDK sends that token to Customer.io, and Customer.io uses your APNs/FCM credentials to send the push to that token. Most retention programs break when one link in that chain is “kind of” configured—usually identity stitching or environment mismatches (sandbox vs production).
- iOS (APNs): Apple issues device tokens per app + environment. Customer.io needs an APNs credential (commonly a token-based key or certificate, depending on your setup) to authenticate and send pushes to those tokens.
- Android (FCM): Firebase issues registration tokens. Customer.io needs your Firebase Cloud Messaging credentials to send to those tokens.
- SDK device registration: Your mobile SDK captures the push token and associates it to a Customer.io person profile. If you don’t identify the user at the right moment, tokens end up attached to anonymous profiles and your “cart recovery push” never finds the shopper who actually has the cart.
- Identity stitching: The operational goal is simple: one person in Customer.io should own the right devices. In practice, that means calling identify consistently (and early enough), and handling logout so you don’t keep sending to the wrong person on a shared device.
Step-by-Step Setup
Before you touch campaigns, get delivery and identity correct. Think of this as “make push deliverable,” then “make push targetable.” Once both are true, you can safely build cart recovery and replenishment flows without guessing who will actually receive them.
- Decide your environments and naming conventions
- Lock in whether you’ll support production only or both sandbox + production for iOS.
- Align app bundle IDs / Firebase projects with your Customer.io workspace(s). If you run multiple brands or apps, keep credentials separated to avoid cross-app token pollution.
- Configure your push credentials in Customer.io
- Add your APNs credential for iOS and your FCM credential for Android in Customer.io’s push channel settings.
- Double-check you’re using the correct credential type and environment (common failure: uploading a dev credential while testing a production build, or vice versa).
- Install the Customer.io Mobile SDK in your app
- Implement the SDK for iOS/Android (or your framework: React Native/Flutter/Expo).
- Enable push handling per platform so the SDK can capture device tokens and handle notification interactions.
- Implement
identifyat the right moment (identity stitching)- Call
identify(userId)immediately after login/account creation, and again after any session restore where you have a stable user identifier. - Pass key attributes you’ll segment on later (e.g.,
email,phone,first_order_date,vip_tier), but keep it tight—don’t dump your whole user object. - On logout, use the SDK’s recommended reset/clear pattern so the next user on the device doesn’t inherit the previous user’s push token association.
- Call
- Track retention-critical events from the app (not just web)
- At minimum:
Product Viewed,Added to Cart,Checkout Started,Order Placed. - Include stable identifiers in event payloads (SKU, product_id, cart_value, currency) so your push can be specific without brittle Liquid hacks.
- At minimum:
- Validate delivery + targeting with real devices
- Use internal test accounts and physical devices (iOS + Android) to confirm tokens register and pushes arrive.
- Confirm that after login, the device shows up on the correct person profile in Customer.io.
When Should You Use This Feature
Push certificates aren’t a “nice to have”—they’re the gate that determines whether push can carry any retention program at all. The best time to set this up is before your first cart recovery or replenishment flow goes live, so you’re not debugging deliverability while revenue is on the line.
- Cart abandonment (app): A shopper adds a skincare bundle in-app, gets distracted, and closes the app. With proper APNs/FCM + correct identify calls, you can trigger a push 30–60 minutes later that references the exact product and returns them to the cart.
- Repeat purchase / replenishment: For consumables (supplements, coffee, pet food), push is often the fastest “tap to reorder” channel—if device tokens are reliably tied to the purchaser profile.
- Reactivation: Win back lapsed buyers with a push that lands on the right device and deep-links into a personalized collection (not your homepage).
- Post-purchase cross-sell: After
Order Placed, trigger a push based on purchased category (e.g., “care + accessories”)—but only if your event payloads are clean and consistent.
Operational Considerations
In practice, push performance isn’t limited by copy—it’s limited by data hygiene and orchestration. If your device graph is messy or your events don’t map cleanly to segments, you’ll under-deliver and over-message at the same time.
- Segmentation depends on identity stitching: If
Added to Carthappens pre-login, you need a plan to merge/associate that activity once the user identifies. Otherwise, your “cart abandoners” segment will be full of anonymous profiles you can’t reach. - Data flow timing matters: Push triggers that fire immediately after an event will fail silently if the device token hasn’t been registered yet (fresh installs, permission prompts not accepted). Build safeguards like “has_push_token = true”.
- Orchestration across channels: Coordinate push with email/SMS so you don’t stack messages. A common pattern is: push first (fast), email second (detail), SMS last (high intent only).
- Environment drift: iOS sandbox vs production mismatches are a classic culprit. If QA tests in TestFlight (production) but credentials are sandbox, you’ll chase ghosts.
- Deep linking: Push that drives revenue usually deep-links to cart, PDP, or reorder—not the app home screen. Make sure your app can route based on payload parameters.
Implementation Checklist
If you want push to be a dependable retention lever, treat this like a launch checklist—one miss here shows up later as “push doesn’t work” when it’s really “push can’t target.”
- APNs credentials added for the correct iOS app + environment
- FCM credentials added for the correct Firebase project
- Customer.io SDK installed and initialized in the app
- Push permission prompt strategy defined (timing + UX)
identify(userId)implemented after login/signup and on session restore- Logout/reset behavior implemented to prevent wrong-user targeting
- Core commerce events tracked with consistent naming and payloads
- Device token presence captured and usable for segmentation
- Real-device QA: token registration, delivery, click handling, deep links
Expert Implementation Tips
Once you’ve done the “basic” setup, these are the moves that keep push stable as your program scales—more campaigns, more segments, more edge cases.
- Gate push entry with a token check: Add a condition like “has a push token” before a push step. If not, fall back to email or delay until the token exists.
- Standardize event names early: Pick one taxonomy (
Added to Cartvsadd_to_cart) and enforce it. Retention teams lose weeks to messy event naming that breaks segments and reporting. - Send SKU-level context: Include
product_id,variant_id,price,quantityin events so you can personalize push without brittle lookups. - Handle anonymous-to-known explicitly: If your app supports browsing before login, decide how you’ll merge that activity once the user identifies. This is where cart recovery either prints money or quietly underperforms.
- Instrument notification clicks: Track a “Push Clicked” event (or use the SDK’s built-in tracking) and tie it to downstream purchase. Otherwise you’ll optimize on opens instead of revenue.
Common Mistakes to Avoid
Most push issues aren’t “Customer.io problems”—they’re configuration drift or identity gaps. These are the ones we see derail cart recovery and reactivation the most.
- Uploading the wrong APNs environment: Sandbox credentials with production builds (or the reverse) leads to non-delivery that looks random.
- Delaying identify until checkout: If you only identify at purchase, you can’t reliably target pre-purchase behaviors like product browsing or cart abandonment.
- Not resetting on logout: Shared devices (tablets, family phones) become a compliance and CX risk when pushes go to the wrong person.
- Triggering push without checking token presence: Fresh installs, denied permissions, or token refreshes will tank deliverability unless you gate.
- Assuming web events cover app behavior: If most shopping happens in-app, web pixel events won’t power your push segmentation. Track from the SDK where the behavior occurs.
Summary
Push certificates are the delivery layer; the SDK is the targeting layer. When both are correct—credentials match environments, identify is consistent, and events are clean—push becomes a predictable lever for cart recovery, repeat purchase, and reactivation.
If you’re planning to scale push beyond a couple of blasts, invest in identity and event hygiene now so you’re not rebuilding later.
Implement Push Certificates with Propel
Once your APNs/FCM credentials are in place, the next big unlock is making sure device tokens and identities stitch cleanly across login, logout, and anonymous browsing. In most retention programs, that’s the difference between “we send pushes” and “push consistently drives incremental revenue.”
If you’re working through this in Customer.io and want an operator’s QA pass on your SDK events, identify strategy, and push gating logic, book a strategy call.