Shopify reporting and where it stops
Shopify's built-in reporting is good at what it covers. Sales by product, by channel, by period, conversion, repeat purchase behaviour, and a picture of what your storefront is doing that is genuinely useful.
Its boundary is precise: it reports on what happened inside Shopify. For a Malaysian merchant, a significant part of the money never appears there.
What it does well
Worth acknowledging before the limitations, because it means you do not need to rebuild any of this.
Sales and order analytics, comprehensively — by product, variant, collection, channel, discount code and period.
Customer behaviour. Repeat rate, cohorts, lifetime value on the revenue it can see.
Conversion. Where people leave the funnel, which is storefront information you cannot get anywhere else.
Traffic and its sources.
For merchandising and marketing questions, it is the right tool and it is already there.
Where it stops
Payment fees. The transaction fee and settlement fields are empty on a Malaysian store, because Shopify Payments is unavailable here and Shopify never received the settlement data — see what the Shopify Admin API actually returns.
Actual delivery cost. Shopify knows what you charged for shipping. Your courier knows what it charged you, on an invoice arriving later with surcharges applied after the fact — see shipping revenue versus shipping cost.
Cost of goods, unless maintained. The field exists and is frequently empty or stale, and Shopify has no way to know whether the figure in it is current — see cost of goods sold for Shopify stores.
Everything outside the store. Rent, salaries, your accountant, subscriptions, the apps themselves, and any other sales channel you run.
Cash. When money actually arrived, what is still in flight, what is held in reserve.
So Shopify can tell you what you sold and largely cannot tell you what you earned. That is not a criticism — it is a storefront platform reporting on the storefront.
The reports that need a different source
Four questions that Shopify cannot answer alone, and each is a question businesses ask monthly.
What is my actual margin? Needs cost of goods, payment fees, real delivery cost and returns attached at order level — see the real margin on a Shopify order.
Which channel is most profitable? Needs each channel's own fee structure, and marketplace payouts look nothing like gateway settlements — see which sales channel is most profitable.
What is my cash position? Needs settlement timing, reserve, receivables and payables — none of which live in a storefront — see settlement timing and your cash forecast.
Are my books right? Needs the three-way match across store, gateway and bank — see the three-way match a Malaysian store needs.
The trap of the second reporting tool
The common response is an analytics app that produces prettier versions of the same information.
It generally does not help, because the constraint is not presentation. It is that costs which never entered Shopify cannot be reported from Shopify, however the report is drawn. An app reading only Shopify has exactly the same boundary.
Worse, it creates a second set of numbers. Two systems reporting revenue from different assumptions will disagree, and the time then goes into reconciling reports against each other rather than into the underlying question — see Shopify apps and the costs they add.
The productive move is not another view of the same data. It is bringing the missing data in — gateway settlements, courier charges, maintained costs — and reporting from the combined picture.
Dividing the work sensibly
A clean split that avoids duplication.
Shopify for storefront questions. Conversion, traffic, merchandising, which products are selling, customer behaviour. Its own data, its own domain, and no other tool does it better.
Your accounting system for money questions. Margin, cash, channel profitability, tax, receivables and payables. These need data from several sources joined, which is what an accounting system is for.
One authoritative source per number. Revenue reported from one place. If two systems both report it and they differ, decide which is right and make the other read from it rather than compute its own.
That division means Shopify's reporting stays valuable rather than being replaced, and the questions it cannot answer are answered somewhere that has the data — see why integration depth beats feature count.
Common questions
What can Shopify's built-in reporting do well?
Sales analytics by product, variant, collection, channel, discount and period; customer behaviour including repeat rate and cohorts; conversion and funnel drop-off; and traffic sources. For merchandising and marketing questions it is the right tool and needs no replacement.
Why can Shopify not report your true margin?
Because the costs are not in it. Payment fees and settlement data are absent on a Malaysian store since Shopify Payments is unavailable here, actual courier charges arrive later on a separate invoice, cost of goods is only present if the field is maintained, and overheads and other channels sit entirely outside the platform.
Does an analytics app solve the gap?
Usually not, because the constraint is data rather than presentation. An app reading only Shopify has the same boundary and produces a prettier version of the same partial picture, while adding a second set of numbers that will disagree with your accounts. The productive move is bringing gateway settlements, courier charges and maintained costs into one place.
How should reporting be divided between Shopify and an accounting system?
Shopify for storefront questions — conversion, traffic, merchandising, customer behaviour — where it holds the data and does the job well. The accounting system for money questions like margin, cash, channel profitability and receivables, which require several sources joined. Each number should have one authoritative source, with the other system reading it rather than computing its own.
Related: the real margin on a Shopify order · what the Shopify Admin API actually returns · which sales channel is most profitable
Read next
See what you could build
Start a free trial and describe what your business needs in plain language — SmartB Studio builds the module for you.
Start free trial