Tracking & Attribution

Can You Attribute Conversions Without Third-Party Cookies?

Which parts of your conversion tracking actually use third-party cookies, what breaks without them, and what replaces each piece on your own domain.

Quick answer

Yes — most conversion tracking never depended on third-party cookies anyway. A cookie is third-party only when its domain differs from the site in the address bar, so the Meta Pixel's `_fbc`, Google Analytics' `_ga` and your session cookie are already yours. What they bought was recognition across sites you do not own: view-through credit, cross-domain identity, and the browser-side half of platform matching. Replace them with a server-set visitor cookie, the click ID in your landing URL, the details typed into your form and your order record, then send conversions server-to-server.

Tell us what's broken. We'll fix your tracking — free.

Describe the tracking/attribution problem you're stuck on and we'll map it to a fix: server-side conversions to Meta, Google, TikTok and Pinterest, plus first-party tracking that survives Safari. No code required.

Yes. And most of your conversion tracking never used a third-party cookie in the first place.

A cookie is third-party only when the domain that set it differs from the site in the address bar. That single rule decides whether a browser blocks it — not who wrote the script, not where it is hosted, not whose logo is on the dashboard. The pieces attribution actually runs on are all yours: a cookie your own server set, the click ID that arrived in your own landing URL, the email a visitor typed into your own form, and the order sitting in your own back office.

So the useful question is not how to survive without third-party cookies. It is which parts of your measurement were quietly leaning on them, and what replaces those parts. That is an audit, and it takes about twenty minutes.


Which cookies in your stack are actually third-party?

Open your site in a browser, open developer tools, and look at Application → Cookies. The browser groups cookies by the domain that owns them. Every cookie listed under your own domain is first-party, whoever put it there. Every cookie listed under someone else’s domain is third-party in this context.

Run down the list and most marketers get a surprise. The Meta Pixel’s _fbp and _fbc are written on your domain — first-party. Google Analytics’ _ga, your session cookie, your consent cookie, your A/B test cookie: all first-party. The scripts come from someone else’s server, but the cookies belong to you, and a third-party cookie block does not touch them.

What usually shows up under someone else’s domain is narrower than people expect:

  • A cookie set by an ad server through an image or iframe request — an ad-network container, a retargeting partner, a DSP pixel.
  • The storage of a widget running in an iframe on its own domain: chat, a booking calendar, a form platform’s embed, a review widget.
  • A cookie used to recognise the same person across unrelated sites — the whole point of the thing, and the reason browsers are removing it.

That third bullet is the one that matters. Everything third-party cookies did for measurement reduces to recognition across sites you do not own. This is the stack-level version of first-party attribution: not a definition, a list of cookie domains you can check right now.


How do you find out what breaks before it breaks?

You do not have to speculate, because a large share of your traffic is already running the experiment. Safari and Firefox block third-party cookies by default, and Safari’s tracking prevention also caps how long a cookie written by JavaScript survives — seven days for a script-written cookie, which is why so many tools “forget” Safari visitors within a week even though the cookie is first-party.

Two tests, in order.

Test one: segment your own reports by browser. Compare Safari and Chrome on the metrics that depend on recognition rather than behaviour — returning-visitor share, multi-session journeys, the share of conversions that read as Direct. People do not shop differently on Safari. If Safari’s returning-visitor rate collapses or its Direct share balloons, that is your measurement failing on the browser that already enforces the strictest rules.

Test two: run your own funnel with third-party cookies blocked. Turn the setting on, click one of your own ads, fill the form, buy the thing, then look for that conversion in every system you rely on. Note which ones show it, which show it with no source, and which never saw it. Repeat with an ad blocker on: the two failure modes look identical in a dashboard, but ad blockers break conversion tracking at the network layer rather than the storage layer, and the fixes differ.

Write down what survived: that list is your real measurement stack. Everything else was decoration.


What actually stops working when third-party cookies go?

Four things, and only one of them is usually load-bearing for a lead-gen or ecommerce operator.

View-through attribution. Crediting an impression that nobody clicked requires the ad platform to recognise the same browser on its own site and on yours. Take away the shared cross-site cookie and the join has no key. Deterministic view-through credit does not degrade, it disappears.

The browser-side half of platform matching. When a pixel event fires, the platform resolves it to a person using what arrives in the payload and the identity it already holds. Weaken the browser signals and the payload carries more weight — which is why the parameters you send server-side stopped being optional.

Cross-domain identity between sites you own. Landing page on one domain, checkout on another. Third-party cookies used to make that hand-off free; without them the two domains are strangers until you carry an identifier between them yourself.

Embedded widgets in iframes. A form platform, booking widget or chat tool that keeps its identity on its own domain loses that identity when its storage is blocked or partitioned. This is why an iframe embed so often produces leads labelled Direct: the frame cannot see the parent page’s URL and its own cookies are no longer trustworthy.

Retargeting audiences also erode, but that is targeting, not measurement. Losing the ability to reach someone is a media problem; losing the ability to count them is what this article is about, and the two get muddled constantly.


What replaces each piece if you only use your own domain?

Four jobs, four replacements. Every one of them lives on infrastructure you already control.

Recognise a returning visitor. Use a first-party ID cookie that your server sets in the HTTP response, not one written by document.cookie from a script. The distinction is not cosmetic: script-written cookies are the ones Safari’s tracking prevention caps; a server-set cookie is treated as ordinary site state and survives far longer.

Know where they came from. Capture the click ID and UTM parameters from the landing URL on the first pageview and store them server-side against that visitor ID. The click ID is the highest-value identifier in the chain — the only one tying a visit to a specific ad click — so it is worth knowing the difference between gclid, fbclid and UTM parameters before deciding what to store. Grab it at first touch; it will not be in the URL again.

Know who they are. The email or phone number a visitor types is the only identifier that crosses browsers, devices and cookie deletions, and the one that joins a purchase made three weeks later back to the click that started it. Getting from several anonymous sessions to one person is a discipline of its own — visitor identity resolution is the layer that does it.

Know what they bought. Take the order from your store or payment processor’s webhook, server-to-server, rather than from a browser request on a thank-you page. The browser is the least reliable participant in the entire transaction and always has been.

Then there is delivery. Once you hold those four signals server-side, send the conversion from your server to the ad platform’s API instead of hoping a browser request completes — which is what the Conversions API is for on Meta, with equivalents on Google, Pinterest, TikTok and Microsoft. Nothing in that path touches a third-party cookie.

Four first-party signals — a server-set visitor ID, the click ID from the landing URL, the typed email and phone, and the order record — feeding a server-side dispatch panel, styled as the PartialLeads dashboard


How do you carry attribution across two domains you own?

By putting the identifier in the link, or by re-identifying the person at the destination.

Link decoration is the mechanical option: when a visitor moves from yourbrand.com to yourcheckout.com, append your visitor ID or the original click ID to the URL, read it at the destination, and write it into that domain’s own first-party cookie. Third-party cookies simply hid the need for this. Browsers increasingly treat link decoration as a tracking signal and some limit what a destination may persist from a decorated URL, so test the hand-off on Safari rather than assuming Chrome’s result holds.

Re-identification is sturdier. If the visitor supplies an email or phone on either side of the hop, you can join the two sessions on that instead of on any cookie. It survives link stripping, cookie clearing and a device switch, because the join key is a person rather than a browser.

Most durable setups use both: decoration when it works, identity when it does not.


What can’t you measure at all without third-party cookies?

Two things, honestly.

Deterministic view-through credit. If nobody clicked, nothing arrived in your URL, and no cookie spans both sites, there is no chain of evidence connecting the impression to the sale. You can estimate its value with a geo or audience holdout test — run the channel in one region, withhold it in a matched region, compare total conversions — but you cannot attribute an individual sale to an individual impression. Platform-reported view-through numbers are the platform’s model, not a measurement you can audit.

Anonymous cross-device journeys. A visitor who browses on a phone, buys on a laptop and never gives you an email on either is two separate people in any honest system. This is a matching problem, not a cookie problem, which is why tracking leads across devices depends on the person handing you an identifier somewhere in the journey.

One more, because it causes more arguments than either: your numbers will never fully agree with the ad platform’s. You count conversions you can prove; the platform counts conversions it can model, over its own window, including views you cannot see. Two methods, two numbers — the gap is not a bug in your setup. Decide on the one you can audit.


How does PartialLeads attribute conversions without third-party cookies?

By holding all four of those signals on the merchant’s own infrastructure, then dispatching server-side. Nothing in the path depends on a cookie from a domain the visitor never visited.

The visitor ID (pl_vid) is stored in localStorage with a first-party cookie backup on a one-year TTL, and the cookie is set by the server, not written by the script — precisely the case Safari’s seven-day script-cookie cap does not apply to. Returning visitors stay recognisable on the strictest browsers.

Attribution is captured at first touch: UTMs from the landing URL with a document.referrer fallback, plus every click ID the major platforms use — gclid, gbraid, wbraid, fbclid, msclkid, ttclid and epik. For the iframe problem above, the tag relays attribution across frame boundaries with postMessage, so a form embedded from another platform resolves to the campaign that paid for the visit instead of landing in Direct.

Identity comes from what the visitor typed. Email and phone are captured as they are entered rather than on submit, normalised server-side (phone to E.164, with a country fallback from session geo), and used to union a person’s sessions across six tiers — visitor ID, email, phone, IP and user-agent, device fingerprint, and shared click ID. A visit-sibling rule heals a converting session that lost its source by inheriting attribution from a sibling session in the same visit.

Purchases arrive server-to-server from Shopify, WooCommerce, GoHighLevel, Stripe or a universal webhook, get matched to a session by visitor ID, email, phone or IP in that order of confidence, and write both a first-touch and a last-touch attribution row. The conversion then fans out to Meta, Pinterest, TikTok, Google Ads and Microsoft server-side, with a deterministic event_id and unique dedup tables so a retried delivery physically cannot double-count.

Two honest constraints. First, server-side match quality still improves when the platform’s own first-party cookie was captured in the browser — _fbc is reconstructed from a URL fbclid when the cookie is missing, but _fbp is not synthesised from nothing, so keep your base pixel. Second, PartialLeads controls dispatch, not matching: every order in your store admin produces a conversion event, but whether the platform resolves it to a user depends on its own graph, consent and opt-out state.

CAPI activity log showing server-side events delivered from a Safari session with third-party cookies blocked, with EMQ values and per-lead API confirmation, styled as the PartialLeads dashboard

What breaks without third-party cookies The mechanism Where you see it in the dashboard
Returning visitor is not recognised Server-set first-party pl_vid cookie with localStorage backup, one-year TTL Leads list — multi-session leads carry an “N sessions” label
A converting session arrives with no source Six-tier identity cluster plus visit-sibling inheritance Journey ribbon on the Leads list; Recovered Attribution in the Attribution report
An iframe embed loses the campaign postMessage attribution relay plus document.referrer fallback Source badge on the lead
The browser never sends the conversion Server-side dispatch to Meta, Pinterest, TikTok, Google and Microsoft CAPI activity log; the API column on each lead row
The purchase happens long after the click Purchase webhooks matched by visitor ID, email or phone; first-touch and last-touch rows Attribution report model comparison; Purchases ledger
Retries and redeliveries double-count Deterministic event_id with unique dedup tables CAPI activity log

Tell us what's broken. We'll fix your tracking — free.

Describe the tracking/attribution problem you're stuck on and we'll map it to a fix: server-side conversions to Meta, Google, TikTok and Pinterest, plus first-party tracking that survives Safari. No code required.

Sources


Frequently asked questions

QIs the Meta Pixel a third-party cookie?
No. The Meta Pixel's `_fbp` and `_fbc` cookies are written on your own domain, which makes them first-party. The script is loaded from Meta's servers, but a cookie's party status is decided by the domain that owns the cookie, not by where the script came from. A third-party cookie block leaves both cookies in place.
QIf most of my cookies are first-party, why is my tracking getting worse?
Because first-party is not the same as durable. Safari's tracking prevention caps cookies written by JavaScript at seven days, ad blockers stop the tracking request before any cookie matters, and consent gates prevent the script from running at all. Three separate failure modes, none of which is the third-party cookie deprecation everyone is talking about.
QCan I still do retargeting without third-party cookies?
Partly, and it is a different problem from attribution. Audiences built from cross-site browsing erode; audiences built from data you hold — customer lists, uploaded contacts, on-site events sent server-side — do not. This article is about counting conversions, not reaching people, and the two are worth budgeting for separately.
QDoes server-side tracking make me exempt from consent requirements?
No. Consent law applies to the processing of personal data, not to where the code runs. Moving a conversion event from the browser to your server changes the delivery path, not your legal basis. Decide consent policy on its own terms and treat server-side as an engineering improvement, not a compliance one.
QWhat is the single most valuable thing to capture before third-party cookies go?
The click ID in your landing page URL, stored server-side at first touch against a durable visitor ID. It is the only identifier that ties a visit to a specific ad click, it is present exactly once, and every offline conversion import and server-side conversion API depends on you having it later.
QWill my attribution numbers match Meta or Google once I do this?
No, and they should not. You are counting conversions you can prove from your own records; the platforms count conversions they can model, over their own attribution windows, including view-through events you cannot observe. Expect a stable gap, watch its direction over time, and make budget decisions on the number you can audit.
QDo I still need a client-side pixel if everything goes server-side?
Yes, keep it. The platform's own first-party cookie is captured in the browser, and server events matched without it score lower on match quality. `_fbc` can be rebuilt from an `fbclid` in the URL, but `_fbp` cannot be created from nothing. Run both, deduplicated on a shared event ID.
QHow do I attribute a purchase on a checkout domain that is different from my landing page?
Carry an identifier across the hop — append the visitor ID or click ID to the outbound link and store it in a first-party cookie at the destination — and back that up with the email or phone the buyer supplies at checkout. Identity-based joins survive link stripping and cookie clearing; decorated links alone do not.

Find the qualified leads your forms are currently throwing away.

Install PartialLeads on one landing page, send traffic, and compare what your CRM captured against what PartialLeads recovered and qualified.