Tracked phone calls are uploaded on a separate path with its own switch, under Communications → Settings → Ad conversion uploads. This page covers CRM and commerce outcomes: won deals, form leads and store orders.
What can be uploaded
Set a fixed value on a form-lead designation. A form submission carries no amount of its own, so a designation left on “use the record’s own value” will save and arm quite happily and then upload nothing — every candidate is refused for having no value, rather than sent as a zero. That refusal is deliberate: a zero-value conversion actively teaches the bidding algorithm the lead was worthless.
Uploads are supported for Google Ads, Microsoft Advertising and Meta. LinkedIn and TikTok can be connected for reporting but cannot receive uploads.
The two gates
Nothing uploads until both are satisfied. This is deliberate: each one alone is a plausible-looking half-configuration that would otherwise fail silently.1
The account is opted in
A per-account switch, off by default. No account has ever uploaded a conversion without someone turning this on.
2
At least one source is armed
A designation points a source at a specific conversion action on a specific ad account, and is then armed. A designation lands unarmed unless you explicitly ask otherwise.
source_not_designated rather than reporting a quiet success.
Hiveku never creates a conversion action
The destination must already exist on the ad account. Creating conversion actions on a client’s account is not something a marketing tool should do on your behalf. How you point at it differs by platform:- Google Ads — Hiveku lists the account’s own conversion actions to pick from, and ownership-checks the one you choose against that account both when the designation is saved and again at upload time. If the list comes back empty, create one in Google Ads first with an import or offline source.
- Microsoft Advertising — you type the offline conversion goal name exactly as it appears in Microsoft. There is no picker, and no ownership check: a typo becomes a silent non-match at upload.
- Meta — you type the Conversions API event name, such as
LeadorPurchase.
Validate-only: proving the payload before it counts
Enabling conversion uploads always lands in validate-only. A request that tries to enable it and take it live in the same call is rejected outright rather than quietly downgraded — going live is a separate, deliberate second step. In validate-only, Google receives the upload as a validation request: it checks the payload and records nothing. You get to see that a real upload would be accepted, without a single conversion reaching the bidding model.Going live is two actions, not one
Flipping to live does not release what was already parked. That is a separate button, on purpose: turning the switch should not push a backlog of accumulated conversions into a client’s bidding model in the same click. The sequence in full:- Designate a conversion action for a source
- Arm it
- Preview — a true dry run that touches no credential and writes nothing
- Enable — lands in validate-only
- Prove — run it; the payload is validated, nothing is recorded
- Go live — new conversions record for real
- Release — requeue the parked backlog, when you are ready for it
Why a conversion is refused
Most refusals are correct and expected. The run report names a reason for every one rather than reporting a bare count, and these are the ones you will actually see:no_click_id
no_click_id
The record carries no ad click ID, so there is nothing to match against. Usually the most common reason, and the first one worth checking. A lead that arrived organically, or with tagging stripped, simply cannot be uploaded — the platform has nothing to join it to.
conversion_precedes_click
conversion_precedes_click
The conversion is dated before the click that supposedly produced it, which is impossible. Usually a clock or ordering problem in the source record. Refused rather than uploaded with a nonsensical timestamp.
source_not_designated
source_not_designated
No conversion action is designated for that source, or the designation exists but is not armed. This is the second gate doing its job.
Consent was explicitly denied
Consent was explicitly denied
Where the visitor’s advertising signal is an explicit denial, the record is suppressed and never uploaded. Only an explicit denial suppresses — a record carrying no signal is unaffected.
The conversion is too old for the platform
The conversion is too old for the platform
Each platform bounds how old a conversion can be. Meta’s Conversions API rejects an event older than 7 days — measured from the conversion, not the click — so anything left sitting in validate-only that long is skipped rather than sent. Hiveku will not let you create a new Meta designation while the account is still in validate-only, precisely to stop a backlog quietly ageing out. Google and Microsoft bound the age of the click instead, and their windows are far longer.
A high
no_click_id count is usually a tracking finding, not an upload finding. It means leads are arriving without recoverable ad click IDs, which is worth fixing upstream — see How Attribution Works.Duplicates and repeat uploads
Every upload carries a stable identifier derived from the source record. Google and Meta dedupe on it platform-side, so re-running a batch cannot create a second conversion for the same deal. Microsoft’s offline-conversion API accepts no such key, so there the protection is Hiveku’s own record of what it already sent rather than anything Microsoft enforces. On Google, a row the platform already has comes back marked as a duplicate and is recorded as a success, not a failure. Meta absorbs a repeat silently on the same identifier. Microsoft reports no duplicate class at all. Removing a designation does not send anything behind your back either: rows already queued for that source are marked skipped rather than dispatched.What is deliberately not sent
- No personal data to Meta. The Meta path sends only the click parameter. Enhanced matching — a hashed email or phone used instead of a click ID, so the platform matches the person rather than the click — is refused for Meta on policy grounds. Google and Microsoft support it. A row is matched one way or the other, never both.
- Nothing while validate-only is on. Not partially, not for some platforms. Nothing.
- Nothing from a source with no armed designation.
Watching it work
The outbox records every row’s state: queued, validated, uploaded, failed or skipped, with an error code where there is one.What’s next
How Attribution Works
What gets captured, and why numbers differ from the platform’s
Connecting Ad Accounts
Connect Google, Microsoft and Meta
Phone Tracking
Call conversions upload on their own separate switch
Advertising Reports
Campaign ROI once outcomes are flowing back