Timestamp Rules 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

Timestamp rules in Customer.io are how you turn “when something happened” into a revenue-driving audience, like shoppers who started checkout in the last 2 hours, customers whose last order was 45 to 60 days ago, or VIPs who purchased twice within 30 days. In D2C, most segmentation mistakes are really timing mistakes, so getting timestamp logic right directly impacts cart recovery rate, repeat purchase, and winback performance.

If you want these time windows to map cleanly to your actual store behavior (site events, checkout, fulfillment, returns), Propel can help you design the data and segment logic so your automations stay accurate as you scale in Customer.io. If you want help pressure-testing your timing strategy, book a strategy call.

How It Works

Timestamp rules in Customer.io work by evaluating date and time fields (attributes and event timestamps) against relative windows like “within the past X days” or “more than X days ago.”

In practice, you will use two main timestamp sources:

  • Event timestamps (for behaviors like Product Viewed, Added to Cart, Checkout Started, Order Placed). These are best for intent-based flows like cart recovery and browse abandonment.
  • Person attributes that store timestamps (for lifecycle milestones like last_order_at, first_order_at, last_sms_opt_in_at). These are best for stable lifecycle segments like winback and replenishment.

Two execution details matter a lot:

  • Relative windows are evaluated at the time the segment is calculated. That means your audience naturally changes throughout the day as people cross thresholds.
  • “Within the past X days” is not the same as “today”. It is a rolling window, which is usually what you want for D2C triggers, but it can surprise teams expecting calendar-day behavior.

When you build time-based segments for automations, treat them as production logic, not ad hoc filters. Keep naming conventions strict, document the timestamp source, and align time zones across your store and Customer.io.

Step-by-Step Setup

Timestamp rules in Customer.io are easiest to implement when you decide upfront which timestamps are event-based versus stored on the customer profile.

  1. Inventory your timestamps. List the timestamps you already have (checkout_started_at, order_created_at, fulfilled_at, delivered_at, last_order_at) and where they live (events vs attributes).
  2. Standardize naming. Pick one format and stick to it (for example: snake_case attributes, past-tense event names, and “_at” suffix for timestamp attributes).
  3. Confirm time zone handling. Make sure your ingestion pipeline sends timestamps consistently (prefer ISO 8601 in UTC). Avoid mixing local store time with UTC across different sources.
  4. Build a “golden” segment for each core motion. Examples: “Checkout started, no order, within 2 hours” and “Last order 45 to 60 days ago.” Keep these as reusable building blocks.
  5. Layer exclusions with timestamps. Add suppression logic like “Purchased within the past 7 days” to protect margin and reduce fatigue.
  6. Validate with real profiles. Spot-check at least 20 customers across edge cases (just purchased, refunded, multiple carts, multiple orders, timezone differences).
  7. Operationalize with versioning. When you change a window (2 hours to 4 hours), duplicate the segment, test impact, then swap. Avoid silent edits that break reporting.

When Should You Use This Feature

Timestamp rules in Customer.io are the right choice when revenue performance depends on hitting a shopper at the right moment, not just the right audience.

  • Abandoned cart recovery: Target “Added to cart within 1 hour” versus “within 3 days” to separate high-intent shoppers from window shoppers, then tailor incentive strategy.
  • Browse and product discovery journeys: Build segments like “Viewed product category 3+ times in the past 7 days” to trigger a curated bestsellers message or a quiz-based recommendation.
  • Replenishment and repeat purchase: Use “Last order more than 25 days ago” (for consumables) and exclude “Ordered within past 7 days” to prevent awkward timing.
  • Winback and reactivation: Create structured windows (for example 60 to 90 days since last order) so you can escalate creative and offers without blasting everyone at once.
  • Post-purchase education: Time messages off fulfillment and delivery timestamps, not order date, so content arrives when the customer can actually use it.

Operational Considerations

Timestamp rules in Customer.io get messy when data sources are inconsistent, so the operational plan matters as much as the segment builder.

  • Event versus attribute strategy: For cart recovery, rely on events (Added to Cart, Checkout Started). For lifecycle, store derived timestamps on the person (last_order_at) so segmentation stays fast and consistent.
  • Multiple carts and multiple orders: Decide whether you are targeting the most recent intent or any intent. For most D2C brands, “most recent checkout_started” is the only one that should drive messaging.
  • Returns and cancellations: If returns are common, you may need separate timestamps (last_net_order_at) so winback logic does not treat refunded customers as active buyers.
  • Message orchestration: Timestamp segments should pair with frequency rules and channel prioritization. Example: if SMS is reserved for the first 4 hours after checkout start, email can take over after 12 hours.
  • Reporting alignment: If your segment window is “within 2 hours,” your attribution window and campaign delay strategy should reflect that. Otherwise you will misread performance.

Implementation Checklist

Timestamp rules in Customer.io perform best when you treat time windows as shared infrastructure across campaigns.

  • All timestamps are in a consistent format (ISO 8601) and consistent time zone (prefer UTC).
  • Core commerce events exist and fire reliably (Product Viewed, Added to Cart, Checkout Started, Order Placed).
  • Key lifecycle timestamps are stored as person attributes (first_order_at, last_order_at, last_fulfilled_at or last_delivered_at).
  • Reusable segments exist for cart, browse, post-purchase, replenishment, and winback windows.
  • Exclusion segments exist for recent purchasers, support issues, and high-risk fatigue cohorts.
  • Segments are validated against real customer profiles and edge cases (multiple orders, refunds, timezone differences).
  • Segment naming includes window and source (example: “Cart: checkout_started event, no order, <2h”).

Expert Implementation Tips

Timestamp rules in Customer.io are where experienced D2C teams quietly win, because timing precision compounds across the whole lifecycle.

  • Use window ladders, not one giant segment. In retention programs we’ve implemented for D2C brands, splitting cart recovery into 0 to 1 hour, 1 to 4 hours, and 4 to 24 hours creates cleaner creative, better incentive control, and clearer reporting.
  • Anchor post-purchase to delivery when possible. Order date is a weak proxy for product arrival. If you have delivered_at, use it for education, UGC prompts, and cross-sell timing.
  • Build “cooldown” segments as first-class assets. A simple “Purchased within past 7 days” suppression improves deliverability, reduces unsubscribes, and protects margin when you run aggressive winback.
  • Document the business meaning of each timestamp. “last_order_at” should mean the same thing across email, SMS, ads, and reporting. If one system uses paid_at and another uses created_at, your segments will drift.

Common Mistakes to Avoid

Timestamp rules in Customer.io can look correct in the builder but still fail in market if the logic does not match how shoppers behave.

  • Using “within the past X days” when you need a bounded range. Winback often needs 60 to 90 days, not “past 90 days,” otherwise you mix warm and cold customers and your offer strategy gets muddy.
  • Triggering cart recovery off “Added to Cart” without checking for purchase. Always add a “no order since” condition or you will annoy customers who already converted.
  • Mixing time zones across sources. This creates phantom abandoners and missed windows, especially for SMS where timing is tight.
  • Relying on a single timestamp that is not updated reliably. If last_order_at is only set on the first purchase, your repeat purchase and winback segments will be wrong for months.
  • Not accounting for fulfillment realities. Sending “how to use it” content before it arrives increases support tickets and reduces trust.

Summary

Use timestamp rules when timing directly affects conversion, like cart recovery, replenishment, and winback windows. Clean timestamp sources and well-defined ranges keep your audiences accurate and your offers disciplined in Customer.io.

Implement with Propel

Propel helps D2C teams map commerce events and lifecycle timestamps into Customer.io segments that stay reliable as volume grows. 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