Squarespace (Data In) for Customer.io: get the right commerce data in so retention automations actually fire

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 running retention on Squarespace, the real work is getting clean purchase + cart intent data into Customer.io so your segments don’t drift and your automations don’t misfire. If you want a second set of eyes on the data model before you wire up flows, book a strategy call—most “Customer.io isn’t working” issues are really identity + event mapping issues upstream.

In practice, Squarespace stores a lot of the customer truth (orders, products, emails), but Customer.io only becomes useful when you consistently pass the same identifiers and the same event schema every time. That’s what makes cart recovery timers accurate, repeat purchase triggers dependable, and winback segments trustworthy.

How It Works

Think of the Squarespace → Customer.io setup as a data pipeline problem, not a “connect the integration” problem. Your goal is to stream a small set of high-signal commerce events into Customer.io, attach them to the correct person profile, and keep the payloads stable so segmentation stays accurate over time.

  • Events enter Customer.io when your Squarespace storefront (or a middleware layer) sends events like product_viewed, checkout_started, and order_completed via Customer.io’s event ingestion (commonly Track API/Pipelines, depending on your stack).
  • Identity resolution happens at ingest. If the event includes a consistent identifier (usually email or a stable customer_id), Customer.io can attach the event to the right person. If identifiers change or go missing, you’ll create duplicates and your triggers will “randomly” miss people.
  • Attributes get mapped to the person profile (ex: last_order_date, orders_count, lifetime_value). These attributes are what power your “repeat buyer vs one-time buyer” splits and suppression rules.
  • Segmentation + triggers depend on event consistency. If order_completed sometimes includes order_id and sometimes doesn’t, deduping breaks. If checkout_started doesn’t always include cart_value, your “high-intent cart” segment becomes unreliable.

A realistic D2C scenario: someone adds a $78 skincare bundle to cart on mobile, bounces, then completes the purchase later on desktop. If your identity is email-only and you don’t capture it until checkout completion, your cart abandonment flow will either never trigger (no identifiable person) or it will trigger but fail to suppress after purchase (purchase event lands on a different profile). Clean identity + consistent event payloads fix that.

Step-by-Step Setup

The fastest path is to define your retention event schema first, then implement the sending. When teams do it in the opposite order, they end up retrofitting payloads after flows are already live—which is where segmentation drift and “why did this send?” fire drills come from.

  1. Decide your primary identifier.
    For Squarespace stores, email is usually the most practical. If you also have a stable Squarespace customer ID, send it too—but don’t rely on it unless it’s present on every relevant event.
  2. Define the minimum viable retention event set.
    At a minimum for retention execution: product_viewed, added_to_cart, checkout_started, order_completed, and optionally order_refunded/order_canceled if you run aggressive post-purchase flows.
  3. Standardize event names and required properties.
    Lock a contract like:
    • order_completed: order_id, email, total, currency, items[], discount_code (if present), created_at
    • checkout_started: email (if known), cart_id, cart_value, items[], created_at
    The key is that the same fields exist every time, even if some are null.
  4. Implement event sending from Squarespace (or middleware).
    Squarespace may not emit every event you want natively. Many brands use a lightweight middleware (serverless function/Zapier-like layer) to listen for order events and forward them to Customer.io with the correct schema and identifiers.
  5. Upsert person attributes on purchase.
    On order_completed, update person attributes like last_order_date, orders_count, lifetime_value, and last_order_total. This is what makes repeat purchase and VIP segmentation stable.
  6. Handle anonymous behavior intentionally.
    If you can’t identify users until email capture, accept that early-funnel events will be anonymous. Decide whether you’ll merge anonymous activity later (once email is known) or only trigger flows after identification. Don’t pretend you have deterministic cart abandonment if you don’t capture identity.
  7. Verify in Customer.io’s event/person views.
    Before building any automation, confirm that: events land on the right profile, event timestamps match reality, and properties needed for segmentation are present.

When Should You Use This Feature

Squarespace data-in work matters most when your retention program depends on precise triggers and suppression. If you’re only blasting newsletters, you can get away with a basic list sync. The moment you run behavior-based flows, your event/identity layer becomes the bottleneck.

  • Cart recovery when you need accurate “started checkout but didn’t purchase” logic and clean suppression on order_completed.
  • Repeat purchase orchestration when you want “replenishment” or “next best product” journeys based on items purchased and time since last order.
  • Reactivation/winback when you need a trustworthy last_order_date and orders_count to avoid discounting active buyers.
  • Post-purchase CX when refund/cancel signals should stop review requests, referrals, or upsell sequences.

Operational Considerations

Most retention teams don’t struggle with creative—they struggle with data drift. The operational reality is that one missing identifier or one inconsistent event property quietly breaks your segments, then you notice it weeks later when performance drops.

  • Segmentation integrity: build segments off stable attributes (like last_order_date) and stable events (like order_completed), not brittle proxies. If you segment “VIP” off a property that’s only populated sometimes, you’ll under-message your best customers.
  • Event deduplication: always include a unique ID (ex: order_id) so retries don’t create duplicate purchases and accidentally suppress/trigger flows incorrectly.
  • Timestamp hygiene: send the real event time, not “time we forwarded it.” Delayed timestamps distort holdout tests, send-time logic, and replenishment windows.
  • Orchestration across flows: your purchase event is the global suppression lever. If it’s unreliable, every flow becomes risky—cart, browse, winback, post-purchase all start stepping on each other.
  • Data mapping ownership: decide who owns the schema (retention/growth) and who owns the transport (engineering/ops). When nobody owns it, it degrades.

Implementation Checklist

Before you turn on any revenue-critical automation, you want a quick “is the data trustworthy?” pass. This checklist catches the issues that most often cause missed triggers and wrong sends.

  • Primary identifier chosen (email and/or customer_id) and present on all purchase events
  • Standard event names defined and documented (no ad-hoc naming)
  • order_completed includes order_id, totals, currency, and line items
  • Cart/checkout events include a stable cart_id and cart value
  • Person attributes updated on purchase: last_order_date, orders_count, lifetime_value
  • Refund/cancel events handled (or an explicit decision not to)
  • Anonymous behavior strategy decided (merge later vs trigger only after identification)
  • Test orders run end-to-end and events verified on the correct person profile

Expert Implementation Tips

Once the basics are in, the biggest gains come from making your data more “decision-ready” for segmentation and orchestration—so you can run tighter logic without writing fragile segment rules.

  • Promote key event properties into attributes. If you constantly segment on “last purchased category,” write it as an attribute on purchase. Segments run faster and break less.
  • Send line items in a consistent structure. Even if you don’t use it on day one, clean line-item arrays unlock product-aware cross-sell and replenishment later without re-instrumentation.
  • Design suppression around a single source of truth. In most retention programs, we’ve seen the cleanest setup when every flow suppresses on order_completed (and optionally order_refunded) rather than channel-specific hacks.
  • Instrument “email captured” explicitly. If identity only becomes known at email capture, treat that as a first-class event. It helps you reason about why cart recovery coverage is what it is.

Common Mistakes to Avoid

These are the mistakes that create silent revenue leaks—flows still send, but they send to the wrong people or at the wrong time.

  • Relying on inconsistent identifiers (sometimes email, sometimes phone, sometimes nothing), which creates duplicate profiles and broken suppression.
  • Using different event names for the same action (ex: purchase vs order_completed), which forces you to maintain messy segments and triggers.
  • Missing unique IDs on orders/carts, which makes retries look like new events and inflates conversions or suppresses incorrectly.
  • Only sending aggregate totals and skipping line items, then later realizing you can’t do category-based winback or cross-sell without rework.
  • Backfilling data without a plan and accidentally triggering automations on historical events because timestamps weren’t handled properly.

Summary

If you want Customer.io to drive repeat purchase and recovery for a Squarespace store, you need reliable identity and a stable commerce event schema.

Get order_completed and your cart intent events right, promote a few key attributes, and your segmentation + triggers stop being a guessing game.

Implement Squarespace with Propel

When we implement Squarespace data-in for Customer.io, we usually start by locking the event contract (names, required properties, identifiers), then validating it against the exact segments your retention program needs (cart recovery, replenishment, winback). If you want to pressure-test your current tracking and avoid the usual duplication/suppression pitfalls, book a strategy call and we’ll map the data you have to the automations 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