Where to find it
On Signals (in the web app, or the Signals tab of the Shopify app), the Clean signals card shows events held as bots, bot-like events sent and the bot share for the last 7 days, held counts per tool, and the newest held events with the reason in plain words. The switch Hold back bot events is on by default. With it off, Zyro still counts the bot-like events that went out, so you always see them.
How Zyro decides
- Strong signs hold an event: the visitor is on Zyro's nightly bot list, the browser matches a bot farm or names a bot or script, or the browser says it is automated.
- Weak signs count only in twos: 20 or more visitors from one network address in an hour, 10 or more page views in a day at under 2 seconds a page, or 3 or more page views and no click (only on stores where Zyro's click capture works). One weak sign alone never holds an event.
- Proven people are never judged: a shopper who gave an email, has a linked order or signed up through a pop-up.
Zyro uses data it already keeps. It adds no new tracking.
What always goes
Purchases, pop-up sign-ups, one-time codes, back-in-stock notes, new product notes, ready to buy and slipping away are never held. Checkout started and card declined are held only on a strong sign. Browse events (cart viewed, left a full cart, read reviews, lingered on the price, zoomed photos) can be held. A held event is never sent later.
Consent
- A shopper who said no to marketing gets nothing at any tool.
- Ad tools also wait for a yes where your store's cookie banner asks.
- Zyro's own events in your store's ad pixels (Meta, TikTok, Google and others on the page) need a marketing yes too.
- An email tool only gets a shopper whose email Zyro knows. A shopper with no known email is skipped and counted apart, not as a failed send.
For each connected tool, for the last 7 days: sent, held back (as bots, no consent, repeats, or email not known), failed with the error rate, the last accepted send, and the match keys on accepted sends (email, ad click id, browser id, IP and browser, a hashed shopper id, and whether it matches your pixel). Shares show from 20 accepted sends. Phone numbers: Zyro does not collect them, so none are sent.
With Meta Conversions API connected, Zyro reads Meta's own Event Match Quality score for each event once a day, plus Check now (once an hour). The card shows the score out of 10, the change from about a week before, and Meta's own suggestion. Watchdog tells you when an event's score falls by 1 point or more. If your Meta token can't read the score, the card says what unlocks it: a token with ads_read and access to the dataset.
ChatGPT Ads (Beta)
Connect ChatGPT Ads Conversions API (Beta) on Signals with its key and Pixel ID. Zyro sends the same named events, with the same consent and bot checks. Send a test asks OpenAI to check an event without saving it. It is marked Beta because it is new.
What to know
- No rule catches every bot. AI shopping agents in a normal browser look like ordinary visitors, so Zyro does not claim to catch them.
- Zyro puts no money value on bot events, because it can't price them honestly.
- Watchdog's Signal quality check tells you when a tool that usually gets events gets none for a day, or when its errors jump.
- The Morning Brief says how many real shopper events your ad tools got yesterday, and how many bot hits were held back.
Related articles
Still stuck? Email hello@zyro.world with your store address and the tool you are looking at.
Or ask us here