What Shopify Analytics and reports show
In your Shopify admin, Analytics opens a dashboard of metric cards for sales, sessions and fulfillment, with Reports for detailed tables and Live View for current activity. These are Shopify's definitions behind the numbers you will compare most often:
- Total sales: gross sales minus discounts and sales reversals, plus taxes, duties, shipping charges and fees. Sales reversals include returned products, order cancellations and order edits.
- Net sales: gross sales minus discounts and sales reversals, without shipping charges or taxes.
- Orders: the number of orders placed. Average order value: gross sales minus discounts, divided by orders.
- Sessions: online store visits, counted only when visitors consent to cookies through your cookie banner. A session ends after 30 minutes of inactivity, and since a rollout on September 21 to 23, 2026, sessions no longer end at midnight UTC.
- Conversion rate: sessions that completed checkout divided by all sessions.
- Sales attributed to marketing: online store sales credited to marketing with the last non-direct click model, shown on the Growth page.
How Shopify dates, filters and credits sales
Shopify books a sale as a positive amount on the day it was made, and a return or cancellation as a negative amount on the day it was processed. A cancelled order therefore appears as a sale on the day it was placed and as a reversal on the day it was cancelled, and the two cancel out only in a period that covers both days.
Test orders are left out of Shopify's Sales reports, although they appear in your orders export. Keep that in mind when you compare Shopify with any tool that counts every order it receives.
Shopify's attribution is its own. The marketing reports credit channels with the model you choose, last non-direct click by default, and Shopify notes that its marketing results might not match Meta Ads Manager or Google Ads, because each platform credits sales by its own rules. Ad spend from marketing apps can take up to 24 hours to sync into Shopify.
What Shopify reports do not show
Shopify does not report your ads the way the ad platforms do. Meta and Google Ads credit purchases to their own ads under their own windows, and Meta can include purchases after an ad view. Shopify credits channels with its own model, from its own sessions. Neither view is wrong; they answer different questions.
Shopify's profit also stops before your ads. Gross profit in its profit reports is net sales minus the cost per item recorded when the product sold, and it covers only products and variants that had a cost at that time. Your Meta, Google Ads or TikTok spend and your payment fees are not part of that number, so profit after ad spend has to be worked out somewhere else.
To see whether a purchase reached Meta, Google Ads or TikTok, and what the platform answered, look in the tool that sent it. In WeProfit, that is the Orders page and the delivery log on each network's page.
Why Shopify, Meta and Google Ads totals differ
Most gaps come from the same handful of causes. Check them in this order before you decide that tracking is broken:
- Different questions. Shopify counts the orders your store took, from every channel. Meta and Google Ads count the purchases they credit to their own ads, so orders from email, organic search or direct visits stay out of their totals, while two platforms can claim the same order.
- Windows and view-through. Meta credits purchases under each ad set's attribution setting, for example 7-day click and 1-day view, so a purchase can count after an ad view without a click. Google Ads uses a 30-day click window by default and keeps view-through conversions out of its Conversions column.
- Dates. Google Ads files its Conversions column under the date of the ad click, not the purchase. Shopify books a sale on the day it was made and a refund on the day it was processed.
- Time zones. Your store and each ad account can use different time zones, and Shopify names different reporting time zones as a cause of discrepancies. A Google Ads account's time zone is set when the account is created, and its reports follow it.
- Values and currency. Ad platforms report the value sent with each purchase. WeProfit sends each order's checkout total, with shipping and tax, in the currency Shopify recorded on the order. Shopify's total sales include taxes, duties, shipping and fees, while its net sales leave shipping and taxes out, so check which Shopify figure you compare.
- Sessions. Shopify counts a session only when the visitor consents to cookies through your banner. Other tools count visits by their own rules, so sessions and conversion rates need not match from one tool to the next.
- Accepted is not credited. A platform can accept a purchase and still not credit it to an ad, for example when the buyer never clicked one of its ads inside the window.
What WeProfit counts, next to Shopify
WeProfit starts from your Shopify orders, as Shopify does, and then links each order to the visit and channel behind it. A few of its counting rules differ from Shopify's reports, and knowing them saves a lot of reconciling:
- Orders placed before you installed WeProfit are imported once your plan is active: the whole history when Shopify grants WeProfit access to all orders, otherwise Shopify's last 60 days. They count in revenue and profit, are never sent to ad networks and stay out of the tracking coverage figure.
- Shopify POS orders, draft orders and subscription renewals count in revenue and profit, but WeProfit never sends them to ad networks as website purchases.
- Selling a gift card is not revenue in WeProfit; the order where the customer spends it counts at full price.
- Days follow the store's time zone, which WeProfit takes from your shop each time you connect Shopify. Ad spend lands on the day each ad platform reports it.
- An order in another currency is converted into the store currency at a rate fixed for that order, while the ad networks receive it in the currency Shopify recorded on the order.
- Each order counts once, in one channel. Orders without tracking evidence count as Direct, and the Orders page tells you how many orders in the period are tracked and how many untracked.
| Situation | Shopify sales reports | WeProfit |
|---|---|---|
| Revenue | Total sales: gross sales − discounts − sales reversals + taxes, duties, shipping charges and fees | What customers paid for the orders: after discounts, with shipping charged and sales tax or VAT, before refunds |
| Refunds | A negative amount on the day the refund was processed | Subtracted on the Profit page on the day the order was placed, so a late refund changes a past period |
| Cancelled orders | The sale on its day, then a sales reversal on the day the cancellation was processed | Left out of purchases, revenue, profit and every channel and campaign report, and listed apart on the P&L |
| Test orders | Left out of Sales reports | Counted like real orders and sent to your connected ad networks |
Compare one order across Shopify, WeProfit and your ad platforms
Totals hide the reason for a gap; one real order shows it. Pick a recent order that came from an ad click and follow it through every tool:
- In Shopify, note the order number, the order ID (the long number at the end of the order's address in your Shopify admin), the total and the time, and the day the order falls on in your store's time zone.
- In WeProfit, open Orders and search for the order number. The Attribution column shows how the order was linked and how strong the evidence is, for example Linked via cart attribute (exact confidence), or Untracked when nothing links it to a visit.
- Read the order's Networks column: one entry per connected network with that order's delivery status, or not sent, as in Meta: not sent.
- Open the network's page under Ad Networks and find the purchase in the CAPI delivery log. Its event ID is pur_ followed by that order ID, such as pur_6012345678901. Meta, TikTok, Pinterest and Snapchat receive it with a store code added, such as pur_a1b2c3d4-6012345678901, and Google Ads receives the order ID as its transaction ID. Sent means the network accepted the event, not that it credited the order to an ad.
- In the ad platform, check whether the purchase was credited under that platform's attribution setting and dates. For Google Ads, allow time: uploads wait until about 6 hours after the ad click, Google Ads usually shows the first purchases 24 to 48 hours after the first upload, and WeProfit's log shows Google's answer for each upload within about a day.
- Read the result. An order missing from WeProfit points to the store connection; a failed or missing delivery points to that network's connection or its routing conditions; a delivered purchase without credit points to the platform's attribution rules.
Add costs and ad spend to see profit
Revenue in either tool is not what you keep. WeProfit calculates net profit as revenue minus refunds, taxes, product costs, payment fees, shipping and ad spend. Taxes are the sales tax or VAT your customers paid, minus any refunded part: revenue includes them, but they are not yours to keep.
Each order's profit is labeled exact, partial or estimated, depending on how many of its lines have a saved cost, and the P&L shows how much of your revenue is fully costed. Saving a cost recalculates your past orders with it, while Shopify's profit reports keep the cost recorded when each product sold, so the two can differ on older orders. Rent, salaries, software and other overhead are not part of WeProfit's profit.
Four inputs complete the picture:
- Product costs: under Profit > Costs, Import from Shopify pulls each variant's Cost per item. You can also enter a cost per product or variant, upload a CSV, and set a default cost as a percentage of price for products without one; an order whose products all use it is labeled estimated.
- Payment fees: one rule under Profit > Settings, a percentage of each order's total plus a fixed fee per order.
- Shipping: your own shipping cost per order, as none, a flat amount per order or a percentage of order value. The shipping customers paid stays in revenue.
- Ad spend: connected Meta, Google Ads and TikTok ad accounts sync every hour. For any network, you can also add manual entries or daily schedules under Profit > Ad spend, or push spend through the developer API.