Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform
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 countsCOUNT(customers WHERE email IS NOT NULL AND email_is_valid = true) ÷ COUNT(customers) × 100. Verification status (emailMarketingConsent.marketingState = SUBSCRIBED) is checked when available.
API endpointAdmin GraphQL. Customer.email, Customer.emailMarketingConsent.
What “valid” meansRFC 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” meansemailMarketingConsent.marketingState = SUBSCRIBED. The strict-marketing variant is on roadmap as a separate metric.
VAT / tax treatmentNot applicable.
ShippingNot applicable.
DiscountsNot applicable.
RefundsNot applicable.
Cancelled / voided ordersCustomer-level metric, order status irrelevant.
CurrencyNot applicable.
Channels / sourcesAll customers in the database. POS-account customers contribute (with email if collected at the till); POS-guest do not exist.
Verification mechanicsShopify 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 windowRT (real-time, computed from latest indexed snapshot)
Alert trigger<80%, sustained email-health below 80% indicates list-quality erosion
Rolesowner, marketing

Calculation

COUNT(customer.email != NULL) / COUNT(_id)
  WHERE date BETWEEN [period_start, period_end]

Worked example

A US multi-channel home goods brand on Shopify Plus. 28,400 lifetime customers. Snapshot date: 12 May 26.
Email statusCustomer countShareNote
Valid + marketing-subscribed19,14067.4%The reachable list, the asset
Valid but unsubscribed4,26015.0%Reachable for transactional only
Valid but bounced (hard bounce flag)1,4205.0%Cannot reach, suppress
Missing email2,84010.0%POS-account no email + B2B contacts
Invalid format / typo7402.6%Salvageable with re-engagement prompt
Email Health (this card)76.0%(valid customers ÷ total)
Email Health  =  (19,140 + 4,260 + 1,420 + 740) ÷ 28,400  =  ~91% raw valid
                  Strict (subscribed only)  =  19,140 ÷ 28,400  =  67%
                  Card default (valid, non-bounce)  =  ~76%
The card flags <80% and trips. Five things to notice:
  1. 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.
  2. 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.
  3. 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.
  4. 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%.
  5. 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:
CardWhy pair it with Email HealthWhat the combination tells you
Customer CountThe denominator.Email-health-% × customers = reachable list size.
Unverified EmailsThe non-verified subset.Identifies the customers who need a verification prompt.
Customer SegmentsTier 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 RiskWin-back depends on email reach.Lapsed customers without valid email are unrecoverable via cheap channels; SMS / direct mail is the fallback.
klaviyo.klaviyo_subscribersThe downstream subscriber count.Klaviyo subscribers ≤ this card’s reachable count. Gaps reveal sync issues.
klaviyo.klaviyo_bounce_rateSend-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.
Other Shopify Admin views:
  • 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.
Why our number may legitimately differ from Shopify Admin:
ReasonDirectionWhy
Marketing-subscribed vs validBigShopify’s segment is subscribed-only; this card defaults to email exists. Subscribed is a stricter subset.
Bounce statusEitherShopify 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 mergingTransientA merged customer’s email syncs to the canonical record; pre-merge data may show split entries.
Multi-storePer storeEach 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 lagOurs lower for “today”5 to 15 minute index lag.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
klaviyo.klaviyo_subscribersKlaviyo subscribers should ≤ Shopify reachable customersKlaviyo can have non-Shopify subscribers (signup forms, lead-magnet captures); the count there can exceed the Shopify-only count, which is expected.
mailchimp.mailchimp_audienceMailchimp audience should align with valid-email countSame 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 uses marketingState = 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?
  1. Identify the missing-email cohort. POS-only customers are usually the largest share; train staff.
  2. Identify the bounce cohort. Suppress in active campaigns; consider a re-engagement series with email re-capture prompt.
  3. Identify the invalid-format cohort. Send a one-time “fix your email” prompt with $5-10 incentive; recovery is usually 30 to 50%.
  4. Audit signup forms; some signup forms allow obviously-fake addresses (single-character handles). Add basic validation.
  5. Check Shopify Markets: customers who didn’t complete the email-capture step in regional checkout flows may have null email; tighten the checkout requirement.

Tracked live in Vortex IQ Nerve Centre

Email Health is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.