Why Odoo Quotations Stop Reaching Customers: An Email Health Checklist

Troubleshoot missing Odoo quotations with a checklist for outgoing mail, queues, failed sends and a Pilot Health diagnostic review.

Short answer: When Odoo quotations never reach the customer, the cause is almost always in the email pipeline, not the quotation: a misconfigured outgoing mail server, a stuck email queue, failed sends nobody monitors, or missing SPF and DKIM records. Work through the checklist in order — most cases resolve at step two.

What is actually happening when a quotation “never arrives”?

The quotation was sent from Odoo — the salesperson clicked send and moved on. Then the customer says nothing arrived, and suddenly everyone is staring at each other. There are only three possibilities: Odoo never handed the email to a mail server, the mail server accepted it and then dropped or queued it, or it was delivered into a spam folder or rejected outright by the recipient’s filters. Your job is to find which hop failed. Most teams start by resending the quotation, which fixes nothing and confuses the customer with duplicates.

The checklist below follows the email’s actual path: Odoo, then the outgoing server, then the queue, then the recipient’s filters, then the inbox. Check in order and stop when you find the break. Skipping ahead is how you spend an afternoon checking DNS records for a queue that was simply stuck.

Is the outgoing mail server configured correctly?

Step one lives in Odoo’s settings: the outgoing mail server configuration. The classic faults are depressingly familiar — the wrong port and encryption combination (587 with STARTTLS versus 465 with SSL), authentication failures after someone changed the mailbox password and forgot Odoo, a “from” address the SMTP provider does not allow, or a daily sending limit hit on a shared mailbox that also handles support mail. Use Odoo’s test connection button, but read its result honestly: it proves authentication works, not that mail gets delivered. If anything changed recently — a password, a provider, a domain migration — start here and do not skip this step.

Are your emails stuck in the queue?

Odoo does not send every email instantly; it keeps an email queue and a scheduled action drains it. Mails pile up when that scheduled action is not running, when the mail server throttles you, or after a failed send that keeps retrying. Open the queue and look for the tells: a growing message count, old timestamps, the same messages appearing again and again. If the “Mail: Email Queue Manager” scheduled action is inactive, you have found your problem. If the queue drains when you force-send a batch but refills afterward, the scheduler is the problem, not the mail server. This single check resolves more “missing quotation” tickets than everything else on this list combined.

How do you find failed or held sends?

Failed mails do not disappear quietly — they land in failure or held states with error messages attached, and those messages are usually specific. Read them before changing anything: “550 relay not permitted” points at the server, “authentication failed” points at credentials, “mailbox full” points at the recipient. Then pattern-match. Failures to one customer domain mean a recipient-side block. Failures to everyone mean your server or configuration. And check the bounce handling while you are here: Odoo’s bounce alias has to exist and be monitored, or bounces vanish silently and you never learn that half your quotations are being rejected.

Could SPF or DKIM be blocking your mail?

If Odoo sends fine but Gmail and Outlook junk or reject the mail, the problem is authentication, not Odoo. SPF is the DNS record that authorizes your sending server’s IP to send for your domain; DKIM is the cryptographic signature that proves the message was not tampered with. Both live in DNS, which means this step requires coordinating with IT or whoever manages the domain — you cannot fix it from inside Odoo. The typical story: the company switched email providers, Odoo kept sending through the old relay, SPF started failing, and quotations landed in spam for weeks before anyone connected the dots. After any DNS change, verify with an authentication checker by sending a test to a seed address, and remember that DNS propagation takes time — retesting after ten minutes proves nothing.

What do Odoo’s transactional email records tell you?

Every email Odoo generates leaves evidence. The chatter on the quotation shows what was sent and when; the underlying mail message records show the state per recipient — sent, failed, bounced. Use them to argue with facts instead of assumptions. Open the quotation, compare the chatter timestamps against the customer’s claim, then match them against the mail logs. If the chatter says “sent” but no mail record exists, the send never reached the queue — go back to the server configuration. If the record says “sent” with no error and nothing arrived, the break is downstream: spam filters or a recipient block. This is also the fastest way to answer the salesperson’s question honestly instead of guessing.

Symptom-to-cause reference

Pin this table next to whoever handles support tickets. It covers the patterns that come up again and again.

Symptom Likely cause What to check
Quotation shows “sent” but customer got nothing Mail stuck in queue or scheduler stopped Email queue age; Mail Queue Manager scheduled action
“Authentication failed” errors SMTP credentials changed or expired Outgoing mail server settings; test connection
Mail reaches Gmail but lands in spam SPF/DKIM misconfigured DNS records; coordinate with IT; authentication check
All sends to one customer domain fail Recipient server blocking your IP or domain Bounce messages; ask recipient IT to check filters; check blocklists
Some quotations arrive, some don’t Daily sending limit hit on the mail account Provider sending limits; queue timestamps clustering
Bounces never appear anywhere Bounce alias not configured Bounce email alias in Odoo; catchall handling
Resending “fixes” it sometimes Intermittent queue or scheduler delays Scheduled action history; server load at send times

What does a Pilot Health diagnostic review surface?

A Pilot Health diagnostic review looks at the Odoo environment systematically — mail server settings, queue state, scheduled actions, failure logs — and flags configuration issues before they cost you quotations. One honest caveat: what the review can see depends on environment access. On Odoo.sh or self-hosted environments with proper access, it can inspect logs and server configuration deeply; on Odoo Online, visibility is limited to what the platform exposes, so some checks stay manual. Either way, run the review before changing mail settings. Random tweaks to SMTP configuration are how small email problems become full outages, usually on a Friday afternoon.

Frequently asked questions

The test email works but quotations don’t arrive. Why?
Test mails and quotation mails can take different paths — different “from” addresses, different templates, attachments that trip content filters. Diagnose using the actual quotation mail records, not the test button.

Should we just switch to a transactional email provider?
Often yes for volume, but fix the underlying configuration first. A new provider with bad DNS records fails exactly the same way — you will just pay for the privilege.

How often should we check the queue?
Put it on a weekly operations checklist, and set up monitoring or alerting on queue age if your hosting allows it. A queue nobody watches will embarrass you eventually.

Can salespeople diagnose this themselves?
The chatter timestamps, yes. Server configuration and DNS, no — that is admin and IT territory. Give sales a one-page “what to check before escalating” version of this checklist so the right information arrives with the ticket.

If quotations are vanishing between Odoo and your customers’ inboxes, resist the urge to change mail settings blindly. Run Pilot Health first and find out which hop is actually failing.