Skip to main content

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.

This walkthrough uses webhook.site as a temporary receiver so you can see the exact headers and JSON body Turnkey sends.
Use webhook.site only for testing. Production webhook endpoints should be owned by your application, verify Turnkey signatures, and avoid logging sensitive payloads.

1. Create a test receiver

Use a temporary receiver for this quickstart, then replace it with your own HTTPS endpoint before sending production traffic.
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.
Use this URL only for local testing. Webhook.site stores captured requests so you can inspect them. Do not send production webhook traffic or sensitive payloads to a shared test receiver.
If the generated URL button fails in your browser, use the existing URL tab. Browser-based token creation depends on Webhook.site allowing docs-origin requests.

2. Create a Turnkey webhook endpoint

Choose one creation method.
In the Turnkey Dashboard, open Webhooks.
  1. In Webhook Endpoints, select New webhook.
  2. In Create Webhook, enter a Name, such as Webhook.site test.
  3. Paste your webhook.site URL into Destination URL.
  4. 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
  5. Select Create Webhook.
Creating a webhook endpoint is a signed write activity. Depending on your organization’s policy, the Dashboard may prompt you to approve Webhook Creation before the endpoint is created.

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.
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 new POST 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 2xx only 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-2xx responses and receiver timeouts.
Continue with Verify signatures before sending production traffic to your receiver.