Skip to main content
Card class: HeroCategory: Ecommerce Platform
Orders -> Email Campaign Attribution, broken down by row. How much of your WooCommerce revenue email can claim, and how much leaks away unattributed while the programme runs.

At a glance

The breakdown of WooCommerce order revenue against the email campaigns and flows that drove it. The card joins Woo orders to your email connector’s attribution (Klaviyo, Dotdigital, Mailchimp) and shows, per campaign / flow, how much revenue is attributed, plus the share of total revenue that stays unattributed. A large unattributed slice while an email programme is clearly active points at broken tracking, not poor performance.
What it countsPer email campaign / flow: SUM(order.total) for orders attributed to that campaign. Plus an “unattributed” row = total_woo_revenue minus all email-attributed revenue. Revenue figures, not order counts, are the headline.
Data sources (BOTH required)WooCommerce side: GET /wp-json/wc/v3/orders for order totals, timestamps, and customer email. Email side: the ESP’s attribution, Klaviyo /api/metric-aggregates (Placed Order attributed to campaign/flow), Mailchimp /reports (e-commerce revenue per campaign), Dotdigital /v3/campaigns revenue.
How the join worksThe ESP attributes an order to a campaign using its own last-click model (a click within the attribution window, default 5-day in Klaviyo). The card matches the ESP-attributed order back to the Woo order by customer email + order timestamp, so the Woo order.total is the revenue figure shown rather than the ESP’s separately-tracked value.
VAT / tax treatmentRevenue is tax-inclusive order.total, consistent with Total Revenue.
Status filtercompleted + processing orders only, the canonical Woo “real revenue” set.
RefundsGross of refunds, attribution happens at order time, before any refund.
Attribution windowSet by the ESP (Klaviyo default 5-day click; Mailchimp 7-day; Dotdigital 14-day). The card uses the ESP-defined window; longer windows attribute more.
UnattributedRevenue with no email click in the window: organic, paid, direct, SMS, affiliate, POS, and any orders the tracking missed. A healthy figure depends on your channel mix; the alert fires when it is suspiciously high despite an active email programme.
Self-hosted vs managed-WooSame definition. Self-hosted sync lag can briefly mis-time an order against the click window; managed-Woo with reliable webhooks aligns more tightly.
Time window30D
Alert trigger>30% revenue unattributed despite active email, driven by sentiment_key: wc_xc_orders_vs_email_attribution
Rolesowner, marketing, finance

Calculation

Calculated automatically from your WooCommerce 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 US homewares brand on managed-Woo with Klaviyo connected. 30-day window 14 Mar 26 to 12 Apr 26. Total Woo revenue (completed + processing) is $467,200. Klaviyo ran 9 campaigns and 6 flows in the window.
Email sourceTypeAttributed revenueShare of total
Welcome FlowFlow$38,4008.2%
Abandoned Cart FlowFlow$51,90011.1%
Spring Sale broadcast (22 Mar)Campaign$42,3009.1%
Post-Purchase FlowFlow$14,7003.1%
Back-in-Stock FlowFlow$9,8002.1%
All other campaigns / flowsMixed$18,9004.0%
Email attributed (subtotal)$176,00037.7%
Unattributed$291,20062.3%
Four things to notice:
  1. 62.3% unattributed is above the 30% alert line, so the card flags it. But before assuming broken tracking, check the channel mix. This brand also runs heavy Google Shopping and paid social; a large legitimately-non-email slice is expected. The alert is a prompt to investigate, not proof of a bug, the question is whether the unattributed share is higher than the channel mix can explain.
  2. Flows out-earn campaigns. Abandoned Cart and Welcome flows together drive $90,300, more than every broadcast combined. This is the normal healthy DTC pattern; if broadcasts dominate and flows are thin, the flow programme is under-built. Cross-reference Klaviyo Flow Revenue.
  3. The join uses the Woo order.total, not Klaviyo’s figure. Klaviyo tracks its own “Placed Order” revenue value, which can drift from the true Woo total (currency rounding, partial captures). By matching back to the Woo order by email + timestamp, the card reports the authoritative Woo revenue per campaign, so the subtotal reconciles cleanly against Total Revenue.
  4. A sudden jump in unattributed often means tracking broke. If this brand redeployed their theme and the Klaviyo onsite snippet stopped firing, attributed revenue would collapse and the unattributed row would spike, even though email is still sending. That pattern (email volume steady, attributed revenue down, unattributed up) is the signature this card is built to catch.

Sibling cards merchants should reference together

CardWhy pair it with this card
WC Total RevenueThe denominator. The attributed subtotal plus the unattributed row must equal this.
WC Email Share of Total Store RevenueThe single-number version of this card. This card breaks that share down by campaign and flow.
WC Revenue by Payment MethodAnother way to slice the same total revenue; pair to triangulate where unattributed revenue is really coming from.
WC Top Customers by LTVWhich customers the email-attributed orders come from; high-LTV customers should show strong flow attribution.
WC High-Value Customers Unengaged on EmailIf attribution is falling, disengaged top spenders are often part of the cause.
Klaviyo Flow RevenueThe flow-level source on the ESP side. Should reconcile with the flow rows here.

Reconciling against WooCommerce

This is a cross-channel card. It requires BOTH connectors. For this card to populate you must have both the WooCommerce connector and an email connector (Klaviyo, Dotdigital, or Mailchimp) connected in the same Vortex IQ workspace. WooCommerce supplies the orders and their authoritative totals; the email connector supplies the campaign/flow attribution. With only one side connected the card cannot run the join and renders empty (or shows 100% unattributed). How the two sides are joined:
Join keyWooCommerce sideEmail side
Customer emailBilling / account email on the orderSubscriber email the ESP attributed the order to
Order timestampdate_created of the orderThe ESP “Placed Order” event time within the attribution window
Revenue figureorder.total (authoritative)ESP-tracked value (used only to confirm the match, not to report)
Campaign / flownot present on WooESP campaign or flow id the click belongs to
Where to verify each side:
  • WooCommerce revenue: WP Admin → WooCommerce → Reports → Sales by date for the period total (the denominator).
  • Email attribution: Klaviyo → Analytics → Campaigns / Flows → Attributed revenue; Mailchimp → Reports → Revenue per campaign; Dotdigital → Reports → Email revenue.
Why rows may be missing or differ from a manual comparison:
ReasonEffect
One connector not connected. Only Woo or only the ESP connected.Card empty or 100% unattributed
Email mismatch. Guest checkout under a different email from the subscriber record breaks the join; that revenue lands in “unattributed”.Unattributed inflated
Attribution window. ESP windows differ (5 / 7 / 14-day); a longer window attributes more orders.Attributed share shifts 2-5 ppt or more
Tracking breakage. A broken onsite snippet or missing utm/click tracking means real email orders are not attributed.Unattributed spikes while email volume is steady
ESP revenue vs Woo revenue. The card reports Woo order.total, not the ESP’s tracked value, so a per-campaign figure may differ slightly from the ESP dashboard.Small per-campaign differences
Timezone. Woo on WP-site timezone, ESP on its account timezone, Vortex IQ on UTC. Orders near the window edge can shift a day.Boundary effects
Sync lag. Self-hosted Woo webhook delay can mis-time an order against the click window.Brief, self-resolving
Cross-connector reconciliation: the attributed subtotal plus the unattributed row equals Total Revenue for the same window. The per-flow rows should reconcile with Klaviyo Flow Revenue (allow for the Woo-total vs ESP-tracked-value difference). A large unexplained “unattributed” share with healthy email volume is the signature of broken tracking, not weak email.

Known limitations / merchant FAQs

Why is this card empty (or showing 100% unattributed)? Because it joins two connectors. You need both the WooCommerce connector and an email connector (Klaviyo, Dotdigital, or Mailchimp) connected in the same Vortex IQ workspace. With only WooCommerce connected there is no attribution data, so every order falls into “unattributed”. Connect the ESP and the breakdown populates. Is a high unattributed share always bad? No. Unattributed simply means “no email click in the window”, which legitimately covers organic, paid search, paid social, direct, SMS, affiliate, and POS. A brand with heavy paid acquisition will always have a large non-email slice. The alert fires when the unattributed share is high relative to your channel mix and despite an active email programme, which usually points at broken tracking. Why does a campaign’s revenue here differ slightly from my Klaviyo dashboard? This card reports the authoritative WooCommerce order.total, matched back by email and timestamp, whereas the ESP shows its own separately-tracked “Placed Order” value. Currency rounding, partial captures, and tax handling cause small per-campaign differences. The totals reconcile against Woo Total Revenue. How does the attribution window affect the numbers? The card uses the ESP-defined window (Klaviyo 5-day click by default, Mailchimp 7-day, Dotdigital 14-day). A longer window credits more orders to email, lowering the unattributed share. If you change the window in your ESP, expect the split here to move. Why did attributed revenue suddenly collapse? The classic cause is a broken onsite tracking snippet, often after a theme update or plugin change, so clicks stop being recorded. Email keeps sending, but orders no longer attribute, and the unattributed row spikes. Check that the ESP’s onsite/tracking script still fires on the storefront. Do refunds change the attribution? No. Attribution is fixed at order time and the figures are gross of refunds, consistent with Total Revenue. A heavily-refunded campaign still shows its original attributed revenue here; check refund cards separately for net performance. Guest orders are not attributing, why? A guest who checks out with a different email from their newsletter subscription cannot be matched to their subscriber record, so that revenue lands in “unattributed”. Encouraging account creation or consistent email capture at checkout improves attribution coverage.

Tracked live in Vortex IQ Nerve Centre

Orders -> Email Campaign Attribution is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce 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.