Webhooks
AppDNA sends HTTP POST requests to your server when events occur in your app. Webhooks let you sync data to your backend, trigger workflows, update CRMs, feed events into data warehouses, or power any custom integration.Overview
When you create a webhook endpoint in the AppDNA dashboard, you choose which event types to subscribe to. When a matching event occurs, AppDNA delivers a signed JSON payload to your endpoint URL via HTTP POST. Every delivery includes an HMAC-SHA256 signature so you can verify the payload originated from AppDNA and was not tampered with.Setup
1
Navigate to Webhooks
Go to Console > Settings > Webhooks in the AppDNA dashboard.
2
Add an endpoint
Click Create Endpoint and enter your HTTPS URL. Non-HTTPS URLs are not supported in production.
3
Select event types
Choose which event types this endpoint should receive. You can select individual events or subscribe to all events.
4
Save and copy the signing secret
After saving, the dashboard displays your signing secret. Copy it immediately — it is only shown once. You will use this secret to verify webhook signatures.
Event Types
AppDNA supports 16 webhook event types organized by category:Onboarding
Surveys
Billing
Push
In-App Messages
Journeys
Experiments
SDK
System
Payload Structure
Every webhook payload follows a consistent structure:The
data object contents vary by event type. Refer to the specific event type documentation in the dashboard for the full schema of each event.Signature Verification
Every webhook request includes anx-appdna-signature header containing an HMAC-SHA256 signature of the raw request body. Always verify this signature before processing the payload.
The signature is computed as:
sha256=:
Verification Examples
- Node.js
- Python
- Ruby
Retry Policy
If your endpoint returns a non-2xx status code or does not respond within 30 seconds, AppDNA retries the delivery with exponential backoff:
After the initial attempt plus 4 retries (5 attempts total), that delivery is marked as failed. You can view failed deliveries and manually retry them from the dashboard.
After 50 consecutive failures across any events, the webhook endpoint is automatically disabled. You can re-enable the endpoint from the dashboard after fixing the issue.
Best Practices
-
Respond with 2xx quickly. Return a
200 OKas soon as you receive the payload. Process the event asynchronously in a background job or queue. If your endpoint takes too long to respond, the delivery will be marked as failed and retried. -
Verify signatures on every request. Never process a webhook payload without verifying the
x-appdna-signatureheader. This protects you from forged requests. -
Handle idempotency. Webhook deliveries can be retried, which means your endpoint may receive the same event more than once. Use the
idfield to deduplicate events. Store processed event IDs and skip duplicates. - Use HTTPS. AppDNA only delivers webhooks to HTTPS endpoints in production. During development, you can use a tunneling tool like ngrok to expose a local endpoint.
- Monitor delivery health. Check the webhook delivery logs in the dashboard periodically. If you see a pattern of failures, investigate your endpoint’s availability and response times.
To test webhooks locally during development, use a tunneling tool like ngrok and point your webhook endpoint to the tunnel URL. Sandbox webhooks (
adn_test_ environment) are fully functional and isolated from production.
