Skip to main content
ExplainerMarketing AnalyticsMeta Conversions API· 6 min read· in Content Types

Server-Set HTTP Headers Preserve Meta's _fbc Click Identifiers Beyond Safari's 24-Hour ITP Cap

While Apple's Intelligent Tracking Prevention deletes JavaScript-based tracking cookies within 24 hours, marketers can bypass this limit by setting Meta's click identifiers directly from their own servers. Moving the _fbc cookie to an HTTP response header restores the 90-day attribution window required for accurate Conversions API matching.

By Lila Morgan

In short

  • Safari's 24-hour tracking limit applies only to cookies created by client-side JavaScript, not to the identifiers themselves.
  • Web servers can capture Meta's click ID from the URL and store it using an HTTP response header, bypassing the browser's restriction.
  • Meta's Conversions API accepts server-stored click identifiers up to 90 days old, restoring attribution for delayed purchases.

The digital advertising industry has spent the last five years repeating a specific obituary: Apple’s Safari browser kills Meta ad tracking in exactly 24 hours. According to media buyers and analytics vendors, Intelligent Tracking Prevention (ITP) guarantees that if a user clicks a Facebook ad on Monday but waits until Wednesday to buy, the conversion is permanently lost.[1]

That claim is fundamentally a misunderstanding of how web browsers enforce privacy. The 24-hour death sentence does not apply to the tracking identifier itself. It applies exclusively to the mechanism most marketers use to store it: client-side JavaScript.

When a website stops relying on Meta’s browser pixel and instead writes the exact same `_fbc` click identifier using a server-side HTTP response header, the rules change. Safari treats the HTTP header as a trusted first-party session. The 24-hour cap disappears, restoring the 90-day attribution window Meta expects.[3]

The JavaScript Trap

To understand the workaround, you have to look at how Meta’s attribution actually breaks. When a user clicks a Facebook ad, Meta appends a unique 80-character string to the destination URL, known as the `fbclid`.[2]

Historically, the website’s Meta Pixel—a JavaScript library running in the user's browser—reads that URL parameter and writes it into a first-party cookie named `_fbc`. Because the script uses the `document.cookie` command to save the data, Safari’s ITP engine immediately flags it.[1]

Apple introduced ITP 2.2 in April 2019 specifically to target this behavior. The protocol dictates that any cookie created via client-side JavaScript on a URL containing known tracking parameters is strictly capped at a 24-hour lifespan. If the user returns on day two, the cookie is gone.[1]

How Safari's Intelligent Tracking Prevention treats different cookie creation methods.

Without that `_fbc` cookie, Meta cannot connect the eventual purchase back to the original ad click. The conversion registers as direct or organic traffic, the ad campaign looks unprofitable, and the algorithm stops spending money on the audience that actually converts.[2]

Shifting to the Server

The HTTP header bypass works because it moves the cookie creation out of the browser's jurisdiction. When a user clicks the ad, the request hits the company’s web server before Safari even begins to render the HTML page.

Instead of waiting for a JavaScript pixel to load, the web server reads the `fbclid` directly from the incoming request URL. The server then issues a `Set-Cookie` command in its HTTP response headers, instructing Safari to store the `_fbc` value.

Because the cookie originates from the server rather than a client-side script, Safari categorizes it as a genuine first-party state mechanism—the same technology used to keep users logged into their accounts. These server-set cookies bypass the 24-hour restriction entirely, persisting for their stated expiration date.

By utilizing the `HttpOnly` flag on the `Set-Cookie` header, developers can further secure the identifier. This flag makes the cookie completely invisible to client-side scripts, protecting the data from malicious third-party code while fully complying with Apple's stringent security recommendations.

Meta’s Conversions API explicitly supports this architecture, accepting `_fbc` values up to 90 days old. This allows advertisers to accurately attribute delayed purchases that take weeks of consideration, completely sidestepping the browser's artificial time limit.[3]

The required four-part string structure for a valid Meta _fbc cookie.

The CNAME Cloaking Caveat

However, Apple has not ignored server-side workarounds. In late 2020, ITP 2.3 introduced a new penalty for a technique called CNAME cloaking, where marketers use DNS records to disguise a third-party tracking server as a first-party subdomain.

If a company sets up a basic Server-Side Google Tag Manager instance on a subdomain, Safari checks the underlying IP address. If that IP resolves to known tracking infrastructure, ITP caps the server-set cookie at seven days.

To achieve the full 90-day persistence, the HTTP header must come from a genuine first-party server. The system setting the cookie must share the exact same IP address and domain as the primary website, proving to Safari that it is not a disguised third-party vendor.

"Only cookies set via HTTP Set-Cookie headers from a genuine same-domain server persist for their full TTL of up to 400 days," notes a 2026 technical analysis by analytics firm Seresa. "Most basic sGTM implementations still fail this test."

Formatting the Payload

Preserving the cookie is only half the battle; the server must also format the data exactly as Meta expects. The `_fbc` cookie is not just the raw click ID. It requires a specific four-part string structure to validate.[3]

The required format is `version.subdomainIndex.creationTime.fbclid`. For example, a valid cookie looks like `fb.1.1720598400000.IwAR2xY`, combining the static version prefix, the domain level, a 13-digit Unix millisecond timestamp, and the actual 80-character click identifier appended by the ad network.[3]

Server-side HTTP headers significantly increase event match quality by preserving identifiers.

When the server eventually sends this data back to Meta via the Conversions API, it must transmit the string in plain text. A common engineering mistake is applying a SHA-256 hash to the `_fbc` value, which permanently destroys the match rate.

"Email, phone, and name get SHA-256 hashed; fbp and fbc are already opaque and are sent as-is," explains a July 2026 implementation guide from Collectform. "Hashing them breaks the match."

Deduplication and Event IDs

Running a server-side HTTP integration usually means the website is still firing the standard browser pixel simultaneously. This dual-track approach ensures maximum coverage, but it creates a massive risk of double-counting conversions.

To prevent inflated revenue numbers, developers must assign an identical `event_id` to both the browser payload and the server payload. When Meta receives two identical event names with the exact same alphanumeric ID within 48 hours, its backend automatically deduplicates them into a single conversion.[3]

If the server and browser events arrive within five minutes of each other, Meta's architecture officially favors the browser event. The server-side payload acts as a silent backup, stepping in only when Safari's ITP or an ad blocker kills the client-side signal.[3]

The Ad Blocker Blind Spot

While server-set HTTP headers defeat Safari’s cookie expiration rules, they cannot solve every tracking failure. The mechanism still relies on the `fbclid` parameter physically reaching the web server in the initial URL request.[2]

Meta deduplicates identical events arriving from both the browser and the server within 48 hours.

Modern privacy tools, including aggressive ad blockers and iOS 17’s Advanced Tracking Protection, increasingly strip known tracking parameters from URLs before the page even requests a connection. If the `fbclid` is deleted in transit by the operating system, the server has nothing to store.[2]

Similarly, redirect chains frequently destroy the parameter. If a user clicks an ad that routes through a link shortener before landing on the final destination, the query string is often dropped along the way, preventing the `_fbc` cookie from ever forming.

This vulnerability is why server-side tracking is a mitigation strategy rather than a perfect cure. It successfully legally bypasses the browser's storage limits, but it cannot recover data that the user's device refuses to transmit in the first place.

Despite these edge cases, moving cookie generation to the server remains the most mathematically significant optimization an engineering team can make. Recovering just the Safari users who convert between day two and day seven often shifts a campaign from a loss to a profit.[2]

Despite these edge cases, moving cookie generation to the server remains the most mathematically significant optimization an engineering team can make.

As browser vendors continue to lock down the client-side environment, the era of dropping a JavaScript snippet and walking away is over. Accurate measurement now requires treating marketing analytics as core backend infrastructure, built and maintained by engineering teams rather than media buyers.[4]

How we did this

Method
Compared Apple's WebKit Intelligent Tracking Prevention (ITP) specifications against Meta's Conversions API documentation to isolate the exact technical boundary where client-side restrictions fail to reach server-side HTTP headers.
What we found
The widely reported 24-hour attribution death is a consequence of implementation (JavaScript), not browser policy. By shifting the cookie creation to the web server's HTTP response, the exact same identifier inherits the server's trusted first-party status, legally bypassing the ITP cap without violating the browser's sandbox rules.
What we worked from
Limits of this analysis
This analysis assumes the initial URL click parameter (fbclid) survives the network request and is not stripped by an ad blocker or iOS 17's Advanced Tracking Protection before reaching the server.

Terms to know

Intelligent Tracking Prevention (ITP)
A privacy feature in Apple's Safari browser that restricts how long cookies can persist, specifically targeting cross-site tracking.
Conversions API (CAPI)
Meta's server-to-server tool that allows advertisers to send web events directly from their backend systems to Meta, bypassing the browser.
fbclid
The 80-character Facebook Click Identifier appended to a URL when a user clicks a Meta ad.
HttpOnly
A flag applied to server-set cookies that prevents client-side JavaScript from reading or modifying the data, enhancing security.

Questions readers ask

Does server-side Google Tag Manager automatically fix the 24-hour cookie cap?

No. If sGTM is hosted on a CNAME subdomain that resolves to known tracking IP addresses, Safari's ITP 2.3 will still cap the server-set cookies at seven days. True 90-day persistence requires the tracking server to share the primary website's exact IP address.

Should I hash the _fbc cookie before sending it to the Conversions API?

Never. While personally identifiable information like email addresses and phone numbers must be SHA-256 hashed, the `_fbc` and `_fbp` cookies are already opaque identifiers. Hashing them will permanently break Meta's ability to match the user.

What happens if the browser pixel and the server send the same conversion?

Meta will deduplicate the events as long as both payloads include the exact same `event_id` and arrive within 48 hours of each other. If they arrive simultaneously, Meta officially favors the browser's payload.

Different angles

Marketing Analytics Engineers

Advocate for moving all tracking infrastructure to the server side to bypass browser restrictions.

This camp argues that client-side JavaScript is a dying technology for measurement. By treating analytics as backend infrastructure, engineers can ensure data fidelity, protect user privacy by stripping PII before it reaches ad networks, and legally bypass Safari's ITP sandbox by utilizing genuine first-party HTTP headers.

Privacy Advocates

View server-side tracking as a loophole that violates the spirit of browser privacy controls.

Privacy researchers contend that when a user chooses a browser like Safari specifically for its Intelligent Tracking Prevention, they are expressing a clear intent not to be tracked across the web. Using server-side HTTP headers to persist click identifiers for 90 days circumvents this user choice, moving the tracking out of the browser where privacy extensions can no longer audit or block it.

Ad Platform Operators

Require persistent identifiers to justify ad spend and train machine learning models.

For platforms like Meta and Google, the loss of the click identifier fundamentally breaks their business model. Without the `_fbc` cookie, their algorithms cannot prove that an ad drove a purchase, leading advertisers to pause campaigns. They heavily push the Conversions API and server-side integrations to restore the signal density required for their automated bidding systems to function.

Marketing Analytics Engineers 40%Privacy Advocates 30%Ad Platform Operators 30%
Marketing Analytics Engineers
Advocate for moving all tracking infrastructure to the server side to bypass browser restrictions.
Privacy Advocates
View server-side tracking as a loophole that violates the spirit of browser privacy controls.
Ad Platform Operators
Require persistent identifiers to justify ad spend and train machine learning models.

Perspectives this story doesn't cover

  • Small business owners lacking the engineering resources to implement server-side tracking.

Sources

Source coverage

4 outlets

3 viewpoints surfaced

Marketing Analytics Engineers 40%Privacy Advocates 30%Ad Platform Operators 30%
  1. [1]Blast Analytics

    Understanding Apple's ITP and the Impact on Your Business

    Read on Blast Analytics →
  2. [2]EGO DigitalMarketing Analytics Engineers

    Stop Losing Meta CAPI Conversions: How to Fix _fbc Cookie Expiration

    Read on EGO Digital →
  3. [3]Meta for DevelopersAd Platform Operators

    Conversions API Parameters

    Read on Meta for Developers →
  4. [4]Factlen Editorial Team

    Synthesis by Factlen editorial team

    Read on Factlen Editorial Team →

Comments

Stay informed

Every angle. Every day.

Get Content Types stories with full source coverage and perspective breakdowns, free every day.