CONNECTIONS / Salesforce / Salesforce to TikTok Offline eAPI
Salesforce closed-won, reconciled inside TikTok's offline pipeline.
A deal closed by phone or in a branch has no TikTok pixel to fire. Signals takes the Opportunity from Salesforce and reconciles it against TikTok's Offline Events API with hashed identifiers and a stable event ID.
- ● salesforce → tiktok.offline_eapi :: live
- > event Opportunity closed-won value=27,300 GBP
- hash sha256(email,phone)
- route tiktok.offline_eapi dedupe=event_id
- ✓ delivered · match 58%
WHAT THIS ENABLES
Salesforce to TikTok Offline Events API
Salesforce to TikTok Offline Events API is the pipeline that reconciles closed-won Salesforce Opportunities against TikTok's Offline Events API, each event carrying a stable identifier so a re-synced record never double counts a sale that already reached TikTok.
- Closed-won Salesforce revenue feeding TikTok's own campaign optimization.
- A stable event identifier per Opportunity, so overlapping syncs never double count a sale.
- Offline delivery on a cadence that fits your Salesforce update rhythm, not a fixed batch window.
The click, the conversion, and the credit.
The conversion happens off TikTok, away from any pixel. Here is how Salesforce closes the loop.
Built for the teams that own the number.
Teams closing Salesforce deals through call centres and branch networks who buy TikTok media.
From kickoff to verified events.
-
Connect
Connected App access to the Salesforce Opportunity object carrying the closed deal and contact fields.
-
Reconcile
Closed-won matched against a stable event identifier derived from the Salesforce record, per TikTok spec.
-
Deliver
TikTok Offline Events API delivery on a monitored, deduped schedule.
What changes when the CSV goes away.
| Capability | Manual CSV upload | Datahash |
|---|---|---|
| Reporting | Offline sales sit in a separate export, reconciled by hand. | Revenue counted in the same Offline eAPI reporting as web conversions. |
| Deduplication | A re-uploaded file risks counting the same conversion twice. | Deduped delivery, so a resent record never counts as a second conversion. |
| Match visibility | Match quality is a guess until the numbers look off. | Match rate reported per upload, tied to the source event set that produced it. |
| Effort and latency | An analyst exports and uploads on a manual cadence. | Server-side and automatic the moment Salesforce records the event. |
What Offline eAPI actually receives.
- ● signals :: event payload
- > POST /event/track source=salesforce.opportunity
- event "CompletePayment" · event_time 1784193780
- user.email sha256 "c48a12…" · user.phone sha256 "9de701…"
- properties.value 27300 · properties.currency GBP
- ✓ accepted · dedupe=event_id
Adjacent moves on the same stack.
from Salesforce
Salesforce to Google OCI
Salesforce to Google Offline Conversion Import is the pipeline that persists the GCLID…
Learn morefrom Salesforce
Salesforce to Google Store Sales
Salesforce to Google Store Sales is the pipeline that hashes contact and closed-won…
Learn moresame use case
ActiveCampaign to TikTok Offline eAPI
ActiveCampaign to TikTok Offline Events API: Signals reads your ActiveCampaign contacts and…
Learn moregeneric
TikTok Offline eAPI
Move your in-store and call-centre conversions to TikTok server-side, so TikTok can…
Learn moreAsked on almost every call.
How does TikTok avoid double-counting a Salesforce Opportunity that syncs twice?
Each event carries a stable identifier derived from the Salesforce Opportunity record itself, not from the timing of the sync. If the same closed-won deal is picked up again, whether from a retry or an overlapping scheduled run, TikTok recognizes the identifier and does not count the revenue a second time.
What Salesforce events besides closed-won can reach TikTok's offline pipeline?
Any conversion your Salesforce org records as a distinct stage can be mapped, though closed-won is the one most teams start with because it is the outcome TikTok's bidding optimizes toward. Earlier stages like a qualified opportunity can be added later without rebuilding the underlying connection.
NEXT STEP