---
title: Customer email logged on Odoo contacts without a paid connector | Orbital Objectives
description: A Gmail sync module that records reps’ customer email on contacts, reusing credentials the company already had.
image: https://orbitalobjectives.com/hubfs/oo-social-share.png
---

[Skip to content](https://orbitalobjectives.com/work/gmail-to-odoo-sync#main)

[rbital bjectives](https://orbitalobjectives.com/?hsLang=en)

- [Services](https://orbitalobjectives.com/services?hsLang=en)
- [Our Work](https://orbitalobjectives.com/work?hsLang=en)
- [About](https://orbitalobjectives.com/about?hsLang=en)
- [Insights](https://orbitalobjectives.com/insights?hsLang=en)

[Discuss Your Project](https://orbitalobjectives.com/contact?hsLang=en)

1. [Our Work](https://orbitalobjectives.com/work?hsLang=en)
2. Manufacturing

# Customer email logged on Odoo contacts without a paid connector

A Gmail sync module that records reps’ customer email on contacts, reusing credentials the company already had.

## The problem

Leadership wanted to see customer conversations on the contact record. Off-the-shelf connectors meant a new subscription and a new cloud project to administer, and a careless sync can cause real damage: duplicate messages, automatic replies, and customer replies landing on the wrong record.

## The approach

I reused the sign-in each rep already had for sending mail from Odoo, so there was nothing new to buy or approve. Most of the design effort went into what the sync must never do.

## What I built

- Per-user polling of Gmail with a history cursor and an oldest-first backfill
- Rules that skip internal mail, mail Odoo already holds and shared-alias traffic
- Messages written so they cannot trigger auto-replies or capture replies meant for an order or ticket
- Attachment de-duplication and size caps
- A sync log with a Create Contact action for senders Odoo does not know yet

## Outcome

- Customer email now shows on the contact record, with no new subscription.
- Leadership used it to review activity across key accounts.

#### Industry

Manufacturing

#### Platform

Odoo

#### Technology

- Odoo 19
- Gmail API
- OAuth
- Python

#### Related services

- [Salesforce Integrations & Data Migration](https://orbitalobjectives.com/services#salesforce-integrations-data-migration)
- [Odoo ERP Consulting & Integrations](https://orbitalobjectives.com/services#odoo-erp-consulting-integrations)

[Discuss Your Project](https://orbitalobjectives.com/contact?hsLang=en)

### [Integration Manufacturing Sanctions screening wired into visitor sign-in A serverless integration that screens every visitor and their employer at the front desk and holds any match for a human decision. →](https://orbitalobjectives.com/work/sanctions-screening-integration?hsLang=en)

Next step

## Tell me what is stuck.

A first conversation is 30 minutes with the person who would do the work. You will leave knowing whether I am the right fit and roughly what it would take.

[Discuss Your Project →](https://orbitalobjectives.com/contact?hsLang=en) [Explore Our Work](https://orbitalobjectives.com/work?hsLang=en)

[rbital bjectives](https://orbitalobjectives.com/?hsLang=en)

Everything orbits your objective

Independent Salesforce, HubSpot and Odoo consulting. Massachusetts.

#### Services

- [Consulting & Development](https://orbitalobjectives.com/services#salesforce-consulting-development)
- [CPQ & Revenue Operations](https://orbitalobjectives.com/services#salesforce-cpq-revenue-operations)
- [Service Cloud & Automation](https://orbitalobjectives.com/services#service-cloud-automation)
- [Experience Cloud & Partner Portals](https://orbitalobjectives.com/services#experience-cloud-partner-portals)
- [Integrations & Data Migration](https://orbitalobjectives.com/services#salesforce-integrations-data-migration)
- [All services](https://orbitalobjectives.com/services?hsLang=en)

#### Practice

- [Our Work](https://orbitalobjectives.com/work?hsLang=en)
- [About](https://orbitalobjectives.com/about?hsLang=en)
- [Insights](https://orbitalobjectives.com/insights?hsLang=en)
- [Contact](https://orbitalobjectives.com/contact?hsLang=en)

#### Contact

- [info@orbitalobjectives.com](mailto:info@orbitalobjectives.com)
- [Discuss Your Project](https://orbitalobjectives.com/contact?hsLang=en)

© 2026 Orbital Objectives LLCSalesforce and Odoo are trademarks of their respective owners.

```json
{
  "@context" : "https://schema.org",
  "@type" : "Article",
  "about" : [ "Odoo 19", "Gmail API", "OAuth", "Python" ],
  "articleSection" : "Case study",
  "author" : {
    "@id" : "https://orbitalobjectives.com/#organization"
  },
  "description" : "A Gmail sync module that records reps’ customer email on contacts, reusing credentials the company already had.",
  "headline" : "Customer email logged on Odoo contacts without a paid connector",
  "publisher" : {
    "@id" : "https://orbitalobjectives.com/#organization"
  },
  "url" : "https://orbitalobjectives.com/work/gmail-to-odoo-sync"
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "BreadcrumbList",
  "itemListElement" : [ {
    "@type" : "ListItem",
    "item" : "https://orbitalobjectives.com/",
    "name" : "Home",
    "position" : 1
  }, {
    "@type" : "ListItem",
    "item" : "https://orbitalobjectives.com/work",
    "name" : "Our Work",
    "position" : 2
  }, {
    "@type" : "ListItem",
    "item" : "https://orbitalobjectives.com/work/gmail-to-odoo-sync",
    "name" : "Customer email logged on Odoo contacts without a paid connector",
    "position" : 3
  } ]
}
```