CRM

Salesforce offline conversion tracking, driven by won Opportunities

In an enterprise pipeline the click and the signature can be two quarters apart, and by the time Salesforce shows Closed Won the ad account has long since written the campaign off. Attribi reads your Opportunities on a schedule and turns the ones that reach a qualified or won stage into offline conversions on every ad platform you have connected, with the Opportunity amount and currency attached. It reads your org as it is configured, including the stage names your team invented.

No credit card required · 5-minute setup

What Attribi does with Salesforce

Won Opportunity revenue upload

Imports

A won Opportunity becomes a closed-won conversion carrying its amount and currency. It works even if your team renamed the won stage or runs several sales processes, and you can override which stages count as won if your org does something unusual.

Your stage names, mapped by you

Imports

At connect time Attribi lists the Opportunity stages that actually exist in your org and you pick which ones mean qualified. Nothing has to be renamed to match a vendor vocabulary, and no free-text guessing decides whether a deal counted.

Attribution fields on the Lead object

Sends

Attribi creates 16 custom fields on Lead, then creates and assigns a permission set so the connecting user can actually read and edit them. First touch, last touch, campaign, and journey are written as leads convert.

Matching on email and phone

Imports

Attribi ties a won Opportunity back to the person it already knows using the email and phone number on the contact attached to that Opportunity, then hashes both before any upload. Contacts with accurate email addresses match best.

On the roadmap

Planned, not live today. Listed so you can see what this integration does not do yet, before you sign up.

Click ID matching from Salesforce revenue

Planned Imports

A Web-to-Lead form can capture a Google or Meta click ID onto the lead, but Attribi does not use that click ID when it matches revenue from a won Opportunity. Salesforce revenue matching runs on email and phone today.

Not yet available.

Setting up Salesforce

  1. 1

    Connect your org

    Authorize Salesforce from the Connections page against a sandbox or a production org, and choose whether Attribi may create leads or should only enrich records that already exist. You can connect a sandbox first and repeat the same steps in production.

  2. 2

    Create the attribution fields

    One button creates the 16 custom fields on the Lead object, builds a permission set granting read and edit on each of them, and assigns it to you. The connecting user needs Customize Application; without it Attribi stops and names the fields to create by hand rather than half-finishing.

  3. 3

    Map your Opportunity stages

    Pick the stages that mean qualified from your own stage list. Won stages are recognized without configuration, so the only decision left is where mid-funnel starts for your team. From then on the pull runs on a schedule and uploads on its own.

Step-by-step walkthrough: Salesforce to Google Ads Offline Conversion Import Breaks Inside Salesforce, Not Inside Google Ads · Salesforce to Meta Offline Conversions: Send Every Stage Through the Conversions API, Not Just the Win · Salesforce to Meta Conversions Not Showing? Troubleshoot Delivery, Matching and Attribution · CRM Offline Conversion Tracking QA Checklist: Prove Each Step Before You Change Bidding · Salesforce Opportunity Attribution: Contact Roles, Repeat Deals and Revenue Coverage

Salesforce offline conversions for Facebook, Google and LinkedIn Ads: how the integration works

Key points

  • An ad platform cannot see a won Opportunity unless it is sent to that platform's conversions API with an identifier the platform can match.
  • Attribi reads your Opportunities once a day and uploads the first qualified and the first won Opportunity for each contact to every ad platform you have connected.
  • A won Opportunity uploads with its amount, so ad reporting can show revenue and not only form fills. An Opportunity with no amount uploads no revenue.
  • Salesforce revenue is matched on hashed email and phone. Click ID matching comes from the Attribi script on your site, not from Salesforce.
  • Setup needs no code: connect the org, create the fields, pick your qualified stages, then connect your ad platforms.

How do I send Salesforce offline conversions to Facebook (Meta) Ads?

Connect Salesforce and Meta Ads to Attribi and choose which Opportunity stages mean qualified. Attribi then sends qualified and won Opportunities to Meta through the Conversions API. A qualified Opportunity arrives as a Lead event and a won Opportunity arrives as a Purchase event carrying the Opportunity amount.

There is no file to export and no scheduled report to maintain. Once a day Attribi reads the Opportunities that changed since its last run and works out which ones crossed a stage you care about.

The person is identified with the email and phone number on the contact attached to the Opportunity. Both are SHA-256 hashed before they leave Attribi, and Meta accepts those hashed identifiers on their own, so a deal can be reported even when no Facebook click ID was ever stored in Salesforce.

Full walkthrough: send Salesforce closed-won deals back to Meta Ads

What is Salesforce offline conversion tracking?

Salesforce offline conversion tracking means reporting sales outcomes that happen inside Salesforce, such as a qualified Opportunity or a signed deal, back to the ad platform that produced the lead. It is called offline because the outcome happens after the website visit, in a CRM, where the ad platform's own pixel cannot see it.

Without it, an ad account only knows that a form was submitted. It cannot tell a lead that became a six-figure contract from one that never answered the phone, so every campaign is judged on cost per lead.

With it, each campaign can be read against qualified pipeline and closed revenue. The data already exists in Salesforce. The work is getting it to the ad platform in the format, and with the identifiers, that platform accepts.

What does Attribi read from Salesforce, and what does it upload?

Attribi reads Opportunities: the stage, the amount and the contact attached through the Opportunity's contact roles, preferring the primary contact. It uploads a conversion when an Opportunity reaches a stage you mapped as qualified, and again when it is won, with the amount attached on the won event.

Won detection uses your org's own definition of a won stage, so a renamed stage or a second sales process does not stop uploads. Qualified is whatever you pick from your real stage list at connect time.

Two limits are worth knowing before you rely on the numbers. A won Opportunity with a blank or zero amount is recorded but uploads no revenue. Each contact is reported once per stage, so a later renewal or expansion deal for a contact that already has a won deal is not uploaded as a second conversion today. Currency comes from the Opportunity on a multi-currency org and from your org's own currency setting on a single-currency org.

An Opportunity with no contact role has no email or phone to match on, so Attribi records the deal but cannot tie it to a person. If your team creates Opportunities without contacts, add a primary contact to the deals you want counted.

Which ad platforms receive Salesforce conversions?

Every ad platform you connect: Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads and Snapchat Ads. One Salesforce connection feeds all of them, and each upload is independent, so a rejected upload on one platform does not hold back the others.

Meta, LinkedIn, Microsoft, TikTok and Snapchat accept hashed email and phone without further setup. Google Ads accepts them only after you accept its Enhanced Conversions terms inside your Google Ads account, so do that before expecting Salesforce revenue to appear there.

Full walkthrough: Salesforce offline conversions in Google Ads

How is a Salesforce deal matched back to the ad?

By the contact's email and phone number, hashed before upload. Attribi does not currently use a click ID stored in Salesforce when it matches revenue from a won Opportunity. Click-level matching comes from the Attribi script, which records the click ID against the visitor on your own domain and keeps it there.

This matters because a click ID stored on a Salesforce Lead is easy to lose when the Lead is converted into a Contact and an Opportunity. Holding it against the visitor, outside Salesforce, means lead conversion cannot break the link.

If you install nothing on your website, qualified and won outcomes still upload on hashed email and phone. Expect lower match rates than a click ID gives, and expect accurate contact emails to matter more than anything else you can tune.

What do I need in Salesforce to set this up?

A Professional, Enterprise, Unlimited or Developer org, and a connecting user with the Customize Application permission. You can connect a sandbox first and repeat the same steps in production.

Essentials and Group Edition do not expose the API used to create custom fields. Attribi tells you exactly which fields to create by hand there, and everything else behaves the same once they exist.

Uploads to ad platforms and CRM revenue connections are paid plan features. The pricing page lists what each plan includes.

  1. Authorize Salesforce from the Connections page and choose whether Attribi may create leads or should only enrich existing records.
  2. Click once to create the 16 attribution fields on the Lead object, with a permission set assigned to you.
  3. Pick the Opportunity stages that mean qualified. Won stages are recognized without configuration.
  4. Connect each ad platform you want the outcomes sent to.

How is this different from exporting a CSV of closed deals?

A CSV upload is a manual job that someone has to remember, format correctly for each ad platform and repeat. Attribi runs the same loop daily without a person in it, applies each platform's own hashing and event format, and records the result of every upload per lead and per platform.

It also does two things an export cannot. It writes first touch, last touch, campaign and journey onto the Salesforce Lead so sales can see where a record came from, and it keeps the multi-touch path so the same closed deal can be read under first touch, last touch, linear and position-based models.

Funnel stages

Stages Attribi supports for Salesforce.

  • Lead
  • Qualified
  • Closed Won

Works with

Frequently asked questions

Does this still work if we renamed our won stage?

Yes. Attribi does not look for a stage literally called Closed Won, it uses your org’s own definition of which stages are won, so renamed stages, custom sales processes, and multiple record types are all handled without configuration. If your org does something genuinely unusual you can also name the won stages explicitly and Attribi will use your list instead.

Can Attribi match a Salesforce deal back to a Google or Meta click?

Not by click ID. When Attribi reads a won Opportunity it matches on the contact’s email and phone number, which are hashed before they reach any ad platform. Meta, LinkedIn, Microsoft, TikTok, and Snapchat all accept those hashed identifiers on their own. Google Ads accepts them only once you have accepted its Enhanced Conversions terms inside your Google Ads account; until you do, Google rejects any upload carrying hashed identifiers, and a Salesforce-only setup has no click ID to fall back on. Match rates on hashed identifiers are lower than a click ID would give in every case. Installing the Attribi script is what recovers click-level matching, because the click ID is then held against the visitor rather than looked for in Salesforce.

Which Salesforce editions can Attribi set up automatically?

Professional, Enterprise, Unlimited, and Developer orgs, where the connecting user has Customize Application. Essentials and Group Edition do not expose the API used to create custom fields, so Attribi cannot build them for you there. It fails loudly with the exact field list to create manually, and once the fields exist everything else behaves identically.

Will Attribi write to our Salesforce records?

Only as much as you allow. In full mode a converting visitor becomes a lead if Salesforce does not already have one. In attribution only mode Attribi never creates a record: it looks for a match, writes attribution onto it if one exists, and otherwise does nothing. Either way the only fields Attribi writes are the ones it created.

Do we need the tracking script on our website?

Not for revenue. Qualified and closed-won outcomes are read out of Salesforce and uploaded to your ad platforms whether or not any script is installed, so you can start without asking web engineering for anything. The script is what adds the visit history, the multi-touch path, and click-level matching.

What happens to a won Opportunity that has no amount?

It is recorded but no revenue conversion is uploaded, because there is no figure to send. Attribi only uploads a closed-won conversion when the Opportunity amount is greater than zero. If your team fills in the amount after closing, or tracks value only on line items, make sure the Opportunity amount is populated on the deals you want counted.

Updated

Connect Salesforce to Attribi.

Sign up and connect it from the Connections page.

Start Free

No credit card · Free up to 500 visitors a month