Skip to main content

Configure Field Mapping in Odoo

Two sync options rather than five, two tabs rather than three, and the required-fields rule that decides which records Enginy may create.

Field Mapping decides which Enginy field corresponds to which Odoo field. You will find it under Integrations → Odoo → Configure → Field mapping. It is its own panel in the setup modal, sitting next to Sync configuration rather than inside it.

You get two tabs, not three: Companies, plus whichever people object your workspace uses. Which one that is depends on the Default object when exporting setting described below.

Important: This is specific to Odoo. In Salesforce and Zoho you configure Contacts and Leads at the same time; in Odoo you configure one or the other, because every import and export goes to a single people model.


The two sync options

This is what causes the most confusion, so it is worth reading before you change anything. In Odoo, each mapped field has two options, not five:

Option

What it actually does

Enginy overwrites Odoo

The Enginy value is written to Odoo and replaces whatever was there.

Sync with Odoo

Keeps the value that already exists in Odoo. It can fill the field in if it is empty, but it does not overwrite what is already there.

Important: Sync with Odoo is not a two-way sync. The name is misleading. What it does is respect the Odoo value during an export. Changes made in Odoo do not come back to Enginy through this option.

If you are coming from the HubSpot integration, watch out: there you get five directions per field, including a real two-way sync. Odoo does not have that. Information travels from Enginy to Odoo.


What comes from Odoo into Enginy

Even though there is no continuous sync, Odoo data does come in at two specific moments:

  • On import, which brings the mapped fields of the records you select.

  • When a task is completed in Odoo, which is reflected on the Enginy task.

Everything else travels from Enginy to Odoo.


Fields Odoo will not let you write

Some Odoo fields are computed or read-only and do not accept writes from outside. They do not appear as a destination in the dropdown.


The country case

Odoo does not store the country as free text but as a reference to its own country list. Enginy resolves it for you: it tries the ISO code first, then the name.

Note: If it cannot identify the country, Enginy skips that field and exports the record anyway. A misspelled country does not fail the whole export. The record is created without a country.


Odoo-specific configuration

Default object when exporting

In Sync configuration you choose whether your Enginy contacts live in Odoo as Contact or as Lead.

Setting

Odoo model

What you configure

Contact

res.partner marked as a person

Contacts tab + Companies tab

Lead

crm.lead

Leads tab + Companies tab

It is an exclusive choice. The other object's identifier, mapping tab and custom fields disappear from the modal, because Enginy never reads them for your workspace.

Note: Changing it later changes where your contacts land. Custom fields you created under the previous tab stay stored but stop applying, so plan this before your first export rather than after.

Lost lead on export

On the same screen you will find the Lost lead on export setting, with two values:

  • Create a new lead, which is the default.

  • Update the lost lead.

It decides what happens when the only matching Odoo lead is marked as lost. In neither case is the lead reopened. We cover it in the export article.


A recommendation before your first export

Test the mapping with two or three records before launching a large export, and check the result in Odoo. It is far faster than undoing hundreds of badly written records.


Which records Enginy may create

Two settings decide whether Enginy creates a record in Odoo that it could not match. They are the most common reason a contact "never arrived".

The creation toggles

In Sync configuration you will find two switches, both on by default:

  • Create contacts in Odoo when no match is found

  • Create companies in Odoo when no match is found

Turn one off and Enginy updates what it matches and skips the rest. Nothing new is created for that entity.

Required fields

Each row in the Field mapping table has a checkbox in the Required column. Tick it and a record missing that field is skipped instead of created.

Note: This never blocks an update. A record that already exists in Odoo keeps being updated as usual — the rule only gates creation.

Three things worth knowing before you use it:

  • One configuration covers every CRM. The check runs on the Enginy values, before they are translated into Odoo field names. If you connect a different CRM later, the same rules apply.

  • 0 and false count as filled in. A field is only missing when it is empty, contains nothing but spaces, or is an empty list.

  • Turning creation off does not erase your selection. The list stops applying while the toggle is off, and comes back untouched when you turn it on again.

The checkbox is disabled while creation is off for that entity. Enable the matching toggle in Sync configuration first.

Important: There is one list for contacts, not one per model. "Contact" here means the Enginy entity, so the same required fields apply whether your contacts export to Odoo contacts or to leads.

The rule that always applies

Warning: A contact with no email, no phone, no LinkedIn URL and no CRM ID cannot be exported at all, whatever you configure here. Enginy would have no way to match or identify it in Odoo.

This is a different mechanism from the country case described above. A skipped required field stops the record being created; an unresolved country only drops that one field and the record is still exported.

Where you see the effect

Export to CRM checks your selection before running and tells you how many records are missing required fields. If every record in the selection would be skipped, it blocks the export with None of these contacts will be created in your CRM.

These rules also apply to automatic campaign syncs, not just manual exports.

Did this answer your question?