Overview
Webhooks allow you to receive real-time notifications when events occur in your Genesy campaigns. Instead of polling the API for updates, Genesy will send HTTP POST requests to your specified URL whenever subscribed events happen. Think of webhooks as “reverse API calls” - Genesy calls your application when something interesting happens, like a contact replying to a message or accepting a connection request.How Webhooks Work
- Create a subscription: Tell Genesy which events you want to track and where to send them
- Genesy monitors events: As your campaigns run, Genesy watches for the events you subscribed to
- Receive notifications: When an event occurs, Genesy sends a POST request to your URL with event details
- Process the data: Your application receives and processes the webhook payload
Available Events
| Event Type | Triggered When |
|---|---|
CONNECTION_REQUEST_SENT | A LinkedIn connection request is sent to a contact |
CONNECTION_REQUEST_ACCEPTED | A contact accepts a LinkedIn connection request |
LINKEDIN_MESSAGE_SENT | A LinkedIn message is sent to a contact |
EMAIL_SENT | An email is sent to a contact |
INMAIL_SENT | A LinkedIn InMail is sent to a contact |
MESSAGE_REPLIED | A contact replies to a message (LinkedIn, email, or InMail) |
POST_LIKED | A LinkedIn post is liked |
PROFILE_VISITED | A LinkedIn profile is visited |
Managing Webhooks
You can manage your webhook subscriptions in two ways:- From the Dashboard: Visit app.genesy.ai/api-access to create, view, update, and delete subscriptions with a visual interface
- Via API: Use the
/v1/webhooksendpoints to programmatically manage subscriptions, view delivery logs, and more
Creating a Webhook Subscription
You can create webhook subscriptions from the API or from the dashboard. Parameters:name(required): Identifier for your webhook subscriptionurl(required): Your endpoint URL where webhooks will be sentevents(required): Array of event types to subscribe tosecret(optional): A secret key that will be sent in theX-Webhook-Secretheader for authenticationcampaignIds(optional): Only receive events from specific campaigns. If empty or not provided, you’ll receive events from all campaignscustomFields(optional): Additional contact/company fields to include in the webhook payload
Webhook Payload Example
When a connection request is sent, you’ll receive:Testing Your Webhook
Quick Test with webhook.site
Before building your endpoint, test with webhook.site:
- Go to webhook.site - you’ll get a unique URL
- Copy the generated URL
- Create a webhook subscription pointing to that URL:
- Trigger an event in your campaign (or use the test endpoint below)
- Watch the webhook appear in real-time on webhook.site
Test Webhook Endpoint
Send a test payload to verify your webhook is configured correctly. This sends a sample event to your webhook URL so you can verify it’s receiving data properly.Best Practices
Respond Quickly
Your endpoint should respond with a2xx status code within a few seconds. Process data asynchronously if needed.
Verify the Secret
Always verify the webhook secret to ensure requests are from Genesy.Handle Retries Gracefully
Genesy retries failed deliveries (30s, 5min, 50min). Make your endpoint idempotent.Monitor Delivery Logs
Regularly check delivery logs from the API Access dashboard or via the API to catch and fix issues.Common Use Cases
Sync Replies to CRM
Update your CRM when contacts reply:Track Campaign Performance
Monitor all outreach activity in real-time:Notify Sales Team
Send Slack notifications when contacts reply:Troubleshooting
| Issue | Solution |
|---|---|
| Not receiving webhooks | Check delivery logs, verify your URL is publicly accessible |
| Webhooks timing out | Respond with 200 immediately, process data asynchronously |
| Duplicate events | Implement idempotency using event timestamp + type as unique key |
| Missing data | Add customFields to your subscription |
| Unknown webhook source | Verify X-Webhook-Secret header matches your secret |
Need Help? Check the full API reference or contact support.