Summarize this documentation using AI
Overview
Add or update people in Customer.io is the foundation for every revenue-driving lifecycle program in ecommerce, because your segments, personalization, and timing only work when the customer profile is accurate and consistently identified. In practice, this is how you make sure a shopper who browsed, added to cart, and then purchased is treated as one person, not three disconnected records.
A common D2C scenario: a shopper lands from a TikTok ad, browses two product pages, adds a bundle to cart, leaves, then later buys from their laptop after clicking an email. If you do not add or update people correctly, you will keep sending cart recovery after they already purchased, and you will miss the right post-purchase cross-sell window.
Propel helps D2C teams get identity, attributes, and event tracking right the first time so automations actually drive incremental revenue in Customer.io. If you want help pressure-testing your data plan before you build, book a strategy call.
How It Works
Add or update people in Customer.io works by creating a person record (keyed by an identifier like email or a customer ID) and then attaching attributes that you can use for segmentation, personalization, and routing within journeys.
In Customer.io, you typically update people in three moments:
- At capture (email or phone collected): create the person and set core attributes like email, phone, marketing consent, and acquisition source.
- At identity resolution (login or checkout): update the person with a stable customer ID (Shopify customer ID or your internal ID) and merge any anonymous activity where applicable.
- Over time (behavior and commerce changes): update lifecycle attributes like last_order_date, order_count, total_spent, preferred_category, and subscription_status.
The operational goal is simple: every message decision should rely on a small set of trusted attributes, while behavioral intent is captured as events (viewed product, added to cart, started checkout, purchased) that feed journeys.
Step-by-Step Setup
Add or update people in Customer.io setup is easiest when you decide your identity strategy first, then implement profile updates alongside your event tracking.
- Pick a primary identifier for the person record. For most D2C brands, use a stable customer ID (Shopify customer ID or your internal user_id) as the canonical ID, and store email and phone as attributes that can change.
- Define your “minimum viable profile.” Start with attributes you will actually use in segmentation and templates, such as: email, phone, consent flags, first_order_date, last_order_date, order_count, total_spent, currency, acquisition_source, and preferred_category.
- Implement create-or-update calls at key touchpoints. Common touchpoints include email capture (popup), account creation, checkout completion, and subscription opt-in. Update the same person each time, do not create new profiles per device.
- Standardize attribute naming and types. Decide snake_case vs camelCase, store timestamps consistently (ISO 8601), keep booleans true/false, and avoid mixing numbers and strings for spend fields.
- Connect ecommerce events to the same identity. Ensure events like Added to Cart and Purchased are sent with the same identifier used for the person. This is what makes cart recovery and post-purchase branching accurate.
- Build 3 core segments to validate data quality. Examples: “Has email but no customer_id,” “Purchased in last 30 days,” and “Added to cart in last 4 hours, no purchase.” If these segments look wrong, fix identity before building more campaigns.
- QA with real orders and edge cases. Test guest checkout, discount codes, subscription orders, refunds, and multi-currency if relevant. Confirm attributes update correctly after each event.
When Should You Use This Feature
Add or update people in Customer.io is most valuable when you need customer-level truth to power segmentation, personalization, and suppression that directly impacts revenue.
- Cart recovery that does not annoy buyers: suppress abandon flows immediately after purchase by relying on last_order_date and a purchase event tied to the same person.
- First purchase conversion programs: route new email captures into product discovery sequences based on preferred_category, quiz results, or viewed_product_type stored as attributes.
- Post-purchase upsell and replenishment: trigger cross-sell based on last_purchased_collection or reorder windows based on last_order_date and product_type.
- Winback and reactivation: identify lapsed customers using order_count and last_order_date, then personalize offers based on AOV tiers or categories.
- VIP and loyalty experiences: maintain total_spent and order_count to unlock early access, bundles, or higher-touch SMS for high LTV cohorts.
Operational Considerations
Add or update people in Customer.io gets messy fast if you do not set rules for identity, data ownership, and orchestration across tools.
- Identity hierarchy: decide what wins when email changes, phone changes, or a customer checks out as a guest. In retention programs we’ve implemented for D2C brands, using a stable customer_id as the anchor reduces duplicate profiles and improves suppression accuracy.
- Attribute governance: keep “decision attributes” limited and reliable. If an attribute is not used in a segment, branch, or template, it is often better left out to avoid confusion.
- Event vs attribute discipline: treat intent as events (Added to Cart), and treat state as attributes (cart_value, last_order_date). This keeps journeys responsive without bloating profiles.
- Tool conflicts: if Shopify, your CDP, and Customer.io can all update the same field (like total_spent), pick one system of record. Otherwise you will see attributes “flip” and segments drift.
- Consent and compliance: store explicit consent flags per channel (email_marketing_consent, sms_marketing_consent) and use them as hard gates in every workflow.
Implementation Checklist
Add or update people in Customer.io implementation goes smoother when you validate identity, attribute design, and QA before building complex journeys.
- Primary identifier chosen (customer_id preferred), with email and phone stored as attributes
- Minimum viable profile defined (consent, lifecycle dates, spend, order_count, acquisition)
- Consistent attribute naming conventions and data types documented
- Create-or-update implemented at email capture, checkout, and post-purchase updates
- Key events tied to the same identity (Viewed Product, Added to Cart, Started Checkout, Purchased)
- Duplicate profile monitoring segment created (email present, missing customer_id)
- Suppression logic confirmed (cart recovery stops after purchase)
- QA completed for guest checkout, returns, and multi-device behavior
Expert Implementation Tips
Add or update people in Customer.io becomes a revenue lever when you design profiles around the decisions you want to automate.
- Build for suppression first. Before you optimize subject lines, make sure purchase updates land instantly so you can suppress cart and browse nudges after checkout. This alone usually reduces unsubscribes and improves deliverability.
- Use “tier” attributes for speed. In retention programs we’ve implemented for D2C brands, storing derived tiers like aov_tier, ltv_tier, and product_affinity (top category) makes segmentation faster and more stable than recalculating everything in segments.
- Separate acquisition source from last touch. Keep first_touch_source and last_touch_source as different attributes. This helps you evaluate whether paid acquisition cohorts repeat differently and tailor replenishment or winback pressure.
- Keep timestamps normalized. A single inconsistent timestamp format can break “purchased in last X days” segments, which then cascades into wrong sends.
Common Mistakes to Avoid
Add or update people in Customer.io often fails in execution because identity and data rules are unclear across the stack.
- Creating a new person for every device or session: this inflates audience counts and causes duplicate messages, especially in cart recovery.
- Using email as the only identifier: email can change, and guest checkout can create gaps. Anchor to a stable customer ID when possible.
- Overloading profiles with unused attributes: teams add dozens of fields “just in case,” then no one trusts the data. Keep it tight and decision-driven.
- Updating spend and order_count inconsistently: if order_count lags behind purchase events, VIP and winback segments will misfire.
- Not storing channel consent as explicit booleans: relying on “has phone number” as a proxy for SMS consent leads to compliance risk and higher opt-outs.
Summary
Add or update people is the workhorse behind accurate segmentation, suppression, and personalization that drives first and repeat purchases. Use it any time you need journeys to reflect real customer state, not fragmented sessions, inside Customer.io.
Implement with Propel
If you want Customer.io profiles that stay clean as you scale channels and campaigns, Propel can design your identity and attribute plan and implement it end to end. book a strategy call.