Appearance
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 fullurn:lla:llaPartnerConversion:{id}URN.events(array) requiredtestCode(string) — Metatest_event_codepassthrough. 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.