Share of customer rows with a valid + verified email, the addressable list size for lifecycle.
At a glance
The percentage of customer records that have a usable email address (non-null, valid format, and where verification is supported, marked verified). The addressable-list-size signal: can you actually reach your customers via the cheapest retention channel?
| What it counts | COUNT(customers WHERE email IS NOT NULL AND email_is_valid = true) ÷ COUNT(customers) × 100. Verification status (emailMarketingConsent.marketingState = SUBSCRIBED) is checked when available. |
| API endpoint | Admin GraphQL. Customer.email, Customer.emailMarketingConsent. |
| What “valid” means | RFC 5322 syntax check + domain MX existence (best-effort). Does NOT mean the customer opted in to marketing; that is a separate field. |
| What “marketing-subscribed” means | emailMarketingConsent.marketingState = SUBSCRIBED. The strict-marketing variant is on roadmap as a separate metric. |
| VAT / tax treatment | Not applicable. |
| Shipping | Not applicable. |
| Discounts | Not applicable. |
| Refunds | Not applicable. |
| Cancelled / voided orders | Customer-level metric, order status irrelevant. |
| Currency | Not applicable. |
| Channels / sources | All customers in the database. POS-account customers contribute (with email if collected at the till); POS-guest do not exist. |
| Verification mechanics | Shopify verifies email when a customer creates an account (clicks the verification link). Pre-checkout order-only customers may not be verified, but their email still counts as “valid” if syntactically correct. |
| Time window | RT (real-time, computed from latest indexed snapshot) |
| Alert trigger | <80%, sustained email-health below 80% indicates list-quality erosion |
| Roles | owner, marketing |
Calculation
Worked example
A US multi-channel home goods brand on Shopify Plus. 28,400 lifetime customers. Snapshot date: 12 May 26.| Email status | Customer count | Share | Note |
|---|---|---|---|
| Valid + marketing-subscribed | 19,140 | 67.4% | The reachable list, the asset |
| Valid but unsubscribed | 4,260 | 15.0% | Reachable for transactional only |
| Valid but bounced (hard bounce flag) | 1,420 | 5.0% | Cannot reach, suppress |
| Missing email | 2,840 | 10.0% | POS-account no email + B2B contacts |
| Invalid format / typo | 740 | 2.6% | Salvageable with re-engagement prompt |
| Email Health (this card) | 76.0% | (valid customers ÷ total) |
<80% and trips. Five things to notice:
- The 10% missing-email cohort is mostly POS. 2,840 customer records without an email; 2,200 of those are POS-only customers where staff didn’t capture email at the till. The 30-second prompt at checkout would have addressed most of them. POS staff training is the highest-ROI intervention here.
- 5% bounce rate is the silent-leak signal. 1,420 customers with hard-bounced emails. Each campaign send to those addresses damages sender reputation across the entire list. Most ESP (Klaviyo, Mailchimp, Shopify Email) auto-suppress bounces, but the customer record still sits at low quality. A re-engagement campaign with email re-capture is the typical fix.
- The unsubscribed cohort is not bad. 15% unsubscribed is industry-normal. They are still reachable for transactional and account messages, just not promotional. Treat unsubscribe as legitimate customer choice, not failure.
- The 2.6% invalid-format cohort is salvageable. 740 customers with typos or fake formats (“test@test.com”, “asdf@gmail”). Many resulted from coupon-grab signups; some are genuine typos. A targeted “fix your email” prompt next visit recovers 30 to 50%.
- At 76% with the alert at 80%, the brand should plan a list-quality sprint. Two-week priorities: turn on email re-engagement series, push POS to capture email, suppress bounces from active sends, audit and clean obvious junk records. Each lifts the headline 1 to 3 ppt.
Sibling cards merchants should reference together
Email health is a list-asset metric. Pair with these to drive acquisition and quality:| Card | Why pair it with Email Health | What the combination tells you |
|---|---|---|
| Customer Count | The denominator. | Email-health-% × customers = reachable list size. |
| Unverified Emails | The non-verified subset. | Identifies the customers who need a verification prompt. |
| Customer Segments | Tier overlay on email health. | If VIP segment has 95% email health but Low has 60%, the cleanup priority sits with the higher-tier rows. |
| Churn Risk | Win-back depends on email reach. | Lapsed customers without valid email are unrecoverable via cheap channels; SMS / direct mail is the fallback. |
klaviyo.klaviyo_subscribers | The downstream subscriber count. | Klaviyo subscribers ≤ this card’s reachable count. Gaps reveal sync issues. |
klaviyo.klaviyo_bounce_rate | Send-time bounce. | High send-time bounces drive down this card over time. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Customers → segment by Email subscription status. Shopify’s segment shows subscribed-and-not-subscribed counts. The card’s “valid email” count is broader (includes opted-out but reachable for transactional). For exact matching:- Filter Shopify to Email subscription status: Subscribed for the strict variant.
- The card’s default uses email field is non-null and valid, which is closer to Email exists than Subscribed.
- Customers → All customers: shows email column directly; manual visual scan reveals missing-email rows.
- Apps like Klaviyo, Mailchimp: have richer email-quality dashboards including bounce, open-rate, engagement decay.
| Reason | Direction | Why |
|---|---|---|
| Marketing-subscribed vs valid | Big | Shopify’s segment is subscribed-only; this card defaults to email exists. Subscribed is a stricter subset. |
| Bounce status | Either | Shopify auto-removes hard-bounced from subscribed, but the customer record still has the email. The card may count it as valid; ESP-level dashboards exclude bounces. |
| Customer merging | Transient | A merged customer’s email syncs to the canonical record; pre-merge data may show split entries. |
| Multi-store | Per store | Each store has independent customer records and email health. A customer with email in UK store and no email in US store appears differently per integration. |
| Sync lag | Ours lower for “today” | 5 to 15 minute index lag. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
klaviyo.klaviyo_subscribers | Klaviyo subscribers should ≤ Shopify reachable customers | Klaviyo can have non-Shopify subscribers (signup forms, lead-magnet captures); the count there can exceed the Shopify-only count, which is expected. |
mailchimp.mailchimp_audience | Mailchimp audience should align with valid-email count | Same logic. |
Known limitations / merchant FAQs
Why is my number lower than Klaviyo says? Different definitions. Klaviyo’s “deliverable” count is calculated based on send-engagement signals. This card uses the static record-level email validity. Both can be useful; expect roughly 5-15 ppt difference. Does the card count opted-out customers? By default yes (they have a valid email, just not marketing-subscribed). The strict variant usesmarketingState = SUBSCRIBED only; on roadmap.
My POS-heavy retail brand shows 50% email health, is that bad?
Common but improvable. POS staff often don’t capture email at the till. The fix is process, not technology: train staff to ask, give incentive (small discount for email signup), use a POS app that prompts.
Hard bounces, do they count as valid?
Today, yes (the email field is non-null). Bounce-aware variant is on roadmap. For now, ESP-side suppression handles the send-deliverability concern; the customer record is unchanged.
Multi-store, can I see combined health?
No, per-store. A merchant with 3 stores will see 3 health figures. Each store’s customer base is independent.
Multi-currency, any impact?
None; email health is regional-customer-mix-blind.
Shopify Plus vs basic?
No definitional difference. Plus stores can use Shopify Audiences and richer custom-field metadata to enrich email-quality decisioning, but the underlying field check is identical.
Refresh cadence?
Real-time index updates (5 to 15 minutes). Customer record changes propagate quickly.
B2B vs DTC?
B2B contacts often have business emails (not personal). The validity check passes; deliverability tends to be high (less spam-filtering than gmail). Subscribed-rate is lower (B2B buyers don’t sign up for marketing the way DTC consumers do).
The card alerted (<80%), what should I do?
- Identify the missing-email cohort. POS-only customers are usually the largest share; train staff.
- Identify the bounce cohort. Suppress in active campaigns; consider a re-engagement series with email re-capture prompt.
- Identify the invalid-format cohort. Send a one-time “fix your email” prompt with $5-10 incentive; recovery is usually 30 to 50%.
- Audit signup forms; some signup forms allow obviously-fake addresses (single-character handles). Add basic validation.
- Check Shopify Markets: customers who didn’t complete the email-capture step in regional checkout flows may have null email; tighten the checkout requirement.