Ecommerce Analytics: Which Metrics to Track, and Where the Numbers Come From
Ecommerce analytics for DTC brands: the metrics that matter, their exact formulas, where each number lives, and a starter dashboard you can build this week.
Article summary
TL;DR
Ecommerce analytics is the practice of measuring how your store acquires, converts, earns from and keeps customers, then acting on it. A useful setup answers five questions: what a customer costs, where shoppers drop, what each order earns, who comes back, and how much revenue the payment layer actually collects.
- Group metrics by question: acquisition, funnel, order economics, retention, payments. Each one drives a different decision.
- Use the exact definitions of your tools. Shopify's conversion rate counts sessions that completed checkout; GA4's session key event rate counts sessions with any key event.
- Your store platform, GA4, ad platforms and payment processor each count revenue differently. Pick one source of truth per metric.
- Revenue isn't real until it's settled: processor payouts minus refunds, disputes and fees is the number finance trusts.
- Most dashboards skip payments. Acceptance rate, refund rate and dispute rate belong next to conversion rate.
On this page
Ecommerce analytics isn't a dashboard. It's a short list of questions about your business, each answered by a metric with an exact formula and one trusted source. This guide groups the metrics that matter for a DTC brand by question, gives the definitions your tools actually use, and shows how to reconcile the numbers when your store, GA4, ad platforms and payment processor disagree. By industry: benchmarks for supplement brands, benchmarks for skincare brands, benchmarks for online pharmacies, benchmarks for telehealth companies, benchmarks for fitness brands and benchmarks for info product businesses.
What is ecommerce analytics?
Ecommerce analytics means collecting data from every system that touches an order, then using it to decide what to change. The data comes from your store platform, your analytics tool, your ad accounts, your email and SMS tools and your payment processor. None of them sees the whole picture.
The simplest way to organize it is by the question each metric answers.
Acquisition
What does a new customer cost, and which channels bring them? CAC, CPA, ROAS, new customer share.
Funnel
Where do shoppers drop between landing and paying? Sessions, add-to-cart, reached checkout, conversion rate.
Order economics
What does each order earn after costs? AOV, net sales, contribution margin, LTV.
Retention
Who buys again, and for how long? Returning customer rate, purchase frequency, cohorts, churn.
Payments
How much of the revenue is actually collected? Acceptance rate, refund rate, dispute rate, settled revenue.
Analytics guides also sort the work into four types: descriptive (what happened), diagnostic (why), predictive (what's likely next) and prescriptive (what to do). For most DTC brands, clean descriptive and diagnostic reporting comes first. A forecast built on purchase counts you can't trust is just a confident guess.
Acquisition metrics: what a new customer costs
Acquisition metrics tell you whether you can afford to keep buying growth. Shopify's own metrics guide defines them this way:16Shopify, Ecommerce metrics guide (formulas for CAC, ROAS, repurchase rate)
| Metric | Formula | Read it with |
|---|---|---|
| Customer acquisition cost (CAC) | Total sales and marketing costs ÷ new customers acquired | Contribution margin and LTV |
| Cost per acquisition (CPA) | Campaign spend ÷ attributed acquisitions | The attribution window used |
| Return on ad spend (ROAS) | Revenue attributed to ads ÷ ad spend | Margin, not revenue |
| New customer share | Revenue from first-time customers ÷ total revenue × 100 | Returning customer rate |
ROAS is only as good as its attribution
The "revenue attributed to ads" in ROAS comes from each ad platform's own counting, with its own attribution window. Add up Meta, Google and TikTok and you will often get more purchases than orders in your store. Use blended CAC (all marketing spend ÷ all new customers) as the reality check, and see attribution modeling for how credit gets split.
CAC alone says little. A $60 CAC is cheap if the first order leaves $70 of contribution margin and expensive if it leaves $20. How long it takes to earn that cost back is the CAC payback period.
Conversion funnel: where shoppers drop
The funnel tracks the same shoppers from landing to purchase. In Shopify, every step is measured in sessions, and each rate is that step's session count divided by total sessions.1Shopify Help Center, Behavior reports
Fig. 1Shopify's conversion funnel, step by step
- SessionsTotal sessions on the online store
- Added to cartSessions where a product was added to a cart
- Reached checkoutSessions with user input during checkout
- Completed checkoutSessions where a customer purchased
every step is a share of sessions
Two definitions matter here:
- Shopify conversion rate is "the percentage of sessions that resulted in a purchase." Shopify warns that your order count and your sessions that completed checkout "might not be the same": one session can hold more than one purchase.1Shopify Help Center, Behavior reports
- GA4 session key event rate is the number of sessions in which a key event happened ÷ total sessions.5Google Analytics Help, Analytics dimensions and metrics If you've marked several events as key events, it's not a purchase conversion rate. Build a purchase-only rate instead.
Shopify sessions changed on September 21, 2026
Shopify updated how it measures sessions: the default view now focuses on human visitors and classifies bot traffic more consistently. Sessions, conversion rate, add-to-cart and checkout rates may look different, while orders, sales and customer counts are unchanged. Shopify's advice is to treat post-update reports as a new baseline.3Shopify Changelog, Shopify Analytics session measurement improvements, September 21, 2026 Don't compare September 2026 conversion rates with August without that caveat.
The step between "reached checkout" and "completed checkout" mixes two very different losses: shoppers who leave, and shoppers whose payment was declined. Our guide to checkout abandonment rate shows how to separate them, and how to increase ecommerce conversion rates covers what to fix first.
Order economics: AOV, contribution margin and LTV
Order economics tells you what each sale earns. Use the platform's exact definitions, because "sales" means four different things in Shopify's data model:2Shopify Dev Docs, ShopifyQL sales schema
| Term | Shopify definition |
|---|---|
| Gross sales | Sales revenue before discounts and returns are taken out |
| Net sales | Gross sales − discounts − sales reversals (refunds, returns, cancellations, edits); excludes taxes, shipping, duties and fees |
| Total sales | Net sales + additional fees + duties + shipping charges + taxes |
| Average order value (AOV) | (Gross sales − discounts) ÷ orders, before post-order adjustments |
AOV is measured before refunds. A bundle that lifts AOV but doubles returns can look like a win on the AOV chart and a loss in net sales.
Contribution margin is what an order leaves after the costs that grow with each order: product cost, pick-and-pack and shipping, payment fees, and returns. It's the number to compare with CAC.
Fig. 2From order value to contribution margin
- Gross sales
- $80.00
- Discount code
- −$8.00
- Shipping charged
- +$6.00
- Product cost
- −$22.00
- Fulfillment and shipping
- −$9.00
- Payment processing fee
- −$2.60
- Contribution margin
- $44.40
Illustrative record.
the number CAC has to fit inside
Customer lifetime value (LTV) extends that view over the whole relationship: average order value × purchase frequency × customer lifespan, multiplied by margin. The formulas and their traps are in what is CLTV. The full cost-side view, product by product and channel by channel, is in our guide to profitability analysis.
Retention: who comes back
Retention metrics tell you whether the first order was the start of a relationship. Shopify's metrics guide defines the basics:16Shopify, Ecommerce metrics guide (formulas for CAC, ROAS, repurchase rate)
| Metric | Formula |
|---|---|
| Returning customer rate | Returning customers ÷ total customers × 100 |
| Repurchase rate | Customers with more than one order in the period ÷ total customers in the period × 100 |
| Purchase frequency | Total orders ÷ customers who ordered in the period |
| Churn rate (subscriptions) | Customers lost during the period ÷ customers at the start × 100 |
A blended returning customer rate hides the most useful signal: whether newer customers behave better or worse than older ones. That's what cohort analysis shows, by following each month's new customers separately.
For subscription brands, add churn rate, MRR and gross vs net retention. Split churn into voluntary cancellations and failed renewals: they have different causes and different fixes, covered in subscription payment failures.
Payment metrics most dashboards miss
Searches for "ecommerce payment analytics" and "transaction analytics" point at a gap: most ecommerce dashboards stop at the purchase event. Between "clicked pay" and "money in the bank," three things can still go wrong.
| Metric | Formula | Source |
|---|---|---|
| Payment acceptance rate | Authorized payments ÷ payment attempts, deduplicated | Payment processor |
| Refund rate | Refunded amount (or count) ÷ sales in the period | Store platform or processor |
| Dispute rate | Disputes ÷ settled transactions, by count | Payment processor |
| Settled revenue | Processor gross − refunds − disputes − fees | Processor payout reports |
How you count attempts changes the acceptance rate a lot: blocked payments, failed 3D Secure and retries all need a rule. The details are in payment acceptance rate.
The dispute rate isn't just a health metric: card networks measure it too. Visa's acquirer monitoring program (VAMP) counts fraud reports plus disputes, divided by settled card-not-present transactions, in number of transactions, not amount. Its "Excessive" merchant threshold dropped to 150 basis points (1.5%) on April 1, 2026 in Asia-Pacific, Canada, Europe and the US, with a minimum of 1,500 fraud reports and disputes a month.11Visa, Visa Acquirer Monitoring Program fact sheet, 2025 Mastercard divides one month's chargebacks by the previous month's payments.12Stripe Docs, Card network monitoring programs Track your rate the way the networks do, by count. How to keep it down is in chargeback prevention.
- Conversion rate drops, add-to-cart steadyThe loss is in checkout or paymentAcceptance rate by processor, card country and payment method
- Orders steady, payouts lower than expectedRefunds, disputes or fees are risingPayout report by reporting category
- Many small declined attempts in a short timePossible card testingBlock rules and fraud filters; see fraud prevention
- Disputes rising on one product or offerDescription, delivery or billing terms confuse buyersDispute reasons by SKU and offer
Inside Tagada
Build the funnel once, route every customer to the right offer
Checkout, upsells and subscriptions on one flow, with conditions per country, order or customer.

Where each number lives
Every system on your stack counts something slightly different. Knowing which one owns which metric ends most "the numbers don't match" meetings.
| Source | What it counts well | What it misses or inflates |
|---|---|---|
| Store platform (Shopify, WooCommerce) | Every order, net sales after reversals, customers, AOV | Traffic quality, ad attribution, declined payments |
| GA4 | Sessions, users, traffic sources, funnel events | Purchases its tag never received; refunds you don't send |
| Ad platforms (Meta, Google Ads, TikTok) | Clicks, spend, conversions they attribute to themselves | Overlap with other channels; each uses its own attribution window |
| Payment processor (Stripe, Adyen, PayPal) | Attempts, authorizations, declines, refunds, disputes, fees, payouts | Which campaign or page brought the buyer |
| Email and SMS tool | Sends, clicks, revenue attributed to messages | Overlap with ads; its own attribution rules |
One owner per metric
Orders and net sales come from the store platform. Sessions and funnel steps come from your analytics tool. Spend comes from the ad platforms. Collected revenue, refunds and disputes come from the payment processor. Never compute a metric by mixing two sources' versions of the same thing.
Why GA4 and Shopify never show the same revenue
Expect a gap. The question is whether it's stable and explainable. The usual causes, from the GA4 and Shopify documentation:
- Missed events. GA4 only counts purchases its tag received. A refused consent banner, an ad blocker or a closed tab before the thank-you page drops the order from GA4, not from Shopify.
- Duplicate events. Send each purchase once, with a
transaction_id, which Google calls "required for purchases and refunds."9Google for Developers, Measure ecommerce (GA4) A thank-you page that fires on reload counts the same order twice. - Refunds. GA4's purchase revenue is revenue "minus any refunds given," but only refunds you send as
refundevents. Gross purchase revenue ignores them.5Google Analytics Help, Analytics dimensions and metrics - Currency. Set
currencywhenever you sendvalue.9Google for Developers, Measure ecommerce (GA4) GA4 converts to the property's currency using the prior day's exchange rate, so multi-currency stores never match to the cent.8Google Analytics Help, Currency in Analytics - What "value" contains. If your purchase event sends items only, while Shopify's total sales include shipping, taxes and duties, the gap is structural.2Shopify Dev Docs, ShopifyQL sales schema
- Test orders. Shopify keeps test orders and simulated transactions out of payouts and reports.4Shopify Help Center, Placing test orders Your GA4 tag can still record them as purchases. Filter internal traffic or test in a separate property.
- Time zones. Store, GA4 and processor can each run on a different time zone, so late-evening orders land on different days.
- Orders vs analytics purchases. Count store orders and GA4 purchases (with distinct transaction IDs) for the same days and time zone. Track the match rate over time.
- Net sales vs purchase revenue. Compare like with like: items only, after refunds, same currency.
- Store sales vs processor gross. Store orders paid by card should match the processor's successful charges. Gaps point to manual orders, other payment methods or failed captures.
- Processor gross vs payout. At Stripe, the payout reconciliation report lists every payment, refund, dispute and fee included in each payout, grouped by reporting category.10Stripe Docs, Payout reconciliation report
- Settled revenue. Gross charges − refunds − disputes − fees = what reached the bank. That's the revenue to divide CAC into.
Run it every month. A stable gap of a few percent is normal; a sudden jump means something broke.
The event setup behind steps 1 and 2 is in GA4 ecommerce events. Sending the purchase from your server, once the payment has succeeded, removes most missed and duplicate events: see server-side tracking for ecommerce.
A starter ecommerce analytics dashboard
Start with one page and no more than a dozen metrics. Every line has a formula, a single source and a cadence that matches how fast you can act on it.
| Metric | Formula | Source | Cadence |
|---|---|---|---|
| Net sales | Gross sales − discounts − sales reversals | Store platform | Daily |
| Orders | Count of orders | Store platform | Daily |
| Conversion rate | Sessions that completed checkout ÷ sessions | Store platform or GA4 (pick one) | Weekly |
| Reached-checkout rate | Sessions that reached checkout ÷ sessions | Store platform | Weekly |
| Payment acceptance rate | Authorized ÷ deduplicated attempts | Payment processor | Daily, with alerts |
| AOV | (Gross sales − discounts) ÷ orders | Store platform | Weekly |
| Blended CAC | All marketing spend ÷ new customers | Ad platforms + store platform | Weekly |
| Contribution margin per order | Net revenue − product, fulfillment, payment and return costs | Store platform + cost sheet | Monthly |
| Returning customer rate | Returning customers ÷ total customers | Store platform | Monthly |
| Refund rate | Refunds ÷ sales | Store platform or processor | Weekly |
| Dispute rate | Disputes ÷ settled transactions, by count | Payment processor | Weekly |
| Settled revenue | Processor gross − refunds − disputes − fees | Processor payout report | Monthly |
Segment before you add metrics
When a number moves, split it by channel, device, country, new vs returning and, for payments, by processor and card type. Twelve metrics split five ways answer more questions than sixty metrics in a blend.
What to watch in real time
Most metrics are fine weekly. A few need eyes or alerts within minutes, because a broken checkout or a processor outage costs orders every hour. Know how fresh each source really is:
Fig. 3How fresh is each number?
- Shopify Live ViewVisitors right now: active in the last 5 minutes
- GA4 RealtimeLast 30 minutes, best effort, limited attribution
- GA4 intradayAbout 2 to 6 hours
- GA4 dailyAbout 12 hours
- Full processingCan take 24 to 48 hours
realtime views are for alerts, not reporting
Shopify's Live View counts visitors who loaded a page or clicked in the last 5 minutes, in store time.15Shopify Help Center, Live View GA4's Realtime report covers the last 30 minutes, caps each card at 700 rows and has limited attribution,13Google Analytics Help, Realtime report and Google notes that data processing can take 24 to 48 hours.14Google Analytics Help, Data freshness Don't close the books on yesterday from a realtime view.
What deserves an alert: a drop in payment acceptance rate, a processor returning errors (where dynamic payment routing can send payments elsewhere), and bursts of small declined attempts that look like card testing (see ecommerce fraud prevention).
Common ecommerce analytics mistakes
| Mistake | Why it misleads | Fix |
|---|---|---|
| Mixing sessions and users | GA4 active users are "distinct users"; sessions restart after 30 minutes of inactivity by default. A per-user rate and a per-session rate can't be compared | Pick one denominator per metric and write it down |
| Comparing tools' conversion rates | Shopify's rate is purchases per session; GA4's session key event rate counts any key event | Compare each tool with itself over time |
| Ignoring attribution windows | GA4 defaults to a 90-day lookback for most key events; lookback changes only apply going forward, while a model change rewrites history | Note the settings next to the report; don't change them mid-quarter |
| Summing platform-reported revenue | Each ad and email tool credits itself | Use blended CAC and store orders as the total |
| Leaving test orders in | Shopify excludes them, GA4 may not | Filter internal traffic; test on a separate property |
| Mixing currencies | GA4 converts at the prior day's rate | Report in one currency and reconcile in the processor's settlement currency |
| Treating gross sales as revenue | Refunds and disputes arrive weeks later | Report net sales weekly and settled revenue monthly |
The session and user definitions come from Google's documentation: a session times out after 30 minutes of inactivity by default, and session counts in standard reports are estimates.6Google Analytics Help, About Analytics sessions The attribution rules are in GA4's attribution settings: 30-day default lookback for acquisition key events, 90 days for the others.7Google Analytics Help, Select attribution settings
The tracking behind the numbers
Metrics are only as good as the events underneath. If your purchase counts don't hold up, fix collection before building more reports:
- the GA4 event list and parameters: GA4 ecommerce events and Google Analytics 4 setup;
- sessions that break across a separate checkout or payment domain: cross-domain tracking;
- purchases sent from your server, deduplicated with the browser pixel: server-side tracking;
- choosing tools for ad platforms and analytics: conversion tracking tools;
- how credit is split between channels: attribution modeling.
How Tagada helps
Checkout, payments and tracking from one system
Tagada runs the checkout with one-click upsells, order bumps, A/B tests, Apple Pay and Google Pay, and sends tracking server side to Meta, Google and TikTok. On the payment side, it routes across TagadaPay and processors such as Stripe, NMI and Airwallex, with one logic and a cascade to another processor when one is down or times out. It runs standalone, with Shopify, with WooCommerce or headless. Pricing is on the pricing page. Tagada follows Visa and Mastercard rules and the laws that apply to payments.
Whatever tools you use, the test is the same: can you put store orders, analytics purchases and processor payouts for one month side by side, and explain every gap?
Frequently asked questions
What is ecommerce analytics?
What metrics should an ecommerce analytics dashboard track?
What are the types of ecommerce analytics?
Why doesn't GA4 revenue match Shopify?
What is ecommerce payment analytics?
How often should you check ecommerce metrics?
Sources
Checked October 14, 2026- Shopify Help Center, Behavior reports
- Shopify Dev Docs, ShopifyQL sales schema
- Shopify Changelog, Shopify Analytics session measurement improvements, September 21, 2026
- Shopify Help Center, Placing test orders
- Google Analytics Help, Analytics dimensions and metrics
- Google Analytics Help, About Analytics sessions
- Google Analytics Help, Select attribution settings
- Google Analytics Help, Currency in Analytics
- Google for Developers, Measure ecommerce (GA4)
- Stripe Docs, Payout reconciliation report
- Visa, Visa Acquirer Monitoring Program fact sheet, 2025
- Stripe Docs, Card network monitoring programs
- Google Analytics Help, Realtime report
- Google Analytics Help, Data freshness
- Shopify Help Center, Live View
- Shopify, Ecommerce metrics guide (formulas for CAC, ROAS, repurchase rate)
Tagada
Checkout, payments and tracking in one place
Funnels, one-click upsells, subscription billing and payment routing, on one customer record.
- 01Create your free account
- 02Connect your store or build a checkout
- 03Launch funnels, upsells and subscriptions
