Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

Paste your API key as the CMS showed it: fsk_<site>_<key id>_<secret> (issued under API Keys). ApiKey in front of it works too. Leave it empty to read as the public.

Scopes

conversions:write

Headers

X-Fetchski-Timestamp
string

Required for API keys. The Unix time in seconds when the request was signed; it must be within 5 minutes of the server clock.

Pattern: ^[0-9]{9,11}$
X-Fetchski-Signature
string

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.

Pattern: ^v1=[0-9a-f]{64}(,\s*v1=[0-9a-f]{64})*$

Body

application/json
eventId
string
required

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.

Maximum string length: 128
Pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$
Example:

"tenant-42:order:1234:purchase"

conversion
string
required

A Conversion’s id or key (GET /conversion/definitions); it must have a “Reported by another system” trigger.

Maximum string length: 128
Example:

"booking"

producer
object
required

Your system: who is posting the fact.

occurredAt
string<date-time>

When it happened (not in the future). Defaults to now.

value
number

Rounded to cents. Defaults to the Conversion’s value.

Required range: x >= 0
currency
string

ISO 4217 code of value, e.g. USD.

Pattern: ^[A-Z]{3}$
Example:

"USD"

match
object

What the CMS may join the fact to a visitor with, tried strongest first: visitorId, token (fk_at), gclAu, a click ID, then emailSha256 / phoneSha256. Hashes also travel with the conversion to the platforms (see UserDataHashes for the normalization).

The customer’s ad-data consent as the producer knows it. Each flag defaults to the US-friendly value when omitted. A denial trims what is sent (no contact details or browser data; Google receives CONSENT_DENIED); the conversion itself is always stored and delivered.

client
object

The customer’s browser as captured WHEN THEY BOOKED (not the server confirming later). With a user agent and a page URL the fact reaches Meta as a website event; without, as system_generated. Kept only until delivery is finished, never returned.

page
object

Where the customer was when it happened.

Response

The stored event. created is false when this event ID was already stored with the same content.

created
boolean
required
event
object
required

One conversion occurrence. Fields the visitor’s consent did not allow are ABSENT, not empty. Never returned: the visitor’s IP address and user agent, outbox lease and retry bookkeeping.

Example: