This walkthrough uses webhook.site as a temporary receiver so you can see the exact headers and JSON body Turnkey sends.Documentation Index
Fetch the complete documentation index at: https://turnkey-0e7c1f5b-taylor-webhooks-v2-dream-docs.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
1. Create a test receiver
Use a temporary receiver for this quickstart, then replace it with your own HTTPS endpoint before sending production traffic.- Generate URL
- Use Existing URL
Click Generate URL to create a temporary Webhook.site URL for this browser. The docs save it locally so you can refresh the page or return to this quickstart without losing the value.
2. Create a Turnkey webhook endpoint
Choose one creation method.- Dashboard
- SDK
- CLI
In the Turnkey Dashboard, open Webhooks.
- In Webhook Endpoints, select New webhook.
- In Create Webhook, enter a Name, such as
Webhook.site test. - Paste your webhook.site URL into Destination URL.
- Under Subscriptions, choose one or more event types:
- Activities for
ACTIVITY_UPDATES - Confirmed Balances for
BALANCE_CONFIRMED_UPDATES - Finalized Balances for
BALANCE_FINALIZED_UPDATES - Transactions for
SEND_TRANSACTION_STATUS_UPDATES
- Activities for
- Select Create Webhook.
3. Trigger a harmless event
For an activity webhook, update the endpoint name you just created. This avoids creating a duplicate endpoint with the same URL.- Dashboard
- SDK
- CLI
In Webhooks, edit the endpoint and change the Name, for example from
Webhook.site test to Webhook.site test 2. Save the webhook.4. Inspect the delivery
Return to webhook.site. You should see a newPOST request.
Open it and inspect:
- Headers such as
X-Turnkey-Organization-Id,X-Turnkey-Event-Type,X-Turnkey-Timestamp,X-Turnkey-Webhook-Version, and the signature headers. - The JSON body. For
ACTIVITY_UPDATES, the body contains the activity object that changed. - The response status webhook.site returned to Turnkey.
5. Move to production
When you replace webhook.site with your production endpoint:- Verify signatures using the exact raw request body before parsing JSON.
- Return
2xxonly after accepting the event. - Queue slow work and respond quickly.
- Deduplicate downstream work. For balance and transaction status events, use
msg.idempotencyKey; for activity events, use the activity ID and webhook event ID. - Monitor non-
2xxresponses and receiver timeouts.