At a glance
Registered customers (i.e. accounts incustomer_entity) who have zero captured order revenue across their lifetime. They created an account but never bought, or only hadcanceledorders that never converted. Useful for understanding registration-to-purchase conversion and identifying the “ghost segment” cluttering the customer base.
| What it counts | COUNT(customers WHERE lifetime_grand_total = 0 OR no_orders_ever) ÷ COUNT(customers) × 100. Lifetime spend is the sum of grand_total across all the customer’s captured orders (excluding canceled). A customer with only canceled orders shows here as zero spend. |
| API field | customer.entity_id, joined with sales_order.customer_id and sales_order.grand_total filtered to state != 'canceled'. Lifetime, not windowed. |
| Why this matters | Registered customers who never spent are either (a) account-created-during-checkout-but-checkout-failed cohort (recoverable), (b) bot/fake registrations (purgeable), (c) genuine browse-but-don’t-buy users (re-engageable via marketing flows), or (d) abandoned-checkout-converted-to-account-but-never-finished (high recovery potential). Cross-link with Unverified Emails to overlap the segments. |
| Guests | Excluded by definition. Guests have no customer_entity row; this card is registered-customer only. |
| Cancelled orders | Customers with only-cancelled orders count as zero-spend (the cancelled order didn’t capture). |
| Refunded orders | A customer with one captured-then-refunded order is NOT zero-spend; they spent at order capture. The refund is a downstream event. |
| VAT / tax / shipping / discounts / currency | n/a, the card is a customer count ratio. |
| Multi-store scope | All Store Views by default. A customer who has zero spend on UK but bought on US (same email) is NOT zero-spend (the system aggregates across views). |
| Time window | RT (real-time snapshot). Lifetime, not windowed. |
| Alert trigger | >25% of registered customer base. Above 25% suggests registration friction, weak welcome flow, or bot pollution. |
| Sentiment key | zero_spend |
| Roles | owner, marketing |
Calculation
Calculated automatically from your Adobe Commerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A B2B+DTC apparel merchant on Adobe Commerce 2.4.7. Snapshot 13 May 26. 28,400 registered customers in the base. Zero-spend breakdown:| Slice | Count | % of base | Notes |
|---|---|---|---|
| Total registered customers | 28,400 | 100% | |
| Lifetime grand_total = $0 (zero captured orders) | 8,520 | 30.0% | this card; alert breached (>25%) |
| Of which: never placed any order | 6,820 | 24.0% | account-created without subsequent purchase |
| Of which: only-cancelled orders | 1,700 | 6.0% | tried to buy, payment failed |
| Suspected bot signups (zero spend + sequential email pattern) | 920 | 3.2% | candidates for purge |
| Overlap with Unverified Emails | 3,840 | 13.5% | the “ghost segment” |
| Registered <30 days, zero spend (high recovery potential) | 480 | 1.7% | recent abandonment-recovery cohort |
| Registered >12 months, zero spend (low recovery) | 5,200 | 18.3% | dormant ghost segment |
| Signup source | Zero-spend rate within source |
|---|---|
| Storefront sign-up form | 35% |
| Checkout “create account” toggle | 18% |
| B2B Companies portal (admin-created) | 4% |
| Imported migration list | 64% |
| Newsletter signup → account | 52% |
- 30% of registered customers never spent. Above the 25% alert threshold; investigate.
- Imported migration list at 64% zero-spend is the worst cohort. Many imported customers never re-activated on the new platform. Either (a) ran out of legacy product line, (b) lost interest, (c) email-deliverability prevented re-engagement. Cross-link with Unverified Emails, the imported cohort is heavily unverified too.
- Newsletter signup → account at 52% is also high. Newsletter signups are top-of-funnel awareness; not all become buyers. This is healthy if the signup-to-buyer conversion rate is on benchmark; investigate via the email-flow funnel.
- Checkout “create account” toggle at 18% is the cleanest cohort. Customers who create accounts during checkout buy 82% of the time (the other 18% had checkout failures). Recover via abandoned-cart email flows.
- Storefront sign-up form at 35% is mid-tier. Recover via welcome-flow drip, exclusive-content, or first-time-purchase incentive.
- Bot signups (920 candidates) should be bulk-purged after manual review of patterns. Cross-link with Unverified Emails, the overlap of zero-spend + unverified + sequential-email-pattern is the highest-confidence bot indicator.
- Action queue: (a) abandoned-cart recovery flow for the recent zero-spend cohort; (b) re-engagement / sunset flow for >12-month zero-spend; (c) bot purge with manual review; (d) migration-cohort re-confirmation campaign.
Sibling cards merchants should reference together
| Card | Why pair it with Zero-Spend Customers |
|---|---|
| Customer Count | The denominator. |
| Unverified Emails | Overlap; ghost-segment customers. |
| New Customers | New customers shouldn’t be zero-spend yet (their first order date IS when they spent). The two cards’ definitions complement. |
| Customer Trend | Over-time growth of the customer base. |
| Email Health | Broader email-list quality. |
| Repeat Customer Rate | Active retention; zero-spend is the dormant counterpart. |
klaviyo.dormant_segment | Klaviyo’s dormant-customer segment; pair to drive re-engagement. |
shopify.zero_spend_customers | Cross-platform peer. |
Reconciling against the vendor’s own dashboard
Where to look in Adobe Commerce Admin:Customers > All Customers with custom filter “Lifetime Sales = 0”. The lifetime-sales column may need to be added via the column customisation menu.For a manual cross-check:
Reports > Customers > Customers by Orders Total filter to “0 orders” or “Total = 0”.For B2B Companies:
Customers > Companies has a per-Company total revenue column; Companies with $0 lifetime revenue are the equivalent for B2B.Why our number may legitimately differ from a manual Admin computation:
| Reason | Direction of divergence |
|---|---|
| Cancelled-only customers. The card includes them as zero-spend; Admin’s “Lifetime Sales = 0” depends on whether Admin counts cancelled orders as “sales” (it shouldn’t). Should match. | Usually none |
Refund handling. A customer with one captured-then-fully-refunded order may show as “$0” in some Admin reports (net of refund) but is captured-spend = original grand_total in this card (gross). | Card under-flags refunded-only customers |
| Multi-store scope. Admin scope-filtering can show fewer customers as zero-spend per Store View; the card aggregates across views. | Card potentially lower per-Store-View |
| Time-zone, sync lag. Standard. | Minor |
| Card | Expected relationship | What divergence tells you |
|---|---|---|
klaviyo.dormant_segment | Klaviyo’s “no purchase ever” segment should match this card’s count (within profile-sync delta) | Material divergence means profile-sync is incomplete; some Adobe customers aren’t reaching Klaviyo. |
mailchimp.unengaged_segment | Similar logic | Same diagnostic. |
Known limitations / merchant FAQs
Why is the threshold set at 25%? Industry-typical “healthy” sits at 10-20% (B2B-leaning) or 20-30% (heavy-newsletter DTC). Above 25% suggests either bot pollution, weak account-creation funnel, or an aggressive newsletter-to-account flow that isn’t converting. Adjust per merchant context. Should I delete zero-spend customers to clean my database? Cautious yes for clearly-bot accounts (>12 months old, unverified, sequential email pattern). Cautious no for recent registrations (could still convert). Adobe Commerce supports bulk customer deletion via Admin grid; always export a backup before bulk delete. A customer registered 2 years ago, never bought, are they “lost”? Statistically yes. Re-engagement campaigns convert 0.5-3% of >12-month dormant customers; not zero, but the cost-of-send rarely justifies the return. Most merchants run an annual “sunset flow”, a final re-engagement attempt; non-responders are unsubscribed. Why aren’t guest customers in this card? Guests have nocustomer_entity row; they are order-only. By definition, a guest who didn’t buy doesn’t exist as a record. The card answers “of registered customers, who never bought?”. Guests are a different funnel.
Customer with only-cancelled orders, zero-spend or not?
Zero-spend per the card. Cancellation reverses authorisation; no money moved. The customer attempted a purchase but didn’t complete. They are in the recoverable cohort if recent (cross-link with abandoned-cart recovery flow).
What about a customer whose only order was fully refunded?
NOT zero-spend per this card; they spent at order capture, the refund is downstream. Use Refund Rate per-customer to isolate “captured-then-refunded” cohort.
Why does my Reports > Customers > Customers by Orders Total show different?
Three causes: (1) the report aggregates by Customer Group; if a customer is in a group filter, may not appear; (2) cancelled handling differs; (3) report uses base currency, card uses underlying record. Reconcile with same filters.
Bot purge, what’s safe?
Conservative: customers >90 days old AND zero-spend AND unverified AND no email-engagement history. That intersection is high-confidence bot. Always export before delete. Spread the delete over time to avoid index churn.
My multi-store, can I see zero-spend per Store View?
Tricky. Customer accounts are typically global (one customer = one account across Store Views in Adobe’s default config). To see per-Store-View, look at where the customer registered (store_id on the customer record). The card supports this slice.
B2B Company with zero spend, what does that mean?
A Company entity created without any orders yet. Common for B2B where Sales reps onboard the Company before the first PO. Allow 30-90 days; if still zero-spend after 90 days, the onboarding flow has friction. Sales follow-up.