The method

How Zyro counts

Zyro's numbers start from your store's own orders. This page sets out the fixed rules behind each number: sales, credit for each sale, profit, test winners and alerts.

Last updated:

Sales by channel, checked against real ordersDemo store
Sales by channel on a demo store: Meta's claim next to confirmed sales per channel, a Not tracked row of 27 orders, and the total checked against the store's orders.

Where your sales numbers come from

On Shopify, a sale counts when Shopify records a paid order and sends it to Zyro from Shopify's own server. Zyro also gets updates, cancels and refunds. So a blocked script never loses a sale.

Test, cancelled and unpaid orders don't count, and refunds come off. Zyro never counts a "Purchase" event from a shopper's browser as a Shopify sale.

On WooCommerce, you connect your store. Zyro reads your last 60 days of orders and keeps them up to date.

On other websites, your site sends each sale to Zyro with one line of code.

How Zyro decides which ad led to a sale

This is called attribution: working out which visits led to a sale. A shopper may see an ad, open an email, then search for you before buying.

Zyro gives every visit in that path a share of the credit. It shows this next to "last click", where all the credit goes to the final link clicked.

A strip checks the total against your store's real orders. Sales with no visit history sit in a "Not tracked" row. Zyro does not guess where they came from.

Visits from AI assistants, such as ChatGPT or Perplexity, show as their own source.

Why Zyro and your ad accounts can disagree

Meta reports the sales it says its ads made. Zyro shows that number next to what Shopify confirms, so you can see the gap.

Ad blockers and cookie banners can also hide some sales from Google Analytics.

See Revenue by channel

When Zyro shows profit

Profit is your sales minus product cost, shipping, payment fees, refunds and ad spend.

Zyro shows profit only once products with a cost make up 90% of your sales. You can also set one default cost instead.

A cost you type in Zyro wins over Shopify's "Cost per item". Numbers built from averages, like your shipping cost per order, are marked "est.".

Payment fees are a rate you type in: a percent plus a fixed amount per order. Zyro marks them "est.".

Ad spend comes from Meta today, every 6 hours, once you connect Meta. Google Ads and TikTok come once they approve Zyro.

ProfitDemo store
Zyro's Profit screen on a demo store: $131,465 estimated profit from $274,540 net sales, split into product cost, ads, shipping, refunds and fees.
How to add your costs

When Zyro calls a test winner

An A/B test shows two versions to different shoppers and counts which one sells more. Zyro splits visitors 50/50, and the split stays 50/50 for the whole test.

Zyro calls a winner only when all of these are true:

  • Zyro is over 95% sure the version is better.
  • The test has run for 7 full days.
  • The lead has held for 3 days in a row.
  • Both the leading version and your original have at least 30 buyers (or 30 people who reached your goal).

With fewer than 30 buyers on the leading version or the original, a lead is only an "early lead". Zyro warns you if a "winner" earns less per visitor. It also checks that the split really was 50/50.

Zyro checks every test for each traffic source, so you can see each source's result.

Safety while a test runs

Every hour, Zyro checks each test. If it is 95% sure the original is better, it stops showing the losing version.

Auto-pick winner and Careful tests Growth and Scale

Auto-pick winner is a switch on each test. Turn it on, and when the result says "Winner", Zyro ends the test and keeps the winner. It never moves more shoppers to one version during a test.

Careful tests wait for at least 2 weeks and 50 buyers per version before a verdict.

TestsDemo store
Zyro's Tests screen on a demo store: three running product tests, one with an early lead and two marked too early to call.
See Tests

How Zyro judges a pop-up

Zyro judges pop-ups on real orders. On Growth and Scale, you can compare version A, version B and a group that sees no pop-up. That group shows how many sales the pop-up really adds.

Pop-ups never show on cart or checkout pages. A shopper sees at most one pop-up per page. Close one, and it stays away for 24 hours on that device.

By default, a pop-up shows once per visit and stops once the shopper claims it. You can change both.

See Offers

How Watchdog decides something is wrong

Watchdog checks your store every 5 minutes, and you can press Check now any time. It compares sales with a normal hour for your store, once it has about 4 weeks of history.

It also checks that Zyro still sees visits, and how fast pages load on real phones. It looks for $0 orders, leaked codes, and problems with checkout or add to cart. It checks stock, deliveries, customs, and the tools Zyro sends events to. Checkout, stock, delivery and customs checks are for Shopify stores.

Zyro flags a discount code when shoppers from coupon sites use it. It also flags a code used 3 times more than in a normal week.

When something breaks, it emails you. It can also post to Slack, Discord, Telegram, Microsoft Teams or Google Chat.

If a problem was expected, mark it "This is expected". Do that 3 times in 30 days for the same check and Zyro stops emailing you about it. Urgent problems always email.

See Watchdog

What Zyro sends to your ad and email tools

Zyro sends its own named events, like "checkout started" or "ready to buy". It never sends standard Purchase or Add to cart events. So it does not add fake sales to your ad accounts.

Zyro checks a shopper's consent before it sends their events to ad tools.

See Customers and Signals

Where Zyro uses AI, and where it does not

Today's suggestions, Watchdog, the Morning Brief and every score use fixed rules, not AI. Today's suggestions are worked out every hour.

AI is used in three places. It writes wording ideas for tests and pop-ups. It drafts headline tests, if you turn that on. And it checks that each Meta ad's landing page keeps the ad's promise.

AI wording help never adds a price, number, deadline or promise your page does not already make.

The free store scan

The Store Revenue Scorecard reads your public homepage only. It scores three things out of 100 with fixed rules. Results are kept for 7 days for each web address.

Scan your store free

Questions

Why doesn't Zyro match what Meta says it sold?

Meta reports the sales it says its ads made. Zyro starts from your real orders and shows Meta's number next to what Shopify confirms. The gap is shown, not hidden.

What is the "Not tracked" row?

These are real sales where Zyro did not see the visit before the order. Zyro lists them instead of guessing where they came from.

Why does Zyro show sales instead of profit?

Zyro shows profit once products with a cost make up 90% of your sales. You can also set a default cost. Until then, add your missing costs.

How long does a test take?

At least 7 full days, and the lead must hold for 3 days in a row. Quiet stores take longer, because both versions need at least 30 buyers.

Does AI pick the winner?

No. Test winners follow fixed rules. Zyro must be over 95% sure, after 7 full days, with a 3-day hold and 30 buyers on each side.

Does Zyro move more shoppers to the winning version during a test?

No. The split stays 50/50 until the test ends.

See these rules work on your own store

Free plan. No card. Billed through Shopify. Uninstall and billing stops.