Summarize this documentation using AI
Overview
If you’re pushing data out of Customer.io into ad platforms, analytics, or a warehouse, filtering and mapping actions is where you prevent messy payloads from turning into unusable audiences and broken attribution. If you want a second set of eyes on your data-out design (especially when you’re trying to scale retargeting or suppression), you can book a strategy call and we’ll pressure-test the setup like an operator would.
In most retention programs, the goal isn’t “send more data.” It’s “send the right data, consistently,” so downstream tools can actually activate it—audience syncs, suppression lists, value-based bidding, and post-purchase exclusions.
How It Works
When Customer.io sends data out (think: webhooks, integrations, or audience sync destinations), it typically sends an action with a payload. Filtering decides when an action should fire (or which records qualify). Mapping decides what the payload looks like when it leaves Customer.io—field names, structure, and which attributes/events get included.
- Filtering keeps low-signal or risky records out of downstream systems (e.g., exclude refunded orders from “purchasers,” exclude suppressed emails from ad audiences, exclude test users).
- Mapping translates Customer.io data into the schema your destination expects (e.g.,
email,phone,external_id,event_name,value,currency,items). - Operator reality: mapping is where things quietly break—one renamed attribute, one null value, one nested JSON mismatch—and suddenly your “VIP purchasers” audience starts shrinking for no obvious reason.
D2C scenario: You run a cart abandonment program and also retarget abandoners on Meta. If your “Added to Cart” event sends out without filtering, you’ll keep retargeting people who already purchased (wasted spend) or people who opted out (compliance risk). If your mapping doesn’t include product_id or variant, you can’t build product-level audiences or exclusions—so your ads get generic and your recovery rate drops.
Step-by-Step Setup
Before you touch filters or mappings, get clear on the destination’s requirements and what your retention motion needs downstream. You’re not building a perfect data model—you’re building a reliable activation feed that won’t fall apart during a promo week.
- Pick the “data out” destination and the activation goal.
Examples: “Sync high-intent abandoners to Meta,” “Send purchase events to a warehouse,” “Send suppression updates to an ad platform.” - Define the action you want to send.
Usually this is tied to an event (e.g.,checkout_started,order_completed) or a segment transition (e.g., “entered segment: Likely to churn”). - Add filters to protect downstream quality.
Common filters operators use:- Exclude customers with
unsubscribed = trueor suppressed status. - Exclude orders with
financial_status != paid(or include only paid/captured). - Exclude
is_test_user = trueand internal domains. - For abandoners: exclude anyone with a purchase in the last X hours/days.
- Exclude customers with
- Map fields to the destination schema.
Start with the minimum viable payload that activates correctly, then expand.- Identity:
emailand/orphone(hashed if required), plus a stablecustomer_id. - Event context:
event_name,timestamp,source. - Commerce context:
value,currency,items,product_ids.
- Identity:
- Handle nulls and type consistency.
Decide what happens when fields are missing (drop the record vs. send defaults). Type mismatches (string vs number, array vs string) are a top cause of silent failures. - Test with real edge cases.
Validate at least: a first-time buyer, a repeat buyer, a refunded order, an unsubscribed user, and a customer with multiple items in cart. - Monitor downstream acceptance.
Don’t stop at “Customer.io sent it.” Confirm the destination ingested it, matched identities, and the audience/event volume looks right.
When Should You Use This Feature
Filtering and mapping actions matters anytime you’re using Customer.io as the “decision layer” for what gets activated elsewhere. If you’re serious about retention, this is how you turn lifecycle signals into paid amplification and clean measurement.
- Cart recovery amplification: Send “high-intent abandoners” to Meta/TikTok while excluding recent purchasers and low-quality sessions.
- Post-purchase suppression: Push “purchased in last 7 days” to ad platforms to stop showing acquisition ads to people who just converted.
- Reactivation audiences: Sync “lapsed 60+ days” but filter out customers with open support tickets or recent refunds to avoid bad experiences.
- Value-based retention: Map LTV or predicted value fields so ad platforms can optimize bids toward repeat-prone customers (when your destination supports it).
- Warehouse/analytics hygiene: Send normalized events so your BI layer can trust revenue and cohort reporting (especially across Shopify + subscriptions).
Operational Considerations
This is where the work becomes less about configuration and more about keeping the system stable as your store, catalog, and promos evolve.
- Segmentation discipline: Treat segments used for audience sync as production assets. Lock naming conventions, document definitions, and avoid “quick edits” during campaigns.
- Data flow latency: Ad platforms don’t update instantly. Build buffers into your logic (e.g., suppress purchasers for 24–48 hours) so you don’t retarget someone who bought five minutes ago.
- Orchestration across channels: If email/SMS is trying to recover carts while ads are also retargeting, align filters so both systems agree on who is eligible (otherwise you’ll double-tap people and spike opt-outs).
- Identity matching: Your mapping is only as good as your identifiers. If emails are missing (Shop Pay, Apple Hide My Email, SMS-only buyers), plan for phone-based matching or a fallback ID strategy.
- Schema versioning: In practice, this tends to break when someone changes event properties upstream. Keep a lightweight “schema contract” for core events like
order_completedandcheckout_started.
Implementation Checklist
If you want this to work beyond the first week, treat it like a small data product: clear inputs, clear outputs, and monitoring.
- Destination requirements documented (required fields, hashing rules, rate limits)
- Action defined (event/segment trigger) and named consistently
- Filters added for compliance (opt-out/suppression) and spend control (recent purchasers)
- Mapping includes stable identifiers and the minimum activation fields
- Null/type handling decided (drop vs default) for each mapped field
- Test cases validated (first-time buyer, repeat buyer, refund, multi-item cart, unsubscribed)
- Downstream ingestion confirmed (audience size, match rate, event acceptance)
- Ongoing monitoring plan (weekly volume checks + alerting for sudden drops)
Expert Implementation Tips
The difference between “it’s set up” and “it drives LTV” is whether your mappings stay stable and your filters reflect real business rules.
- Build “intent tiers” for abandoners. Filter and map tiers like
cart_value > $75,returning_customer, orviewed_same_product_2x. Then sync separate audiences so paid can bid harder on the best prospects. - Use exclusions aggressively. For D2C, the fastest paid efficiency win is usually suppression: recent purchasers, subscription actives, refund-heavy cohorts, and customer service escalations.
- Normalize item arrays. If your destination struggles with nested
items, map a flattenedproduct_idslist and aprimary_product_idfor targeting and reporting. - Send “reason codes.” Map a field like
audience_reason(e.g.,lapsed_60,high_intent_abandon) so downstream teams can QA and build campaigns without guessing.
Common Mistakes to Avoid
Most teams don’t fail because they picked the wrong tool—they fail because small data decisions compound into bad audiences and confusing performance.
- Syncing audiences without purchaser suppression. You’ll pay to reacquire customers who already converted, and your blended CAC will look worse than it is.
- Mapping unstable identifiers. If you map an ID that changes (session ID, temporary anonymous ID), match rates crater and audiences churn.
- Letting nulls through on required fields. Many destinations silently drop records; you think you’re syncing 10k users and you’re really syncing 3k.
- Over-sending events. Sending every browse event to downstream tools creates noise, costs, and throttling. Filter to the signals that actually correlate with repeat purchase.
- No monitoring. The first sign of breakage is usually “why did retargeting revenue fall off?”—by then you’ve already lost a week.
Summary
If you’re using Customer.io to activate audiences or events in external platforms, filtering keeps the feed clean and mapping makes it usable.
Prioritize purchaser suppression, stable identifiers, and schema consistency—those three decisions usually drive the biggest downstream lift in efficiency and repeat revenue.
Implement Action Mapping with Propel
If you’re already running Customer.io, the fastest way to improve data-out performance is to treat your audience syncs and outbound events like retention infrastructure—not one-off integrations. If you want help designing filters/mappings that hold up through promos, subscriptions, and catalog changes, book a strategy call and we’ll map the activation plan end-to-end (what to send, what to suppress, and how to QA it).