Webhook lifecycle
The webhook flow is:- Trigger event – a file task or main task transitions state.
- Prepare payload – the system builds a JSON payload and HMAC signature headers.
- Send to client – an HTTP request is made to your registered
webhook_url. - Log to audit table – each attempt is recorded with status, payload, response, and error.
- Retry (optional) – failed deliveries are retried until the configured limit is reached.
WEBHOOK_AUDIT_LOGS table, including status, attempt number, response status, and any error message.
Registering webhooks
Webhooks are registered and managed through the D3 dashboard:- Sign in to your account at dragdropdo.com/auth/signin
- Navigate to your Account section
- Go to the Register Webhook section
- Enter your webhook URL and optional webhook secret
- Save your webhook configuration
Events
From the Business API design, the main events are:operation.completed– main task finished (all file tasks completed or partially completed).operation.failed– main task failed (all file tasks failed).fileTask.completed– individual file task completed.fileTask.failed– individual file task failed.
operation.completed / partially completed
fileTask.completed
fileTask.failed
Delivery & retries
The webhook audit and retry flow (simplified from the design docs):- On each attempt, a row is inserted into
WEBHOOK_AUDIT_LOGSwith:event_typetarget_urlpayloadresponse_statusattempt_numberstatus(success/failed)error_messagesent_at
- If retries are enabled, failed attempts are rescheduled until either:
- A retry succeeds.
- The max retry count is reached.
Security
When awebhook_secret is configured, webhooks are signed with an HMAC (exact header and algorithm are implementation details, typically X-D3-Signature with an HMAC‑SHA256 over the request body).
Recommended best practices:
- Always validate signatures using the shared
webhook_secret. - Use HTTPS for webhook endpoints.
- Treat webhook bodies as event notifications and fetch sensitive data via the Business API where needed.