Skip to main content

Conversion events

Every call needs Authorization: Bearer <key>. 11 calls:

List conversion deliveries​

GET /v1/conversion-deliveries

The delivery log, newest first: one row per fired event and destination, with its status, response code, attempts and next attempt. A postback shows its webhook delivery’s.

Query parameters

NameTypeRequiredDescription
limitintegerNoFrom 1 to 100. Default 50.
cursorstringNoOpaque cursor from next_cursor. Up to 512 characters.
statusenumNoOne of: pending, delivered, failed, skipped.
destination_idstringNoConversion destination id (cdst_...).
connection_idstringNoIntegration connection id (int_...).
conversion_idstringNoConversion event id (cev_...).
event_keystringNoA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
dataobject[]
data[].attemptsintegerFrom 0 to 9007199254740991.
data[].connection_idstring or nullIntegration connection id (int_...).
data[].conversion_idstringConversion event id (cev_...).
data[].created_atstring (date-time)ISO 8601 timestamp.
data[].destination_idstringConversion destination id (cdst_...).
data[].event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
data[].idstring (uuid)
data[].kindenumOne of: crm, ad_platform, postback.
data[].last_errorstring or null
data[].next_attempt_atstring (date-time) or nullISO 8601 timestamp.
data[].response_codeinteger or nullFrom -9007199254740991 to 9007199254740991.
data[].skip_reasonstring or nullWhy it was skipped, like opted_out or no_consent.
data[].statusenumOne of: pending, delivered, failed, skipped.
data[].updated_atstring (date-time)ISO 8601 timestamp.
data[].webhook_endpoint_idstring or nullWebhook endpoint id (whk_...).
next_cursorstring or nullPass as cursor to get the next page; null at the end.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

List conversion destinations​

GET /v1/conversion-destinations

Query parameters

NameTypeRequiredDescription
event_keystringNoA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
kindenumNoOne of: crm, ad_platform, postback.
connection_idstringNoIntegration connection id (int_...).

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
dataobject[]
data[].connection_idstring or nullIntegration connection id (int_...).
data[].created_atstring (date-time)ISO 8601 timestamp.
data[].enabledboolean
data[].event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
data[].idstringConversion destination id (cdst_...).
data[].kindenumOne of: crm, ad_platform, postback.
data[].mappingobject
data[].providerstring or nullThe connection’s provider, for crm and ad_platform.
data[].updated_atstring (date-time)ISO 8601 timestamp.
data[].webhook_endpoint_idstring or nullWebhook endpoint id (whk_...).

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Create a conversion destination​

POST /v1/conversion-destinations

Sends an event to a CRM connection (with one action the CRM can take), an ad platform connection (with its event name) or a webhook endpoint (a signed postback). Only events fired after this get a delivery; a built-in event’s system rule looks back 24 hours when its first destination is added.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
connection_idstringYesIntegration connection id (int_...).
enabledbooleanNoDefault true.
event_keystringYesA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
kindenumYesOne of: crm.
mappingobjectYes
mapping.actionenumYesOne of: set_field.
mapping.fieldstringYesThe CRM's field name, as its API names it. Up to 200 characters.
mapping.valuestringYesMay use {event_name}, {event_key}, {value}, {currency}, {occurred_at} and {first_name}-style variables. Up to 500 characters.

Response 201

FieldTypeDescription
connection_idstring or nullIntegration connection id (int_...).
created_atstring (date-time)ISO 8601 timestamp.
enabledboolean
event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
idstringConversion destination id (cdst_...).
kindenumOne of: crm, ad_platform, postback.
mappingobject
providerstring or nullThe connection’s provider, for crm and ad_platform.
updated_atstring (date-time)ISO 8601 timestamp.
webhook_endpoint_idstring or nullWebhook endpoint id (whk_...).

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Update a conversion destination​

PATCH /v1/conversion-destinations/:id

Turn it on or off, or change its mapping (checked against its kind and provider). Its event, kind and target are fixed.

Path parameters

NameTypeRequiredDescription
idstringYesConversion destination id (cdst_...).

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
enabledbooleanNo
mappingobjectNoChecked against the destination’s kind.

Response 200

FieldTypeDescription
connection_idstring or nullIntegration connection id (int_...).
created_atstring (date-time)ISO 8601 timestamp.
enabledboolean
event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
idstringConversion destination id (cdst_...).
kindenumOne of: crm, ad_platform, postback.
mappingobject
providerstring or nullThe connection’s provider, for crm and ad_platform.
updated_atstring (date-time)ISO 8601 timestamp.
webhook_endpoint_idstring or nullWebhook endpoint id (whk_...).

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Delete a conversion destination​

DELETE /v1/conversion-destinations/:id

Its deliveries, sent or not, go with it.

Path parameters

NameTypeRequiredDescription
idstringYesConversion destination id (cdst_...).

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Response 200

FieldTypeDescription
deletedenumOne of: true.
idstringConversion destination id (cdst_...).

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

List conversion events​

GET /v1/conversion-events

The catalog: the eight built-in events (always present) and the workspace’s custom events. Built-in events fire on their own (from bubbl3’s system rules) only while an enabled destination or an active webhook endpoint subscribed to conversion.&lt;key&gt; listens for them, and look back 24 hours when one starts listening: while nothing listens, for example when an endpoint is auto-disabled or a Zap is paused, those events aren’t recorded, even in GET /v1/conversions. The “Fire event” workflow step (formerly “Send event”) and POST /v1/conversion-events/fire record any event at any time. In the dashboard the catalog is Settings, Events.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
dataobject[]
data[].builtinbooleanBuilt-in events can’t be renamed or deleted.
data[].configobject
data[].config.daysintegerlead.no_response only: days after the first message with no reply. From 1 to 30.
data[].config.label_idstring (uuid) or nullFire the event when this label is added to a contact (appointment.booked, lead.qualified and custom events).
data[].created_atstring (date-time)ISO 8601 timestamp.
data[].currencystring or nullISO 4217 currency code.
data[].default_value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.
data[].keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
data[].namestring
data[].updated_atstring (date-time)ISO 8601 timestamp.
data[].webhook_event_typestringconversion.<event key>, for example conversion.lead.replied. Up to 80 characters.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Create a custom conversion event​

POST /v1/conversion-events

Keys are lowercase letters, digits and underscores and never contain a dot, so they can’t clash with a built-in event. Endpoints receive it as conversion.&lt;key&gt;.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
configobjectNo
config.label_idstring (uuid) or nullNoFire the event when this label is added to a contact (appointment.booked, lead.qualified and custom events).
currencystring or nullNoISO 4217 currency code.
default_value_centsinteger or nullNoValue in the currency’s minor unit (cents). From 0 to 100000000000.
keystringYesA custom event key, like asked_for_pricing.
namestringYesUp to 80 characters.

Response 201

FieldTypeDescription
builtinbooleanBuilt-in events can’t be renamed or deleted.
configobject
config.daysintegerlead.no_response only: days after the first message with no reply. From 1 to 30.
config.label_idstring (uuid) or nullFire the event when this label is added to a contact (appointment.booked, lead.qualified and custom events).
created_atstring (date-time)ISO 8601 timestamp.
currencystring or nullISO 4217 currency code.
default_value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.
keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
namestring
updated_atstring (date-time)ISO 8601 timestamp.
webhook_event_typestringconversion.<event key>, for example conversion.lead.replied. Up to 80 characters.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Fire a conversion event​

POST /v1/conversion-events/fire

Records the event for the contact and queues one delivery per enabled destination. The dedupe key is required: the same key twice is one event, and the second call returns the first with duplicate: true (200). A key already used for another event is a 409. Nothing here sends a message.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
contact_idstringYesContact id (ctc_...).
currencystringNoISO 4217 currency code.
dedupe_keystringYesThe same key twice is one event: the second call returns the first. Up to 200 characters.
event_keystringYesA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
occurred_atstring (date-time)NoDefaults to now.
value_centsintegerNoValue in the currency’s minor unit (cents). From 0 to 100000000000.

Response 200

FieldTypeDescription
contact_idstringContact id (ctc_...).
created_atstring (date-time)ISO 8601 timestamp.
currencystring or nullISO 4217 currency code.
dedupe_keystring
duplicatebooleanTrue when an event with this dedupe key already existed.
event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
idstringConversion event id (cev_...).
occurred_atstring (date-time)ISO 8601 timestamp.
sourceenumOne of: workflow, system, api.
source_run_idstring (uuid) or nullThe workflow run that fired it, for source workflow.
testenumPresent when a workflow's live test fired it. Test events go to webhook URLs only, never to a CRM or ad platform. One of: true.
value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.

Response 201

FieldTypeDescription
contact_idstringContact id (ctc_...).
created_atstring (date-time)ISO 8601 timestamp.
currencystring or nullISO 4217 currency code.
dedupe_keystring
duplicatebooleanTrue when an event with this dedupe key already existed.
event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
idstringConversion event id (cev_...).
occurred_atstring (date-time)ISO 8601 timestamp.
sourceenumOne of: workflow, system, api.
source_run_idstring (uuid) or nullThe workflow run that fired it, for source workflow.
testenumPresent when a workflow's live test fired it. Test events go to webhook URLs only, never to a CRM or ad platform. One of: true.
value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Update a conversion event​

PATCH /v1/conversion-events/:key

Built-in events keep their name; their default value, currency and rule settings can change. config.days is for lead.no_response only.

Path parameters

NameTypeRequiredDescription
keystringYesA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.
idempotency-keystringNoMakes the write safe to retry for 24 hours. 1 to 255 printable characters. Keys starting with outreach:, workflow: or agent: are reserved for messages bubbl3 sends itself and are refused with 400. Up to 255 characters.

Request body

FieldTypeRequiredDescription
configobjectNo
config.daysintegerNolead.no_response only: days after the first message with no reply. From 1 to 30.
config.label_idstring (uuid) or nullNoFire the event when this label is added to a contact (appointment.booked, lead.qualified and custom events).
currencystring or nullNoISO 4217 currency code.
default_value_centsinteger or nullNoValue in the currency’s minor unit (cents). From 0 to 100000000000.
namestringNoUp to 80 characters.

Response 200

FieldTypeDescription
builtinbooleanBuilt-in events can’t be renamed or deleted.
configobject
config.daysintegerlead.no_response only: days after the first message with no reply. From 1 to 30.
config.label_idstring (uuid) or nullFire the event when this label is added to a contact (appointment.booked, lead.qualified and custom events).
created_atstring (date-time)ISO 8601 timestamp.
currencystring or nullISO 4217 currency code.
default_value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.
keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
namestring
updated_atstring (date-time)ISO 8601 timestamp.
webhook_event_typestringconversion.<event key>, for example conversion.lead.replied. Up to 80 characters.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

List fired conversion events​

GET /v1/conversions

Newest first. Filter by contact or event.

Query parameters

NameTypeRequiredDescription
limitintegerNoFrom 1 to 100. Default 50.
cursorstringNoOpaque cursor from next_cursor. Up to 512 characters.
event_keystringNoA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
contact_idstringNoContact id (ctc_...).

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
dataobject[]
data[].contact_idstringContact id (ctc_...).
data[].created_atstring (date-time)ISO 8601 timestamp.
data[].currencystring or nullISO 4217 currency code.
data[].dedupe_keystring
data[].event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
data[].idstringConversion event id (cev_...).
data[].occurred_atstring (date-time)ISO 8601 timestamp.
data[].sourceenumOne of: workflow, system, api.
data[].source_run_idstring (uuid) or nullThe workflow run that fired it, for source workflow.
data[].testenumPresent when a workflow's live test fired it. Test events go to webhook URLs only, never to a CRM or ad platform. One of: true.
data[].value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.
next_cursorstring or nullPass as cursor to get the next page; null at the end.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.

Get a fired conversion event​

GET /v1/conversions/:id

Path parameters

NameTypeRequiredDescription
idstringYesConversion event id (cev_...).

Headers

NameTypeRequiredDescription
x-workspace-idstringNoWorkspace for session (JWT) callers. API keys carry their own workspace.

Response 200

FieldTypeDescription
contact_idstringContact id (ctc_...).
created_atstring (date-time)ISO 8601 timestamp.
currencystring or nullISO 4217 currency code.
dedupe_keystring
event_keystringA built-in key (lead.replied) or a custom one (asked_for_pricing). Up to 64 characters.
idstringConversion event id (cev_...).
occurred_atstring (date-time)ISO 8601 timestamp.
sourceenumOne of: workflow, system, api.
source_run_idstring (uuid) or nullThe workflow run that fired it, for source workflow.
testenumPresent when a workflow's live test fired it. Test events go to webhook URLs only, never to a CRM or ad platform. One of: true.
value_centsinteger or nullValue in the currency’s minor unit (cents). From 0 to 100000000000.

Errors: 400, 401, 403, 404, 409, 413, 415, 429, 500. See errors for the shape and codes.