Connectors are the delivery layer of formdata.dev. When a form submission arrives at the ingestion endpoint, one queue message is created per destination. Each message is processed independently, so a failure in one connector does not block delivery to others.
| Type | Identifier | Description |
|---|---|---|
| Webhook | webhook |
HTTP request to any URL (Slack, Discord, Zapier, custom backends) |
| SMTP | smtp |
Send email via any SMTP server with AUTH LOGIN |
| Google Sheets | google_sheets_webhook |
HTTP request to a Google Apps Script web app |
All deliveries happen asynchronously through Cloudflare Queues:
202 Accepted) is returned immediately to the clientThe submitter gets a response in milliseconds. Delivery happens in the background. This means you cannot report delivery errors back to the submitter.
Every connector receives the same SubmissionEnvelope payload:
For webhook and Google Sheets connectors, this envelope is sent as the JSON body. For SMTP, it is formatted into a plain-text email.
The queue consumer uses Cloudflare Queue's built-in retry mechanism:
| Setting | Value |
|---|---|
| Max retries | 5 |
| Retry delay | 30 seconds |
| Dead letter queue | formdata-delivery-dlq |
| Max batch size | 10 messages |
On each delivery attempt:
message.ack())message.retry()) up to 5 timesformdata.dev does not store submissions or delivery logs. Failed deliveries in the DLQ are only visible via the Cloudflare Dashboard (Queues section) if you are self-hosting.