In this guide
- Store click IDs and hashed contact data on the Lead via web-to-lead hidden fields or your integration.
- Use a record-triggered Flow (or Apex) to call a webhook when status or stage changes.
- Map Lead status and Opportunity stage to conversions, and send each once.
Salesforce is the CRM of choice for many B2B companies, and its flexibility is both the benefit and the problem: there is no single way to do this. This page lays out the common, lowest-risk route and the traps. It follows the pattern in CRM data to Meta with webhooks. Your Salesforce admin should review the details, because every org has its own objects and rules.
Fields to add
| Field (on Lead and Contact) | Holds |
|---|---|
| Google click ID | gclid, wbraid, gbraid |
| Meta click ID | fbc |
| Meta browser ID | fbp |
| Hashed e-mail | SHA-256 value |
| Landing page and campaign | URL and UTMs |
Fill these from the web-to-lead form with hidden fields, or from the integration that creates leads. When a Lead converts to a Contact and Opportunity, make sure the values are mapped across, or read them from the converted Lead.
Brands that grow on cleaner data
Stores and agencies use Open Tracked to see which ads earn the sale.
Calling your server
Create a record-triggered Flow
On Lead (status change) and Opportunity (stage change).
Add a condition
Run only when the status or stage changed to a value you want to send.
Add an HTTP callout or outbound message
Post a JSON body to a path under your tagging subdomain.
Include a secret
A header your server container checks.
Handle errors
Log failures and retry, or alert someone.
Flow's HTTP callout and external service features depend on your edition and settings, so confirm with your admin what is available. Some teams use Apex or a middleware tool instead.
Mapping stages
| Salesforce | Meta event | Google Ads |
|---|---|---|
| Lead status: Qualified | QualifiedLead | Qualified lead |
| Opportunity stage: Proposal | Proposal | Optional |
| Opportunity stage: Closed Won | Purchase with amount | Sale with value |
Ask Ari instead of digging through reports
Ari reads your tracking and ad data and answers in plain words.
Privacy and permissions
- Send only data you have consent to use for advertising.
- Hash e-mail and phone before sending.
- Keep the endpoint secret and rotate the secret regularly.
- Do not send free-text notes or other personal data.
Common problems
A worked example: a software vendor with long sales cycles
A software vendor sells to large companies, and a deal takes months. Its ads on Google and LinkedIn bring form fills. Salesforce tracks Leads and Opportunities, and the sales team records the stage of each. The vendor stores the click IDs on the Lead and maps them to the Contact when the Lead converts. A Flow runs when an Opportunity reaches "Proposal" and when it is Closed Won, and posts to the tagging server with the Opportunity amount. Google Ads and Meta receive the stages with the click IDs, months after the original click. Because the click windows are limited, the vendor also uses hashed e-mail matching for the stages that arrive late.
Long sales cycles are the hardest case. Send an early stage, such as a qualified lead, as soon as it happens, because it arrives inside the window and still carries a strong signal. Treat the later stages as a bonus. A mix of an early, frequent signal and a late, valuable one gives the platforms something to learn from now and something to check against later.
Terms you will see
- Lead
- A person or company that has shown interest, before qualification.
- Opportunity
- A qualified deal in Salesforce.
- Flow
- Salesforce's automation builder.
- Outbound message
- A Salesforce feature that sends data to an external address when a record changes.
- Closed Won
- The stage that means the deal was won.
Ask your Salesforce admin to monitor the Flow. Flows can fail when a field is removed, a permission changes or an endpoint is no longer allowed. Make sure failures raise an alert rather than disappearing into a log nobody reads. The most expensive failures in a long sales cycle are the ones you discover months later, when the stages that should have been sent are no longer inside the platform's window.
Raw events in. Clean events out.
Open Tracked collects each event on your own domain, removes the noise and sends what is left to Meta, Google Ads, TikTok.
Frequently asked questions
Can Salesforce send conversions to Meta and Google Ads?
Yes, through Flow, Apex or middleware calling a webhook or an API.
Where do I store click IDs?
In custom fields on the Lead, carried to the Contact and Opportunity.
Which stage should I send?
Qualified lead and closed won are common, with the opportunity amount as the value.
Do I need a developer?
Often a Salesforce admin can build the Flow. Apex needs a developer.
Is there a ready-made Open Tracked connector?
Not as a packaged app. You connect Salesforce through webhooks to your tagging server.
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.
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?
Comments
Loading comments...












