CONNECTIONS / HubSpot / HubSpot to TikTok Offline eAPI
HubSpot deals into TikTok offline events, deduped by design.
There is no pixel at the branch counter or on the phone line. What there is: a HubSpot deal record, which Signals hashes, stamps with a stable event ID, and reconciles against TikTok's Offline Events API.
- ● hubspot → tiktok.offline_eapi :: live
- > event Deal closed-won value=19,850 GBP
- hash sha256(email,phone)
- route tiktok.offline_eapi dedupe=event_id
- ✓ delivered · match 55%
WHAT THIS ENABLES
HubSpot to TikTok Offline Events API
HubSpot to TikTok Offline Events API posts closed-won deals to TikTok with an event ID derived from the HubSpot record itself, which is what lets TikTok drop any resend instead of counting the sale twice.
- Deals HubSpot closes offline becoming fuel for TikTok's bidding models.
- One deal, one event ID, no matter how many sync runs touch the record.
- Offline delivery on a cadence that fits HubSpot's own 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 HubSpot closes the loop.
Built for the teams that own the number.
Call-centre and branch operations that buy TikTok media and record the resulting sales in HubSpot.
From kickoff to verified events.
-
Connect
Scoped token access to deal records and the contact properties needed for matching.
-
Reconcile
Each closed-won deal gets an event identifier computed from its own record, following TikTok's spec.
-
Deliver
Delivery to TikTok's Offline Events API on a schedule that is both monitored and deduped.
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 HubSpot records the event. |
What Offline eAPI actually receives.
- ● signals :: event payload
- > POST /event/track source=hubspot.deal
- event "CompletePayment" · event_time 1784016300
- user.email sha256 "a03ce1…" · user.phone sha256 "4b7f92…"
- properties.value 19850 · properties.currency GBP
- ✓ accepted · dedupe=event_id
Adjacent moves on the same stack.
from HubSpot
HubSpot to Google OCI
HubSpot to Google Offline Conversion Import keeps a captured GCLID pinned to the HubSpot…
Learn morefrom HubSpot
HubSpot to Google Store Sales
HubSpot to Google Store Sales turns closed-won deals and their contact records into Store…
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.
If a HubSpot deal gets re-synced by accident, will TikTok count the sale twice?
It shouldn't, because the event Signals sends is keyed to the deal record itself rather than to whichever sync run happened to pick it up. TikTok checks that identifier against what it has already accepted and drops the repeat silently, so an overlapping scheduled run or a manual retry does not inflate the reported total.
Can a stage earlier than closed-won reach TikTok's offline pipeline?
It can. Any deal stage can carry a mapped event, and some workspaces add a mid-pipeline stage for extra signal once the basics run. Closed-won is still the standard starting point, being the outcome TikTok's bidding actually chases, and widening the mapping later is a mapper change rather than anything structural.
NEXT STEP