Docs menu · Testing & troubleshooting

Docs / COD Order Protection

COD Order Protection

Testing and troubleshooting

Check a prepaid and a COD order before going live, and what to do when something is off.

Test before going live

  1. Preview your web container (and server container). Optional: put a Meta Test Event Code in the Meta tag / Receiver, and enable the sGTM Preview header on the container page to see /data in server Preview.
  2. Prepaid order: purchase tags fire as usual.
  3. COD order: only PixelFly COD Protection (hold) fires (server: Succeeded), and the order appears in COD Held Orders with value, products and customer.
  4. Approve it: sGTM Preview shows a Data Client purchase firing Meta / GA4 / Google Ads; or the order’s fire response lists the Receivers that accepted it.
  5. Before going live: remove the test code, disable the Preview header, publish.

Troubleshooting

  • Hold tag “missing order_id” but Preview shows transaction_id: an “Exclude parameters” transformation strips it; add the hold tag to its excluded tags.
  • Hold tag doesn’t fire: host or API key still a placeholder, or the purchase reaches sGTM without cod_hold = true.
  • 401 unauthorized: wrong key: the hold needs the API Key (pf_live_…), not the webhook secret.
  • Held order without customer or products: your purchase event uses other field names; see the example above.
  • WooCommerce counts COD orders at checkout: the plugin’s COD Order Protection is off while the plugin has an API key.
  • Order stays “approved”: open it: the fire response says why (no value/currency, COD quota used up, no Receiver accepted it, fire path not chosen).

We use cookies to enhance your experience, analyze site traffic, and for marketing purposes. By continuing to use our site, you consent to our use of cookies. Learn more