Shopify's reporting suite exists in a useful middle ground. It's built for stores that care about what happened last week, not stores that need to know what to do next week. For six-figure merchants running tight margins and paying hard for customer acquisition, that distinction matters. The difference between knowing revenue and knowing profitability is the difference between a dashboard and a business.
The built-in reports-Overview, Sales, Acquisition, Customers, Inventory, Marketing, Finances-are genuinely competent at what they were designed to do. They answer the questions Shopify expects every merchant to ask. But they were designed for a typical store, which is to say they were optimized away from stores like yours.
If you're pushing past the $500k mark, or if your margins are thin enough that a bad inventory call costs a week's profit, you've already felt the seams where Shopify's reporting breaks. You've looked at the Sales report and wondered why it doesn't tell you which acquisition cohort is actually profitable. You've watched inventory reports show you a snapshot when you needed a forecast. You've joined Revenue from Shopify to Ad Spend from three different platforms in a spreadsheet because there's no native way to do it in one view. This is what it looks like when you patch them.
Shopify's reporting menu, honest edition.
Start with what exists. Shopify ships with eight reporting categories, all rendered from a single query language called ShopifyQL. We tested ShopifyQL directly against a live store on 2026-03-09 while building Sentinel: eight datasets are real and queryable (sales, orders, products, customers, sessions, payment_attempts, web_performance, benchmark); four operator-grade metrics are simply not there at all (bounce rate, exit rate, page-level analytics, reliable session duration). That second list is the first job Sentinel takes off your plate — it stitches the GA4 layer that fills those gaps to the ShopifyQL layer that doesn't. The shopifyqlQuery field shipped in the GraphQL Admin API version 2025-10, and custom-app access has required OAuth since January 2026, so older integration guides will mislead you. With that map in hand, here's what each reporting category actually does and where it cracks.
Overview. A high-level pulse. Total revenue, number of orders, conversion rate, average order value. Good for the board meeting. Not good for anything that requires granularity. The report resets every day and never lets you ask historical questions-you can't see the 30-day trend in AOV or the 90-day pattern in returns by product. It's a snapshot that pretends to be a dashboard.
Sales. This is the calendar view of orders and revenue. When did you sell it? How much? Which products? Shopify does this well enough. You can filter by date range and product. The data is reliable. The problem is it's backward-looking by design. You see what sold. You don't see what's about to sell, what should have sold, or why the pattern changed.
Acquisition. Which traffic source brought the customer. Shopify shows you UTM parameters, ad platform integrations, and organic. The report is last-click only-if a customer saw your Google ad on Monday, clicked your email on Wednesday, and bought on Friday, Google gets the credit. For simple campaigns, this is fine. For anyone doing sophisticated marketing with multiple touchpoints, last-click is a tax on decision-making.
Customers. A database view. Customer name, email, lifetime value, location, purchase history. Useful for understanding individual behavior. Not useful for cohort questions. You can't ask "which acquisition month has the best repeat rate" or "which customers from our Summer 2025 campaign are still buying." Cohorts are the unit of analysis at scale. Shopify's customer report gives you names, not patterns.
Inventory. What you have. Quantity on hand by location and variant. But the report is a static snapshot, not a forecast. It doesn't know your sell-through rate, your lead times, or your safety stock. We'll come back to this one because the gap here is expensive.
Marketing. An integration dashboard. If you've connected Facebook, Google, TikTok, or Klaviyo, the report aggregates their spend and Shopify's attribution of orders back to those channels. The numbers are reliable inside their frame. The frame is the problem. It's an accounting view. It tells you what you spent and what you got back. It doesn't tell you the shape of your customer, the LTV of a person acquired through paid versus organic, or the margin after accounting for fulfillment and COGS.
Finances. Revenue, costs, and profit. But "costs" is narrower than you might expect. Shopify counts COGS if you've configured it, shipping, and discounts. It doesn't know your ad spend, your labor, or your packaging costs. You get a number that says "profit" that isn't actually profit. It's gross margin on the narrow definition.
Custom reports. Shopify's interface for building adhoc queries. Good for one-off answers. Tedious for recurring analysis. And the custom report builder has a ceiling-it works for queries that live inside Shopify's data schema, which means it can't help you the moment you need to join Shopify data to external sources (ad spend, cost of goods, supplier lead times).
That's the menu. Shopify is good at the things it measures natively-orders, customers, products. It breaks the moment you need to understand the intersection of Shopify and everything else that runs your business.
The five gaps that hurt most.
These aren't theoretical. These are the friction points where real operators hit a wall and reach for a spreadsheet or a BI tool because Shopify's native interface can't answer the question they need answered. Most stores feel one or two of these gaps first. Stores doing more than a million a year feel all five.
Gap 1: No cohort view. Shopify shows customer revenue totals. It doesn't show purchase-over-time curves. You can't answer: "Do customers acquired in March have better repeat rates than customers acquired in April?" or "Which product category drives the most LTV?" or "Which discount strategy builds long-term customers versus one-time buyers?" Cohort analysis is how you separate signal from noise in customer data. Without it, you're optimizing for this quarter's revenue at the expense of next quarter's unit economics. Here's the operational cost: you run a paid campaign that brings in 200 customers at $50 CAC. The revenue report says you made back your ad spend in the first week. Sounds great. Ninety days later, 80% of those customers have bought once and never come back. Your true CAC was $50 spread across one purchase. Compare that to organic customers who show up with a 35% repeat rate. If you can't see repeat rates by acquisition month, you're effectively blind to where your customers come from and whether they're worth keeping.
Gap 2: Attribution is last-click only. If you run a multi-channel campaign-paid search, email, organic, influencer-Shopify gives the credit to whichever channel the customer clicked last. This is mathematically honest and completely useless for decision-making. Real attribution is a reconstruction problem. You need to know: "A customer saw your Google ad on Monday, read your email on Wednesday, clicked your organic post on Thursday, and then the Klaviyo email that closed them on Friday. Which part of that chain mattered most?" Last-click can't answer it. Multi-touch attribution can, but Shopify's native stack doesn't support it. The operational impact: you cut Google Ads spend because the Marketing report says it's not converting. Three weeks later, your sales drop 25%. Turns out Google was the awareness engine. Customers were seeing the ad, remembering you, and buying when they got your email. But Shopify only credits the email. You've optimized your business backward. For deeper reading on this, the shopify-analytics-guide covers the mechanics in detail.
Gap 3: Margin is invisible. Shopify reports revenue and order value. It doesn't report profit. Or more precisely, it reports gross margin on a narrow definition that excludes everything outside the order line. You see that you sold 400 units last month for $32,000. You don't see that ad spend was $8,000, COGS was $12,000, fulfillment was $3,500, and packaging was $1,200. Contribution margin-the metric that tells you if a product is worth selling-lives outside Shopify's native schema. You have to join data from five different systems. Most operators skip it and optimize on revenue instead, which is why undifferentiated margin bleeding happens so quietly. Here's the cost of not seeing it: you have two products. Product A sells 300 units at $40, revenue $12,000. COGS is $18, ad cost to acquire per unit is $12, fulfillment $5. Contribution per unit: $40 - $18 - $12 - $5 = $5. Total contribution: $1,500. Product B sells 100 units at $60, revenue $6,000. COGS is $35, ad cost per unit is $8, fulfillment $4. Contribution per unit: $60 - $35 - $8 - $4 = $13. Total contribution: $1,300. Your Shopify dashboard says Product A is your star (revenue $12k vs $6k). Your actual business says Product B is worth two hours of your time and Product A is worth four. You're not just flying blind. You're flying backward.
Gap 4: Inventory reporting is backwards-looking. Shopify tells you what you sold. It doesn't tell you when to reorder. The Inventory report shows quantity on hand. It doesn't know your sell-through rate, your supplier lead time, or your target safety stock. You're flying on instruments that only tell you what happened, not what's about to happen. Here's a real example: you have a product with an 18-day sell-through rate and a 21-day supplier lead time. You're 3 days away from a stockout on your best product-the one that's generating $8,000 in revenue per week-and the Shopify report shows green. You find out too late. Three weeks later you're still out of stock and you've lost $24,000 in revenue. Meanwhile, slower-moving inventory is sitting on the shelf. You need a system that calculates: (daily sales rate × lead time) + safety stock = reorder point. Shopify doesn't ship with that formula built in. And it doesn't account for seasonality, promotional spikes, or supplier delays. A manual calculation catches 80% of stockouts. A forecast that includes trend and seasonality catches 95%.
Gap 5: No cross-channel view. Shopify only sees what happens on Shopify. If 30% of your revenue comes from wholesale B2B, Amazon, or a physical location, native reporting leaves that blind. And the Marketing report has no idea what Meta or Google actually spent-just what Shopify's pixel attributed to those channels. Real marketing spend lives in Meta's Ads Manager and Google Ads. Shopify's integration is read-only from those systems and assumes that Shopify's pixel captured everything, which it didn't. To understand your unit economics, you need a view that joins Shopify revenue, ad spend from ad platforms, and cost of goods from your supplier system. That's three data sources Shopify can't see at once. The consequence: you think your CAC is $35 because you spent $15,000 and attributed 430 orders back to paid ads. But that number excludes the $8,000 you spent on TikTok because TikTok traffic comes in as "direct" (they blocked the referrer). It excludes the $3,200 you spent on YouTube because you forgot to UTM tag one campaign. It includes sales from organic search, but you can't separate them by channel. Your true CAC across all channels is probably $42, not $35. And if you're optimizing budgets based on the wrong number, you're starving the channel that actually works and feeding the one that doesn't.
Filling the gaps: the architecture.
Now that we've named the problems, here's what a mature reporting stack looks like. This isn't theoretical. This is what operators running $1-5M stores build when they get serious about profitability. Most don't build it from scratch. They buy pieces and assemble them. But the anatomy is consistent.
Cohort view: Pipe Shopify data into a BI layer (Looker, Tableau, or lighter-weight tools like Metabase or Suprabase). The BI system knows how to ask "show me repeat customers by acquisition month" or "which product category has the highest LTV." Shopify's reporting interface wasn't built for those questions. The BI layer was. The setup is straightforward: write an ELT job (Stitch, Airbyte, or Fivetran) that pipes Shopify's order, customer, and product data into a data warehouse on a schedule (usually nightly), then connect your BI tool to that warehouse. Within a week you can answer any cohort question. Within a month you've probably found three product decisions you would have gotten wrong.
Attribution fix: Server-side event tracking + the Shopify Conversions API + a tool like Segment or mParticle. The idea: capture every touchpoint a customer has (ad click, email open, site visit, purchase) on your own infrastructure. Don't rely on Shopify's pixel or the ad platform's pixel alone-they're blocked by browsers and ad blockers and they miss offline touchpoints. Instead, use your order data as the source of truth and wire it back to each ad platform's server-side API (the Conversions API for Meta, the Conversion API for Google). Then feed that event stream into your analytics layer so you can ask multi-touch attribution questions: "Of the customers who converted, how many had seen an ad from this channel?" Then you can model contribution per channel. This usually takes two to four weeks to set up properly, and it's the single highest-ROI project a $500k+ store can run. Once you have it, you stop leaving money on the table in media buying.
Margin visibility: Import your COGS from a CSV, connect your ERP (NetSuite, TradeGecko, Faire), or sync from your supplier's system. Join it to Shopify's order data in the BI layer using product SKU as the key. Now you can calculate contribution margin per product, per category, per customer cohort, per acquisition channel. The formula is simple: Revenue - COGS - Ad Spend Allocated to Sale - Fulfillment Cost - Packaging = Contribution. Once you have that number by product, you can answer which products are worth scaling, which should be discontinued, and which need a price increase. The gap between revenue and margin stops being invisible, and your pricing decisions stop being guesses.
Inventory forecast: Build a simple sheet that calculates (daily sales rate from the past 30 days × supplier lead time) + safety stock. Update it daily. Set alerts when you hit the reorder point. More sophisticated operators use demand forecasting (Prophet, ETS) to account for seasonality, but the simple version catches 80% of stockouts.
Cross-channel revenue: If you run B2B, Amazon, or physical retail, add those to your BI layer as separate data sources. Union the revenue streams so you see total company revenue, not just Shopify revenue. Then join ad spend from your ad platforms' APIs (Facebook, Google, TikTok, LinkedIn, etc). Now you can ask "what's my CAC across all channels" instead of "what did Shopify pixel see."
"The difference between knowing revenue and knowing profitability is the difference between a dashboard and a business."
If you're building this yourself, that's an engineering project. You're writing ETL jobs, managing data pipelines, handling schema changes when Shopify updates their API. You're debugging why the order count in your warehouse doesn't match the number in Shopify (refunds, test orders, partial refunds - they all change the math). You're on call when the sync breaks at 2am and revenue isn't flowing into your analytics system. That's not a reporting project. That's building a data infrastructure company inside your business.
The alternative is what Sentinel does-it's the reporting layer that Shopify should have shipped. It fills all five gaps at once. Cohorts. Multi-touch attribution. Margin. Inventory alerts. Cross-channel revenue. It's built specifically for Shopify stores, which means it doesn't make you guess about schema or field mappings. It knows the shape of your data because it was built in Shopify's backyard. The setup is ninety minutes. The integration is API-key, no code changes. The insights start arriving in your dashboard the next morning. You're not paying for infrastructure. You're paying for the layer that connects your revenue to your decisions.
Who needs this and when.
Under $500k/year: Native Shopify reporting is fine. You're not at the complexity where the gaps bite yet. If you're curious about one of the gaps, solve it with a BI connector-Shopify's native integrations with Looker and Google Sheets are solid. Don't over-engineer.
$500k–$2M/year: The gaps start hurting. Attribution is now costing you real money because you can't separate paid channels by unit economics. Inventory is becoming manual. COGS should be visible by now. Your best move: fix attribution first (server-side tracking + CAPI), then add a cohort view via a BI layer. You don't need the full stack yet. You need to stop flying blind on unit economics.
$2M+/year: You need all five. Cohorts determine your growth strategy. Attribution determines your media spend allocation. Margin determines which products are worth selling. Inventory forecasting prevents stockouts that would cost you six figures. Cross-channel revenue is how you prove the real LTV of a customer. If any of those are missing, you're optimizing inside a broken model.
The operators who get past $5M usually have an analytics engineer on staff, or they've bought a platform that handles it. The inflection point-where DIY starts costing more than the tool-is somewhere between $1M and $3M. After that, the calculus is clear.
How to start.
If you're at the $500k–$2M stage and want to patch the worst gap first, start with attribution. The mechanics are straightforward: set up event tracking, connect the Shopify Conversions API to your ad platforms, and watch your unit economics become visible. Most teams do this in two weeks and wonder why they didn't sooner. The payoff is immediate. You'll find that one channel you thought was dead is actually your best-performing acquisition source when you account for the full customer journey. And you'll find that one channel you thought was gold is actually bringing you customers who buy once and ghost. That's a $50k decision in a $1M business.
Then add a BI layer for cohorts. You don't need anything fancy. Metabase or Looker can run on a $50/month instance. Connect it to Shopify's data store via a simple ELT tool like Stitch (which has a free tier for small data volumes), write a few SQL queries, and suddenly you can answer the questions Shopify's UI can't touch. Your first query should be: "For customers acquired in the last six months, what's the repeat purchase rate by acquisition month?" If you see that March's customers have a 28% repeat rate and June's have an 8%, you've found a signal worth investigating. Maybe your product changed, maybe your messaging changed, maybe external market conditions changed. But you're not guessing anymore. You're operating.
Margin and inventory can wait until your next planning cycle. But if you're running a store doing real volume, they shouldn't wait long. Margin visibility usually means a price increase on one product line and discontinuation of another. Inventory visibility usually means two or three fewer stockouts per year. Either one pays for the infrastructure in a month.
For the full stack at once-someone else's problem-that's what Sentinel exists for. It's built on the assumption that you're serious about profitability and tired of rebuilding reporting infrastructure every time Shopify changes their API. You connect your Shopify store, and Sentinel handles the rest: it ingests your order data, joins your ad spend (we pull from Meta, Google, TikTok, and others), calculates your margin if you've set up COGS, forecasts inventory based on sell-through patterns, and surfaces all of it in a dashboard. Check it out if you want the framework without the engineering. Setup is ninety minutes. ROI is usually visible in the first month.
Or if you want to hire someone to build this custom for your business, we work with teams that are ready to move past guessing. We've built cohort layers, attribution systems, and margin models for stores doing $500k to $20M. The work usually takes three to six weeks depending on scope. The result is a reporting system that looks like it should ship with Shopify.