Docs menu · Failed Event Recovery
Getting Started
Integrations
Server-side GTM
COD Order Protection
Advanced Features
Account & Billing
Downloads
Tools & Support
Docs / Server-side GTM
Last updated
Failed Event Recovery
Events your server container never received are sent again, for up to 24 hours
What it does
Every tracking hit for an sGTM container goes through PixelFly to your server GTM container once. If that server can't be reached at that moment (it is restarting, or the connection times out), not one of your tags runs for that hit, and the browser does not keep it to send later. The purchase, add to cart or page view is simply gone.
With Failed Event Recovery, PixelFly keeps a copy of a hit that never reached your server and sends it again once the server answers. Your tags then run as normal: Meta, GA4, Google Ads and the rest get the event.
When it sends again
After 1 minute, then 5 minutes, 30 minutes, 1 hour, 2 hours and 4 hours, then every 4 hours, until 24 hours after the first failure. Each wait varies a little, so a server that just came back is not hit by everything at once. Most server outages last minutes, so most events go out within the first few tries.
What is sent again, and what is not
520, 504 and 524 mean the server got the request but did not finish answering. Its tags may have fired already, and sending the hit again could count the event twice. Meta removes a repeat with the same event_id, and GA4 removes a repeated purchase with the same transaction ID from the same visitor, but other events would be counted again. A 400 fails the same way every time; fix the setup instead (GTM Preview shows why).
What your server and tools see
- The resent request is the original one: same URL, body, cookies, user agent and visitor IP, plus a header
X-PixelFly-Replaywith the attempt number. - Whoever sent the hit hears
202 {"status":"queued_for_resend"}once the copy is safely kept, so a server that retries on errors (a CRM, the WooCommerce plugin's server purchase, PixelFly's COD fire) does not send it a second time. If the copy could not be kept, the real error goes back instead. - The original hit is counted once and shows in Event Logs with its real status, for example 522. A resend is never counted again.
- Tracking Health shows "sGTM request failed" with how many hits failed, how many were recovered, how many are still being retried, and how many couldn't be resent (for example a 400).
Limits
- A resent event arrives late. Meta and GA4 record it when it is sent again, not when the visitor did it.
- A resend cannot set cookies in the visitor's browser. This only matters for the first hit of a visit.
- Events the browser never sends cannot be recovered, because nothing reached PixelFly: a page closed before the tags loaded, scripts delayed by a cache plugin until the visitor touches the page, or tags blocked before they run. Custom Loader and a first-party domain help with blocking.
Proxy containers (Meta CAPI, GA4, TikTok, LinkedIn and Snapchat without sGTM) already retry each ad platform on their own: a quick retry, then up to six more over about four hours.