> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sapt.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Server-side conversions

> Upload the leads and purchases you measure straight to Meta and Google Ads server-side — recovering attribution the browser loses and feeding Smart Bidding. Includes the new Google Ads CAPI.

Browser-side conversion pixels miss a lot: ad blockers, tracking protection, and cross-device journeys all eat events the ad platforms never see. Sapt closes that gap by uploading the conversions it measures **server-side**, with customer data hashed before it leaves Sapt. The platforms get a more complete, better-matched signal — which directly improves Smart Bidding and optimization.

Sapt sends conversions to two destinations. Connect either or both.

## Meta CAPI

Connect Meta, pick a pixel, and conversions upload to Meta's Conversions API server-side — with hashed PII plus the browser's `fbc`/`fbp` cookies for matching, and deduped against your browser pixel by event id.

This is the same engine documented in detail, with full REST examples, on the API reference page:

<CardGroup cols={2}>
  <Card title="Server-side conversions (CAPI) — REST" href="/docs/mintlify/api/conversions" description="Find your pixel, connect it, and POST conversions over the REST API." />
</CardGroup>

## Google Ads CAPI

Connect **Google Ads**, pick a **conversion action**, and from then on every conversion Sapt records uploads to Google Ads server-side, automatically.

Both lead and purchase conversions are eligible. A conversion uploads whenever it carries an identifier Google can match on:

| Identifier           | Where it comes from                                                                       |
| -------------------- | ----------------------------------------------------------------------------------------- |
| `gclid`              | Google Ads click ID, captured on the landing page from the ad click.                      |
| `gbraid` / `wbraid`  | iOS / app click IDs Google uses when `gclid` isn't available.                             |
| Hashed email / phone | Enhanced Conversions for Leads — Sapt hashes the customer's email or phone before upload. |

This recovers the attribution the browser loses (blocked tags, expired cookies, cross-device) and feeds Google's **Smart Bidding** the offline-confirmed conversions it needs to optimize toward real outcomes rather than form-fills the tag happened to catch.

<Note>
  **Deduplication.** Uploads are deduped by **order id**, so a conversion that's also captured by your in-page tag — or re-sent — won't double-count in Google Ads.
</Note>

## Set it up

You can wire up Google server-side conversions two ways:

### From the dashboard

Open **Analytics → Tracking**, connect Google Ads, and choose the conversion action that recorded conversions should upload to. Once it's set, no per-conversion work is needed — anything Sapt records flows through automatically.

### From the Attribution MCP

Do the same from an AI agent with the [Attribution MCP](/docs/mintlify/analytics/attribution-mcp):

* `getGoogleConversionsSetup` — read the current configuration.
* `configureGoogleConversions` — connect Google Ads and pick the conversion action.

## Keep going

<CardGroup cols={2}>
  <Card title="Server-side conversions (CAPI) — REST" href="/docs/mintlify/api/conversions" description="The full Meta CAPI REST reference: pixels, capi-pixel, and conversions." />

  <Card title="Attribution analytics" href="/docs/mintlify/analytics/attribution" description="The conversions these uploads are built from." />

  <Card title="Attribution MCP" href="/docs/mintlify/analytics/attribution-mcp" description="Configure Google conversions from an agent." />
</CardGroup>
