Forwarding addresses
Forward a copy of the replies your workspace receives to an inbox outside SendRaven, once that inbox confirms it wants them.
A forwarding address is an inbox outside SendRaven, such as a founder's Gmail or a shared support inbox, that receives a copy of every message your workspace receives. It is for teams that are used to seeing replies in their own inbox and want to keep doing so while their agents read the same replies through threads and webhooks.
Nothing is forwarded until the address confirms. Adding an address emails it a link. Opening the link shows a page with a button, and forwarding starts when the button is pressed: a link that worked on its own would be confirmed by the security scanners that open every link in incoming mail. The link works once and expires 72 hours after it was sent. Mail received before the address was confirmed is not forwarded.
What is forwarded
Each message that arrives on one of your domains is forwarded to every active address, or to the addresses whose inbound_domain it arrived on, with these exceptions:
- A message SES marks as spam or as carrying a virus (
spam_verdictorvirus_verdictofFAIL) is never forwarded. - A message written by a machine is never forwarded: bounce reports, delivery notifications and automatic replies such as out-of-office messages (the
automatedfield on received messages). Forwarding those is how two automatic systems end up mailing each other without end. - A message that is itself one of our forwards (it carries the
X-SendRaven-Forwardedheader) is never forwarded again. - A message whose sender is not authenticated (
sender_authenticated: false, see Trusting a reply) is still forwarded, with a warning at the top that SendRaven could not confirm it came from the sender's domain and the From line may be forged. Plenty of real people write from domains without DMARC; the reader of the forward is the one who can judge.
Each copy:
- is sent from
forwarding@your verified transactional sending domain, preferring the one the message arrived on or one under the same root domain. A workspace with no verified transactional domain forwards nothing; - keeps the original subject, and carries the original sender as
Reply-To, so replying from the forwarding inbox answers them directly. That reply goes from that inbox, not through SendRaven, so it does not appear in the thread; - starts with a short note naming the sender and the address they wrote to, and a link to the conversation in the dashboard, followed by the original body;
- carries the original attachments when they come to 7 MB or less in all. Larger ones are left out, and the note says so and links to the conversation, where they can be downloaded;
- goes through the normal send path as a transactional email: a suppressed forwarding address is not mailed, the payment-method and plan checks apply, and each copy counts as one email sent. It appears in
GET /v1/emailsbut joins no thread and carries no open or click tracking; - is sent with
Auto-Submitted: auto-forwarded, so the forwarding inbox's own automatic replies do not answer it.
Each message is forwarded to each address at most once, even when it is delivered to SendRaven twice.
Who can manage forwarding
Adding an address needs domains:write, the scope that also manages API keys, and is refused with 403 forbidden for an OAuth access token and for an API key with any guardrail (requires_approval, allowed_recipients or daily_send_limit): those are agent credentials, and an agent able to send a workspace's mail to an inbox it reads would hold a standing copy of every reply. There is no MCP tool for forwarding. People manage it in the dashboard under Settings, Forwarding.
The workspace needs a verified payment method before any confirmation is sent, and may add at most 10 distinct addresses over its life. Removing an address does not free a slot, and adding the same address again does not use another.
The forwarding address object
Every field is always present.
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier (UUID). |
email | string | The destination, lower-cased. |
status | "pending" | "active" | pending until the confirmation link is used. Only active addresses receive forwards. |
inbound_domain | string | null | Forward only mail received on this domain. null forwards mail received on every domain. |
confirmation_sent_at | string (ISO 8601) | null | When the latest confirmation email was sent. |
confirmation_expires_at | string (ISO 8601) | null | When the latest confirmation link stops working. null once the address is active. |
confirmed_at | string (ISO 8601) | null | When the confirmation was used. |
created_at | string (ISO 8601) | When the address was added. |
List forwarding addresses
GET /v1/forwarding-addresses · requires domains:read
Returns the workspace's pending and active addresses newest first, cursor-paged. Removed addresses are not listed. See Pagination.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 50 | Page size, at most 100. |
cursor | string | none | The next_cursor from the previous page. |
Example
Response
200 OK
Retrieve a forwarding address
GET /v1/forwarding-addresses/{id} · requires domains:read
Returns one pending or active address. Poll it to see when the confirmation has been used.
Path parameters
| Parameter | Description |
|---|---|
id | The address's id. |
Response
200 OK, a forwarding address object.
Errors
| Status | Type | When |
|---|---|---|
| 404 | not_found | No pending or active forwarding address with this id in the workspace. |
Add a forwarding address
POST /v1/forwarding-addresses · requires domains:write
Adds an address and emails it a confirmation link. Posting an address that is already pending sends it a new link, and the previous one stops working; one address can be sent a confirmation at most once a minute and five times in all. Posting an address that is already active sends nothing and returns it unchanged.
Body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
email | string | Yes | none | The inbox to forward to. It may not be on a domain SendRaven receives mail for, which would forward in a loop. |
inbound_domain | string | null | No | null | Forward only mail received on this domain, which must be one of the workspace's domains from GET /v1/domains, such as mail.example.com. Ignored when the address already exists. |
Example
Response
201 Created when the address was added, 200 OK when it already existed. Either way, a forwarding address object.
Errors
| Status | Type | When |
|---|---|---|
| 402 | payment_method_required | The workspace has no verified payment method. A person has to add one in the dashboard. |
| 402 | plan_limit_reached | The workspace has added 10 distinct forwarding addresses, which is the most it may add. |
| 403 | forbidden | The credential is an OAuth access token, or an API key with a guardrail. |
| 409 | invalid_state | This address has been sent all five confirmation emails it can be sent. Remove it, and contact support if it still has not arrived. |
| 422 | invalid_request | email is missing or not an address, or is on a domain SendRaven receives mail for; or inbound_domain is not one of the workspace's domains. |
| 422 | workspace_suspended | Sending is suspended for the workspace. |
| 429 | rate_limited | A confirmation was sent to this address less than a minute ago. The Retry-After header gives the seconds to wait. |
| 502 | ses_error | The address was stored but the confirmation email could not be sent. Post the same address again after a minute to resend it. |
Remove a forwarding address
DELETE /v1/forwarding-addresses/{id} · requires domains:write
Stops forwarding to the address at once. A confirmation link that has not been used stops working. Adding the address again needs a new confirmation, and it still counts toward the workspace's limit of 10.
Path parameters
| Parameter | Description |
|---|---|
id | The address's id. |
Response
200 OK
Errors
| Status | Type | When |
|---|---|---|
| 404 | not_found | No pending or active forwarding address with this id in the workspace. |