A Resend integration is your hook for outbound transactional email. You bring a Resend API key and a verified sender; QueueUp renders the email body and posts it to Resend on your behalf. Sends are recorded as deliveries with the same retry policy as webhooks.
What it does
When an event matches a binding’s scope on a waitlist, QueueUp:
- Picks the right template for the event (see Templates below).
- Renders subject, HTML, and text bodies against the event payload.
- POSTs to
https://api.resend.com/emailswith your API key as the bearer token. - Retries on transient failures with the same schedule as webhooks (about 33 hours total).
If Resend rejects the API key (401 / 403), the delivery is dead-lettered immediately. Other 4xx codes (other than 408 / 429) also dead-letter; 5xx and transport errors retry.
Configuration
| Field | Editable | Notes |
|---|---|---|
| Name | Yes | Cosmetic. Shown in the panel and as the binding tab label. |
| From address | Yes (settings) | Must be a verified sender on your Resend account. Resend rejects sends from unverified addresses. |
| From name | Yes (settings) | Optional human-readable name shown in the recipient’s inbox. |
| Description | Yes | Internal note. |
| API key | Replace-only | Verified against Resend on every save. The settings page shows a masked form (re_••••abcd). Leaving the field blank keeps the existing key. |
| Paused | Yes | When paused, no sends are enqueued for any binding. |
Templates
Resend integrations render different emails depending on the event type:
| Event | Template | What it says |
|---|---|---|
subscriber.joined (state = pending) | Confirmation | ”Click here to confirm your email.” Sent for double opt-in flows. |
subscriber.confirmed | Welcome | ”You’re in. Here’s your status page.” Sent after the user clicks the confirmation link. |
A subscriber.joined event with state = "active" (no double opt-in required) is intentionally not sent. There’s no confirmation link to render and the welcome path is subscriber.confirmed. If you don’t use double opt-in, you don’t need a Resend integration unless you want a custom flow on the webhook side.
Sending a test
The detail page has a Send test button. It sends a real email through Resend addressed to your account email. Use it to confirm:
- The from-address renders correctly in the recipient inbox.
- The API key has send permission.
- Resend’s dashboard shows the message (check the message ID returned by the panel).
The test send is recorded as a delivery row, so it shows up in the deliveries list alongside real sends.
Binding it to a waitlist
A Resend integration sits idle until you bind it. To bind:
- Open the waitlist’s Setup page.
- Scroll to Integrations and click Add.
- Pick the Resend integration from the picker. A new tab opens for the binding.
Each binding has its own event scope. Open the tab and use the Events section to pick which events fire this binding:
- All events (default). Both
subscriber.joinedandsubscriber.confirmedroute through this binding. - Pick discrete events. Turn off the All events switch and check the events you want.
Different from-addresses for different events
Each Resend integration carries one from-address. To send the confirmation email from one address and the welcome email from another, create two integrations and bind each to one event:
- Create a Resend integration with
from_address: [email protected]. Bind it to the waitlist scoped tosubscriber.joined. - Create a second Resend integration with
from_address: [email protected]. Bind it to the same waitlist scoped tosubscriber.confirmed.
Both bindings show up as separate tabs on the waitlist’s setup page.
Sending both emails from the same address
Bind one Resend integration to the waitlist with All events on (or both events checked). One integration handles both templates.
Inspecting deliveries
The detail page shows recent deliveries with status, HTTP code (from Resend’s response), attempt count, and latency. Click a row for the per-attempt history including Resend’s response body excerpt and any error string.
Dead deliveries can be re-enqueued with the Redeliver button in the delivery detail dialog. Redelivering a confirmation event re-sends the email to the same recipient.
Replacing the API key
From the settings page, paste a new key into the Resend API key field and save. Leaving the field blank keeps the existing key.