Odoo Google Sheets Integration: How We Synced Prices and Margins

Talk to Our Odoo Experts Take the Free ERP Assessment
Odoo product prices and margins synced to Google Sheets

The Problem: Prices Kept in Two Places

The client tracked product details and prices in a Google Sheet. Every time a price changed in Odoo, someone copied the new figure into the sheet by hand. That worked while the catalogue was small, but it created the usual problems: updates arrived late, two versions of the truth existed, and a missed edit could send a wrong price to a customer. The client wanted to keep using Google Sheets without maintaining prices twice.

Need Odoo to talk to a tool your team already uses? Tell us what you want to sync.

Odoo integration services

What O2B Built: A Custom API Sync

This was a custom O2B build, not an off-the-shelf connector. Odoo has its own spreadsheet features, and some editions include Google-related capabilities, but they did not cover the client's workflow. We built a dedicated API connection between Odoo and the client's Google Sheet. Odoo remains the source of truth: when a product price changes, the matching row in Google Sheets updates automatically. The client also sets a profit margin in Odoo, and the sheet shows the selling price calculated from the cost and that margin.

How the Sync Works

At a high level, the build follows the same pattern as most integrations:

  • Authentication. API credentials give the sync access to the designated Google Sheet only.
  • Field mapping. Odoo product details, cost, price, margin and currency are mapped to the correct columns in the sheet.
  • Trigger. A price or margin change in Odoo starts the sync, either as soon as the record is saved or on a scheduled run.
  • Write. The API updates the matching row in Google Sheets, and the selling price column reflects the margin set in Odoo.
  • Logging and retry. Failed writes are logged and retried, and the team can be alerted if the sync does not complete.

Because this is a custom build, direction and timing are choices rather than fixed rules. The sync can run one way, from Odoo to Google Sheets, or two ways, and it can run in real time or on a schedule. A two-way sync needs extra rules so that an edit in the sheet does not overwrite a newer price in Odoo. If the connection fails, Odoo is unaffected: the sheet keeps its last successful values, the failure is logged, and the team can be notified. These details are confirmed against each client's process before go-live.

Odoo's Built-in Spreadsheet Features vs a Custom Sync

Both approaches can work. The right choice depends on where the data lives, who needs to edit it, and how quickly it has to change.

What matters Odoo's built-in spreadsheet features Custom O2B sync
Where the data lives Inside Odoo, using Odoo's spreadsheet and pivot tools Google Sheets, with Odoo as the source
Live price updates Data is viewed inside Odoo; external sharing is limited Prices and margins are written to the sheet automatically
Sharing and collaboration Follows Odoo user access Uses Google's native sharing and permissions
Two-way editing Not the purpose of the built-in tools Possible, with rules to prevent overwrites
Setup effort Low, if the team already works inside Odoo Custom API work, field mapping and error handling

In short, Odoo's own tools are convenient when everyone works inside Odoo. A custom sync such as this one is the better fit when a team already runs part of its process in Google Sheets and does not want to move it. If you need the connection built, our Odoo integration services cover the API work, field mapping and testing.

What to Check Before You Build One

  • Which fields must sync. Start with price, cost, margin, currency, tax and price lists. Agreeing the field list early prevents rework.
  • How often it should run. Real-time sync keeps the sheet current but creates more API calls. A scheduled sync is simpler and is enough for daily reporting.
  • Who can edit the sheet. Protect calculated columns and limit editing rights so a manual change cannot silently break a price.
  • Direction and overwrite rules. Decide whether the sheet can write back to Odoo. If it can, define which system wins when both change.
  • Error alerts. Log failed writes, retry them, and tell a named person when the sync stops.
  • A test plan. Run the sync on a copy of the sheet and a staging database before touching live prices.

If the margin logic needs to match how your team prices products, it usually becomes part of an Odoo customization rather than a simple field copy.

Frequently Asked Questions

Can Odoo connect to Google Sheets?

Yes. There is no universal built-in button in every edition, but Odoo can connect to Google Sheets through a custom API connection like the one in this case. Odoo also has its own spreadsheet features in some editions, which may be enough if the data does not need to live in Google Sheets.

Is the sync real-time?

It can be real-time or scheduled, depending on how it is built. A real-time sync fires when a price or margin changes; a scheduled sync runs at set intervals. The right choice depends on how quickly the sheet must reflect Odoo.

Can the sheet update Odoo too?

A two-way sync is possible, but it needs rules to avoid overwriting data. Without them, an old value in the sheet could replace a newer price in Odoo. Most teams start one way and add the reverse direction only where it is clearly needed.