Conversion created (conversion.created)
Description
Triggered when a conversion event is recorded (for example a purchase), including monetary amounts and attribution context.
Payload structure
{
"eventId": "string (uuid)",
"eventType": "conversion.created",
"timestamp": "string (ISO-8601)",
"schemaVersion": 1,
"payload": {}
}
Fields
Root (envelope)
| Field | Type | Description |
|---|---|---|
| eventId | string | Unique identifier for this webhook delivery. |
| eventType | string | Always conversion.created for this event. |
| timestamp | string | Time the event was emitted. |
| schemaVersion | number | Version of schema. |
| payload | object | Conversion and attribution details. |
Payload object (payload)
| Field | Type | Description |
|---|---|---|
| eventId | string | Identifier for the conversion event itself (distinct from root envelope eventId). |
| timestamp | string | Time the conversion event occurred (distinct from root envelope timestamp). |
| customerId | string | Customer identifier for this conversion. |
| eventName | string | Conversion event name (for example purchase). |
| revenueMinor | number | Revenue in minor units for currency (see Notes). |
| currency | string | ISO currency code for revenueMinor (for example USD). |
| originalRevenueMinor | number | Original amount in minor units before normalization when applicable. |
| originalCurrency | string | Original currency code (for example JPY). |
| productId | string | Product identifier when applicable. |
| transactionId | string | Transaction identifier for this conversion. |
| attribution | object | Attribution snapshot (see below). |
| country | string | Country associated with the conversion when known. |
| city | string | City associated with the conversion when known. |
| platform | string | Platform classification (for example mobile). |
| adIds | object | Attribution click IDs captured from the link or session (see below). |
payload.attribution
| Field | Type | Description |
|---|---|---|
| shortUrl | string | Short URL associated with attribution. |
| utmSource | string | UTM source when captured. |
| utmMedium | string | UTM medium when captured. |
| utmCampaign | string | UTM campaign when captured. |
| firstTouchLink | string | First-touch link reference. |
| lastTouchLink | string | Last-touch link reference. |
payload.adIds
| Field | Type | Description |
|---|---|---|
| fbclid | string | null | Meta — Facebook Click Identifier. Used by Meta Pixel / Conversions API (CAPI) to attribute conversions to Facebook/Instagram ads. |
| gclid | string | null | Google Ads — Google Click Identifier. Used for offline conversions and campaign performance tracking. |
| gbraid | string | null | Google Ads — App iOS Click ID. For iOS 14.5+ traffic directed to an app; supports privacy-compliant modeled attribution. |
| wbraid | string | null | Google Ads — Web iOS Click ID. For iOS 14.5+ traffic directed to a website; supports privacy-compliant modeled attribution. |
| ttclid | string | null | TikTok — TikTok Click ID. Used by TikTok Pixel and Events API to link actions back to TikTok campaigns. |
Working with Ad Click IDs
payload.adIds carries click identifiers from ad platforms (Meta, Google, TikTok) when they were present on the attributed link. In production, expect at most one non-null value — the platform that actually drove the click.
Rules for consumers
- One active ID per event —
adIdsis mutually exclusive in production. Only one key holds a non-null string; the rest arenull. That value identifies which ad network drove the session. - Google uses exactly one ID type —
gclid,gbraid, andwbraidare never set together. Google assigns one based on traffic type:- Desktop or Android web/app →
gclid - iOS web (Safari) →
wbraid - iOS in-app deep link →
gbraid
- Desktop or Android web/app →
- Route by non-null key — Send the populated ID to the matching downstream system (Meta CAPI, Google Ads offline conversions, TikTok Events API, CRM, data warehouse, etc.). Ignore keys that are
null.
Typical production shapes
Scenario A — Meta ad (Instagram / Facebook)
{
"adIds": {
"fbclid": "IwAR2xK9aBc123xyz456_ExampleString_789",
"gclid": null,
"gbraid": null,
"wbraid": null,
"ttclid": null
}
}
Scenario B — Google Search ad on iPhone (web)
{
"adIds": {
"fbclid": null,
"gclid": null,
"gbraid": null,
"wbraid": "ClgKCQjwhO3DBhDaARJHAPBAqMmEZWE7Gt_zJEt",
"ttclid": null
}
}
note
The full example payload below shows every adIds key populated for complete schema reference. In live traffic, only one key will be non-null at a time.
Example payload
{
"eventId": "80622c49-42c2-49d4-b21a-f529450f7da4",
"eventType": "conversion.created",
"schemaVersion": 1,
"timestamp": "2026-04-29T13:05:45.450781",
"payload": {
"eventId": "0a0d8a75-677a-4688-9de5-f6335a8e8107",
"timestamp": "2026-04-29T13:05:45.430000",
"customerId": "CUST1017",
"eventName": "purchase",
"revenueMinor": 11,
"currency": "USD",
"originalRevenueMinor": 1900,
"originalCurrency": "JPY",
"productId": "PROD4567",
"transactionId": "TRNX8902W283779i",
"attribution": {
"shortUrl": "zeustechnology.trycleansify.com/profileManager",
"utmSource": "pmgatishakti",
"utmMedium": "official-website",
"utmCampaign": "national-master-plan-gati-shakti",
"firstTouchLink": "zeustechnology.trycleansify.com/profileManager",
"lastTouchLink": "zeustechnology.trycleansify.com/profileManager"
},
"country": "India",
"city": "Bhilai",
"platform": "mobile",
"adIds": {
"fbclid": "IwY2xjawR9OhlleHRuA2FlbQIxMQBzcnRjBmFwcF9pZAwzNTA2ODU1MzE3MjgAAR7PIdCfTw5a8i37AfDaVlZLvWaMdJwQEr75JEPtbfWcTrnPaUu7Tpj_3OvS-A_aem_0FItaF20o94lSQX6izgv5g",
"gclid": "EAIaIQobChMIu_v0r_f9_wIVh7LICh0wQQT_EAAYASAAEgK_v_D_BwE",
"gbraid": "0AAAAACZGY6vERiXMMTJYoB2VG86-qHLmR",
"wbraid": "ClgKCQjwhO3DBhDaARJHAPBAqMmEZWE7Gt_zJEt",
"ttclid": "1766471830193154_1_726359051_1"
}
}
}
Notes
- Interpret
revenueMinortogether withcurrencyusing your billing conventions (minor units typically mean cents for USD, whole yen for JPY, etc. — confirm with product/accounting). - Root
eventId/timestampidentify the webhook delivery; innerpayload.eventId/payload.timestampidentify the business conversion event.