Webhooks allow you to connect any tool or platform to adtribute—even if we don't have a native integration for it yet. When something important happens in your system (like a lead is created, a payment is processed, or a booking is confirmed), that event data is automatically sent to adtribute instantly.
This is the technical alternative to our Custom Event Tracking with Sheets integration. Instead of manually updating a spreadsheet, your developer sets up an automated connection that sends data directly from your tool to adtribute.
When to Use Webhooks
Use webhooks when you want to track events from:
Custom-built systems (your own internal tools, custom CRM, or proprietary software)
Platforms without a native adtribute integration (e.g., niche CRMs, specialized booking systems, or regional payment providers)
Real-time scenarios where you need data to flow immediately (not in batches or manual uploads)
Perfect for:
Sending payment events from a payment provider we don't directly integrate with
Connecting your internal sales or support system
Any platform that can send data automatically when events happen
Note: If you prefer a simpler setup without developer involvement, use Custom Event Tracking with Sheets instead. With Sheets, you can upload data manually or via automation tools like Zapier.
Setting Up Your Webhook Connection
Follow these steps to create the Webhook connection:
Step 1: Create the Connection
Open the adtribute App
Go to "Connections" and click "Create Connection"
Search for "Webhook Event" and select it
Name your connection (e.g., "CRM Leads", "Payment Events")
Define the "Event Source" and "Event Object" (e.g., Pipedrive & Lead, or Stripe & Payment)
Click "Next"
Step 2: Copy Your Webhook URL
After creating the connection, you'll see a unique Webhook Event URL. This is the endpoint where you'll send your event data.
Example:
<https://collector.api.adtribute.io/collector/webhook_event/…>
Copy this URL—you'll need it in the next step.
Step 3: Configure Your System to Send Events
In your application or service, configure it to send HTTP POST requests to the Webhook URL whenever your tracked events occur. Refer to the implementation guide below for details.
Webhook Implementation Guide
Authentication
No authentication is required. The generated webhook URL is unique to your account.
Rate Limits
There are no rate limits for this endpoint, so you can send any volume of data.
Payload Format
Send your webhook as an HTTP POST request with a JSON body. The content type must be application/json.
The request body is an array of events you want to track. If you're sending one event, wrap it in an array. If you're sending multiple events, the schema remains the same.
The maximum payload size is 300kb, so consider this when sending batches of events.
Each event should follow this schema:
Required information in each event:
Event ID (event_id): A unique identifier for this event in your system. Used for deduplication. If you send the same ID twice, it will only appear once in adtribute.
Event Timestamp (event_timestamp): An ISO 8601 timestamp of when the event occurred
Event Email (event_email): The email address associated with this event
Optional information:
Event ADB CDT (event_adb_cdt): A parameter for identifying users within adtribute. Only necessary if explicitly stated by your adtribute account manager, who will explain its purpose.
Event Payload (event_payload): An object for including additional data points as custom fields (e.g., revenue, product_id, subscription_type). These will be available in your definitions and reports. You can use unstructured data—no schema required.
Example request:
curl -X POST https://collector.api.adtribute.io/collector/webhook_event/... \
-H "Content-Type: application/json" \
-d '[
{
"event_id": "order_12345",
"event_timestamp": "2025-12-08T15:21:11.804Z",
"event_email": "[email protected]",
"event_adb_cdt": "adb_cscid:dcc50bcc-2bbc-44b1-8e29-e0b42a306d0a",
"event_payload": {
"revenue": 99.99,
"currency": "EUR",
"product_name": "Premium Plan"
}
},
{
"event_id": "order_123456",
"event_timestamp": "2025-12-09T15:21:11.804Z",
"event_email": "[email protected]",
"event_adb_cdt": "adb_cscid:dcc40bcc-2bbc-44b1-8e29-e0b42a306d0a",
"event_payload": {
"revenue": 123.99,
"currency": "EUR",
"product_name": "Other Product"
}
}
]'
Response Codes
201: Event received successfully
Any other status: Double-check your implementation against the documentation above. If you believe you've implemented everything correctly and still receive an error, reach out to your adtribute account manager.
Testing Your Webhook
To verify we're receiving your data, check the connection status in adtribute under "Connections". A newly created connection will say "Awaiting data". Once we successfully receive the first events, it will say "Connected". Data collection happens in real time—if you send an event and reload the app, the connection status will update automatically.
Using Custom Data Fields
To access custom fields from your webhook payload, reach out to your account manager to understand how this works based on your setup.
Best Practices
Track raw data: Track custom interactions as raw as possible. Any interpretation or deduplication can be added later.
Batch events: If your application logic allows, send multiple events in one request to reduce the number of requests.
Handle errors gracefully: Our servers have 99.99% uptime, but errors can still occur. Implement retry logic for failed webhook deliveries (with exponential backoff) to ensure 100% of your data reaches adtribute.
Troubleshooting - What if I'm tracking an anonymous event?
The email parameter is required. However, if you're tracking an interaction for a user whose email you don't yet know, you can still use our webhook integration. Since the setup varies case by case, reach out to your adtribute account manager to discuss the best implementation approach.