Meta Conversions API for QR Campaigns: Why iOS Is Eating Your Scan Data (and How to Get It Back)
By Diljit Ramachandran · LinkedIn · /about
Published · Last updated · 2 min read
The Meta Conversions API (CAPI) is a way for your server to report an event to Meta directly, instead of relying on the browser pixel. QR scans happen on phones, where iOS and Safari restrict the pixel, so Meta sees only part of your scanners. Sending each scan server-side recovers events the browser loses.
Why do QR campaigns lose more pixel data than websites?
- iOS App Tracking Transparency. App Tracking Transparency is the rule under which, since iOS 14.5, an app needs the user's permission to track them across other companies' apps and websites. Opted-out scans from Instagram's or Facebook's in-app browser are heavily degraded.
- Safari Intelligent Tracking Prevention. Intelligent Tracking Prevention is a WebKit feature. According to WebKit, Safari blocks all third-party cookies by default and deletes script-created cookies after 7 days without interaction.
- Ad and content blockers that stop
connect.facebook.netstop the pixel script loading, so no event exists.
QR traffic is hit harder because every scan comes from a phone camera, and on an iPhone the link opens in Safari unless the owner changed the default browser. For scanner retargeting, the loss compounds: Meta's documentation requires a Custom Audience of at least 100 people to build a lookalike.
How does the Conversions API recover scan events?
The pixel runs in the visitor's browser; CAPI sends the same event from your server, so blockers and Safari's cookie policy are not in the path. Every dynamic QR code already routes through a redirect server, so that server sees every scan.
Sending both is safe. According to Meta's deduplication documentation, when a browser and a server event share the same event name and event_id within 48 hours, Meta keeps one. If the browser event is blocked, only the server event arrives, and you still count one scan. With QRCodeStack you add a CAPI token and the paired events are deduplicated for you.
What does a server-side scan event carry?
| Field | What it is |
|---|---|
| Event name | QRScan by default, or Lead, Schedule or any configured event |
| Event ID | Shared with the browser event, to deduplicate |
| IP address and user agent | Captured server-side; Meta's core match signals |
content_name, content_ids, content_category | The QR code's name, ID and type, for per-code audiences |
Because each event carries the code's name, you can build one audience for the spring packaging insert and another for the store window, from one pixel.
How do you set up CAPI for a QR code in five steps?
You need a Meta Business account, a pixel (Meta now calls it a dataset) and a plan with pixel tracking; on QRCodeStack that is Pro or higher, see pricing.
- In Meta Events Manager, open your pixel, then Settings, then Conversions API.
- Choose "Generate access token" under the manual option and copy it. Treat it like a password.
- In the QR code's tracking settings, add your Pixel ID, then under "Meta Event Options" paste the token into the "Conversions API token" field.
- Pick the event under "Event fired on scan".
QRScansuits audiences; use a standard event likeLeadif the destination is a real conversion, because custom names need a custom conversion before you can optimize toward them. - Scan the code, then check Test events. You should see a browser and server event, or server-only from a blocked environment.
What does CAPI not fix?
It is not magic attribution. Meta's best practices say the API shares events the pixel may lose, and recommend running both. A server event matches on IP address and user agent, which Meta cannot always tie to an account, and Events Manager shows the Event Match Quality score. Pair it with your QR analytics: your dashboard for every scan, Meta for audiences.
Fire a Meta event on every scan
Add your Pixel ID and CAPI token to a dynamic QR code. Pixel and Conversions API tracking are included on the Pro plan at $19/month.
Create a dynamic QR codeThe 7-day free trial needs no credit card but does not include pixel tracking.