Not a developer? You can set up webhooks without writing any code using the Deel Developer Center. This guide is for developers who want to integrate webhooks programmatically.
This quickstart guide will walk you through:
Time to complete: ~15 minutes
Before you begin, ensure you have:
First, create a simple HTTP endpoint that can receive POST requests from Deel.
Choose your language: We’ll show examples in multiple languages. Pick the one you’re most comfortable with!
Start your server and make sure it’s running on port 3000. We’ll expose it publicly in the next step.
Use ngrok to create a public HTTPS URL for your local server:
Keep ngrok running in a separate terminal window while testing. If you restart ngrok, you’ll get a new URL and need to update your webhook subscription.
Now subscribe to webhook events using the Deel API.
Prefer a visual interface? You can also create webhooks through the Deel Developer Center without writing code. This guide uses the API for learning purposes.
Save the signing key! The API response includes a signing_key that you’ll need for signature verification in the next step. Store it securely as an environment variable.
Don’t know which events to subscribe to? List all available events first:
Now add security to your webhook endpoint by verifying signatures:
Security tip: The signature is computed as HMAC-SHA256(signing_key, "POST" + raw_body). Always prefix with “POST” before hashing!
Now trigger a webhook event to see everything working:
Make sure you have:
Log into your Deel Sandbox and perform an action that triggers your subscribed event:
contract.created)contract.signed)payment.completed)Open the ngrok web interface at http://localhost:4040 to see the webhook request details
Webhook not arriving? Deel retries failed deliveries with exponential backoff. If your endpoint was down, the webhook will be retried automatically up to 10 times.
Here’s what you’ll receive when an event occurs:
Key fields:
data.meta.event_type - The type of event that occurreddata.meta.organization_id - Your organization IDdata.resource - Event-specific data (varies by event type)timestamp - When the event occurred (ISO 8601 format)Check:
Quick test:
Common mistakes:
Debug it:
Possible causes:
Solution: Verify your token:
You can manage webhook subscriptions via API or through the Developer Center:
Via API:
GET /webhooks - List all your webhooksGET /webhooks/{id} - Get webhook detailsPATCH /webhooks/{id} - Update webhook URL or eventsDELETE /webhooks/{id} - Delete webhookVia Developer Center: Visit the Managing Webhooks guide to learn how to create, view, edit, test, and monitor webhooks through the visual interface.
Deel retries failed webhooks up to 10 times with exponential backoff:
After 10 failures, the webhook is automatically disabled and you’ll need to re-enable it.
Before going live, make sure you: