Facebook Conversion API (CAPI) setup for WooCommerce, step by step

Set up the Meta Conversions API on a WooCommerce store: pixel id, access token, one event id for browser and server, hashed customer data, a test event, and when a cash-on-delivery order should count as a purchase.

Guides

Reading time
7 min
Checked
2026-10-26
Against
Platform docs
Sources
3 linked below

The Conversions API (CAPI) sends your orders to Meta from your server instead of the shopper's browser, so ad blockers, iPhone privacy settings and closed tabs can't lose them. On WooCommerce it takes about an afternoon. These are the steps in the order that avoids double counting.

1. Find your Pixel (dataset) id

In Meta Events Manager, open Data sources and pick the dataset your ads optimise for. Copy its id from Settings. Use the same id the Meta Pixel on your site uses: deduplication only works inside one id.

2. Generate an access token

In the same dataset's Settings, under Conversions API, press Generate access token. Copy it once and keep it private: it lets anyone send events to your dataset.

3. Install a server-side sender

  • With Trakero: download the WooCommerce plugin from Developers, upload it in WordPress, paste the tracking endpoint and keys, then add Meta under Destinations with the pixel id and token.
  • Without a platform: a server-side Google Tag Manager container (hosted by you or a provider) with a Meta CAPI tag, fed by your site's dataLayer.

4. One event id for both copies

The Pixel on the thank-you page and the server both report the purchase. Meta keeps one when the event name and the id match, so derive the id from the order: purchase_{order_id} in the browser (eventID) and on the server (event_id).

fbq('track', 'Purchase', { value: 2450, currency: 'BDT' }, { eventID: 'purchase_1042' });

5. Send hashed customer data

Meta matches the order to the ad click with what you send. Hash email and phone with SHA-256 after normalising them: lowercase the email; write a Bangladeshi number as 8801712345678 (country code, no plus, no leading zero). Also send the shopper's IP address and user agent unhashed, and the _fbc and _fbp cookies when present.

6. Send a test event

Copy the test event code from Events Manager → Test events and send one Purchase with it. It shows up within a minute and never counts as a real conversion. Our free Meta event tester does this from your browser.

7. Decide when a COD order is a purchase

With cash on delivery, an order placed is not money received. Most Bangladeshi stores report the purchase when the order is confirmed (by call or SMS), which filters fake orders with a delay of hours. Whatever you choose, keep it fixed so Meta isn't learning from a moving target.

8. Check it after a day

  • Events Manager → Overview: Purchase should show both Browser and Server, with deduplication on.
  • Event Match Quality for Purchase should rise as hashed email, phone, fbc and fbp arrive.
  • Compare a day of orders in WooCommerce with purchases in Events Manager: the gap should close, not double.

Try it on your store

Trakero applies all of this for you: first-party SDK, server-side delivery to Meta, TikTok, GA4, Snapchat and Pinterest, deduplication by order id, and a debugger that explains every event.

Start free

Tracking rules change. We'll tell you.

A short email when Meta, Google or TikTok change a tracking rule that affects stores, and when we add a free tool. A few a year. Unsubscribe in one click.

We use your address only for these emails. Privacy policy.