Troubleshoot Message Delivery 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

When a message does not send, the revenue impact shows up fast: abandoned cart flows stop recovering, replenishment reminders miss the window, and VIP customers go quiet. This guide reframes “Why aren’t people receiving my message?” into a D2C-first debugging process, so you can quickly pinpoint whether the issue is audience eligibility, channel deliverability, or journey logic. Troubleshooting message delivery in Customer.io usually comes down to a small set of repeatable checks you can run in minutes.

If you want a faster path to stable, revenue-driving automations, Propel can help you audit your core flows and fix the delivery bottlenecks without slowing down your campaign calendar. If you want help pressure-testing your setup, book a strategy call (we work with Customer.io teams every week).

How It Works

Why aren’t people receiving my message in Customer.io is typically explained by one of three layers: the person never qualified to be messaged, the automation never attempted to send, or the channel blocked delivery after the send attempt.

At a practical level, you want to trace the path in this order:

  • Eligibility: does the person match the segment, trigger, and filters at the moment the message evaluates?
  • Orchestration: did the person enter the campaign, reach the message step, and pass frequency rules and exit conditions?
  • Channel outcomes: was the email suppressed, bounced, blocked by unsubscribes, or did SMS/push fail due to missing consent or device tokens?

In Customer.io, your campaign activity and message logs are your source of truth. They tell you whether a send was attempted, why it was skipped, and what happened after it left the platform.

Step-by-Step Setup

Why aren’t people receiving my message in Customer.io becomes easy to answer when you standardize your troubleshooting steps and run them the same way every time.

  1. Pick a real customer example. Grab 1 to 3 recent shoppers who should have received the message (for example, someone who started checkout but did not purchase).
  2. Confirm the person is identifiable and reachable. Check the profile has the right identifier and a deliverable channel address (email present, SMS number present, push token present).
  3. Validate subscription and consent status. Confirm they are not unsubscribed for the relevant subscription type, and that SMS consent rules are satisfied if you use SMS.
  4. Check global suppression and deliverability flags. Look for suppression list membership, hard bounces, or a history of blocks that would prevent future sends.
  5. Verify the trigger event exists and is timely. Confirm the exact event fired (for example, checkout_started), with the expected properties (cart value, items, currency) and timestamps.
  6. Re-evaluate campaign entry rules. Ensure the person matched entry criteria at the moment of evaluation (segments, filters, and any “within X time” logic).
  7. Inspect journey flow control. Look for waits, time windows, exit conditions, and branches that may have routed them away from the message.
  8. Review frequency and message limits. Confirm the person was not throttled by campaign frequency settings, workspace limits, or channel-level caps.
  9. Open the message log for the specific send. Determine whether it was skipped (and why) or sent and then failed downstream (bounce, block, carrier failure).
  10. Test with a controlled internal profile. Fire the same event with known-good data, then observe whether the person enters and receives as expected.

When Should You Use This Feature

Why aren’t people receiving my message in Customer.io is the right question any time a revenue-critical flow underperforms and you suspect delivery, not creative, is the bottleneck.

  • Abandoned cart recovery drops suddenly. You see stable site traffic and checkout starts, but fewer recovered orders from your cart series.
  • Post-purchase education is not landing. Customers are buying, but your product care, how-to, or cross-sell emails have low sends relative to order volume.
  • Reactivation feels “too small.” Your lapsed customer segment is large, but the campaign audience entering is tiny.
  • New product drops underperform. You broadcast to “engaged subscribers” and the send count is far lower than expected.

Realistic scenario: a skincare brand launches a 3-step abandoned checkout flow. Step 1 sends fine, steps 2 and 3 barely send. The root cause is often an exit condition like “Purchased equals true” that is being set incorrectly by an event mapping, or a time window that blocks most sends because customers enter outside the configured hours.

Operational Considerations

Why aren’t people receiving my message in Customer.io is rarely a single setting. It is usually the interaction between segmentation, event timing, and channel rules.

  • Segment timing vs. event timing: if you build entry on a segment like “Added to cart in last 1 hour,” delays in event ingestion can cause people to miss the window.
  • Identity resolution: anonymous shoppers who start checkout on mobile and later enter email on desktop can split into separate profiles if you do not merge identities cleanly.
  • Subscription types: promotional vs. transactional separation is good practice, but it creates more ways to accidentally exclude people if you attach the wrong subscription type to a message.
  • Frequency rules across flows: cart, browse abandon, and welcome series often compete. If your frequency cap is too strict, high-intent shoppers get throttled right when they are most likely to buy.
  • Data contracts with ecommerce tools: Shopify, custom checkout, and third-party cart apps can send similar events with different schemas. Standardize naming and required properties so journey logic stays predictable.

Implementation Checklist

Why aren’t people receiving my message in Customer.io is easier to prevent when you operationalize a pre-launch checklist for every automation.

  • Confirm required identifiers are present (email, phone, device tokens) and mapped consistently
  • Confirm subscription type selection matches the message intent (promo vs transactional)
  • Confirm suppression list strategy and bounce handling rules
  • Confirm trigger events fire with required properties and correct timestamps
  • Confirm entry filters and “within X time” conditions match your real data latency
  • Confirm exit conditions reflect true purchase state (order created, paid, refunded)
  • Confirm wait steps and time windows match your selling cycle (especially weekends and evenings)
  • Confirm frequency caps do not block high-intent flows like cart and checkout abandon
  • Run a test matrix: 3 internal profiles, 3 scenarios each (qualify, disqualify, edge case)
  • Document the expected send counts and success metrics for the first 7 days

Expert Implementation Tips

Why aren’t people receiving my message in Customer.io often comes down to small execution details that are easy to miss during build.

  • Use “diagnostic” events for critical flows. In retention programs we’ve implemented for D2C brands, adding a lightweight event like cio_cart_flow_entered makes it obvious whether the issue is campaign entry or channel delivery.
  • Design for event delays. If your ecommerce stack sometimes sends order events late, avoid narrow “within 30 minutes” segment logic for entry. Prefer event-triggered entry with explicit filters on the event payload.
  • Make purchase confirmation deterministic. For cart recovery, rely on a single canonical purchase event (or order object) and reference it consistently in exit conditions across all cart and checkout flows.
  • Separate “do not send” logic from “exit” logic. A branch that routes people to a “stop” path is easier to debug than an exit condition that removes them silently.

Common Mistakes to Avoid

Why aren’t people receiving my message in Customer.io is frequently caused by a handful of avoidable build mistakes.

  • Relying on segments with tight time windows for entry. Data latency and timezone differences can shrink your audience more than you expect.
  • Forgetting subscription type mismatches. The person looks “subscribed,” but not to the specific subscription type tied to the message.
  • Overusing frequency caps. In D2C, intent spikes are short. Throttling cart recovery because a customer received a browse email yesterday costs orders.
  • Assuming the message was sent because the campaign is live. Always confirm in logs whether a send attempt occurred, and whether it was skipped.
  • Exit conditions that fire too early. For example, exiting on “order_started” instead of “order_paid” can remove shoppers who still need nudges to complete checkout.

Summary

Use this troubleshooting process when send counts do not match shopper behavior, especially in cart recovery, post-purchase, and reactivation.

The fastest path is to trace eligibility, journey logic, then channel outcomes using logs in Customer.io.

Implement with Propel

Propel helps D2C teams stabilize Customer.io automations so the right shoppers actually receive the right messages at the right time. If you want us to audit a flow that is under-sending, 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