Screen tracking (SDK) in Customer.io: capture screen views you can actually use for 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 serious about app retention, you need reliable screen-level intent signals—not just purchases and add-to-carts. Customer.io screen tracking (via the mobile/web SDKs) gives you a clean stream of screen views you can segment on and trigger from, and if you want a second set of eyes on the tracking plan before you ship it, you can book a strategy call.

In most retention programs, screen events become the difference between “generic winback” and messaging that feels like it’s responding to what the customer just did—like viewing the cart, bouncing on shipping, or looping product detail pages without buying.

How It Works

Screen tracking is just event tracking with a consistent schema. The SDK sends a “screen view” style event every time a user lands on a screen (e.g., ProductDetail, Cart, CheckoutShipping). Customer.io stores those events on the person profile (or an anonymous profile), and you then use them to build segments and trigger campaigns.

  • Event creation: Your app fires a screen event when a view is presented (mobile) or when a route changes (web SPA). Name the event consistently (e.g., screen_view) and pass the screen name as a property (e.g., name or screen_name).
  • Identity stitching: If someone browses anonymously and later logs in (or you capture email/phone), you call identify. That’s what ties pre-login screen history to the known customer profile so your cart recovery/reactivation logic doesn’t lose context.
  • Segmentation + orchestration: You build segments like “Viewed Cart in last 2 hours AND no Order Placed” or “Viewed ProductDetail 3+ times in 7 days AND never purchased,” then trigger push/email/in-app from those audiences.

Step-by-Step Setup

The setup is straightforward, but the operational win comes from being disciplined about naming and identity. Treat screen tracking like instrumentation—not analytics garnish—because you’ll base real revenue flows on it.

  1. Install the correct Customer.io SDK for your app.
    Use the native SDK (iOS/Android) or your wrapper (React Native/Flutter/Expo) so screen events originate client-side and include device context.
  2. Initialize the SDK as early as possible in app launch.
    Do it before you render your first screen so you don’t miss the first meaningful view (often Home, PDP, or Cart).
  3. Decide your screen event schema.
    Pick one event name and stick to it (common pattern: screen_view). Standardize properties:
    • screen_name (required)
    • category (optional: browse, checkout, account)
    • product_id, variant_id (only on PDP)
    • cart_value, items_count (only on Cart)
  4. Implement screen tracking in your navigation layer.
    Fire the event on:
    • iOS: when a view controller appears
    • Android: on activity/fragment resume
    • React Native / Flutter: on route change (central observer)
    • Web SPA: on router transitions
  5. Implement identify at the moment you truly know the user.
    Call identify after login, account creation, or when you collect email/phone at checkout. Pass stable identifiers (email, customer_id) and key attributes (first_order_date, loyalty_tier, etc.). This is where anonymous browsing becomes usable retention context.
  6. Validate in Customer.io Activity Logs.
    Confirm:
    • Events arrive with the expected screen_name
    • Anonymous events merge into the identified profile after identify
    • No duplicate spam (common when tracking fires on both render + focus)
  7. Build one retention segment and one trigger to prove the pipe.
    Example: “Viewed Cart in last 60 minutes AND no Purchase event in last 60 minutes” → trigger a push reminder.

When Should You Use This Feature

Screen tracking matters when user intent shows up in navigation patterns before it shows up in conversion events. If you’re only tracking “add_to_cart” and “purchase,” you’re blind to the moments where people hesitate—and that’s where retention revenue lives.

  • Cart recovery in-app behavior: Trigger when someone hits Cart or CheckoutShipping and drops. This tends to outperform generic abandon flows because it’s tied to the exact step they stalled on.
  • Product discovery → repeat purchase: If a customer repeatedly views a replenishable SKU’s PDP (e.g., supplements, skincare) but doesn’t buy, that’s a strong “almost ready” signal for a replenishment nudge.
  • Reactivation based on category interest: “Viewed Running category screens 3+ times in 14 days AND no purchase in 60 days” → send a targeted comeback offer or new arrivals push.
  • On-site/app personalization support: Use last viewed screen/category to tailor in-app messages or follow-up email content blocks.

Operational Considerations

In practice, screen tracking breaks less from code and more from messy data and unclear ownership. You want screen events that are stable enough to segment on, and you want identity rules that keep profiles from fragmenting.

  • Segmentation hygiene: Treat screen names like a contract. If your team renames ProductDetail to PDP mid-sprint, your segments silently stop matching.
  • Data flow latency: Mobile events can arrive late when devices are offline. For “within 15 minutes” recovery triggers, build in a buffer and don’t assume real-time perfection.
  • Orchestration with other signals: Screen views are intent; purchases are truth. Always pair “viewed checkout” with “no purchase” and often with “has push enabled” / “email subscribed” to avoid dead-end sends.
  • Identity stitching realities: If you don’t call identify consistently (login, checkout, email capture), you’ll end up messaging the wrong profile or missing the person entirely. Decide where identity is set and enforce it.
  • Event volume + cost: Screen events can be high volume. Track only meaningful screens (PDP, Cart, Checkout steps, Category, Search) rather than every modal and settings page.

Implementation Checklist

Before you call screen tracking “done,” you want confidence that it’s usable for segmentation and not going to drift as the app evolves.

  • SDK installed and initialized early in app lifecycle
  • One standardized event name for screen views (e.g., screen_view)
  • Canonical screen_name list documented and shared with product/engineering
  • identify called reliably on login/signup/checkout identity capture
  • Anonymous-to-known merge verified in Activity Logs
  • Duplicate firing prevented (no double events per screen impression)
  • At least one segment and one campaign trigger running off screen events
  • QA plan for future releases (new screens, renamed routes)

Expert Implementation Tips

Most teams get better results when they treat screens as “funnels” rather than “pages.” The goal isn’t to collect more events—it’s to detect hesitation and intent early enough to intervene.

  • Track checkout steps separately. Split CheckoutShipping, CheckoutPayment, CheckoutReview. Then your recovery message can address the real blocker (shipping surprise vs payment failure vs decision anxiety).
  • Add lightweight context properties. For Cart: cart_value, items_count. For PDP: product_id, price, category. These make segments sharper without needing a full catalog sync.
  • Use frequency as intent. “Viewed PDP 3+ times in 72 hours” is often a better trigger than “Viewed PDP once.” Single views are noisy; repeats are intent.
  • Put identity calls where users actually authenticate. If you only identify on account creation but most customers buy as guest, your screen history won’t connect to purchase behavior.

Common Mistakes to Avoid

These are the issues that quietly kill performance: segments don’t match, campaigns misfire, and nobody trusts the data enough to build on it.

  • Tracking every screen including noise. Settings screens and tiny modals inflate volume and make segments harder to reason about.
  • Inconsistent naming. Mixing Cart, cart, and ShoppingCart forces you into brittle “OR” conditions and breaks reporting.
  • Double-firing events. Common on React Native/Flutter when you track on both route change and screen focus. Your “3 views” segment becomes meaningless.
  • Forgetting identity stitching. Without a solid identify strategy, anonymous browsing never becomes actionable for email/SMS, and your recovery programs underperform.
  • Triggering without suppression logic. If you trigger off Cart views but don’t exclude recent purchasers, you’ll annoy customers who already converted on another device.

Summary

If your app retention is mostly “purchase-based,” screen tracking is the fastest way to add intent signals you can actually operationalize. Implement it with a tight schema and reliable identity stitching, then build one cart/checkout recovery flow to prove lift before expanding.

Implement Screen Events with Propel

If you’re rolling out screen tracking across iOS/Android (or a cross-platform stack) and want the events to map cleanly into segments and journeys in Customer.io, it helps to pressure-test the schema and identity plan before it’s baked into the app. If that’s useful, book a strategy call—we’ll sanity-check the event contract, stitching points, and the first few revenue flows (cart recovery, repeat purchase nudges, and reactivation) so the data you ship is data you can monetize.

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