Collections in Customer.io

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

Collections in Customer.io are how you model non-person data (like products, orders, carts, subscriptions, and inventory) so your messaging can reference the exact items a shopper browsed, added to cart, or purchased. In a D2C retention program, Collections are the difference between generic reminders and messages that show the right product, the right variant, and the right next-best offer at the moment it matters.

If you want Collections set up in a way that stays clean as your catalog and order volume grows, Propel can help you design the data model and the journeys around it, then pressure test it against real purchase behavior. If you want to move faster, book a strategy call.

We typically see the biggest lift when Collections are used to personalize abandoned cart, post-purchase cross-sell, and replenishment flows in Customer.io.

How It Works

Collections in Customer.io work by storing and updating objects (for example, a Product or Order) and linking them to people through relationships, so campaigns can pull in object fields dynamically.

In practice, you build an object type (like Product), define the fields you care about (title, price, image_url, category, variant_id, margin band), then create relationships (for example, Person purchased Order, Order contains Product). Once those relationships exist, your emails and SMS can loop through the related objects and render a cart, an order summary, or a product recommendation grid without hardcoding anything.

Most D2C teams use Collections in two ways:

  • Real-time personalization (cart and browse): update cart and browse objects as the shopper moves, then reference them in recovery journeys.
  • Lifecycle personalization (post-purchase and winback): reference order history, last purchased category, or product attributes to shape the next offer.

If you are orchestrating this across Shopify, a CDP, and paid media audiences, it helps to map a single source of truth for object updates before you build journeys in Customer.io.

Step-by-Step Setup

Collections in Customer.io are easiest to implement when you start from the revenue use case (cart recovery, cross-sell, replenishment), then work backward into the object model.

  1. Pick the first monetizable journey that needs object data. A common starting point is abandoned cart with line items, images, and variant-level pricing.
  2. Define your object types. For most D2C brands, start with Product, Variant (optional but useful), Cart, Order, and Subscription (if applicable).
  3. Decide the minimum fields per object. Product: title, handle, image_url, price, compare_at_price, category, tags. Order: order_id, subtotal, discount_total, shipping, item_count, purchased_at.
  4. Create relationships that match how you message. Person has Cart, Person placed Order, Order contains Product (or Variant). Keep naming consistent with your template logic.
  5. Choose your update method. Use your integration, pipelines, or API updates so objects stay current (especially carts and inventory-sensitive items).
  6. Backfill what you need. If you want winback and LTV segmentation, import at least 6 to 12 months of orders so your logic has history.
  7. Build message templates that loop through related objects. Render line items, swap creative by category, and add fallback content when a cart is empty or a product is out of stock.
  8. QA edge cases. Multiple carts, refunded orders, mixed-category orders, and products with missing images are where most D2C flows break.

When Should You Use This Feature

Collections in Customer.io are the right move when you need personalization that depends on product, cart, or order-level context, not just customer attributes.

  • Abandoned cart recovery with item-level content: show the exact products left behind, include images, and tailor urgency based on inventory or price band.
  • Product discovery journeys: after a shopper browses a category (for example, “hydration”), send a follow-up featuring the top 3 products in that category and a quiz or educational angle.
  • Post-purchase cross-sell: if an order contains “running shoes,” recommend socks, insoles, or care kits, and suppress items already purchased.
  • Replenishment and reorder: for consumables, trigger based on last purchased SKU and expected depletion window, then populate the exact product and size.
  • VIP and LTV personalization: segment by category affinity and margin band, then adjust offers and creative to protect contribution margin.

Realistic scenario: a skincare brand wants to reduce discounting in cart recovery. With Collections, the first reminder can show the exact items and social proof, the second can add routine education based on product type, and only the third introduces an offer for low-margin-safe SKUs.

Operational Considerations

Collections in Customer.io require operational discipline around data freshness, naming conventions, and how objects power segmentation and orchestration.

  • Data ownership: decide whether Shopify, your CDP, or a custom service is the system that writes Products, Carts, and Orders into Collections. Avoid multiple writers for the same object type.
  • Update frequency: carts and browse context should update near real time. Orders can be batched, but refunds and cancellations need a clear update path.
  • Relationship design: build relationships for how you will query and render content. If you want “last purchased product” logic, make sure you can reliably fetch the most recent related Order and its items.
  • Template fallbacks: always plan for missing images, deleted products, and empty carts. Your flows should degrade gracefully instead of failing sends.
  • Segmentation strategy: use object fields for segments (category affinity, average order value bands, discount reliance), but keep segments stable by standardizing categories and tags.

Implementation Checklist

Collections in Customer.io go smoothly when you lock the data model before you build the first set of revenue flows.

  • List 2 to 3 journeys that require object-level personalization (cart, post-purchase, winback)
  • Define object types (Product, Cart, Order, Subscription) and required fields
  • Standardize taxonomy (category, tags, product type) so segments do not drift
  • Set relationship rules (Person has Cart, Person placed Order, Order contains Product)
  • Implement write/update logic (integration, pipelines, or API) and document the source of truth
  • Backfill historical orders for LTV and repeat purchase logic
  • Build message templates with loops and fallbacks for missing data
  • QA edge cases (multi-item carts, refunds, out of stock, deleted products)
  • Set monitoring (object update failures, missing fields, broken image URLs)

Expert Implementation Tips

Collections in Customer.io perform best when you treat them like merchandising infrastructure, not just a data feature.

  • In retention programs we've implemented for D2C brands, starting with Order and Product objects (then adding Cart) reduces complexity while still unlocking post-purchase and winback revenue quickly.
  • Use variant-level IDs if your catalog has meaningful differences by size, flavor, or color. Otherwise your cart recovery can show the wrong option and hurt conversion.
  • Build a margin-safe offer layer into object fields (for example, margin_band or discount_eligible). Then your campaigns can decide when to show a discount without relying on marketer memory.
  • Keep your “recommended products” logic outside the template when possible. Write a recommendations object or relationship and let templates render it. This keeps creative flexible and reduces Liquid complexity.

Common Mistakes to Avoid

Collections in Customer.io can quietly underperform if the object model is built for data completeness instead of messaging outcomes.

  • Overbuilding the schema early: too many fields and object types slow down QA and increase breakage. Start with what the first journeys need.
  • Missing fallback behavior: cart recovery that depends on image_url or product_url will look broken if those fields are blank or inconsistent.
  • Multiple sources writing the same object: Shopify app plus CDP plus custom scripts often leads to conflicting updates and confusing relationship graphs.
  • Ignoring refunds and cancellations: post-purchase journeys can recommend accessories for an order that was refunded if you do not update the Order object status.
  • Category drift: if merchandising changes product tags weekly, segments built on tags become unstable. Standardize a small set of lifecycle categories.

Summary

Use Collections when you need item-level personalization for cart recovery, post-purchase upsell, replenishment, and smarter winback.

They matter because they connect what a shopper did (products, carts, orders) to what you send next inside Customer.io.

Implement with Propel

Propel helps D2C teams implement Collections in Customer.io with a clean object model, reliable updates, and revenue-first journeys. To map your schema and launch the first flows, book a strategy call.

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