Page Rules in Customer.io (SDK): Track the right screens and pages so retention automations don’t misfire

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 using Customer.io to run retention flows, Page Rules are one of those “quiet infrastructure” settings that determine whether your triggers are clean or chaotic. If your browse, PDP, and cart signals are coming in messy (different URLs, query params, inconsistent screen names), your cart recovery and product discovery journeys will leak—people won’t qualify when they should, or they’ll qualify repeatedly when they shouldn’t.

In most retention programs, we’ve seen teams lose weeks debugging “why didn’t this user enter the flow?” when the real issue was page/screen tracking that didn’t normalize. If you want a second set of eyes on your event taxonomy and identity stitching, book a strategy call and we’ll map the minimum viable tracking needed for reliable repeat purchase and reactivation.

How It Works

Page Rules sit between what your app/site sends and how Customer.io interprets “page visited” (web) or “screen viewed” (mobile) activity. The goal is simple: normalize noisy location data into consistent values you can segment and trigger on.

  • Web: your site (or web SDK) sends a page view with a URL. Page Rules help you treat multiple URL variants as the same “page” (for example, stripping UTM parameters or collapsing /products/sku?variant=123 into a stable product identifier).
  • Mobile: your mobile SDK sends screen view events (often with a screen name). Page Rules help you standardize naming so “ProductDetail”, “PDP”, and “product_detail” don’t become three different segments.
  • Retention impact: once pages/screens are normalized, your segments and campaign triggers stop depending on brittle strings. That’s what keeps cart recovery and browse-to-buy flows from breaking every time someone ships a routing change.
  • Identity stitching dependency: Page Rules don’t fix identity by themselves. They work best when anonymous activity is later merged into a known profile via an identify call so “viewed PDP → added to cart → purchased” all lands on one person.

Step-by-Step Setup

The cleanest way to implement Page Rules is to start from your retention use cases (cart recovery, browse abandon, replenishment) and then back into the page/screen signals those flows need. You’re not trying to track everything—you’re trying to track the few navigation moments that reliably predict purchase.

  1. Install the right Customer.io SDK for your surface area
    • Web: install Customer.io’s web tracking (or your existing tracking layer that forwards to Customer.io).
    • Mobile: install the iOS/Android/React Native/Flutter SDK you’re shipping with.
    • Make sure you’re sending page/screen events in a consistent format across platforms (same naming conventions, same key properties).
  2. Implement identity correctly (so anonymous browsing isn’t wasted)
    • Call identify(userId, attributes) immediately after login/account creation.
    • If you support guest checkout or email capture, identify as soon as you have a stable identifier (email or internal customer ID)—not after purchase.
    • Confirm anonymous activity merges into the identified profile (this is where browse abandon either works… or silently fails).
  3. Send screen/page activity with stable semantics
    • Web: send a page view event with url and (ideally) a normalized page_type like home, collection, pdp, cart, checkout.
    • Mobile: send a screen view event with screen_name and the same page_type convention.
    • For PDPs and collections, include stable commerce keys: product_id, variant_id, collection_id, price, currency.
  4. Configure Page Rules to normalize what’s noisy
    • Strip query parameters that shouldn’t create “new pages” (UTMs, click IDs, email params).
    • Collapse dynamic paths into patterns you can segment on (e.g., treat /products/* as PDP, /collections/* as collection).
    • Standardize casing and naming so mobile/web match (avoid “Cart” vs “cart”).
  5. Validate in Activity Logs before building automations
    • Pick 2–3 test users and run through: view PDP → add to cart → start checkout → purchase.
    • Confirm the same user profile shows the full sequence (identity stitching check).
    • Confirm pages/screens roll up the way you expect (normalization check).

When Should You Use This Feature

Page Rules matter anytime you’re using navigation behavior as an entry condition, filter, or suppression rule. If you’re triggering off “visited cart” or “viewed product,” this is the difference between a dependable flow and a flaky one.

  • Cart recovery that doesn’t spam: normalize cart and checkout URLs/screens so one session doesn’t generate multiple “cart visits” because of query params or step changes.
  • Browse abandon / product discovery: standardize PDP and collection tracking so you can reliably say “viewed 2+ PDPs in 24 hours and didn’t purchase.”
  • Reactivation based on intent: trigger when a lapsed customer returns to high-intent pages (PDP/cart) rather than any random home page visit.
  • Cross-platform consistency: if you have both app and web, Page Rules (plus consistent page_type) prevents you from building two separate retention systems.

Operational Considerations

In practice, Page Rules tend to break when teams treat them as a one-time setup. Route changes, new checkout providers, and A/B tests all introduce new URLs/screen names that quietly fragment your segments.

  • Segmentation stability: build segments on normalized fields (like page_type and IDs) instead of raw URLs whenever possible.
  • Data flow ownership: decide who owns changes—engineering ships routes, but retention owns the consequences. Put a lightweight review step in place for new screens/pages that affect lifecycle triggers.
  • Orchestration realities: suppression rules (like “don’t send cart recovery if checkout started”) depend on clean page/screen signals. If checkout steps vary by device or payment method, normalize them into a single “checkout_started” concept.
  • Identity stitching: if you identify too late (post-purchase), your browse/cart flows will underperform because the high-intent behavior lives on anonymous profiles.

Implementation Checklist

Before you rely on page/screen behavior for revenue-critical flows, run this checklist. It’s the difference between “it works in QA” and “it works at scale.”

  • SDK installed and sending page/screen activity consistently (web + app if applicable)
  • identify() called immediately after login/email capture; anonymous activity merges correctly
  • Normalized page_type (home/collection/pdp/cart/checkout) sent with each view
  • UTM/query parameters stripped or ignored for segmentation purposes
  • Dynamic routes mapped to stable patterns (e.g., /products/* → pdp)
  • PDP/collection events include stable IDs (product_id, variant_id, collection_id)
  • Activity Logs confirm a full funnel sequence lands on a single profile

Expert Implementation Tips

When teams get Page Rules right, they stop building brittle campaigns and start building reusable building blocks (segments, suppressions, triggers) that survive site changes.

  • Prefer IDs over strings: trigger on product_id and page_type rather than parsing URLs in segmentation logic.
  • Create one “high intent view” event: for app, consider sending a dedicated event like Viewed PDP with product_id instead of relying only on screen names. Keep Page Rules for cleanup, not core semantics.
  • Design for suppression first: cart recovery performance often improves more from correct suppression (exclude purchasers/checkout starters) than from better creative. That suppression needs clean page/screen tracking.
  • Monitor drift: set a monthly check where you compare top visited URLs/screens to your normalized set. New routes tend to appear quietly after experiments.

Common Mistakes to Avoid

Most “Customer.io is missing users” issues aren’t missing users—they’re mismatched identifiers or fragmented page/screen data.

  • Identifying after purchase: you lose the entire pre-purchase journey for cart/browse triggers.
  • Using raw URLs in segments: UTMs, referral params, and A/B test query strings explode your segment logic.
  • Inconsistent naming across platforms: “pdp” on web and “ProductDetail” on app forces duplicate campaigns and inconsistent measurement.
  • No stable commerce IDs: without product_id/variant_id, you can’t do credible product-based follow-ups (back-in-stock alternatives, replenishment, cross-sell).
  • Forgetting checkout providers change URLs: Shopify/Recharge/custom checkouts often introduce new paths—your “checkout_started” logic silently stops working.

Summary

If you trigger retention off browsing behavior, Page Rules are part of your revenue infrastructure—not a nice-to-have. Normalize pages/screens, stitch identity early, and your cart recovery + reactivation flows will qualify the right people at the right time.

Implement Target In App Messages with Propel

Once your app-side tracking is clean, in-app messages become a reliable lever—especially for cart recovery nudges and post-purchase cross-sells where email/SMS timing is hit-or-miss. If you’re already running Customer.io, we can help you tighten SDK event semantics, identity stitching, and page/screen normalization so in-app targeting doesn’t devolve into guesswork. If that’s useful, book a strategy call and we’ll pressure-test your tracking plan against the retention flows you actually want to run.

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