nod.

Coverage: how much of your revenue is attributable

What the coverage numbers mean, what lowers them, and what you can do to raise them.

Updated July 31, 2026

Not every order can be traced back to a visitor journey. A shopper's cookies may be cleared, they may check out before the pixel ever saw them, or they may opt out of tracking entirely. Coverage is nod.'s honest answer to "how much of this can I actually trust?"

The base coverage numbers

nod. reports coverage as two separate percentages, not one blended score:

  • Tagged-session rate — the share of pixel sessions that carry at least one touch with a paid signal (a click id, or a utm_/nod_ source). This tells you whether your ads are actually passing tracking parameters. It should approach 100% once your ad accounts are fully tagged.
  • Order-stitch rate — the share of orders (excluding leads and cancellations) that were successfully joined to a visitor journey, rather than landing in the unattributed bucket.

The first number is about your traffic; the second is about your orders. A shop can have a high tagged-session rate and still see a lower order-stitch rate, because stitching an order also depends on what happens at checkout.

The order journeys view reports a related figure, stitched share: the fraction of orders with a non-empty stitched path. It's the same idea as order-stitch rate, viewed at the order level, and journeys are sorted to show stitched orders first.

nod. Mix V3 coverage

Mix V3 adds coverage for the evidence that can change its three role components:

  • Observed vs. verified credit. Observed is first-party click/session evidence. Verified requires an eligible conversion-linked provider feed. A missing feed is Unavailable; a delayed feed makes the current period Provisional.
  • Active-engagement coverage. This is the share of eligible observed Creation candidates with valid schema-v2 active time inside the fixed health cohort. The curve activates only at 80% or better coverage, with no qualified channel more than 20 percentage points behind. If the gate fails, active engagement stays neutral.
  • Active-engagement fallback share. This shows how often the scorer had to use the neutral factor instead of measured active time. Wall-clock session duration remains diagnostic.
  • Milestone coverage. This is the share of scored journeys carrying an eligible explicit milestone. A generic form submit or inferred event never improves it.
  • Evidence feed health. Provider state, data-through date and provisional status are part of the result. Aggregate video views or conversion claims do not count as verified feed coverage.

Some provider evidence is aggregate-only or subject to a minimum release group. A filtered row below that boundary returns Withheld. It never returns 0 and never reveals whether a restricted provider event matched one specific order.

Search Console has its own visible-query coverage in Search Demand. That metric reconciles privacy-safe query rows to authoritative site totals. It is not Mix V3 coverage and never changes attribution credit.

How an order gets stitched

When a Shopify order comes in, nod. tries to join it to a visitor journey through a ladder of methods, in order of confidence:

TierHow it matchesStatus
Cart attributeThe order carries the visitor id directly, written into the cart by the pixelLive — highest confidence
Email hashThe order's hashed email matches a pixel event's hashed emailLive
Recent visitorSame network (IP), a touch within 90 minutes before the orderModeled context only, ineligible for deterministic Mix V3 credit
UnstitchedNothing matchedFalls into "unattributed"

An order that can't be matched by any tier isn't dropped or guessed at. It's credited to an honest unattributed channel, which the dashboard shows as its own row next to your paid and organic ones, not as a footnote. By default nod. doesn't redistribute that revenue onto other channels, so your totals still reconcile to your gross Shopify revenue; you just see plainly how much of it isn't traced yet.

There is a redistribution lens for the times you want to estimate where that revenue probably belongs. It is optional, it is labeled wherever it is on, and it never quietly replaces the default view. If nobody switches it on, the unattributed row stays exactly as large as the data says it is.

What lowers coverage

  • Unknown or denied analytics consent. The pixel remains dormant and sends no partial event. Every visit nod. is prohibited from observing cannot be stitched back to an order, and nod. does not invent that missing visitor denominator.
  • Checkout before the pixel was installed, or before it fires. The highest-confidence stitching tier depends on the storefront writing the visitor id into the cart, which only happens if the pixel already ran on that visit. A shopper who lands on a page without the pixel loaded — or checks out before you install it — leaves no cart attribute to match against.
  • Cleared or blocked storage. The pixel keeps its visitor id in both a cookie and localStorage specifically so a cleared browser store doesn't lose the id, but a visitor who wipes cookies between visits, or blocks first-party storage outright, still breaks the link between an earlier touch and a later order.
  • A too-tight domain allowlist. If your allowed-domains list doesn't cover the actual storefront origin, events are silently dropped — the symptom is a stalled event count, and every order in that window has nothing to stitch to.

What raises coverage

  • Add the nod. URL parameters to your ads. nod_source names the channel explicitly on every platform, and nod_adid / nod_adset / nod_campaign add the ad-level join key wherever the platform supports click-time macros (Meta, Google, TikTok, Microsoft, Pinterest, ChatGPT Ads). Together they give a touch a strong paid signal, which is exactly what the tagged-session rate measures. Untagged clicks still get classified by referrer, but an explicit nod_source — or a deterministic ad id — is worth more.
  • On Google, make sure the campaign macro and the search term come through. They do more than raise the tagged-session rate: the campaign name and the term are what nod. reads to report Google paid as two separate rows, brand and generic. A click that carries neither stays in a plain Google paid row, and you lose the distinction that shows whether that budget created demand or harvested demand that was already there.
  • Tag ChatGPT Ads too, even though the referrer looks obvious. OpenAI appends its own click id, oppref, to the landing URL at click time, and that's the signal nod. joins on for chatgpt_paid. It also expands {campaign_id} / {ad_group_id} / {ad_id} in the campaign's Landing page query parameters, so nod_campaign / nod_adset / nod_adid all apply here — paste the full string from the Tracking page rather than the channel alone, and the channel survives a redirect or link shortener that strips oppref. A visit that arrives from chatgpt.com with neither — no oppref, no nod_source — stays organic AI search, not paid. That asymmetry is deliberate: most chatgpt.com referrals are conversations, not ad clicks, and nod. won't bill them to your ad account.
  • Serve the pixel from your own domain. A first-party custom domain can avoid simple blocklists aimed at the shared hostname. It does not bypass consent, browser storage limits, or every blocker.
  • Install the pixel on every page, including checkout and the thank-you page. The cart-attribute tier only works if the pixel has run before the order is placed.
  • Treat CAPI separately. Meta CAPI uses the same consented cart identity, but it forwards events to Meta and does not raise nod.'s attribution coverage by itself.

What to expect

Coverage is a health check, not a target to force to 100%. A brand-new install starts near zero and climbs as tagging and pixel coverage improve; a mature setup with the pixel on every page and tagged ads typically settles high but rarely perfect — some share of shoppers will always opt out, arrive with storage disabled, or complete a sale before your first pixel load. Unattributed revenue you can see and reason about is more useful than a number that's been quietly padded to look complete.