Articles on: TagFly

Consent Tracking

This guide explains what Consent Tracking shows you, how to read every number on the screen, what each reason means, and what you can do about it.


Contents


TagFly sends your store's events to the advertising and analytics channels you've connected. Before every send, TagFly checks the consent signal that came with the event and decides what each channel is allowed to receive.
Consent Tracking is the record of those decisions. For every event and every channel, it tells you one of four things: the channel got everything, the channel got a restricted version, the channel got a modeling-only version, or the channel got nothing.
Two questions it answers:

  • Am I sending data I shouldn't be? Every send follows the consent signal your store passed to TagFly. Consent Tracking is the proof.
  • How much data am I losing, and where? Blocked events are broken down so you can see which losses are required by law and which come from your own banner setup.
How TagFly decides. TagFly acts on the consent signal it receives from Shopify — nothing else. It does not guess from the visitor's location, and it does not assume what your banner asked. Region appears in reports as a label, and it shapes what the law requires, but it is never invented by TagFly.


Terms you need before reading any number

Term

What it means

Event

One thing that happened in your store — a purchase, an add-to-cart, a page view.

Events received

The number of events TagFly received, before any decision about which channels get them. This is the only name for this number, on every screen.

Channel

A destination you've connected: GA4, Google Ads, Meta, TikTok, Snapchat, Pinterest, X, Reddit, Microsoft Ads, Klaviyo.

Delivery (or channel check)

One event checked against one channel. This is the unit every number in Consent Tracking is counted in.

Treatment

How complete the delivery was: full, limited, modeling, or blocked.

Reason

Why the delivery ended up that way. Every delivery carries exactly one reason.


The one thing that confuses people most: one event turns into several deliveries. If you have six channels enabled, one purchase creates six deliveries. That's why "Events received: 2,400" can sit next to a donut totalling 14,400 — the two numbers are counting different things, and both are correct.


The four states

The donut at the top of Consent Tracking splits every delivery in the period into four states. They always appear in the same order, they never overlap, and together they always add up to 100%.


State

What it means

What the channel can do with it

Sent in full

Complete payload sent. No restrictions applied.

Everything — reporting, attribution, optimisation, audiences.

Sent limited

Sent with a restriction flag. Measurement kept, ad targeting off.

Conversions still count. The visitor is not added to retargeting audiences.

Sent modeling

Sent with a denied flag. Counted in the channel's totals, not linked to this customer.

Appears in aggregate conversion numbers only. No per-customer attribution.

Blocked

Not sent, because of consent.

Nothing. The channel never received the event.


If you turn a channel off directly or by downgrading, its deliveries stop being created. Your total goes down**. Blocked does not go up — a channel you disabled isn't being blocked by consent, it just isn't in the pipeline.**


Blocked breakdown — what you can and can't fix

  1. Required by law

The visitor declined, didn't answer the banner in a region where consent is required, or opted out of data sale in a channel that has no restricted mode. TagFly respected that signal.
There is no action here, and no button. This is the system working correctly. If this group is large, that's information about your audience and your banner's opt-in rate — not a fault to fix in TagFly.


  1. Avoidable

The visitor declined in a region where no law requires you to ask. You asked anyway, they said no, and TagFly honoured it.
This is the group worth your attention. The usual cause is a banner configured to show everywhere instead of only in regions that require consent. Use the Review banner button to go to your banner settings.
Not every channel is blocked in this case. Because the decision is driven by the consent signal rather than the region, channels that accept a restricted or denied flag still get the event


Channel breakdown

Under the donut, a table shows every enabled channel with its own split across the four states, plus a total.
How to read it:

  • One row per enabled channel. Channels you've turned off don't appear, even if they have data from earlier in the period.
  • A dash (—) is not a zero. A dash means the state doesn't apply to that channel at all. A zero means the state applies but nothing landed there this period.
  • A channel with a total of 0 still shows as a row of zeros, so you can tell "connected but quiet" from "not connected".


What each channel can actually do. This is why two channels with identical traffic can produce completely different rows:

Channel

Sent in full

Sent limited

Sent modeling

Blocked

Google Ads · GA4

yes

—

yes

—

Microsoft Ads

yes

—

yes

yes

X

yes

yes

—

—

Meta · Snapchat · TikTok · Pinterest

yes

yes

—

yes

Klaviyo · Reddit

yes

—

—

yes


Dates, time zone, and refresh

  • Everything is UTC. Every timestamp on screen, every date boundary in the period filter, every comparison against the previous period, and every timestamp in the CSV export uses UTC — not your store's local time zone. The refresh line always ends in "UTC" so there's no ambiguity.
  • Numbers update when you reload the page or click Refresh. Nothing streams in on its own — what you see is current as of the last reload.
  • Records are kept for 30 days. Deliveries older than that drop out of both Consent Tracking and the Event Log, so the period filter can't reach further back than 30 days. If you need a longer history — for an audit, a quarterly review, or anything you may be asked about later — export to CSV before the window closes. Once a delivery ages out it cannot be recovered.


Reason reference — every reason you can see

Every delivery carries exactly one reason. In the Event Log, the reason filter groups them into six plain-language groups — you'll never have to choose between three entries that read the same way.


Consent granted — the visitor agreed. Sent in full. All channels, all regions.


No consent law in this region — the visitor is somewhere without a consent requirement and did not decline. This includes visitors who never touched the banner. Sent in full. All channels.


Group: Opted out of data sale

These apply only to US states with opt-out laws, where the visitor opted out of the sale or sharing of their data. What happens next depends entirely on what the channel supports.

Reason

Result

Channels

US opt-out — handled by Google on their side

Sent in full

Google Ads, GA4

US opt-out — restriction flag sent, no ad targeting

Sent limited

Meta, Snapchat, TikTok, Pinterest, X

US opt-out — channel has no restricted mode

Blocked (required by law)

Microsoft Ads, Klaviyo, Reddit


Google applies the restriction at the account level, so the payload can go out complete. The channels in the third row have no US or CCPA field on any surface, so nothing is uploaded at all.


Group: Visitor declined

The visitor pressed decline in the EU, the UK, or another region that requires consent. What each channel gets depends on whether it accepts a flag:

Reason

Result

Channels

Visitor declined — consent required in this region

Blocked (required by law)

Meta, Snapchat, TikTok, Pinterest, Klaviyo, Reddit

Declined — sent with denied flag, modeling only

Sent modeling

Google Ads, GA4, Microsoft Ads

Declined — sent with restriction flag, measurement kept

Sent limited

X


Group: No response to the banner

The visitor in a consent-required region never answered. Under opt-in law, silence is not consent, so this is treated the same way as a decline:

Reason

Result

Channels

No response to the banner — consent required in this region

Blocked (required by law)

Meta, Snapchat, TikTok, Pinterest, Klaviyo, Reddit

No response — sent with denied flag, modeling only

Sent modeling

Google Ads, GA4, Microsoft Ads

No response — sent with restriction flag, measurement kept

Sent limited

X

This group is kept separate from Visitor declined deliberately, so you can see how much of your loss is active refusal versus people ignoring the banner. Those two numbers usually call for different fixes — one is an audience reality, the other is often a banner design problem.


Group: Declined where no law required asking

Declined where no law requires asking — avoidable — the visitor declined somewhere no law required a prompt. This includes US visitors who declined marketing in a state with no opt-out law.
Blocked and counted as Avoidable for Meta, Snapchat, TikTok, Pinterest, Klaviyo and Reddit. Google Ads, GA4 and Microsoft Ads receive it as Sent modeling, and X as Sent limited .


Event log

Consent Tracking gives you the totals. The Event Log is the line-by-line record behind them, so you can verify any number rather than take it on trust.

Column

Notes

Timestamp (UTC)

Sorted newest first by default.

Event

The event type.

Channel

The destination.

Status

full, limited, modeling, or blocked.

Reason

Plain tex





Being clear about the edges will save you from misreading the numbers.

  • Server-side events only. Consent Tracking reports on events TagFly received and processed server-side. Client-side tags on your storefront are outside this feature.
  • Events blocked before they reach TagFly aren't here. If Shopify's customer privacy layer stops something in the browser, TagFly never sees it and cannot count it.
  • Banner performance is not here. Impression rates, response rates, and opt-in rates belong to your consent management platform. TagFly reports what happened to the data after a decision was made, not how the decision was collected.
  • No compliance guarantee. TagFly shows you what was sent and what wasn't, with a reason for each. That's evidence of your tracking behaviour. It is not a legal assessment, and it does not determine which laws apply to your store.


Q&A

  1. My Blocked number went up after I changed something. Did I break it?

Check what changed. Turning a channel off should make your total go down, not make Blocked go up. Widening where your banner appears will increase the Avoidable group. Fixing a consent gate that was previously letting events through will increase Blocked — that's the correction working, and your channel-reported conversions will drop accordingly.

  1. Why does Google never show any blocked deliveries?

ecause Google Ads and GA4 accept a flag for every consent outcome. A declined visitor becomes a modeling-only send rather than a block. The event is still restricted — it just isn't lost.

  1. Can I get the blocked events back?

No. Blocked deliveries were never sent and can't be resent — that's the point of the block. What you can change is how many future events land there, and only for the Avoidable group.

  1. Does a large Required-by-law number mean something is wrong?

No. It means people in consent-required regions are declining or ignoring your banner, and TagFly is respecting that. There is no button because there is nothing to fix in TagFly. Whether the banner itself can be improved is a question for your consent platform.

  1. My channel's dashboard reports fewer conversions than TagFly says were sent in full?

TagFly reports what left the server. Channels apply their own deduplication, attribution windows, and modeling on top. Some difference is normal. Use the CSV export to compare like for like on a closed period in UTC.

Updated on: 24/09/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!