Skip to main content
Possible SetupSales & Marketing

Outbound in Odoo: From Contact List to the Next Move

Contact import with enrichment, cold sequences with follow-ups and reply tracking — and above it an analysis layer that turns those signals into a concrete recommendation. All inside one Odoo Community instance instead of four tools that know nothing about each other. The lower three layers are built; the intelligence layer is reference architecture.

Extra sequencing tools
€0
Industry
B2B sales · SaaS · services · industry
Implementation
5–8 weeks

At a glance

It starts with
Target profile search
The machine handles
14 of 15 steps
A person keeps
Sales decides
Bottom line
€0Extra sequencing tools

The problem with Outbound in Odoo: From Contact List to the Next Move

The usual mid-market outbound stack is four tools that know nothing about each other. A data source for contacts. A sequencing tool for the emails. A CRM for the pipeline. And a spreadsheet where somebody manually stitches together what happened in the first three.

That is not a data problem, it is flying blind. The CRM says a lead exists. The sequencing tool says it opened twice and never replied. Nobody sees both at once — so sales works the list by creation date instead of by signal.

Then there is the second blind spot. A complex B2B decision typically involves six to ten people, according to Gartner. Usually exactly one of them gets emailed — and when that person leaves the company, the deal is gone before anyone notices.

This showcase shows the whole chain running inside one Odoo Community instance: import, outreach, replies, pipeline and analysis in the same database. And it shows where the chain breaks first in Germany — the legal basis, not the technology.

Odoo Community ships a full CRM but no sequencing logic: the Marketing Automation app belongs to the Enterprise edition, and even sending a single email to a lead is more awkward in Community than expected. So a second tool gets bolted next to the CRM — licensed per seat, with its own contact database, its own statistics, and a sync that holds up exactly until someone renames a field.

The consequences are concrete. Enriched contact data arrives dirty: the same company sits in the system four times as Google, Google LLC, Google Inc and Google Germany, and sales emails the same people twice. Follow-ups get skipped, because they hang off a reminder somebody has to set by hand. Replies land in a mailbox, not on the lead, and never become visible in the CRM. And a lost deal is closed with one click on Lost without recording why — after fifty lost deals nobody knows whether it was price, timing or a missing feature.

A word on numbers: plenty of open and reply rate benchmarks circulate for cold outreach, almost all of them published by vendors of such tools and methodologically weak. We deliberately leave them out. The defensible statement is structural, not statistical: what sits in four systems cannot be analysed together.

And the point outbound vendors rarely stress: in Germany, email marketing without prior explicit consent is an unreasonable nuisance under § 7 (2) no. 2 UWG — including business-to-business. Cold emailing German companies is therefore not a grey area but generally unlawful. Build the mechanics without planning for that step and you have built a legal risk on a timer.

Outbound in Odoo: From Contact List to the Next Move: how the process runs, step by step

Scroll through. The diagram stays put and highlights the step you are on.

The workflow01 / 15
  1. 01

    Target profile search

    Industry · size · role · country

    The flow does not start with a list of names but with a profile: industry, company size, role, seniority, country. That profile is the one lever that moves every other number later — and at the end of the flow it gets sharpened by the deals that were won and lost.

  2. 02

    Import contacts

    Apollo.io incl. enrichment

    The connector pulls matching companies and contacts from Apollo.io into the Odoo data models, enriched fields included: position, department, seniority, headcount, country, sometimes technology stack. Those fields are the raw material of the analysis later on.

  3. 03

    Merge duplicates

    Google LLC = Google Inc

    Before records are created, the duplicate check runs. Spelling variants of the same company — Google, Google LLC, Google Inc, Google Germany — are recognised and merged. That prevents duplicate records, and above all the embarrassing double approach to the same person from two campaigns.

  4. 04

    Build buying committee

    Roles · seniority · gaps

    From the roles of the imported contacts, a picture of the decision group forms per account: who decides technically, who decides commercially, who procures. The gaps become visible too — a group without a single contact in finance or purchasing, for instance.

  5. 05Branch

    Legal basis in place?

    The decisive gate, and in Germany the first one: is there a defensible legal basis for emailing this contact? Explicit consent, an existing customer relationship under § 7 (3) UWG, or a target market with a different regime. The check happens here, not in the head of whoever presses send.

  6. 06

    Suppressed

    no send, documented

    Without a basis, the flow ends for this contact. They go onto the suppression list, the decision is documented, and no sequence picks them up again. That is not a failure but the intended outcome: the most expensive contact is the one that triggers a cease-and-desist letter.

  7. 07

    Sequence starts

    Multi-sender · limits · warm-up

    The sequence starts: several steps, defined delays, multiple sending mailboxes with their own limits and a warm-up phase. Spreading across senders and respecting limits is not an optimisation but the precondition for mail being delivered at all.

  8. 08

    Read replies back

    IMAP · bounce · objection

    Replies are read back via IMAP and attached to the right lead — bounces, out-of-office notes and objections included. The reply therefore lands on the record instead of in a personal mailbox where it would stay invisible to the rest of the team.

  9. 09Branch

    Reply received?

    The second gate evaluates what came back. A genuine reply stops the sequence immediately — nothing looks less professional than automated step three arriving after someone has answered. Without a reply, the contact moves to the next follow-up step.

  10. 10

    Next follow-up step

    delayed, and finite

    The follow-up step is delayed and finite: it loops back into the sequence until the last defined step has been sent, then outreach ends. That loop is exactly the step that fails first in the manual version.

  11. 11

    Deal health score

    Signals from mail · CRM · profile

    From here the analysis layer works. The signals produce a priority: who opened, who replied, how long the silence has lasted, whether a meeting exists, what role the person holds. The score never stands alone — always next to the factors that produced it.

  12. 12

    Next move

    Suggestion with a reason

    The state becomes a suggestion with a reason: call today, because two people opened and nothing has happened for nine days. Or: switch to a second channel. The difference from a reminder is the reason — it makes the suggestion checkable.

  13. 13Human decides

    Sales decides

    Call · LinkedIn · proposal

    This is where automation stops. The suggestion is a suggestion; whether to call, write or discard is up to sales. That decision is deliberately not automated away — it is the point where experience beats any heuristic.

  14. 14

    CRM updated

    Stage · activity · history

    Whatever was decided lands directly on the lead: stage, activity, note, meeting. Because sequence and pipeline share one database, this is not a re-import but the same record — and the next score calculation already knows about the decision.

  15. 15

    Win/loss analysis

    sharpens the target profile

    At the end sits the analysis across all deals: won and lost, grouped by reason, industry, size, role and country. The result feeds back into the target profile search from step one — a linear flow becomes a loop that gets sharper with every round.

Our solution for Outbound in Odoo: From Contact List to the Next Move

The reference architecture stacks four layers — all on the same PostgreSQL database behind Odoo 19 Community, which is precisely what makes the top layer possible at all.

Layer 1 — Contacts. A connector pulls companies and contacts from Apollo.io, enrichment included (role, seniority, department, company size, country), straight into the Odoo data models. Before records are created, a matching pass merges spelling variants of the same company instead of producing four records.

Layer 2 — Outreach. Multi-step sequences with delays, several senders and sending limits per mailbox. Replies are read back via IMAP and attached to the lead; a reply stops the sequence automatically, bounces and objections go onto a suppression list that every sequence respects.

Layer 3 — Pipeline. Sending happens from inside the CRM, on the record that also carries the activity, the stage and the note. No export, no re-import, no second contact database.

Layer 4 — Revenue intelligence. This is where the actual difference appears. Because import, sequence and pipeline data live in one database, signals can be combined that otherwise stay apart: opens and replies per person, activities and meetings from the CRM, role and seniority from enrichment. Out of that comes a deal health score with visible factors (not a number without a reason), a buying committee view that flags the missing roles, a next move with a justification instead of a reminder, and a loss analysis that groups lost reasons across all deals and feeds them back into the ideal customer profile.

One step comes before any send: the legal basis. Every contact is checked before a sequence reaches them — explicit consent, an existing customer relationship under § 7 (3) UWG, or a market with a different legal regime. Without a basis the contact is suppressed, not emailed. That is a node in the flow, not a checkbox on a form.

The honest framing: layers one to three exist as in-house Odoo modules and run in production. Layer four is described here as architecture, not as a finished product — the signals for it are all present, the analysis is the part still open. And a score stays a heuristic: it orders a list, it does not predict the future.

One database instead of four tools
Contacts, sequences, replies and pipeline live in the same Odoo instance. No sync, no second contact database, no statistics that exist only inside the sequencing tool.
Legal basis as its own step
Before any send, a node in the flow checks whether consent, the existing-customer exception (§ 7 (3) UWG) or a different legal regime in the target market applies. Without a basis the contact is suppressed, not sent to.
Duplicates caught before creation
Google, Google LLC, Google Inc and Google Germany are recognised as one company and merged before they turn into four records and two duplicate approaches.
Buying committee instead of single contact
Role, seniority and department combine into a picture of the decision group per account — gaps included. What becomes visible is not only who was contacted, but who is missing.
Deal health score with visible factors
Signals from the sequence, the CRM and enrichment produce a priority — always shown next to the factors that created it. Concept part of this architecture, not a finished module.
A next move, not a reminder
Opened twice, no reply, no meeting: that becomes a concrete suggestion with a reason, not a follow-up date. Concept part of this architecture.
Feedback into the customer profile
Won and lost deals are clustered by industry, size, role and country. The result sharpens the next import search instead of disappearing into a quarterly report. Concept part of this architecture.

What comes out of Outbound in Odoo: From Contact List to the Next Move

Possible setup, not a packaged product

The figures shown are target values and expected magnitudes for a possible setup – based on industry benchmarks, public studies of comparable setups, and our own tests on a real stack. They are not measured outcomes from a specific customer project; actual results depend on company size, process maturity, and integration depth. We do not offer this setup as a packaged product. We help teams design, automate, and run such processes themselves – through architecture consulting, workshops, and implementation support with n8n. For regulated third-party systems with certification or license requirements (e.g. HIS, gematik, DATEV-certified), we partner with specialized providers.

€0
Extra sequencing tools
4–6 vs 1
Contacts per target account
gone
Reconciling tools by hand
0
Missed follow-ups

Import, outreach, replies and pipeline sit in one database — which is why anything can be analysed on top of them at all. Sales gets a sorted list with visible reasons instead of a spreadsheet ordered by creation date, and every send has a checked legal basis behind it.

Before vs. After

Tooling
Before
Data source, sequencing tool, CRM and a spreadsheet in between
After
One Odoo instance, one database, one contact base
Data quality
Before
Same company four times, same person emailed twice
After
Matching before creation, duplicates merged
Decision group
Before
One contact per account, often the wrong one
After
Buying committee visible, missing roles flagged
Prioritisation
Before
List by creation date, gut feeling decides
After
Score with visible factors and a justified suggestion
Legal basis
Before
Trusting that nobody objects
After
Checked step before every send, suppression documented
Lost deals
Before
Lost with one click, no reason recorded
After
Reasons clustered, fed back into the customer profile

Technical facts: Outbound in Odoo: From Contact List to the Next Move

Technology Stack

Odoo 19 Community (CRM)Apollo.io APIPostgreSQLSMTP/IMAP multi-senderDKIM · SPF · DMARCLLM (GPT-4 class / Claude)Odoo modules (in-house)

Integrations

Seamless connection to your existing infrastructure

Odoo 19 Community (CRM)Pipeline
Leads, stages, activities and meetings as the system of record — the same database that holds sequences and replies
Apollo.io APIContact source
Company and person data including enrichment: position, department, seniority, headcount, country and sometimes technology stack
Import and enrichment moduleOdoo module (in-house)
Field mapping, duplicate matching before records are created, and transfer of enriched fields into the Odoo data models
Sequence and follow-up moduleOdoo module (in-house)
Multi-step sequences, delays, multiple senders, sending limits, reply tracking and an automatic stop on reply
Direct sending from the CRMOdoo module (in-house)
Closes the Community edition's gap when emailing leads — sending on the record instead of through a second tool
SMTP / IMAP multi-senderDelivery
Separate sending domains and mailboxes with SPF, DKIM, DMARC, warm-up, limits and bounce processing
LLM (GPT-4 class / Claude)Analysis
Reply drafts from CRM context, reasons behind the next move, and clustering of loss reasons — concept part of the architecture
PostgreSQLData foundation
One database for import, sequence and pipeline — the technical reason the analysis layer works at all without exports

Security & Compliance

Enterprise-ready with highest security standards

Data stays in your own instance
Contacts, sequences and replies live in the self-operated Odoo database — not in a sequencing vendor's tenant. Hosting in an EU data centre or on premise is a configuration question, not a migration.
Consent, objection, suppression
Legal basis per contact, an unsubscribe link in every mail, objection under Art. 21 GDPR as a hard stop: an entry on the suppression list is respected by all sequences, including future ones.
Sender protection and deliverability
SPF, DKIM and DMARC per sending domain, separate mailboxes with warm-up and sending limits, bounce handling. That protects not only the rate but the reputation of the main domain your regular business mail depends on.
Provenance of enriched data documented
Every contact records which source it came from and when it was imported — the basis for the Art. 14 GDPR notification duty and for a deletion policy covering records that were never contacted.

Frequently Asked Questions

Without prior explicit consent, generally not — § 7 (2) no. 2 UWG treats email marketing without consent as an unreasonable nuisance, and settled case law extends that to business-to-business. Three routes are usable in practice: documented consent, the narrow existing-customer exception in § 7 (3) UWG for similar own goods or services with an objection notice, and target markets under a different regime — the US runs an opt-out regime under CAN-SPAM, and in the UK, PECR treats corporate subscribers differently from individuals. That is why the legal basis is its own node in this architecture rather than a footnote. This is context, not legal advice: your counsel decides the specific case.
Layers one to three — contact import with enrichment, sequences with follow-up and reply tracking, direct sending from the CRM — exist as in-house Odoo modules and run in production. The fourth layer, meaning the deal health score, buying committee analysis, next move and loss analysis, is described here as reference architecture and is not a finished module. The signals it needs are all in the same database; what is open is the analysis, not the data foundation. We label that deliberately rather than dressing a roadmap up as a product.
For one reason: joint analysability. A sequencing tool knows opens and replies, the CRM knows meetings, stages and closings — as long as they sit apart, no signal from both worlds can be combined without someone exporting. With sequence and pipeline in the same PostgreSQL database, the analysis is a query rather than a project. Side effects come along: no per-seat licence for a second tool, one contact base instead of two, data inside your own instance. The price is worth naming honestly: in-house development and maintenance instead of finished standard software, and on day one a self-built sequencing module is not as mature on deliverability and reporting as a specialised product.
From Apollo.io, a third-party source — and that carries an obligation outbound teams like to overlook: under Art. 14 GDPR you must inform the data subject when you did not collect their data from them, at the latest within a month or at first contact. That includes the source, the purpose and the legal basis of processing. In practice: the source is logged per contact, the notice is part of the first email, and an objection under Art. 21 GDPR creates an entry on the suppression list that every sequence respects. A deletion policy for imported contacts who were never approached belongs there too.
It is a heuristic, not an oracle. A score built from opens, replies, activity gaps and roles orders a list better than the creation date — it claims nothing beyond that. Two conditions decide whether it is useful. First, the factors have to stay visible, otherwise you get a number nobody argues with and nobody understands. Second, the feedback loop from won and lost deals needs a meaningful volume of closed cases before it can sharpen the target profile; at twenty deals a year that is an observation, not statistics. Read as a prioritisation aid, the score saves time. Read as a forecast, it disappoints.