Skip to content
PokutsoftPokutsoft
GlobalProductivity/Integration
Google Sheets Two-Way Sync icon

Google Sheets Two-Way Sync

Two-way sync between any Odoo model and a Google Sheets tab, with field mapping and conflict resolution

Odoo 20.0Odoo 19.0Odoo 18.0
Compatible with Odoo 18.0 · 19.0 · 20.0
OPL-1 license · 35+ languages · Community & Enterprise
Google Sheets Two-Way Sync for Odoo — preview banner

Google Sheets Two-Way Sync

Two-way sync between any Odoo model and a Google Sheets tab, with field mapping and conflict resolution

Google Sheets Two-Way Sync keeps any Odoo model in sync with a Google Sheets spreadsheet tab: push Odoo records out, pull sheet edits back in, or run both directions at once. It is bring-your-own-key (BYOK), connecting with either a Google service-account JSON key or an API key against your own Google Cloud project.

Key Features

BYOK Connections

One or more connections use a Service Account JSON key or an API key, each with a Test Connection check; service-account connections perform a real JWT-bearer token exchange against Google's OAuth endpoint and cache/refresh the access token automatically. API keys are read-only; use a service account for push / two-way.

Flexible Sync Configuration

Pick any Odoo model, a spreadsheet ID and tab name, a header row, and a sync direction: Odoo to Sheet, Sheet to Odoo, or Two-Way.

Field Mapping with Key Field Matching

Field mapping lines map any Odoo field (char/text/number/boolean/date/many2one) to a spreadsheet column letter with an optional custom header, and a designated key field matches an Odoo record to its spreadsheet row across runs.

Record Filtering

An optional record filter, an Odoo domain, restricts which records participate in the sync.

Baseline-Based Conflict Detection

A baseline snapshot recorded after every successful sync detects which side actually changed since then, so unrelated rows are left untouched.

Configurable Conflict Resolution Policy

When both sides changed the same row, the configured policy decides the outcome: Odoo Always Wins, Sheet Always Wins, or Last Modified Wins, comparing Odoo's write date against a mapped sheet timestamp column when configured.

Duplicate Key Detection

Duplicate keys on either side are detected and reported rather than silently overwriting one row with another.

Scheduling & Sync Log

An optional scheduled push/pull per configuration (minutes/hours/days) runs via a periodic cron, a Sync Now button runs the same engine on demand, and every run is recorded in a sync log with pushed/pulled/conflict/error counts, duration and a clear message.

Use Cases

✓Let a sales team edit lead data in a familiar Google Sheet while keeping it synced two-way with Odoo CRM
✓Publish a live, read-only export of an Odoo model to a shared Google Sheet for stakeholders without Odoo access
✓Pull bulk edits made in a spreadsheet back into Odoo records on a schedule, with conflicts flagged rather than silently overwritten
✓Decide whether Odoo or the spreadsheet should win when the same row was edited on both sides
✓Monitor sync health over time using the sync log's pushed/pulled/conflict/error counts per run

Screenshots

Google Sheets Two-Way Sync — 01 Sync Config Form in Odoo

01 Sync Config Form

Google Sheets Two-Way Sync — 02 Sync Log List in Odoo

02 Sync Log List

Google Sheets Two-Way Sync — 03 Connection Form in Odoo

03 Connection Form

Why Choose This Module

Spreadsheets remain the tool many non-technical teams reach for first, and forcing everyone into Odoo's UI is not always realistic. This module bridges the two worlds with a genuine two-way sync engine, field-level mapping, baseline-based conflict detection and a configurable resolution policy, so a shared Google Sheet and Odoo data can coexist without one silently clobbering the other.

Specifications

  • Compatible: Odoo 18.0 / 19.0 / 20.0
  • License: OPL-1
  • Languages: 35+
  • Author: Pokutsoft
  • Dependencies: base, mail
  • Support: support@pokutsoft.com
  • Update date: 2026-10-02

Related modules