Skip to content

Send conversion events to an ad platform

Relay one or more conversion events to the target ad platform's native Conversions API. Supported platforms: Meta (metaads) via Graph API, Google Ads (googleads) via Data Manager API ingestEvents, LinkedIn (linkedinads) via /rest/conversionEvents.

Platform is inferred from the provided accountId. destinationId semantics differ per platform:

  • Meta: pixel (dataset) ID, e.g. "123456789012345"
  • Google: conversion action resource name, e.g. "customers/1234567890/conversionActions/987654321"
  • LinkedIn: conversion rule ID or URN, e.g. "104012" or "urn:lla:llaPartnerConversion:104012"

Callers can list valid destinations via GET /v1/accounts/{accountId}/conversion-destinations.

All PII (email, phone, names, external IDs) is hashed with SHA-256 server-side per each platform's normalization spec (including Google's Gmail-specific dot/plus-suffix stripping). Send plaintext. Note: LinkedIn externalIds are passed through as plaintext per LinkedIn's spec — only emails and phones are hashed.

Requires the Ads add-on. For LinkedIn, the connected account must have been authorized after the Conversions API rollout (i.e. the OAuth grant must include rw_conversions); older accounts must reconnect.

Batching: Meta caps at 1000 events per request and rejects the entire batch if any event is malformed. Google caps at 2000. LinkedIn caps at 5000 and is also all-or-nothing per chunk. All three are handled automatically.

Dedup: pass a stable eventId on every event. Meta and LinkedIn use it to dedupe against browser-side pixel/Insight Tag events; Google maps it to transactionId.

Per-platform eventName semantics:

  • Meta: free-form. Standard names (Purchase, Lead, ...) match Meta's built-in events; custom strings are accepted.
  • Google: ignored — the conversion action's category determines the event type. Send the standard name closest to your action for documentation, but the platform will not branch on it.
  • LinkedIn: ignored — the conversion rule's type (LEAD, PURCHASE, etc.) is locked to the destination at rule-creation time. Send the standard name for documentation; LinkedIn does not branch on it.

POST /v1/ads/conversions

Relay one or more conversion events to the target ad platform's native Conversions API. Supported platforms: Meta (metaads) via Graph API, Google Ads (googleads) via Data Manager API ingestEvents, LinkedIn (linkedinads) via /rest/conversionEvents.

Platform is inferred from the provided accountId. destinationId semantics differ per platform:

  • Meta: pixel (dataset) ID, e.g. "123456789012345"
  • Google: conversion action resource name, e.g. "customers/1234567890/conversionActions/987654321"
  • LinkedIn: conversion rule ID or URN, e.g. "104012" or "urn:lla:llaPartnerConversion:104012"

Callers can list valid destinations via GET /v1/accounts/{accountId}/conversion-destinations.

All PII (email, phone, names, external IDs) is hashed with SHA-256 server-side per each platform's normalization spec (including Google's Gmail-specific dot/plus-suffix stripping). Send plaintext. Note: LinkedIn externalIds are passed through as plaintext per LinkedIn's spec — only emails and phones are hashed.

Requires the Ads add-on. For LinkedIn, the connected account must have been authorized after the Conversions API rollout (i.e. the OAuth grant must include rw_conversions); older accounts must reconnect.

Batching: Meta caps at 1000 events per request and rejects the entire batch if any event is malformed. Google caps at 2000. LinkedIn caps at 5000 and is also all-or-nothing per chunk. All three are handled automatically.

Dedup: pass a stable eventId on every event. Meta and LinkedIn use it to dedupe against browser-side pixel/Insight Tag events; Google maps it to transactionId.

Per-platform eventName semantics:

  • Meta: free-form. Standard names (Purchase, Lead, ...) match Meta's built-in events; custom strings are accepted.
  • Google: ignored — the conversion action's category determines the event type. Send the standard name closest to your action for documentation, but the platform will not branch on it.
  • LinkedIn: ignored — the conversion rule's type (LEAD, PURCHASE, etc.) is locked to the destination at rule-creation time. Send the standard name for documentation; LinkedIn does not branch on it.

Request body

Content-Type: application/json

  • accountId (string) required — SocialAccount ID (metaads, googleads, or linkedinads).
  • destinationId (string) required — Platform destination identifier. For Meta, the pixel/dataset ID. For Google, the conversion action resource name. For LinkedIn, the conversion rule ID or full urn:lla:llaPartnerConversion:{id} URN.
  • events (array) required
  • testCode (string) — Meta test_event_code passthrough. Ignored by Google and LinkedIn.
  • consent (object) — Batch-level user consent. Required by Google for EEA/UK events under the Feb 2026 restrictions. Ignored by Meta and LinkedIn.

Responses

200 — Events processed. Inspect eventsFailed and failures[] to detect partial failure. For Meta, a batch is all-or-nothing (either every event in a chunk succeeds, or every event in the chunk is listed in failures). For Google, the API returns success/failure at the request level only.

  • platform (string) (enum: metaads, googleads, linkedinads)
  • eventsReceived (integer) — Events accepted by the platform.
  • eventsFailed (integer) — Events rejected (see failures).
  • failures (array)
  • traceId (string) — Platform trace ID for debugging. fbtrace_id for Meta, requestId for Google. Absent for LinkedIn (LinkedIn's conversionEvents endpoint does not surface a trace ID).

400 — Invalid body (missing accountId/destinationId/events, malformed event shape).

401

403 — Ads access required (Ads add-on on legacy plans, included on usage-based plans), OR (for LinkedIn) the connected account lacks the rw_conversions scope and must be reconnected.

404 — Account not found or not accessible.

429 — LinkedIn token-level rate limit hit (600 requests/min, 300k/day per token). Retry with backoff. Meta and Google have their own rate-limit semantics surfaced via platform-specific 4xx responses.