Send Events Using Webhooks
Events can be sent to Able CDP from custom apps using its inbound webhook. This is convenient to attribute purchases and other conversions that aren't necessarily reflected in the payment system. For example, when the service usage accumulates before being invoiced once a payment threshold is reached or next billing cycle occurs.
Custom events should be sent to Able as POST requests to https://app.ablecdp.com/uip-events/event in JSON format with Content-Type: application/json header.
Request body example for a purchase:
{
"funnel_mark": "%%FUNNEL_MARK%%",
"event_type": "Purchase",
"resource": {
"deal_value": 10,
"deal_currency": "USD",
"deal_items": [
{
"name": "File download", price: 5, qty: 2, sku: "DL1", category: "High-speed"
}
],
"keys": {
"email": "john@aol.com",
"client_id": "12354"
}
}
}
%%FUNNEL_MARK%% is the unique funnel identifier. sku and category in deal_items are optional, they’re used for various groupings and reporting in Google Analytics. keys must have at least one value.
Request format reference
Only the fields marked with asterisk are mandatory:
Field | Description |
---|---|
funnel_mark * | Unique funnel identifier, available in the Get Code section of the Able CDP Dashboard. |
event_type * | PageView, CompleteRegistration, Purchase. Supported event types depend on the integration and generally follow Facebook standard events names. |
resource * | Detailed event and customer information |
Resource object reference
Field | Description |
---|---|
referrer_url | |
utm_source | |
utm_medium | |
utm_campaign | |
utm_term | |
utm_content | |
deal_value | Full value of the purchase or conversion |
deal_currency | Purchase or conversion currency, mandatory when deal_value is set |
deal_items | Array of items included in the deal, optional. Each item may include name, price, qty, sku and category |
event_source | URL for web events, name of the integration for server-to-server and offline events |
event_time | Time of the event in ISO8601 format. Can be used to correctly report time of the conversion if it's transmitted with a delay. Note that this isn't supported by all outbound integrations and Able generally expects events to arrive in the sequence they occurred in. |
lead | Lead object. May have arbitrary fields, which are automatically mapped by outbound CRM integrations. Suggested values are: firstName, lastName, company, country, industry |
description | Event description, used as the purchased item name when deal_items are missing. |
message | Lead form message text |
order_id | Internal unique order identifier |
custom_data | Optional extra fields passed to integrations without processing. For example, Stripe integration populates 'coupon' field when a coupon is used, and Meta integration sends each custom_data field to the destination Pixel or Dataset as a custom parameter |
client | Hash with two keys, ip and ua, containing users' browser details: IP address and user-agent respectively |
keys * | Customer (Visitor) Keys. Uniquely identify customer, linking front-end events and back-end events together. At least one supported Key must be present. Each key can be a string or an array of strings if multiple key values of the same type are known. |
Supported keys
Key | Description |
---|---|
phone | Phone number |
client_id | Application specific client (visitor) id |
gclid, wbraid, gbraid | Google Ads Click Id |
fbp, fbclid | Facebook click identifier, fbc and fbp cookies |
fbleadid | Facebook (Meta) Ads Lead ID |
ga_cookie | Google Analytics Client Id / meaningful part of _ga cookie |
app_instance_id | A unique identifier of the Firebase app instance |
apladid | Apple Advertising Identifier |
andadid | Android Advertising ID |
msclkid | Microsoft Ads / Bing Ads click id |
ttp, tpclid | TikTok Pixel cookie and click id |
In server-side integrations normally only a phone, email and/or client_id is sent, as the rest of the identifiers are tracked by the visitor tracking script and Able should be able to attribute transaction to the original visitor internally.
Able normalizes Key values such as phone or email, ignoring non-meaningful characters when matching event with existing Customer records. Phone numbers are compared internally using the last ten digits. When using Able with an ad platform that processes hashed customer information, such as Meta, it's recommended that the number should include country code.
If you're planning to use Zapier, see our Zapier setup guide for more details.