How to Import Email Orders and RFQs into Odoo Automatically
Stop retyping PDF, Excel, and scanned purchase orders into Odoo by hand
If your customers send orders and requests for quotation by email — as attachments in every imaginable format — someone on your team is copying that data into Odoo line by line. This guide shows how to import email orders into Odoo automatically with Mail2ERP: an email arrives, the data is extracted, and the sales order or quotation appears in Odoo within minutes during the operating hours you set. Setup takes about five minutes, no developer required, and the first month is a free Discovery month.
🎯 Why Manual Order Entry into Odoo Is So Expensive
Every emailed order looks different. One customer sends a clean PDF, another an Excel sheet with their own column layout, a third photographs a signed form and attaches the picture. A person has to open each email, find the products, quantities, references, and delivery dates, then retype everything into Odoo. That process has three hidden costs:
- Time: a routine multi-line order can take several minutes to key in correctly. At dozens of orders per day, that is a full-time job that produces nothing new — it only moves data from one screen to another.
- Errors: a mistyped quantity or a wrong product code becomes a wrong delivery, a credit note, and an unhappy customer. Manual entry errors surface late, when they are most expensive to fix.
- Delay: orders received on Friday evening sit unprocessed until Monday. Quotations answered a day late are quotations lost to faster competitors.
The volume is rarely small, either. One real Mail2ERP customer, IMP Kontakt, receives thousands of RFQs and orders a month by email — a workload that would be impossible to type by hand without a dedicated data-entry team.
🔍 What Odoo Users Usually Try First
The built-in Odoo email gateway
Odoo can create records from incoming email out of the box. It works well for what it was designed for: it logs the email and opens a lead or a blank quotation. What it does not do is read the attachment. The PDF with twenty order lines is attached to the record — and a human still has to open it and type in every line.
Custom scripts and template-based OCR
Some companies build parsers for their biggest customers’ documents. These work until the customer changes their layout, adds a column, or a new customer arrives with a completely different format. Template-based extraction means permanent maintenance: every document variation is a new development ticket.
Zapier-style connectors
Generic automation platforms can move an email into Odoo, but they struggle with the hard part — understanding an unstructured attachment in an unknown layout and language, matching free-text product descriptions to your actual Odoo product codes, and knowing whether the document is an order or a request for quotation. They also add a middleware layer between your mailbox and your ERP.
⚠️ The real requirement
To automate email orders for real, a tool must handle any format, any layout, any language — with no templates, classify RFQ vs. order, match lines to your Odoo catalog, and write a correct record with a full audit trail. That is exactly what Mail2ERP was built for.
⚙️ The Automated Way: Set Up Mail2ERP for Odoo in 5 Minutes
Customer email arrives
Mail2ERP extracts & validates
Order created in Odoo
Email filed to PROCESSED
Here is the complete setup, start to finish:
- Step 1 — Start your free Discovery month: Sign in at bots4.me/bots, click Start free Discovery month on the Mail2ERP card and accept the Terms once — no credit card needed.
- Step 2 — Connect your email: use Secure Quick Connect. Gmail/Google Workspace and Office 365 connect via managed OAuth in two clicks; Yahoo and any other provider work over IMAP with an app password. No middleware sits between your mailbox and the bot.
- Step 3 — Connect Odoo: install the free BOTS4.me Connect module (supports Odoo 13–19). On Odoo.sh and on-premise you get the full Python connector, installed once and connected in one click. Odoo Online forbids custom Python, so there you create an API key under Settings → Users & Companies → Users → your user → Account Security and paste it at bots4.me under Settings → Mail2ERP → Access Manager → Add Destination → ERP → Odoo. Odoo Online needs Odoo’s Custom plan for API access.
- Step 4 — Start in DEMO: Mail2ERP processes your real emails and emails you exactly what it would import — but writes nothing to Odoo. When the DEMO reports look right, set Mode to LIVE on the Control tab — it unlocks after the first DEMO report email.
- Step 5 — Graduate the access level: move from email-only, to Odoo read access (matching against your real customers and products), to full production writes — only when you are confident.
- Step 6 — Teach it your exceptions: drag emails into
_Mail2ERP/QUOTATION,_Mail2ERP/ORDERS, or_Mail2ERP/DO_NOT_IMPORTfolders in your mailbox. One move teaches the bot how to treat that sender’s pattern in the future.
🧭 Try It in Your Free Discovery Month
Your first month of Mail2ERP is a free Discovery month: the usage allowance of the Personal plan with Separate External, Smart Multi-Code Matching and RFQ Detection unlocked to try, and no credit card needed. Here is how to get from zero to your first imported order inside it.
Day 1 — Start and connect
- Sign in at bots4.me/bots, click Start free Discovery month on the Mail2ERP card and accept the Terms once — no credit card needed.
- Open Settings (gear) → Mail2ERP → Access Manager → Add Source to connect your mailbox. Gmail and Microsoft 365 use Secure Quick Connect; other providers connect over IMAP with an app password — see Getting Connected.
- Or connect no mailbox at all: click Add Source and add the BOTS4.me Mailbox (one click, no password), then forward order emails to mail2erp@bots4.me from your account email address. Other senders can be allowed under Forward to us – accept email from on the Control tab.
- Connect Odoo: in the same Access Manager click Add Destination → ERP → Odoo, or install the free BOTS4.me Connect module in Odoo and press Connect. On Odoo Online you paste an API key instead.
- Odoo Online needs Odoo’s Custom plan for API access.
- With an API key, give that Odoo user Sales (Administrator), Contact Creation and Purchase (User) rights.
Day 1 — Check the Control tab
- Mode: Mail2ERP starts in DEMO. For every order or inquiry it reads, it emails you what it would import, and nothing is written to Odoo. In LIVE it creates real quotations and sales orders.
- Operating Hours and Weekends: Mail2ERP runs only inside these hours, which start as weekday office hours. Widen them and switch on Weekends if evening and weekend orders should be imported too.
- AI Mode: the Discovery month includes Essential AI. With AI Mode Off, product codes, quantities and prices are read by rules only and nothing is sent to an AI provider.
- Mail2ERP Features: all file formats, Email Reports and Logs in your mailbox are already on.
- Switches with a Discovery tag on the Control tab are included in your free month and start switched off — switch on the ones you want to try.
- For Mail2ERP these are Separate External (unknown senders go to _Mail2ERP/EXTERNAL instead of staying in your INBOX), the four Smart Multi-Code Matching switches (Vendor Codes, Barcodes, Manufacturer Part Number, Customer References) and RFQ Detection (turns a reply that quotes your quotation number into an order).
Day 1 — Send a test order
Mail2ERP imports only from senders who are customers in Odoo, and it finds products by the codes in your catalog. For your first test, send an order from an email address that belongs to a customer contact in Odoo and list two or three product codes (the Internal Reference in Odoo) with quantities — in the email text or as a PDF or Excel attachment. After the next run the DEMO report arrives, and the decision shows in the Logs tab and in the _Mail2ERP/LOGS folder of your mailbox.
Week 1 — Teach it, then go LIVE
- Look at your INBOX a few times a day: emails Mail2ERP could not import stay there, unread; imported ones move to _Mail2ERP/PROCESSED. The log line tells you why, for example a sender that is not a customer in Odoo or no product codes found.
- Correct it with folders: drag an email into _Mail2ERP/QUOTATION or _Mail2ERP/ORDERS to retry it as a quotation or an order, into _Mail2ERP/DO_NOT_IMPORT to skip that kind of email in future, or into _Mail2ERP/SUPPLIER to stop a sender, such as a vendor, from ever being imported. Folder names follow your app language.
- When the DEMO reports look right, set Mode to LIVE on the Control tab — it unlocks after the first DEMO report email.
📅 When the Discovery month ends
When the month ends, Mail2ERP continues on the free plan by itself with a small monthly allowance: when it is used, new items wait until next month or until you choose a plan, and an item already started always finishes. Choose a plan to keep all features — see the plan table on the Mail2ERP product page.
The free plan reads email text, PDF, CSV and HTML; scanned PDFs, images, Excel, Word and the Discovery switches need a plan. Nothing you imported is undone.
📅 What Day-to-Day Operation Looks Like
Once live, Mail2ERP works through new mail on your chosen schedule, within the operating hours you define. It reads PDF, Excel, Word, CSV, HTML, images, and scanned documents or photographed orders via OCR — in any language or script, with no templates. Each email is classified as an RFQ or an order, matched against your Odoo catalog (from the Family plan also by barcodes, manufacturer part numbers and customer references — Smart Multi-Code Matching), and written into Odoo with a complete audit trail.
- Successful imports are filed to a PROCESSED folder — the quotation or sales order is already waiting in Odoo.
- Anything ambiguous stays in your INBOX, unread, so nothing ever disappears from view. Fix the cause (for example, add the missing product in Odoo) and drag the email into _Mail2ERP/QUOTATION or _Mail2ERP/ORDERS — it is retried on the next run.
- Duplicate detection prevents double entry when a customer emails two addresses or forwards the same order twice.
- Reports and logs: Email Reports sends you a short report for every document imported into Odoo, the dashboard’s Logs tab shows every decision the bot made, and the same rows appear in the _Mail2ERP/LOGS folder of your mailbox. Every feature is individually toggleable, AI Mode goes from Off up to the level your plan includes, and Bot Power switches everything off instantly.
The platform is EU-hosted and built for GDPR, offers 2FA, and sends its reports, logs and mailbox folders in 31 languages. One connection serves every BOTS4.me app that works with Odoo, so adding order fulfillment or payment automation later requires no new integration work.
🌍 Works Beyond Odoo Too
This guide targets Odoo, but Mail2ERP also runs on ERPNext 15 and 16, Zoho (Books / Inventory), Dolibarr 23 and newer, Microsoft Dynamics 365 Business Central (online), QuickBooks Online, Xero and SAP Business One. Any other ERP with an API — SAP S/4HANA, Microsoft Dynamics 365 Finance / Sales, Oracle NetSuite and more — is connected on request. If yours is missing, contact us.
❓ Frequently Asked Questions
Can Odoo import orders from email attachments automatically?
Not out of the box. Odoo’s built-in email gateway can create a record from an incoming email, but it does not read PDF or Excel attachments — the order lines still have to be typed in manually. Mail2ERP adds that missing layer: it extracts line items, quantities, and references from any attachment and creates the complete quotation or sales order in Odoo automatically.
Does Mail2ERP work with Odoo Online (SaaS), or only Odoo.sh and on-premise?
All three hosting types work: Odoo 13 through 19 on-premise, and the current versions that Odoo.sh and Odoo Online run. Odoo.sh and on-premise installations use the full Python connector from the free BOTS4.me Connect module, installed once and connected in one click. Odoo Online forbids custom Python, so you connect with an API key instead — you create it in Settings → Users & Companies → Users → your user → Account Security and paste it at bots4.me. Odoo Online needs Odoo’s Custom plan for API access. Either way, one connection serves every BOTS4.me app that works with Odoo.
Can it read scanned or photographed purchase orders?
Scanned and photographed orders, yes: Mail2ERP reads scanned PDFs, photos and image-based documents with OCR, in all languages including non-Latin scripts such as Thai, Arabic, Japanese, Chinese, Russian, Hebrew, Korean, and Hindi — with no templates required. Handwriting is not reliably readable; on the Enterprise plan, the Ultra AI level reads the original file with vision-capable models and gives the best results on difficult documents.
How does Mail2ERP tell an RFQ from a purchase order?
AI classification analyzes the email and attachment content to decide whether it is a request for quotation or a firm order, and creates the corresponding record in Odoo. If it ever guesses wrong for a sender, drag that email into the _Mail2ERP/QUOTATION or _Mail2ERP/ORDERS folder — the system remembers the correction and applies it to that sender’s future emails.
What happens to emails that can’t be fully processed?
They stay in your INBOX, unread, so nothing silently disappears. The Logs tab and the _Mail2ERP/LOGS folder tell you why the import stopped — for example a product missing from Odoo. Once you fix the cause, drag the email into _Mail2ERP/QUOTATION or _Mail2ERP/ORDERS and it is retried on the next run.
Will duplicate orders be created if a customer emails the same order twice?
No. Mail2ERP’s duplicate detection recognizes when the same order arrives at multiple addresses or is forwarded again, moves the copy to _TRASH/DUPLICATES, and imports the order into Odoo exactly once.
How long does setup take, and do I need a developer?
About five minutes, and no developer is needed. Email connects via Secure Quick Connect (OAuth) — or you simply forward orders to mail2erp@bots4.me — Odoo connects through the free BOTS4.me Connect module (or an API key on Odoo Online), and you start in DEMO, where nothing is written to your database. The first month is a free Discovery month, with no credit card needed.
📚 Related Odoo Automation Guides
- Next step after import: How to Automate Order Confirmation, Delivery and Invoicing in Odoo — tag an imported order AutoERP and AutoERP confirms, ships and invoices it.
- The purchasing mirror image: How to Import Supplier Order Confirmations into Odoo Automatically — same idea, applied to your vendors’ emails.
- Close the money loop: How to Automate Payment Reminders in Odoo — escalating dunning for the invoices those orders become.
- Connector details: How to Connect Odoo to BOTS4.me (Odoo 13–19).
- The big picture: How to Automate Odoo End-to-End: From Email Order to Paid Invoice.
🔗 Sources and Further Reading
Official documentation and standards referenced in this guide. External links open in a new tab.
Let Odoo Type Its Own Orders
Connect your mailbox and Odoo in five minutes, watch Mail2ERP work in Demo Mode, and go live only when you are confident. The first month is a free Discovery month, with no credit card needed.