Summarize this documentation using AI
Overview
If you’re using Customer.io for retention, “Screen” data is one of the fastest ways to make your triggers feel timely—browse abandonment, product discovery follow-ups, and even reactivation based on returning intent. If you want a second set of eyes on your tracking plan before you ship it, you can book a strategy call and we’ll pressure-test the data model against the campaigns you actually want to run.
In practice, Screen events are only useful when they enter Customer.io consistently, resolve to the right person, and carry the properties you’ll later rely on for segmentation (URL, product handle, collection, referrer, etc.). Most “my cart flow is flaky” problems start here—not in the workflow.
How It Works
Think of Screen as the behavioral backbone for on-site and in-app intent. A Screen event is emitted when someone views a page (web) or a screen (mobile), and Customer.io stores it as an activity you can segment on and trigger campaigns from.
- Data enters Customer.io as an event. Your implementation sends a Screen call (often via a Customer.io SDK or via a pipeline source) with a name and a set of properties (like
url,path,title,referrer,utm_*). - Identity resolution determines whether it’s actionable. If the viewer is anonymous, the Screen activity can still be recorded, but it won’t reliably drive retention until you merge it into an identified profile (typically after email/SMS capture, checkout, or login). If you don’t merge anonymous activity, you’ll see “traffic” but your cart/browse triggers won’t hit the people you care about.
- Event/property mapping is what makes segments stable. Your future segments will hinge on “Viewed Product X” or “Visited Collection Y.” That only works if you standardize properties like
product_id,sku,handle, or at minimum a normalizedurl/path. If properties drift by platform (web vs iOS) or by theme changes, your segments silently decay. - Trigger reliability depends on deduping and naming. If every micro-navigation fires a Screen event (query string changes, hash changes, SPA route jitter), you’ll flood Customer.io with noise and your “browse abandonment” logic will misfire. You want high-signal Screen events, not every repaint.
Real D2C scenario: A shopper lands on a paid ad, views a PDP for a best-seller, then bounces. If your Screen event includes page_type=PDP and product_id, you can trigger a browse abandonment journey only when they viewed a PDP but didn’t add to cart within 30–60 minutes. If Screen only sends a raw URL (and your URLs include variant/query chaos), the segment becomes brittle and the journey either over-sends or misses people.
Step-by-Step Setup
The goal is simple: send Screen events with consistent naming and properties, and make sure anonymous viewers become identified profiles fast enough to use the intent for recovery and repeat purchase programs.
- Define your Screen taxonomy before you instrument.
Decide what you’ll treat as a “screen” worth tracking: Home, Collection/Category, PDP, Cart, Checkout, Account, Order Confirmation. Avoid tracking every CMS page unless you have a retention use case for it. - Standardize a minimum property set.
At a minimum, send:page_type,url,path,title,referrer, andutm_source/utm_campaignwhen present. For commerce pages, add:product_id(or handle),collection_id(or handle), and optionallyvariant_id. - Implement Screen sending in your source of truth.
Use your web/app instrumentation layer (Customer.io SDKs, tag manager, or your data pipeline) to emit Screen on route change/page load. For SPAs, ensure you trigger on meaningful route transitions, not on every state change. - Handle anonymous users intentionally.
Make sure your implementation supports anonymous activity and that you later identify the person (email capture, login, checkout) so Customer.io can merge earlier Screen events into the known profile. If you skip this, your best intent signals stay stranded on anonymous profiles. - Normalize URLs to prevent segment drift.
Strip or standardize query parameters that don’t matter (likefbclid,gclidif you’re not using them for segmentation), and store important ones explicitly (UTMs) so you’re not parsing URLs in segments later. - Validate in Customer.io activity logs.
Pick a test user, browse key pages, and confirm Screen events arrive with the properties you expect. Then confirm the same events show up after identification (i.e., the activity is associated with the identified profile, not stuck on an anonymous one).
When Should You Use This Feature
Screen tracking is worth the effort when you need intent signals earlier than “Added to Cart” or “Purchased.” It’s also the fastest way to improve segmentation accuracy for browse-based journeys, especially when conversion volume is uneven.
- Browse abandonment that doesn’t rely on cart. Trigger when someone views 2+ PDPs or returns to the same PDP, but doesn’t add to cart.
- Product discovery follow-ups. If someone repeatedly visits a collection (e.g., “Sensitive Skin”), you can follow up with education and best-sellers from that collection—but only if collection identity is mapped cleanly.
- Cart recovery guardrails. Screen events like
page_type=Cartorpage_type=Checkouthelp you suppress “browse” nudges and prioritize cart/checkout recovery sequences. - Reactivation based on renewed intent. A lapsed customer who starts viewing PDPs again is a very different reactivation target than someone who’s just opening emails.
Operational Considerations
Screen data is deceptively easy to ship and painfully easy to corrupt. The operational win is keeping segments stable over time and ensuring triggers fire on the right people, not on noisy navigation artifacts.
- Segmentation depends on stable identifiers. URLs change with theme updates, localization, and merchandising. In most retention programs, we’ve seen PDP-based segments break the moment a brand changes URL structure. Prefer sending
product_id/handleandpage_typerather than relying on string-matching URLs. - Identity resolution is the difference between “analytics” and “retention.” If you’re collecting email/SMS after the browse session (popup, post-purchase, account creation), make sure you merge anonymous activity into the identified profile. Otherwise, your “viewed PDP then abandoned” triggers won’t match the person you’re emailing.
- Event volume can quietly hurt orchestration. Over-instrumented Screen events can inflate activity, slow down troubleshooting, and create false positives in “within the last X minutes” conditions. Track fewer screens with higher intent.
- Cross-device reality. If someone browses on mobile Safari and buys on desktop, Screen events won’t connect unless your identity strategy does. Capture identifiers early (email/SMS) and pass them consistently.
- Orchestration with other events. Screen is best paired with commerce events (Add to Cart, Checkout Started, Purchased). Use Screen for intent and commerce events for confirmation, with clear precedence rules (e.g., Purchase exits everything).
Implementation Checklist
Before you build journeys on top of Screen, lock the fundamentals so your segments don’t rot and your triggers don’t become guesswork.
- Defined a Screen taxonomy: Home, Collection, PDP, Cart, Checkout, Account, Order Confirmation
- Standardized properties:
page_type,url,path,referrer,title,utm_* - Added commerce identifiers where relevant:
product_id/handle,collection_id/handle,variant_id - Implemented URL normalization (or stored UTMs separately)
- Confirmed anonymous Screen activity is merged after identify/login/checkout
- Validated event arrival and properties in Customer.io activity logs
- Created at least one “golden segment” to test stability (e.g., Viewed PDP in last 1 day with product_id present)
Expert Implementation Tips
Once the basics are in place, small operator choices make Screen data dramatically more usable for retention—especially when you’re trying to keep cart recovery and browse flows clean.
- Send
page_typeas a first-class property. It’s the simplest way to build reliable segments without brittle URL rules. - Record “content identity,” not just location. For PDPs, always include a product identifier. For collections, include the collection handle. URLs are presentation; identifiers are truth.
- Throttle SPA route changes. In practice, this tends to break when teams fire Screen on every route event and the app triggers multiple route events per view. Debounce and only send when the canonical path changes.
- Use Screen to suppress, not just trigger. Example: if someone hits
page_type=Checkout, suppress browse nudges for 24 hours and let checkout/cart recovery take priority. - Build “intent tiers.” A single PDP view is weak intent; 3 PDP views + return to the same PDP is strong. Use counts over time windows, but only after you’ve controlled event noise.
Common Mistakes to Avoid
Most issues show up later as “why did this person get the wrong message?” The root cause is usually messy Screen data or identity gaps.
- Relying on raw URL contains rules for segmentation. Theme changes, localization, and query params will break your segments. Store identifiers and
page_typeinstead. - Not merging anonymous activity. You end up triggering on known users with no browse context, while anonymous profiles hold the intent.
- Over-tracking low-signal pages. Tracking every blog page floods activity and makes “viewed in last 30 minutes” conditions meaningless.
- Inconsistent property names across platforms. Web sends
productId, mobile sendsproduct_id. Your segments match half the audience and you don’t notice until performance drops. - No precedence rules between Screen and commerce events. Without clear exits/suppressions, someone can view checkout and still get a browse abandonment message.
Summary
Screen tracking is only as valuable as its identity resolution and property consistency. If you standardize page_type plus stable commerce identifiers and merge anonymous activity, your browse and cart-adjacent triggers become predictable. If you don’t, you’ll spend your time debugging “random” journey behavior that’s actually data drift.
Implement Screen Spec with Propel
If you’re rolling out Screen tracking (or cleaning up an existing mess), it helps to treat it like a retention data spec—not an analytics nice-to-have. We’ll map the exact Screen properties you need for cart recovery, browse abandonment, and reactivation segments inside Customer.io, then sanity-check identity and merge behavior so your triggers hold up in production. If that would save you a few cycles, book a strategy call and we’ll walk through your current instrumentation and where it’s likely to break.