Webhooks
Webhooks deliver real-time event notifications when visitors are identified. Configure a webhook endpoint in the Bullseye dashboard, and Bullseye sends an HTTP POST to your URL with visitor, company, and session data. Use webhooks to integrate with internal tools, custom CRMs, or any system that accepts HTTP callbacks.
Plan Requirement
Webhooks are available on Scale plans and above. If you are on Starter, Growth, or Free Trial, upgrade to Scale to enable webhooks.
Configuration
Webhooks are configured per organization in the Bullseye dashboard:
Navigate to Settings > Integrations > Webhooks
Click Add Webhook
Enter your endpoint URL (must be HTTPS)
Optionally set a secret for HMAC-SHA256 signature verification
Select the events you want to receive
Save the webhook
Your endpoint must respond with a 2xx status code within 30 seconds. Non-2xx responses or timeouts trigger retries.
Event Types
visitor.identified
Fired when a visitor is identified on your website
Payload Structure
Each webhook delivery includes a JSON payload with the following structure.
Top-Level Fields
event
string
Event type (e.g., visitor.identified)
timestamp
string
ISO 8601 timestamp when the event occurred
organization_id
string
Your Bullseye organization ID
session_id
string
Unique identifier for the visitor session
visitor
object
Identified visitor profile data
company
object
Company data associated with the visitor
session
object
Session metadata (pages, UTM, referrer, device)
Visitor Object
The visitor object typically includes fields such as email, first_name, last_name, job_title, linkedin_url, location, and contact identifiers.
Company Object
The company object typically includes fields such as name, industry, employee_count, location, and domain information.
Session Object
The session object typically includes landing_page, pages_visited, utm_source, utm_medium, referrer, and device_type.
Example Payload
Signature Verification
To verify that webhook deliveries come from Bullseye, use the X-Bullseye-Signature header. The header contains an HMAC-SHA256 signature of the raw request body using your webhook secret.
Verification Steps
Read the raw request body (before any JSON parsing)
Compute
HMAC-SHA256(raw_body, your_webhook_secret)Encode the result as hexadecimal
Compare with the value in
X-Bullseye-Signature
If the values match, the webhook is authentic. Reject requests where the signature does not match.
Example (Pseudocode)
Retry Behavior
If your endpoint returns a non-2xx status code or does not respond within 30 seconds, Bullseye retries the delivery:
Retry schedule — Retries occur at increasing intervals (e.g., 1 minute, 5 minutes, 30 minutes)
Maximum retries — Up to 3 retries per delivery
Idempotency — The same payload may be delivered more than once; design your endpoint to handle duplicate events (e.g., using
session_idas a deduplication key)
Best Practices
Use HTTPS — Webhook endpoints must use HTTPS
Verify the signature — Always validate
X-Bullseye-Signaturebefore processingRespond quickly — Return 200 immediately and process the payload asynchronously if needed
Handle duplicates — Use
session_idor a combination of fields to deduplicate eventsLog failures — Monitor for 4xx/5xx responses and fix endpoint issues promptly
Last updated