Ecommerce attribution report

Read the ecommerce attribution report: six KPI formulas, the funnel, breakdowns, estimated search attribution and plan limits.

Report overview#

The page is /dashboard/mkit/ecommerce with endpoint GET /api/v1/reports/ecommerce?site=&range=. Brand terms use GET/PUT /api/v1/sites/:siteId/brand-terms. The report relies entirely on GA4 ecommerce events and metrics; GSC is used only for search attribution.

AreaContent
Six KPI cardsRevenue, orders, AOV, conversion rate, cart abandonment, refund rate
Trend and funnelpurchaseRevenue by date; view_item → add_to_cart → begin_checkout → purchase
BreakdownsTop products, country, category, device, channel
AttributionSearch attribution, brand split, multi-touch estimate, Quick Wins
Note: The page requires GA4 to be connected; it is gated when GTM is not marked deployed. Free returns locked; Pro and Business are supported.

The six KPI formulas#

KPIFormula
RevenuepurchaseRevenue
Orderstransactions
AOVpurchaseRevenue / transactions
Conversion ratetransactions / sessions × 100
Cart abandonment(1 - min(1, checkouts / addToCarts)) × 100
Refund raterefundValue / purchaseRevenue × 100
Note: Revenue, orders and AOV are compared with the previous window; when the previous period is 0 the delta is null rather than a divide-by-zero fill.

Funnel and insight thresholds#

The funnel uses eventCount for four standard ecommerce events: view_item → add_to_cart → begin_checkout → purchase; pct_of_first = the current step count / the view_item count.

  • If checkouts / add_to_cart < 50%, a checkout-stage insight is generated
  • If add_to_cart / view_item < 35%, a cart-stage insight is generated
  • Insights are threshold hints for locating the largest drop-off, not a replacement for business judgement
Note: The funnel uses event counts, not deduplicated users; repeat visits or multiple devices count again, so step ratios are not strict user conversion rates.

Breakdowns#

AreaDimensions and metrics
Top ProductsitemId × itemName with itemRevenue / itemsPurchased / transactions, sorted by revenue descending
Revenue by countrycountry × purchaseRevenue; shares use this table's total as the denominator
Revenue by categoryitemCategory × purchaseRevenue
Revenue by devicedeviceCategory × purchaseRevenue
Channel comparisonsessionDefaultChannelGroup × purchaseRevenue / transactions
Refund analysisdate × refundValue, keeping only days greater than 0
Note: Top Products row count depends on the plan: Pro 10 rows, Business 25 rows.

Search attribution, brand split and multi-touch#

Search attribution joins GSC query × page clicks with GA4 landingPagePlusQueryString × transactions/purchaseRevenue by page, then allocates conversions and revenue to queries by click weight. The GSC window automatically skips the last 3 days to avoid data delay.

Note: This is an estimate, not exact attribution: roughly 80-90% for a single-visit journey and below 60% for complex paths; GSC itself also has a 2-3 day delay. Without GSC, search_attribution is null and the page shows Connect GSC to unlock.
  • Brand split: configure brand terms first via GET/PUT /api/v1/sites/:siteId/brand-terms; the share of queries matching them yields branded_pct and non_branded_pct
  • Multi-touch: a two-touch estimate from firstUserSource × sessionDefaultChannelGroup; when first equals last or last is Direct it counts toward single_touch_pct, and multi_touch_pct = 100 - single
  • Multi-touch has no plan gate and is computed for both Pro and Business; it remains a two-touch estimate, not full path-level attribution

Plan limits and the no-data guide#

ItemRule
Time windowDefault 28 days; Pro 28 days, Business 90 days
Top ProductsPro 10 rows, Business 25 rows
Cache5 minutes
Freelocked; Pro/Business supported
Quick WinsBusiness only: non-brand, average position > 8, top 8 by revenue, with stars computed from revenue and position
Multi-touchNo plan gate; computed for both Pro and Business
Note: With no purchase data the report returns no_purchase_data=true and the page shows a guide card; first wire up purchase, add_to_cart, begin_checkout and view_item correctly in GA4/GTM.