Meta CAPI payload builder + dedup checker
Fill in a conversion and get a complete Meta Conversions API request body, with user_data normalized and SHA-256 hashed in your browser per Meta's docs (Meta: Server event parameters · Meta: Customer information parameters · Meta: Main body parameters), plus a pass/warn/fail checklist. Below it, check whether a Pixel event and a server event would be deduplicated (Meta: Handling duplicate Pixel and Conversions API events).
1. Build a server event
Checklist
Hashed fields
Request body (POST /{pixel_id}/events)
Check it in the validator2. event_id dedup checker
Enter the Pixel side (fbq(..., {eventID: ...})) and the server side. Server event names that are server-track-lab events (for example demo_booked) are mapped to the Meta name we send.
Verdict:
Meta's rules (fetched): eventID must match event_id and the Pixel event must match event_name; matches received within 48 hours are deduplicated and only the first is kept; within about 5 minutes the browser event is favored; there is no dedup when only one source is used. Full walkthrough: Meta CAPI deduplication with event_id · generate IDs with the event_id generator.
Related tools: Meta & Google hashing tool · CAPI payload validator · event_id generator · Google Enhanced Conversions builder
POST /api/v1/track call: we normalize, hash, dedupe on event_id and forward to Meta CAPI. Free for 1,000 events a month, then CA$2 per 1,000. Get a free API key · Try the playground · API docsFAQ
Does my data leave the browser?
Your entered data never leaves the browser: hashing runs locally with WebCrypto and form values are never sent to server-track-lab, Meta or Google Analytics. The page uses standard page analytics only (GA4 page views and an anonymous tool_use event).
When does Meta deduplicate a Pixel and server event?
Per Meta's docs, the Pixel eventID must match the Conversions API event_id and the Pixel event must match event_name, and the events must be received within 48 hours of each other. If they arrive within about 5 minutes, Meta favors the browser event.
Is the payload ready to send?
It is a Conversions API request body. To send it you need your own Pixel (dataset) ID and access token; this page uses neither. server-track-lab's Meta forwarding also uses the customer's own pixel and token.
How is this different from the validator?
The validator checks a JSON body you already have. The builder creates one from form fields, hashing them for you.