Retract or restate a conversion event
retract — the conversion did not happen after all (a full refund, a cancellation); final, and an event not yet delivered is no longer sent. restate — a new value (a partial refund, an edit); an event not yet delivered goes out with it.
Recorded on the event (adjustments, status, adjustedValue) and visible to every reader. A platform that already received the event from the server is told where it can be (delivery.<platform>.adjustment): Google Ads gets the event again at its new value, a retraction as 0 (Google keeps counting it); Google Analytics gets a refund for a purchase lowered or retracted. Meta, TikTok, Google Tag Manager and browser-only rows cannot be told: their adjustment reads unsupported, with what to do instead.
A 409 also answers when the event is being sent to a platform at that moment and the adjustment would queue a send: send it again a minute later with the same adjustmentId.
Idempotent on adjustmentId. A retry returns the event with applied: false; re-using the ID with different content, or adjusting a retracted event, is a 409.
Access: an API key with conversions:write — or its group master ads:all, or admin:all — or a signed-in user holding the conversion-events:write permission. Anonymous callers get 404.
Signed: every API key must sign this request (X-Fetchski-Timestamp + X-Fetchski-Signature, see the headers below), whatever its own signing mode. Signed-in users in the CMS need no signature. Signing requests shows how, from the API and both SDKs.
Rate limit: the key’s own writes-per-minute limit, set when the key is created (default 120); over it, 429 with Retry-After.
Authorizations
Headers
Required for API keys. v1= + the lower-case hex HMAC-SHA256, keyed with the API key’s signing secret (fss_…, shown once when the key is created or rotated), of <timestamp>.<METHOD>.<path including query>.<raw request body> — e.g. 1790000000.POST./api/v1/conversion-event/external.{"eventId":…}. Several comma-separated v1= values are accepted.
^v1=[0-9a-f]{64}(,\s*v1=[0-9a-f]{64})*$Path Parameters
The event ID.
Opaque, unique per site, stable. The CMS mints a UUID for events it originates; another system mints its own (e.g. tenant-42:order:1234:purchase). Forwarded unchanged to every ad platform as its de-duplication key.
128^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"tenant-42:order:1234:purchase"
Body
Response
The event after the adjustment.