(03) 8832 8005

Open four tabs right now. Shopify Admin, GA4, Meta Ads Manager, Klaviyo. Pull last month’s revenue from each one. You will get four different numbers, and the spread between the highest and the lowest will probably be wider than your entire net profit for the month.

Most Aussie founders respond to this in one of two ways. Either they pick whichever number looks best and quote it in the team meeting, or they decide all analytics is broken and go back to eyeballing the Shopify dashboard once a day. Both responses cost you money, because the decisions you make next depend entirely on which number you believed.

The brands that scale past 500k a month do something different. They stop trying to make the numbers agree and instead build a reconciliation habit: one ledger, an expected variance band for every other source, and a written explanation any time a source drifts outside its band. A GA4 figure sitting 10 to 30 percent under Shopify is completely normal and needs no action. That same gap jumping to 64 percent overnight means a tracking script broke on your checkout, and every hour you spend not noticing is an hour of blind ad spend.

Four Platforms, Four Counting Rules, One Bank Account

Your platforms are not lying to you. They are answering four completely different questions, and nobody told you the questions were different.

Shopify answers “what did we sell?” It records revenue from completed orders inside your store, on the order date, in your store currency. Gross sales excludes GST. Net sales takes gross and subtracts discounts and returns. That is a ledger built on transactions, not on tracking.

GA4 answers “what did the browser tell us?” It counts purchase events fired by a tag in the customer’s browser. If the tag does not fire, the revenue does not exist. Sessions end after 30 minutes of inactivity, and Shopify’s own session counting rolls over at midnight UTC while your reports display in your store timezone. That single detail shifts revenue between days for every Australian store on the planet.

Meta answers “who did we influence?” On its default window of 7 day click plus 1 day view, Meta claims a purchase made within a day of someone merely seeing your ad. Never clicking. Just seeing it. Those buyers are real customers, but they will never appear inside Shopify as a Meta order.

Klaviyo answers “who did we last touch?” By default it assigns the full value of an order to the last message a customer clicked or opened within roughly a 5 day window, and a 1 day window for SMS clicks. Open-based attribution in a world of Apple Mail privacy protection means machines are triggering some of those opens, not people.

Four honest answers to four different questions. The mistake is treating them as four attempts at the same answer.

Reconciliation ledger dashboard comparing Shopify net sales against GA4, Meta and Klaviyo reported revenue
One ledger, every other source measured against it, and an expected band for each. Anything outside its band gets a written explanation before the month closes.

Step 1: Name Your Ledger Before You Compare Anything

You cannot reconcile without a ledger, and the ledger is not up for debate. It is Shopify net sales. Not total sales, not GA4, not the blended figure your dashboard app invented.

Net sales is the right choice because it is the only number that behaves like money. It nets off discounts and refunds, it excludes GST so you are not counting the tax office’s revenue as your own, and it ties directly to what lands in your account once fees are settled. Every other figure in your business gets measured against it.

Write this down somewhere the whole team can see it, because the arguments you avoid are worth more than the arguments you win:

The moment somebody adds Meta revenue to Klaviyo revenue to Google revenue, you have a number larger than your actual sales and a marketing plan built on fiction. I have sat in front of Aussie brands whose “channel totals” added up to 140 percent of their real revenue, and every budget decision for the quarter had been made off that spreadsheet.

Step 2: Give Every Source an Expected Variance Band

Here is the shift that changes everything. Stop asking “why do these not match?” and start asking “is this gap the size I expect?” A gap you predicted is information. A gap you did not predict is a fault.

These are the bands to start with. Baseline them against your own store over three clean months, then treat them as tripwires:

Two rules make the bands useful. First, a source that stays inside its band gets no attention, no matter how ugly the gap looks. Second, a source that breaks its band gets a one-line written cause before the month closes. Not a theory. A cause.

Step 3: Diagnose the GA4 Gap in Five Buckets

GA4 will always sit under Shopify, and the reasons sort neatly into five buckets. Work them in this order, because the fix effort climbs as you go down the list.

Once you have named your buckets, the biggest win available is moving your tracking off the browser where you can. Server-side tracking will not close the gap completely, but it reliably narrows it, and it survives ad blockers. If you have not set that up yet, work through the Shopify server-side tracking playbook before you touch anything else in this list.

Daily variance monitor chart showing GA4 purchase revenue tracked against Shopify orders
Plotting the gap instead of the totals is what turns a monthly argument into a four-day alarm. This store lost a checkout tracking script on 22 July and the band caught it.

Step 4: Lock One Meta Attribution Window and Leave It Alone

Meta gives you a dial that changes your reported revenue by more than 90 percent without changing a single thing about your business. Same spend, same month, same customers, four different answers depending on where you leave the dial.

The default 7 day click plus 1 day view is the most generous setting. It runs 20 to 35 percent above what Shopify will confirm, and the excess is almost entirely view-through and modelled conversions. That is not fraud and it is not useless. View-through influence is real. It is just not bankable.

Here is the operating decision. Pick 7 day click only as your internal reporting standard and never change it again. It lands within a few percent of what you can reconcile against the ledger, which means your media buyer and your bookkeeper are finally arguing about the same number.

Then watch for the one signal that means something is genuinely broken: if Meta reports more than double your ledger revenue, you have duplicate events. That is the Pixel and the Conversions API both firing the same purchase without deduplication, and it is one of the most common misconfigurations on Australian Shopify stores. Check your event IDs before you touch a single campaign.

The complementary move is tagging your own traffic properly so Shopify can tell you what it sees, independent of Meta. Clean, consistent UTMs give you a second opinion that costs nothing. The UTM tracking playbook covers the naming convention worth locking in before your next campaign goes live.

Bar chart comparing Meta Ads attribution windows against Shopify order tagged revenue
One ad account, one month, four attribution settings. The 7 day click column is the one that reconciles, so that is the one that belongs in your dashboard.

Step 5: Tighten Klaviyo Before You Quote a Revenue Share

Every founder wants to say email drives 40 percent of revenue. On Klaviyo’s default settings, plenty of stores can say it without any of it being true.

The defaults assign a full order value to the last message a customer clicked or opened inside a 5 day window. Three problems stack up. Apple Mail privacy protection triggers automated opens that no human performed. Bot clicks from security scanners look identical to real clicks. And on a subscription store, a scheduled renewal that was always going to happen gets credited to whatever newsletter happened to land that week.

Melbourne’s Who Gives A Crap runs a large recurring subscription base alongside its one-off range. On default settings, a business shaped like that will hand a meaningful slice of predictable renewal revenue to the email program, and the reported revenue share climbs while nothing about the actual marketing improved. That is not a Klaviyo flaw. It is a settings choice nobody revisited.

Tighten it in four moves inside Klaviyo’s attribution settings:

Expect your email revenue share to fall by a third when you do this honestly. That is the point. A 26 percent number you trust is worth more than a 44 percent number you have to caveat every time you say it out loud.

Step 6: Walk the Ledger All the Way to the Bank

This is the step almost everybody skips, and it is the one that catches actual missing money rather than measurement noise.

Shopify net sales should tie to your accounting revenue exactly. Not approximately. Where it fails, the cause is nearly always one of a short list: payouts landing in the following period, gateway fees netted before deposit, gift card redemptions booked as revenue twice, marketplace and wholesale orders living outside Shopify, or physical retail orders arriving through Shopify POS.

That last one matters more than people expect. Bared Footwear runs physical stores across several Australian cities alongside its online store. Those in-store orders flow into Shopify total sales but never touch GA4, because nobody browsed a website. A brand with that shape will show a permanently wider GA4 gap than a pure online player, and it is a channel mix fact, not a tracking failure. If you do not split your ledger by sales channel before you compare, you will chase a bug that was never there.

Multi-currency does the same thing in reverse. Australian luggage brand July sells into multiple markets, which means presentment currency and store currency diverge on the same order. Compare a converted figure to an unconverted one and you invent a variance out of thin air. Pick store currency for every reconciliation and stay there. The mechanics of tying the ledger to your books are covered in the Shopify and Xero reconciliation walkthrough.

The Tool Setup: A Reconciliation Layer in 40 Minutes

You can run this whole audit in a spreadsheet, and for stores under about 100k a month you probably should. Six rows, six bands, updated monthly. Do not buy software to solve a discipline problem.

Above that, a first-party attribution layer earns its keep because it gives you a fifth opinion that is not dependent on any ad platform’s self-reporting. Triple Whale is the most common choice on Australian Shopify stores. Here is the setup that actually produces a reconcilable number:

One warning worth saying plainly. A first-party pixel is another measurement system with its own assumptions, not an oracle. It belongs in your reconciliation table as another row with its own expected band, not above the table as the final word.

The 30-Minute Monthly Reconciliation Ritual

Here is the whole thing as a checklist. Run it on the third business day of every month, before you make a single budget decision. Half an hour, same order, every time.

Two disciplines make it stick. Keep the sheet as a running history so you can see bands drifting over quarters, and never change a band in the same session where you discovered a breach. Fix first, re-baseline next month.

This slots directly underneath whatever weekly rhythm you already run. If you do not have one yet, the weekly scorecard playbook is the frame this reconciliation feeds.

Why Reconciliation Compounds Faster Than Any Test You Run

Look at what these six steps do together, because the compounding is not obvious until you see it as a system.

Naming the ledger ends the debate about whose number is right, which means meetings get shorter and decisions get faster. Setting bands converts noise into signal, so a broken checkout script surfaces in four days instead of at the end of the quarter. Locking one Meta window means your scaling decisions are made on a figure that survives contact with the bank statement. Tightening Klaviyo means you stop over-investing in a channel that was quietly claiming credit for revenue it did not create. Tying the ledger to your accounts means the money you think you made is the money you actually have.

None of it is glamorous. There is no dopamine hit in a spreadsheet full of green cells. But consider the arithmetic. A store spending 130k a month on media that is over-reading Meta by 30 percent will keep pushing budget into campaigns delivering roughly a third less than the dashboard claims. Nothing about creative, offer or landing page fixes that, because the input to every decision is wrong.

Reconciliation is the cheapest performance work available to you. You are not buying more traffic or building a new funnel. You are making sure the instruments in front of you are calibrated, which raises the quality of every single decision you make afterwards. That is what compounds.

Start this week with one thing. Open your last three closed months, calculate the GA4 gap for each, and see whether it is stable. If it is, your instruments are fine and you can trust your dashboard. If it moved by more than 10 points between any two months, something broke and nobody noticed, and finding it will be the highest-return hour you spend this month.

Inside eCommerce Circle, getting the measurement layer honest is one of the first things we work on with every member, because everything else we build sits on top of it. If you want a second opinion on yours, let’s talk.

The Revenue Reconciliation Audit: Why Shopify, GA4, Meta and Klaviyo Never Agree
Team eCommerce Circle

Written by

Team eCommerce Circle

Helping Shopify brand owners scale smarter through the eCommerce Circle coaching community.

Leave a Reply

Your email address will not be published. Required fields are marked *

Thank You

Your application for the eCommerce Circle was successfully submitted.
We’ll get back to you through your provided details shortly.

Thank You

Your enrolment was successfully submitted, and we’ve added you to the waitlist for your preferred cohort.

Not a Circle Member Yet?
Only members can join cohorts!
Join here.