If you are running Meta (Facebook/Instagram) ads for an e-commerce store in the EU, you are almost certainly measuring your results on incomplete data — and you probably know it. Your Events Manager shows declining match quality. Your reported ROAS looks fine on paper, but revenue growth does not match it. Your Meta pixel fires, but you are never quite sure what actually reached Meta's servers.
The problem is structural: your browser pixel cannot see through ad blockers, it breaks on iOS, and in the EU, your cookie consent banner means a significant share of visitors never trigger it at all. The fix is the Meta Conversions API (CAPI) — but most guides tell you to hire a developer or set up a Google Tag Manager server-side container. Neither is necessary.
This guide explains what CAPI is, why the browser pixel alone is broken, what GDPR actually requires for server-side forwarding, and how to get it working without writing a line of code.
What Is the Meta Conversions API?
The Meta Conversions API is a server-to-server integration. Instead of your visitor's browser sending a purchase event to Meta's pixel endpoint, your server sends it directly to Meta's Marketing API after the order is processed.
This matters for one reason: your server is invisible to ad blockers and unaffected by iOS privacy restrictions. When uBlock Origin blocks Meta's pixel script, or iOS prevents the pixel from reading cookies, your server-side event still reaches Meta with full attribution data.
There are two ways events reach Meta in a healthy setup:
- Browser pixel — fires in the visitor's browser, captured by Meta's JavaScript. Subject to blocking, iOS ITP, and consent restrictions.
- Conversions API — fires from your server after the order is placed. Not subject to any of the above.
You need both, running in parallel, with deduplication so Meta does not double-count.
How Much Data Is Your Pixel Actually Losing?
This is not a theoretical problem. In the EU specifically, the data loss from browser-only tracking is severe:
- Ad blockers: uBlock Origin has over 50 million active users. Brave Browser, which blocks ads and trackers by default, has 75 million monthly active users. In Germany, the Netherlands, and Austria, ad blocker adoption sits at 40–50% — nearly double the global average.
- iOS App Tracking Transparency: Since iOS 14.5 in 2021, every iOS app must request permission before tracking users. The opt-in rate is approximately 25%. iOS 17 and later extended link tracking protection to Safari, stripping click parameters (including
fbclid) from URLs. - Cookie consent rejections: A well-designed CMP in a German or Dutch store will see 30–60% of visitors decline marketing tracking. Those users' events never fire.
The combined effect: 25–40% of your actual conversions are invisible to Meta's pixel. The purchase happened. The order landed in your system. But Meta never saw it, never attributed it to your campaign, and your Smart Bidding algorithms are optimising on a distorted picture of reality.
The consequences compound: Meta's algorithm under-bids on profitable audiences (because it sees lower conversion rates than actually exist) and your reported CPA is inflated, making good campaigns look unprofitable.
Browser Pixel + CAPI: How the Two Work Together
The correct architecture is not to replace the pixel — it is to add CAPI alongside it:
Customer clicks ad → lands on your store Browser pixel fires: PageView, AddToCart, InitiateCheckout ← may be blocked Browser pixel fires: Purchase (on thank-you page) ← may be blocked Order placed → webhook hits your server CAPI fires: Purchase ← always reaches Meta
Both the pixel and CAPI send a Purchase event. Meta's deduplication logic uses the event_id field to merge them — if both arrive, Meta counts one conversion. If only the CAPI event arrives (because the pixel was blocked), Meta still counts one conversion. You recover the lost ones without inflating the ones that were working.
event_id in both the pixel and the server event causes double-counting, which distorts your data in the opposite direction.What GDPR Actually Requires for CAPI
This is where EU merchants hesitate, and rightly so. The GDPR implications of server-side tracking are real but frequently misunderstood. Here is what actually applies.
Lawful basis for forwarding conversion data
To forward a customer's purchase event with any personal identifiers (hashed email, hashed phone number, IP address) to Meta, you need a lawful basis under GDPR Art. 6. For conversion tracking, this is typically:
- Consent (Art. 6(1)(a)): The customer has actively opted in to marketing tracking via your CMP. This is required in Germany and other strictly-GDPR-enforced jurisdictions.
- Legitimate interests (Art. 6(1)(f)): Some legal opinions hold that conversion measurement qualifies. The German DPA (BfDI) takes a stricter view. Get legal advice specific to your jurisdiction before relying on this.
The safest approach in the EU: only forward customer identifiers to CAPI for visitors who have given marketing consent, and send events without any customer identifiers (value, currency, order ID only) for non-consenting visitors. This is sometimes called "cookieless" or "consent-gated" CAPI.
Data minimisation (Art. 5(1)(c))
You should forward only the fields Meta needs for conversion matching:
- Hashed email (em): SHA-256 of the lowercase, whitespace-stripped email address
- Hashed phone (ph): SHA-256 of the digits-only phone number
- Event name, value, currency, order ID
- Click ID (fbclid) if available — stored as a first-party cookie on the initial ad click
Pseudonymisation, not anonymisation
Hashed email is pseudonymous data, not anonymous data. If Meta can cross-reference the hash with their existing user database, it is still personal data under GDPR. This means your Data Processing Agreement with Meta must cover this data transfer, and the SCCs (Standard Contractual Clauses) for EU-US data transfers must be in place.
Meta provides a Data Processing Terms addendum that covers CAPI data. You must accept it in your Meta Business Settings under Data Use.
The Traditional CAPI Setup (Why It Requires a Developer)
Meta's native CAPI documentation assumes you will either:
- Build a direct API integration — write code to hit Meta's
/eventsendpoint with the right payload format, handle authentication with a System User access token, implement event deduplication, and manage retries on API failures. This is a multi-day engineering project. - Use GTM Server-Side — set up a Google Cloud Run container, deploy the GTM server-side tag, configure the Meta CAPI tag within it, manage the container version, and pay for the GCP infrastructure separately. This requires a developer, takes 4–8 hours minimum, and adds another ongoing maintenance surface.
- Use Meta's native Shopify integration — Meta's built-in Shopify app sends some CAPI events, but the match quality is notoriously inconsistent and the consent handling is basic.
None of these options are accessible to a store owner or marketing manager without technical support.
Setting Up Meta CAPI With SyncBeacon (No Developer Required)
SyncBeacon is a server-side relay that sits between your store's order system and Meta's CAPI. When an order is placed, your platform sends a webhook to SyncBeacon's endpoint. SyncBeacon normalises the payload, applies GDPR masking (SHA-256 hashing of email and phone, consent gating), and forwards the event to Meta's /events API with a three-layer retry system.
Step 1: Install the SyncBeacon tracker
Add one script tag to your store's <head>:
<script src="https://syncbeacon.cloud/static/sb.js" data-key="sb_pub_XXXX" async ></script>
Find your data-key in your SyncBeacon dashboard under Install Tracker. This script:
- Fires
PageView,ViewContent,AddToCart, andInitiateCheckoutautomatically — zero configuration - Captures
fbclidfrom the URL on the initial ad click and stores it as a first-party cookie (_sb_fbclid) for 90 days - SHA-256-hashes email and phone in the browser — no plain-text PII ever leaves the page
Step 2: Configure your store's webhook
In your Shopify admin → Settings → Notifications → Webhooks, add:
Event: Order creation
Format: JSON
URL: https://syncbeacon.cloud/api/v1/webhooks/shopify/{your_merchant_id}For WooCommerce: WooCommerce → Settings → Advanced → Webhooks → Add webhook, set topic to Order created, same URL format with your merchant ID.
This webhook fires on every order, regardless of whether the customer had an ad blocker, rejected cookies, or is on iOS. It is your guaranteed delivery path.
Step 3: Connect your Meta integration
In the SyncBeacon dashboard:
- Go to Integrations
- Click Meta Conversions API
- Complete the OAuth flow — this authorises SyncBeacon to forward events to your Meta pixel on your behalf using a System User access token
- Select the pixel ID to receive events
No access tokens to manage manually. No API documentation to read.
Step 4: Configure consent mode
In Settings → Compliance, set your consent mode:
- Explicit (recommended for EU): Only hashed customer identifiers are forwarded for sessions where the customer consented to marketing tracking. Non-consenting orders send only value, currency, and order ID — no PII.
- Auto: Hashed identifiers are always forwarded. For non-EU stores only.
SyncBeacon's pipeline checks the consent flag on every event before including any customer identifiers in the Meta API payload. This is what makes the integration GDPR-compliant by default.
Step 5: Verify in Meta Events Manager
Go to your Meta Business Manager → Events Manager → your pixel → Test Events tab. Place a test order on your store. Within 30–60 seconds you should see:
- A
Purchaseevent appear in Test Events - The event source showing
server(notbrowser) - A match quality score (aim for 7.0+ out of 10)
What Happens After Setup: The Delivery Guarantee
SyncBeacon's event delivery pipeline has three retry layers:
- Tenacity (inner): On any transient error (Meta 5xx, rate limit, timeout), the request retries up to 3 times with exponential backoff of 2–8 seconds. This handles brief Meta API blips.
- Celery (outer): If all inner retries fail, the task is re-enqueued with a 60-second delay, up to 5 times. This covers sustained Meta API outages of up to 5 minutes.
- Dead-letter queue sweep: A background process runs every 15 minutes and re-enqueues any events still stuck. Each event gets up to 24 delivery attempts per destination, and is only marked as abandoned after 48 hours of continued failure.
Per-destination delivery tracking means if an event has already been successfully forwarded to Meta but failed for Google Ads, only the Google Ads delivery is retried — the Meta delivery is not duplicated.
The Match Quality Improvement
Here is what the before/after typically looks like in Meta Events Manager:
| Setup | Typical match quality score |
|---|---|
| Browser pixel only (EU store, CMP) | 3.0 – 5.5 / 10 |
| Browser pixel + Meta's native Shopify integration | 5.0 – 7.0 / 10 |
| Browser pixel + server-side CAPI via SyncBeacon | 7.5 – 9.5 / 10 |
Higher match quality means Meta's algorithm can attribute more conversions to the right people, your campaign data is more accurate, and Smart Bidding performs better.
The recovered conversions are not new conversions. They are the real purchases that were already happening but were invisible to Meta. Seeing them for the first time often changes the apparent performance of campaigns significantly — sometimes surfacing campaigns that were underperforming on paper but were actually profitable.
Summary
The Meta Conversions API is not optional for EU e-commerce stores running Meta ads. It is the only way to close the 25–40% data gap that ad blockers, iOS, and cookie consent create in your browser pixel data.
The setup does not require a developer, a GTM server-side container, or any API credentials managed manually. SyncBeacon handles the server-side forwarding, GDPR masking (consent-gated, SHA-256 hashed identifiers), deduplication, and three-layer retry delivery in a single integration that takes under 15 minutes to configure.
If you are running Meta ads in the EU without CAPI, your campaign optimisation is working on incomplete data.
Get started
Close your conversion gap today
Connect Meta CAPI, Google Enhanced Conversions, TikTok Events API, and more — in one setup, no developer required.
Join the waitlistNot legal advice. GDPR obligations depend on your specific jurisdiction, business model, and existing consent infrastructure. Consult your Data Protection Officer or legal counsel for compliance decisions specific to your context.