Resend Email Connector

Send Odoo email through the Resend API instead of SMTP, and see what happened to it

Resend Email Connector sends every email Odoo produces through the Resend API over HTTPS, so no mail port has to be open. Each message gets a delivery status in Odoo, and replies come back to the record they belong to.

Odoo 19.0 · Community, Enterprise · Odoo.sh, On-premise · 115,00 € · Buy on Odoo Apps

Available for: Odoo 19.0

The problem

Many hosts block SMTP ports 25, 465 and 587, and a blocked port looks like a hang rather than an error, so the Odoo mail queue quietly stalls. Even when SMTP works, it only says the message was accepted: nobody knows whether a quotation was delivered, opened or bounced. And when Odoo sends from an address that is not on a verified domain, SPF and DKIM fail and invoices land in spam.

What it does

Everything goes through Resend

Fix the spam folder with one field

Delivery tracking

Replies come home

Security and reliability

Odoo General Settings with the Resend Email Provider section: route outgoing mail through Resend, API key, default From and Reply-To addresses, and webhook signing secret
Settings > General Settings > Resend Email Provider in Odoo 19.

Who it is for

Not a fit when:

Install

Requires: Discuss (mail)

  1. Buy Resend Email Connector on the Odoo Apps Store for Odoo 19.0.
  2. Add the module to your Odoo.sh project or to the addons path of your on-premise server. The server needs outbound HTTPS to api.resend.com and the Python requests library.
  3. Update the apps list in Odoo and install Resend Email Connector.

Odoo Online (SaaS) does not allow third-party apps, so the connector cannot be installed there. A publicly reachable HTTPS address for Odoo is needed only for delivery status and inbound replies.

Configure

  1. In Resend, verify your sending domain by adding the DNS records Resend gives you, then create an API key. This is the step that fixes SPF and DKIM.
  2. In Odoo, open Settings > General Settings > Resend Email Provider. Tick Route outgoing mail through Resend, paste the API key and set the default From address on the domain you just verified.
  3. Optional: in Resend, point a webhook at the Odoo endpoint /resend/webhook and paste the signing secret into the same settings page, so delivery events and replies are verified.
SettingWhat it does
Route outgoing mail through ResendThe global switch. Instead, you can flag a single outgoing server as a Resend server.
API keyThe Resend API key; enough on its own for sending.
Default From addressAn address on your verified domain that every message inherits.
Default Reply-To addressOptional reply address for outgoing mail.
Webhook signing secretVerifies incoming delivery events and replies sent to /resend/webhook.

How to use it

Send email as usual

  1. Keep sending quotations, invoices, chatter messages and mailings from Odoo exactly as before.
  2. The connector takes each message and delivers it through Resend from your verified domain.

Check delivery

  1. Open the Resend Messages list to see every email with its recipients, status and any error text.
  2. Open the quotation, invoice or contact to see the delivery status of the mail sent from it.
  3. If the API returns an error, the mail shows a normal Odoo mail failure with Resend's message and is retried by Odoo.

Receive replies

  1. With the webhook configured, replies to your emails arrive in the chatter of the record they answer.

Limits

Frequently asked questions

Why is my Odoo email not sending over SMTP?

Often because the host blocks ports 25, 465 and 587, which looks like a hang rather than an error. Resend Email Connector sends mail over HTTPS through the Resend API instead, so no mail port has to be open.

Does the Resend connector replace my outgoing mail server in Odoo?

It intercepts it. Odoo still shows a configured outgoing server, because the module provisions a "Resend (API)" record, but no SMTP connection is made. You can also keep some mail on SMTP by flagging only one server as a Resend server.

How can I see if an Odoo email was delivered or bounced?

With the Resend webhook configured, each message gets one of eight states, from sent and delivered to opened, clicked, bounced or complained. The status appears in the Resend Messages list and on the record the mail came from.

What happens if the Resend API is down?

The send raises a normal Odoo mail failure with the error Resend returned, and the mail stays in the queue for Odoo's usual retry. It does not silently fall back to SMTP.

Will retries send duplicate emails?

No. Each request carries an idempotency key derived from the message and its recipients, so a genuine retry is deduplicated by Resend.

Which Odoo versions and hosting does the Resend connector support?

Odoo 19.0, Community and Enterprise, on-premise or on Odoo.sh. It needs outbound HTTPS to api.resend.com and the Python requests library. Odoo Online cannot install third-party apps.