Docs menu · Testing & troubleshooting
Getting Started
Integrations
Server-side GTM
COD Order Protection
Advanced Features
Downloads
Tools & Support
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
- 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
/datain server Preview. - Prepaid order: purchase tags fire as usual.
- COD order: only PixelFly COD Protection (hold) fires (server: Succeeded), and the order appears in COD Held Orders with value, products and customer.
- 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.
- 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).