Summarize this documentation using AI
Overview
Objects adoption in Customer.io is a practical way to message customers based on how they engage with non-person data like products, collections, subscriptions, or loyalty memberships, instead of relying only on person attributes. For D2C teams, this becomes a clean system for nudging product discovery, cart recovery, and repeat purchase by tying messaging to the exact item, category, or program a shopper is interacting with. Propel helps brands map their commerce data into Objects so campaigns stay personalized even as your catalog and customer behavior change. If you want help designing the data model and the journeys that monetize it, book a strategy call with our team that implements Customer.io.
How It Works
Objects adoption in Customer.io works by storing your “things” (like a product SKU, a collection, or a subscription plan) as Objects, relating them to a person, and then using those relationships to personalize and target messages.
In practice, you create an Object type (for example, Product), keep it updated as your catalog changes, and create relationships like “Viewed,” “Added to Cart,” “Purchased,” or “Subscribed.” Once those relationships exist, you can segment and trigger journeys based on Object properties (price, category, margin tier, inventory status) and relationship timing (viewed in last 2 hours, purchased 45 days ago, etc.). This is especially useful when you want to avoid stuffing huge JSON blobs onto the person profile and instead keep commerce data structured and queryable in Customer.io.
Realistic scenario: a shopper browses three “hydration” products, adds one to cart, then bounces. With Objects, your abandoned cart and browse abandonment messages can pull in the exact products, plus related items from the same collection, while suppressing anything already purchased.
Step-by-Step Setup
Objects adoption in Customer.io setup starts with getting your catalog and behavioral events into a stable Object model, then building journeys that react to relationship changes.
- Pick the Object types that matter for revenue. For most D2C brands, start with Product, Collection (or Category), and Subscription (if applicable). Keep it tight so you can ship campaigns quickly.
- Define the key Object attributes you will actually use in messaging. Examples: product_name, sku, url, image_url, price, compare_at_price, category, margin_band, inventory_status, and hero_benefit.
- Decide the relationships you will trigger campaigns from. Typical relationships: Viewed Product, Added to Cart, Started Checkout, Purchased Product, Subscribed, Cancelled Subscription.
- Send Object data and relationships from your source of truth. Usually Shopify plus your data pipeline (or a CDP). Ensure product updates (price, availability) sync on a schedule, and relationships update in near real time for cart and checkout behavior.
- Build segments that reflect buying intent and lifecycle stage. Examples: “Viewed Collection but no purchase in 7 days,” “Added to cart and no checkout started,” “Purchased from Collection A and not Collection B.”
- Create journeys triggered by relationship creation or change. For example, trigger when “Added to Cart” relationship is created, then branch based on inventory_status or discount eligibility.
- Personalize message content using Object attributes. Pull product image, name, and URL directly from the Product Object. Add conditional blocks for low inventory or back-in-stock.
- Add suppression rules tied to Objects. Suppress if the person purchases the same Product Object, or if they purchase any product in the same Collection within the recovery window.
- Set goals and measurement. Use purchase events and Object relationships to define conversion, and track revenue per recipient by journey and by category.
When Should You Use This Feature
Objects adoption in Customer.io is the right move when your revenue depends on messaging that stays accurate at the SKU and category level, not just “customer tags.”
Use it for:
- Browse abandonment that feels like a personal shopper. Follow up based on the exact products and collections a customer explored, with dynamic recommendations from the same category.
- Cart recovery with smarter suppression. Stop sending recovery messages the moment the cart items are purchased, even if the purchase comes from another device or channel.
- Cross-sell after first purchase. If a customer buys a cleanser (Product Object), trigger a regimen builder flow that recommends moisturizer and SPF from the same routine collection.
- Back-in-stock and low-inventory urgency. Target only customers related to a Product Object through “Viewed” or “Added to Cart,” and use inventory_status to control urgency language.
- Reactivation by category affinity. Win back lapsed buyers using the categories they historically purchased or browsed, instead of a generic “we miss you” offer.
Operational Considerations
Objects adoption in Customer.io gets powerful when your data and orchestration are disciplined, because messy relationships lead to noisy segments and wasted sends.
- Data freshness matters more than data volume. Cart and checkout relationships should be near real time. Catalog updates can be scheduled, but inventory and price changes should be frequent enough to avoid promoting unavailable items.
- Choose one canonical identifier strategy. SKU vs product_id vs variant_id needs to be consistent across events, Objects, and your storefront URLs, or personalization breaks quietly.
- Segment design should mirror merchandising logic. If your team merchandises by collection, build Objects and relationships that make “collection-level” targeting easy, not an afterthought.
- Orchestration across channels needs a priority order. For example, SMS for cart recovery within 30 minutes, email at 4 hours, push at 24 hours, all suppressed by purchase relationships.
- Frequency controls should be category-aware. A customer browsing five SKUs in one session should not trigger five separate flows. Aggregate by collection or apply a cooldown window.
Implementation Checklist
Objects adoption in Customer.io implementation goes smoother when you validate the data model before you build the journeys.
- Object types defined (Product, Collection, Subscription, or Loyalty) with a clear owner
- Object attributes mapped to real message needs (name, image, url, price, category, inventory)
- Relationship taxonomy finalized (Viewed, Added to Cart, Started Checkout, Purchased)
- Event and relationship timestamps verified (time zones, deduping rules)
- Suppression logic documented (purchase of same SKU, purchase within collection, global cooldowns)
- Template blocks built to render Object attributes reliably across email and SMS-safe fallbacks
- Holdout test plan for incremental revenue (especially for discounts)
- Dashboard or reporting plan for revenue per journey, per collection, and per intent tier
Expert Implementation Tips
Objects adoption in Customer.io performs best when you treat it like a merchandising engine, not just a data structure.
- In retention programs we’ve implemented for D2C brands, the biggest lift comes from collection-level aggregation. Instead of triggering on every product view, trigger on “Viewed Collection” once per session, then use the top 3 products viewed as dynamic content.
- Build a “discount eligibility” attribute as part of your Object logic. For example, set discount_allowed = false for low-margin SKUs, bundles, or new releases, so your recovery flows do not train customers to wait for promos.
- Use relationships to power post-purchase education. If a customer buys a supplement, trigger usage tips and replenishment timing based on the Product Object’s typical consumption window.
- Design for fallbacks. If image_url is missing, show a category banner. If inventory_status flips to out_of_stock mid-flow, branch to a waitlist or alternative product set.
Common Mistakes to Avoid
Objects adoption in Customer.io can backfire when the data model is overbuilt or when teams skip suppression and aggregation.
- Modeling every tiny thing as an Object. Start with the few Object types that drive 80 percent of revenue journeys, then expand.
- Triggering flows directly off raw product views. Without session-level aggregation, you will spam high-intent browsers and inflate unsubscribes.
- Not deduping relationships. If “Added to Cart” fires multiple times, customers can re-enter the same journey repeatedly unless you add guardrails.
- Broken identifiers across systems. If your event uses variant_id but your Object uses product_id, personalization and suppression will fail silently.
- No purchase-based exit conditions. Cart and browse recovery must exit immediately on purchase, ideally at both SKU and collection levels.
Summary
Use Objects adoption when you want campaigns tied to the exact products and categories customers engage with, not generic profile tags. It improves cart recovery, cross-sell, and reactivation because targeting and suppression stay accurate as behavior changes. Implement it in Customer.io when your catalog complexity or merchandising strategy demands more precise personalization.
Implement with Propel
Propel can set up the Object model, relationships, and revenue-focused journeys in Customer.io, then QA the edge cases that typically break personalization. If you want a clean plan and fast execution, book a strategy call.