Open Tracked/Integrations/Send data from CRM to Facebook conversion API using webhooks

Send data from CRM to Facebook conversion API using webhooks

A CRM can call a webhook when a deal changes. Your tagging server receives it and forwards it to Meta as a conversion, matched to the original lead.

5 min read · Updated October 26, 2026

CCRM stage changesWebhook to your tagging serverMeta Conversions API
In this guide
Key takeaways
  • The pattern: CRM stage change → webhook → server container → Meta. The server turns a CRM record into a Meta event.
  • It only works if the lead record carries the identifiers saved at the form: fbc, fbp, hashed e-mail and phone.
  • Send each stage once, with a stable event ID, and promptly, because Meta limits how old an event may be.

Most CRMs can call a web address when something changes. That small feature is enough to send your sales results back to Meta, so the ad platform learns which leads became customers. This page describes the pattern in a way that fits HubSpot, Pipedrive, Salesforce, Zoho, GoHighLevel and custom systems, and the next pages show the details for each. The overall idea is in how to send offline conversions, and the Meta side in how to set up the Conversions API.

The flow in detail

1

A visitor submits a form

Your site saves fbc, fbp, the page URL and the hashed e-mail and phone in hidden fields, and the CRM stores them on the lead.

2

A salesperson moves the deal

The deal changes from "new" to "qualified" or "won".

3

The CRM calls a webhook

A workflow or automation posts a small JSON message to your tagging subdomain.

4

Your server container accepts it

A client in the container recognises the request and turns it into event data.

5

The Meta tag sends the conversion

It reads the identifiers and sends a Conversions API event named for the stage.

6

Meta matches it

It links the event to the person who clicked the ad, if the identifiers are good.

Set up in minutes

Connected in minutes

Add your domain, install the pixel, connect your ad platforms and watch the first events land.

What the webhook should contain

FieldExampleWhy
event_nameQualifiedLeadThe name of the Meta event for this stage
event_idlead_4821_qualifiedA stable ID so a repeat send is not counted twice
event_time1735689600 (Unix seconds)When the stage changed
fbc, fbpStored at the formMatching to the ad click and browser
email_hash, phone_hashSHA-256 valuesMatching to the person
value, currency2500, USDWhat the deal is worth, if known

Hash e-mail and phone before they leave the CRM or in the server container, after trimming and lower-casing. See event match quality. Do not put plain e-mail in a URL, only in the body of a POST request over HTTPS.

Receiving it in the server container

A server container needs a client that recognises the webhook and turns it into event data. You can use a client from the gallery that accepts JSON posts, or write a small custom client. The Meta tag then fires on the event name. Keep the path obscure, and add a shared secret in a header that the client checks, so that nobody else can post events to your server. With Open Tracked, the tagging server runs for you on your own subdomain, so the webhook target is a path under that domain.

Try it

Works with your stack

Grab a logo and throw it. These are the tools Open Tracked already talks to.

Grab one. Throw it.

Timing

Meta only accepts events within a limited time window, generally about 7 days, though some sources allow longer. Send the stage at the moment it changes. If your CRM only supports a nightly export, you will lose events that are older than the window when they arrive. The Request Delay power-up (Business plan) can hold a request for 1 to 2,000 minutes if you want to delay a stage on purpose.

Testing

  1. Create a test lead through the real form, so the identifiers are stored.
  2. Move it through each stage.
  3. Watch the server container Preview: the webhook should arrive, be claimed and fire the Meta tag.
  4. Open Meta Events Manager, Test Events, and look for the custom event with its match keys.
  5. Check that moving the stage twice does not create two events.

Mistakes that lose data

SymptomEvents arrive but do not match
Likely causeThe identifiers were not saved at the form.
FixAdd hidden fields and test with one lead.
SymptomThe same stage is counted twice
Likely causeThe workflow runs on every save.
FixTrigger on the stage change only, and use a stable event ID.
SymptomEvents rejected as too old
Likely causeThe stage is sent weeks late.
FixSend at the time of change.
SymptomAnyone can post to your endpoint
Likely causeNo secret or check.
FixRequire a header secret and reject others.
0 of 6 done
Works worldwide

Runs on your domain, anywhere

Your tracking runs on your own domain, so a visit from any country is handled the same way.

Frequently asked questions

Can any CRM send data to Meta?

Any CRM that can call a webhook or an API when a record changes can, through a server container or your own code.

Do I need the click ID?

It helps matching. Hashed e-mail and phone are the main fallback.

How do I stop duplicates?

Use a stable event ID per lead and stage, and trigger the webhook on change only.

Is a server container required?

Not strictly. You can call the API directly. A container lets you reuse the data for Google and others.

Does Open Tracked have a CRM?

Yes. Its CRM pipeline sends stages back to Meta and Google Ads. If you use another CRM, use webhooks as described here.

Do I need spreadsheets to read my results?

No. Once tracking is live, the Open Tracked analytics shows spend, revenue, ROAS and profit, and you can ask Ari, the built-in AI assistant, questions about your own numbers in plain words. Ari's allowance depends on your analytics plan.

Is Open Tracked different from Open Track or Open Space Track?

No. Open Tracked is the official name of our server-side tracking platform, and the website is opentracked.io. Many people search for it as Open Track, OpenTrack or Open Space Track. All of them lead to the same product: server-side Google Tag Manager hosting, first-party analytics and a CRM pipeline.

Fix your tracking at the source

Open Tracked hosts your server-side Tag Manager, keeps first-party cookies alive and shows what each ad is really worth.

Open Tracked
Written by

The Open Tracked team

We build Open Tracked: server-side tracking hosting, analytics and the tools around them, for stores that spend on ads. Questions about this guide, or an idea for the next one?

Write to us Read the docs

Was this article helpful?

Comments

Loading comments...

Turn better tracking into better marketing performance

Start free