Skip to main content
Possible SetupSales & Marketing

Outbound in Odoo: From Contact List to the Next Move

Contact import, cold sequences and reply tracking in one Odoo instance instead of four tools. The analysis layer above it is reference architecture.

Industry
B2B sales · SaaS · services · industry
Build, estimated
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

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.

The process, 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.

What changes

Possible setup, not a packaged product

The figures are modelled target values for a possible setup, derived from industry benchmarks and our own tests. They do not come from a customer project; real values depend on your business. We do not sell this setup as a finished product: we measure where your bottleneck is, then build with your team. For systems that require certification (e.g. HIS, gematik, DATEV-certified) we work with specialised partners.

Before vs. After

AspectBeforeAfter
ToolingBefore: Data source, sequencing tool, CRM and a spreadsheet in betweenAfter: One Odoo instance, one database, one contact base
Data qualityBefore: Same company four times, same person emailed twiceAfter: Matching before creation, duplicates merged
Decision groupBefore: One contact per account, often the wrong oneAfter: Buying committee visible, missing roles flagged
PrioritisationBefore: List by creation date, gut feeling decidesAfter: Score with visible factors and a justified suggestion
Legal basisBefore: Trusting that nobody objectsAfter: Checked step before every send, suppression documented
Lost dealsBefore: Lost with one click, no reason recordedAfter: Reasons clustered, fed back into the customer profile

Technology

Technology Stack

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

Integrations

Systems this setup can connect to

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

What the setup takes care of

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.