Why this happens
test_event_code is a separate, optional parameter from the rest of the event payload, generated fresh in the Test Events tab of Events Manager and typically only valid for a limited window. It is easy to copy it once during initial setup, hardcode it, and have it go stale weeks later while the rest of the integration keeps returning 200 - the code is only checked for presence and format, not validated for whether it is still current.
Separately, a valid send to the correct Pixel with no test code, or to the wrong Pixel or dataset entirely, will also return 200 while never appearing in the tool you happen to be watching - the request succeeded; it just was not aimed at the asset, or the test-events view, you expected.
Fix it
- Open Events Manager for the correct Pixel or dataset, go to the Test Events tab, and copy a freshly generated
test_event_codefrom that exact page - do not reuse one saved from a previous session or an old code comment. - Add it as
test_event_codeinside the event payload, as a sibling field todatarather than nested inside a single event object, matching the API reference for the API version you are calling. - Confirm the Pixel or dataset ID you are watching in the browser tab is the same one your server code is actually sending to - a copy-pasted ID from a different environment (staging versus production, or a client's dev Pixel) is a common mismatch.
- Send the test event and check the Test Events tab within its short display window - test events typically remain visible only briefly after arrival, so a slow manual check between sending and looking can miss it even when everything worked.
- If it still does not appear, check the full HTTP response body, not just the status code, for a
messagesorerrorarray Meta may include alongside a 200 on a partially-accepted batch.
How to verify it worked
- Confirm the response body's
events_receivedcount matches the number of events sent, and note thefbtrace_idin case you need to escalate to Meta support - a 200 withevents_received: 0explains a missing test event without contradicting the status code. - After fixing the test_event_code, resend and confirm the event appears in the Test Events tab within roughly a minute, tagged with a Server source and the correct event name - this closes the loop that the code, the Pixel ID, and the payload are all now aligned.
- Once confirmed, stop hardcoding the test_event_code in production sends - it is a debugging aid, not a production parameter, and leaving it in live traffic routes real events into the test-only view instead of standard reporting.