Measurement Truth

How to track Paystack and Flutterwave checkouts in Meta ads

Two payment gateway nodes connecting through a secure server to an analytics node via a glowing red data stream.
July 1, 20266 min read

Paystack and Flutterwave checkouts often break Meta tracking because they redirect the customer off your site to complete payment, so the browser pixel never fires the Purchase event on the way back. The fix is to fire a server-side Conversions API purchase when the gateway confirms payment through its webhook, keyed to the original click, instead of relying on the redirect landing.

Why gateway redirects lose the sale

Paystack and Flutterwave use hosted checkout: the customer leaves your store, pays on the gateway's page, and is then redirected back. The Purchase event only fires if they land back on a thank-you page that runs your pixel. On mobile, on flaky networks, or when the redirect drops, plenty of paying customers never make it back to that page.

So the money arrives, the gateway confirms it, but Meta records nothing. Your ad account then optimises against a purchase count that is missing exactly the conversions you paid for.

The webhook is your source of truth

Both gateways send a server-to-server webhook the moment a payment succeeds. That webhook does not depend on the customer's browser, their network, or whether the redirect completed. It is the one reliable signal that says this order was really paid.

So instead of trusting the redirect, you fire your Meta purchase event from the webhook. When Paystack or Flutterwave confirms payment, your server sends a Conversions API Purchase to Meta with the real value.

Keying the CAPI event to the ad

For Meta to credit the right campaign, the server event needs the identifiers from the original click:

  • At checkout, capture the Meta click and browser identifiers (fbc and fbp) plus a unique order reference.
  • Pass that reference into the gateway's transaction metadata when you initialise the payment.
  • In the webhook handler, read the reference back, look up the stored fbc/fbp and hashed customer data, and send a CAPI Purchase with the real amount.
  • Use a shared event ID so any pixel event and the server event deduplicate to a single purchase.

Shopify, WooCommerce, or custom, the principle holds

On Shopify with a Paystack or Flutterwave app, the redirect can still skip the thank-you page, so a webhook-driven server event is more reliable than the app's built-in pixel. On WooCommerce, Selar, or a headless build, you own the webhook endpoint directly, which makes this even cleaner.

Either way the rule is the same: treat the gateway webhook as the conversion, not the browser redirect. That is what makes tracking survive the off-site payment step.

Verify against real settlements

Once webhook-driven events are flowing, reconcile the Purchase events Meta received against your gateway settlements and Shopify orders for the same window. They should line up. If Meta is short, a webhook or identifier step is misfiring; if Meta is over, your deduplication is off.

When the numbers agree, you are finally attributing real, paid Paystack and Flutterwave orders to the ads that drove them.

Frequently asked questions

Why don't Paystack payments show in my Meta pixel?+

Because Paystack uses hosted checkout that redirects customers off your site to pay. The pixel Purchase event only fires if they return to a thank-you page, and many paying customers never complete that redirect. The reliable fix is to fire a server-side Conversions API purchase from Paystack's payment webhook instead.

How do I track Flutterwave conversions in Meta?+

Fire the conversion from Flutterwave's server-side webhook rather than the browser. When Flutterwave confirms a successful payment, send a Meta Conversions API Purchase with the real value and the stored fbc/fbp identifiers from the original click, deduplicated with a shared event ID.

Do I need a webhook to track gateway checkouts?+

It is the most reliable method. The webhook is a server-to-server confirmation that does not depend on the customer's browser or a successful redirect, so it captures paid orders the pixel misses. Firing your Meta CAPI purchase from that webhook is what makes gateway checkout tracking trustworthy.

Does this work for WooCommerce and custom stores too?+

Yes. The principle is identical: treat the gateway's payment webhook as the conversion event and send it to Meta server-side with the original click identifiers. On WooCommerce, Selar or a headless build you control the webhook endpoint directly, which makes the setup even more straightforward than on Shopify.

See your real numbers first

Measurement & Attribution runs on the same source of truth we build for every brand. Apply for a paid Measurement Audit and we will show you the gap before we touch a campaign.