Skip to content

CAPI Purchase events firing for cancelled/unpaid orders — Meta for WooCommerce 3.6.0 #3890

@tonsvalleyshop

Description

@tonsvalleyshop

Hi Meta Support,

I'm experiencing a critical issue with Meta for WooCommerce v3.6.0 on WooCommerce 10.6.1 / WordPress 6.9.4 where my Meta Ads conversion data is incorrect. Cancelled and unpaid orders are being reported as successful conversions in Ads Manager.

Site: tonsvalley.shop
Pixel ID: 271117514782530
Meta for WooCommerce version: 3.6.0
WooCommerce version: 10.6.1
WordPress version: 6.9.4
PHP: 8.3.30
Payment gateway: Razorpay

The problem:

  1. When a customer initiates checkout but fails to complete payment (e.g. Razorpay payment abandoned), the order remains in "Pending payment" status.

  2. WooCommerce's stock hold feature auto-cancels these unpaid orders after 30 minutes (this is standard WooCommerce behavior).

  3. Facebook's own crawlers (user-agent: facebookexternalhit/1.1 and meta-externalads/1.1) are visiting the order-received (thank-you) URLs that contain UTM parameters from our ad campaigns. When these crawlers hit those pages, the CAPI fires server-side events including on order-received pages for orders that were never actually paid for.

  4. The result is that Meta Ads Manager shows inflated purchase conversion numbers because CAPI events are being sent for orders that are cancelled/pending/failed — not just successfully completed orders.

Diagnostic evidence:

I installed a custom diagnostic logger and captured the following sequence on March 19, 2026:

  • 21:13:53 — WooCommerce auto-cancel cron runs, cancels Order #17997 (Razorpay, ₹357, pending for 37 minutes)
  • 21:15:01 — facebookexternalhit crawler visits /checkout/order-pay/16106/ — CAPI PageView fires
  • 21:15:02 — facebookexternalhit crawler visits /checkout/order-received/16106/ — CAPI event fires on the thank-you page
  • 21:15:03 — Another CAPI request fires for the same order-received URL

The CAPI requests are sent with partner_agent "woocommerce_7-10.6.1-3.6.0" confirming they originate from the Meta for WooCommerce plugin.

This issue likely started around March 10-12 when both WooCommerce updated to 10.6 and the Meta plugin updated to 3.6.0.

Requested fixes:

  1. The plugin should check order status before firing any Purchase CAPI event — only orders with status "processing" or "completed" should trigger a Purchase event.

  2. The plugin should not fire CAPI events when the request comes from Facebook's own crawlers (facebookexternalhit, meta-externalads). These are not real customer visits.

  3. The plugin should not fire CAPI events on the order-received page if the order's payment status is not confirmed.

This is causing real financial damage as our ad optimization is training on false conversion data. Please escalate this.

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions