Docs / Introduction / 

Send Events Using Webhooks

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
email  
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.