Part 2: Preparing your WooCommerce and Odoo System Checklist

Learn about the various types of software available and gain valuable tips for selecting the best solutions for your marketing agency.

women's brown sleeveless shirt

Tiana Paul

Woodoo Sync Founder

Quick Start Guide

A laptop, tablet and mobile on a table

Before you get started with syncing WooCommerce to Odoo you first need to have a comprehensive understanding of your / your clients requirements. This involves an understanding of how data is setup both in WooCommerce and Odoo and also the mapping that is required / expected between the two systems.

The basic 3 datasets which will be required by almost all E-Commerce Stores is the mapping of Product, Customer, and Invoice Data.

Product Data involves defining and understand the source-of-truth, knowing your products and product types. Understanding any product dependencies and edge cases.

Customer Data includes updated and managing a central record of customers purchasing from your WooCommerce store and also other sales channels which feed into your Odoo system.

Invoice Data is the bridge which connects Products and Customer data between both systems. Orders placed in WooCommerce must be correctly synced and updated in the appropriate sales order / invoice modules in Odoo to ensure all accounting, product, and customer records remain up to date.

Take your time and engage the right people and systems - as you build your preperation checklist to implement a system integration. Time well spent in preparation will ensure all edge case, unique setups, and data mapping is supported during the sync process.


Product Data

Products in WooCommerce are of two main types. Simple and Variable products. Simple products are a one-to-one mapping, while Variable Products use a many-to-one product mapping.

For all products it is recommend having a unique and valid SKU.


WooCommerce Product Data - Simple:

  1. Product Name

  2. Product Description

  3. Product Price

    1. Original Price

    2. Sales Price

  4. Product Image (Main)

  5. Product Image (Supporting)

WooCommerce Product Data - Variable Products:

  1. Product Name

  2. Product Description

  3. Product Price

    1. Original Price

    2. Sales Price

  4. Product Image (Main)

    1. Product Main Image (Variant)

  5. Product Image (Supporting)

    1. Product Supporting Image (Variant)


Product Data in Odoo

Products in Odoo are also of two main types. This includes product.template and product.product which can be considered similar to Simple and Variable Products in WooCommerce.

Product.products are a one-to-one mapping, while Product.Templates use a many-to-one product mapping where a Product.Template can assigned many Product.Products.

Note: Variants in Odoo need to be enabled from the Odoo setting page and this is not enabled by default.


Product Attributes

Product


Customer Data


Customer Data relates to the customer information, billing details, shipping details, contact information, and location data associated with a specific customer.

When syncing WooCommerce to Odoo, customer data is one of the most important datasets to plan carefully. This is because customers may already exist in Odoo from other sales channels, manual entry, POS, wholesale accounts, or previous imports.

Before enabling customer sync, you should have a clear understanding of how customer records will be matched, created, and updated between WooCommerce and Odoo. This helps prevent duplicate customers, incorrect billing details, and disconnected sales history.

Customer Data in WooCommerce:

In WooCommerce, customer data is usually created when a customer places an order, creates an account, or updates their billing and shipping details at checkout.

WooCommerce customer data may include:

  • First Name

  • Last Name

  • Email Address

  • Phone Number

  • Billing Address

  • Shipping Address

  • Company Name

  • Country

  • State / Region

  • City

  • Postcode / ZIP Code

  • Customer User ID

  • Order History

  • Customer Notes

  • Tax / VAT details, if collected

WooCommerce can store both registered customers and guest customers. This is important because not every WooCommerce order will be linked to a WordPress user account.

For this reason, the email address is commonly used as the primary customer matching field when syncing WooCommerce customers to Odoo. However, some stores may also need to consider phone numbers, company names, VAT numbers, or existing customer IDs depending on their setup.

A key consideration is whether WooCommerce should create a new customer in Odoo for every new checkout customer, or whether the sync should first search for an existing Odoo contact before creating a new record.


Customer Data in Odoo:

In Odoo, customer data is generally stored as a contact record. This contact may represent an individual customer, a company, a billing contact, a delivery address, or another related contact type.

Odoo customer records may include:

  • Contact Name

  • Company Name

  • Email Address

  • Phone Number

  • Mobile Number

  • Billing Address

  • Delivery Address

  • Country

  • State / Region

  • City

  • ZIP / Postcode

  • Tax ID / VAT Number

  • Contact Type

  • Parent Company

  • Salesperson

  • Pricelist

  • Payment Terms

  • Internal Notes

  • Related Sales Orders

  • Related Invoices

Unlike WooCommerce, Odoo often separates customer contacts, companies, invoice addresses, and delivery addresses more formally. This means a single WooCommerce customer may need to map to more than one contact-related record in Odoo, depending on how the business uses Odoo.

For example, a business customer may have a company record in Odoo, with separate billing and delivery contacts attached to that company. A retail customer may only require a single contact record.

This is why it is important to understand how customer data is currently managed in Odoo before syncing from WooCommerce.


Mapping Customer Data:

The most important mapping decision is how customers will be matched between systems.

Common matching rules include:

  • Match by email address

  • Match by phone number

  • Match by company name

  • Match by VAT / Tax ID

  • Match by an existing external customer ID

  • Create a new Odoo customer if no match is found

For most WooCommerce stores, email address is the simplest and most reliable matching field. However, this may not be enough for B2B stores where multiple contacts may share the same company, or where company records are more important than individual customer records.

You should also decide how updates are handled after the first sync. For example, if a customer changes their shipping address in WooCommerce, should that update the existing Odoo delivery address, create a new delivery address, or leave the Odoo record unchanged?

Important customer mapping questions include:

  • Should WooCommerce or Odoo be the source-of-truth for customer data?

  • Should guest customers be created in Odoo?

  • Should every WooCommerce order create a customer record?

  • Should existing Odoo contacts be updated or left unchanged?

  • Should billing and shipping addresses be stored as separate Odoo contacts?

  • Should company customers be mapped differently from individual customers?

  • Should tax/VAT numbers be required before syncing?

  • What happens if two customers use the same email address?

  • What happens if the billing and shipping details are different?

Taking the time to define these rules will reduce duplicate records, improve reporting, and ensure that orders, invoices, and customer history remain connected correctly between WooCommerce and Odoo.


Appendix:

WooCommerce Customer Data:

Customer Data

WooCommerce Source / Field

Customer User ID

wp_users -> ID / wp_postmeta -> _customer_user

Username

wp_users -> user_login

Email Address

wp_users -> user_email / wp_postmeta -> _billing_email

First Name

wp_usermeta -> first_name / wp_postmeta -> _billing_first_name

Last Name

wp_usermeta -> last_name / wp_postmeta -> _billing_last_name

Display Name

wp_users -> display_name

Billing First Name

wp_postmeta -> _billing_first_name

Billing Last Name

wp_postmeta -> _billing_last_name

Billing Company

wp_postmeta -> _billing_company

Billing Email

wp_postmeta -> _billing_email

Billing Phone

wp_postmeta -> _billing_phone

Billing Address Line 1

wp_postmeta -> _billing_address_1

Billing Address Line 2

wp_postmeta -> _billing_address_2

Billing City

wp_postmeta -> _billing_city

Billing State / Region

wp_postmeta -> _billing_state

Billing Postcode / ZIP

wp_postmeta -> _billing_postcode

Billing Country

wp_postmeta -> _billing_country

Shipping First Name

wp_postmeta -> _shipping_first_name

Shipping Last Name

wp_postmeta -> _shipping_last_name

Shipping Company

wp_postmeta -> _shipping_company

Shipping Address Line 1

wp_postmeta -> _shipping_address_1

Shipping Address Line 2

wp_postmeta -> _shipping_address_2

Shipping City

wp_postmeta -> _shipping_city

Shipping State / Region

wp_postmeta -> _shipping_state

Shipping Postcode / ZIP

wp_postmeta -> _shipping_postcode

Shipping Country

wp_postmeta -> _shipping_country

Customer Note

wp_posts -> post_excerpt / order customer note

Order ID

wp_posts -> ID

Order Number

WC_Order -> get_order_number()

Order History

Linked through wp_postmeta -> _customer_user or billing email


Odoo Customer Data:

Customer Data

Odoo Model / Field

Contact Name

res.partner -> name

Company Name

res.partner -> name where is_company = True

Is Company

res.partner -> is_company

Contact Type

res.partner -> type

Parent Company / Parent Contact

res.partner -> parent_id

Email Address

res.partner -> email

Phone Number

res.partner -> phone

Mobile Number

res.partner -> mobile

Street Address

res.partner -> street

Street Address 2

res.partner -> street2

City

res.partner -> city

State / Region

res.partner -> state_id

Country

res.partner -> country_id

ZIP / Postcode

res.partner -> zip

VAT / Tax ID

res.partner -> vat

Customer Rank

res.partner -> customer_rank

Supplier Rank

res.partner -> supplier_rank

Salesperson

res.partner -> user_id

Pricelist

res.partner -> property_product_pricelist

Payment Terms

res.partner -> property_payment_term_id

Fiscal Position

res.partner -> property_account_position_id

Internal Notes

res.partner -> comment

Company ID

res.partner -> company_id

Language

res.partner -> lang

Active Status

res.partner -> active

Related Sales Orders

sale.order -> partner_id

Related Invoices

account.move -> partner_id

Invoice Address

res.partner -> type = 'invoice'

Delivery Address

res.partner -> type = 'delivery'

Contact Address

res.partner -> type = 'contact'

Mapping WooCommerce and Odoo Data:

Matching Rule

WooCommerce Field

Odoo Field

Match by Email Address

_billing_email

res.partner -> email

Match by Phone Number

_billing_phone

res.partner -> phone / mobile

Match by Company Name

_billing_company

res.partner -> name where is_company = True

Match by VAT / Tax ID

Custom field, for example _billing_vat

res.partner -> vat

Match by WooCommerce Customer ID

_customer_user / wp_users -> ID

Custom field, for example x_woocommerce_customer_id

Match by WooCommerce Order Billing Details

_billing_email, _billing_phone, _billing_company

res.partner -> email, phone, name

Share on social media