Conversion Sending
Pruuv automatically sends matched conversions back to your ad platforms — Meta CAPI, Google Conversion Upload API, and TikTok Events API. This closes the attribution loop, so the platforms have accurate revenue data to optimise your campaigns against.
How it works
Conversion sending is fully automatic. Once a funnel event is received (via the Pixel SDK or webhook), Pruuv:
- Identifies which platform the lead came from based on the click ID present in the event
- Matches the event to the corresponding ad account connection for that client
- Sends the conversion to the platform's API with all available matching signals
- Records the send result (success or failure) in the conversion audit log
Conversion sends run on a scheduled basis (daily at 03:00 UTC) and automatically retry on failure. You can monitor individual conversion send statuses from the Pruuv dashboard.
Platform setup
Meta (Facebook) CAPI
Meta uses the Conversions API (CAPI) to receive server-side conversion events. This complements the Meta browser pixel and is required for accurate attribution in a world with browser tracking limitations.
| Signal | Source | Impact on match quality |
|---|---|---|
| Pixel ID | Connections > [Meta account] > Conversion settings | Required — identifies your Meta dataset |
| fbc cookie | Pruuv Pixel captures automatically from fbclid URL param | High — direct click match |
| fbp cookie | Pruuv Pixel generates on first visit | Medium — browser identity |
| Email hash | Pruuv.track({ email }) or webhook email_hash field | High — audience match signal |
| Phone hash | Pruuv.track({ phone }) or webhook phone_hash field | High — audience match signal |
| IP address | Captured server-side automatically from the webhook request | Medium |
| User agent | Pruuv Pixel captures navigator.userAgent automatically | Low |
The Pixel ID links the server-side event to your Meta dataset. Find it in your Meta Events Manager under the dataset connected to your ad account.
fbc — email and phone hash signals alone can produce good match rates. For best results, use all available signals together. The Pruuv Pixel captures fbc, fbp, and user_agent automatically; include email and phone in Pruuv.track() for the strongest match.Google Ads — Conversion Upload
Google uses the Ads API Conversion Upload endpoint to receive click-matched conversions offline. This is the server-side equivalent of the Google Ads tag and is required for offline conversion tracking (e.g. leads that convert in a CRM after the initial form fill).
| Required | Where to configure |
|---|---|
| Conversion Action ID | Connections > [Google account] > Conversion settings > Conversion Action ID |
| OAuth token | Connected automatically via Google OAuth — stored securely in Vault |
| gclid / wbraid / gbraid | Captured automatically by the Pruuv Pixel on landing page |
| click_timestamp | Included when available — required for the Google Conversion Upload API |
The Conversion Action ID identifies which conversion action in your Google Ads account the event maps to. Create a conversion action of type "Import" in Google Ads and copy the ID from the action settings.
TikTok — Events API
TikTok's Events API allows server-side conversion events to be sent to your TikTok Pixel for attribution and campaign optimisation.
| Required | Where to configure |
|---|---|
| Pixel Code | Connections > [TikTok account] > Conversion settings > Pixel Code |
| Access Token | Connected automatically via TikTok OAuth — stored securely in Vault |
| ttclid | Captured automatically by the Pruuv Pixel on landing page |
The Pixel Code identifies your TikTok Pixel. Find it in TikTok Ads Manager under Assets > Events > Web Events.
Click ID requirements by platform
A conversion send is only attempted for a platform if at least one matching signal is present. Events with no eligible signals for a platform are skipped for that platform.
| Platform | Primary click ID | Works without click ID? | Fallback signals |
|---|---|---|---|
| Meta | fbc (from fbclid) | Yes — lower match score | email hash, phone hash, fbp, external_id, name/DOB/postcode hashes, city/state/country, gender, ip_address + user agent |
| gclid or wbraid or gbraid | No — click ID is mandatory | None | |
| TikTok | ttclid | Partial | email hash, phone hash |
Using CRM and Pixel together
The best conversion data comes from combining a server-side CRM webhook (which has revenue, demographics, and a stable reference ID) with the Pruuv Pixel (which has fbc, fbp, gclid, ttclid, and hashed PII).
These can arrive in either order. If your CRM fires first and the pixel fires shortly after, Pruuv performs an enrichment merge: the pixel data fills in any click ID fields that the CRM event left blank — without overwriting anything already stored. The conversion sender then sees a complete row with both datasets.
This means there is no need to coordinate timing between your CRM integration and the pixel. Both can fire independently and Pruuv assembles the best possible conversion payload.
Per-stage conversion configuration
By default, Pruuv sends all conversion events as Lead to Meta and TikTok, and uses the connection-level Conversion Action ID for Google. You can override this per funnel stage — for example, to send a Purchase event from your Sale stage and a Lead event from your Enquiry stage.
You can also disable conversion sending entirely for a specific platform on a specific stage — useful if a stage represents an internal milestone you do not want sent to ad platforms.
Stage-level conversion config is set in Connections > Funnel stages > [Stage] > Conversion sending.
Deduplication
Conversion sends use the funnel event UUID as the deduplication key when calling platform APIs. If you also run a Meta browser pixel, ensure the event ID on both sides matches to prevent double-counting in Meta's reporting. Pruuv handles this automatically if you are using only the Pruuv Pixel (not a separate Meta browser pixel).
Audit log
Every outbound conversion send — whether successful or failed — is recorded in Pruuv's conversion audit log. Each record includes the platform, status, error message (if any), timestamp, and retry count. This log is available to agency staff in the Pruuv dashboard and can be used to diagnose attribution issues.