Skip to content
Two-way sync between WooCommerce and Google Sheets. Products, orders, coupons, customers, and variations — live in your...

2026 · Sole Developer — architecture, PHP backend, React settings UI, Google Sheets API integration, Apps Script, Action Scheduler pipeline, and WordPress.org release workflow.

StoreSheet – WooCommerce Google Sheets Sync

Two-way sync between WooCommerce and Google Sheets. Products, orders, coupons, customers, and variations — live in your spreadsheet.

The challenge

WooCommerce store owners need to manage products, orders, coupons, and customers across disparate tools — exporting CSVs, manually updating prices, and rebuilding reports from scratch. There is no native mechanism to keep a WooCommerce store continuously in sync with Google Sheets, where non-technical stakeholders do their actual analysis and bulk editing.

The result

A fully bidirectional sync plugin that writes WooCommerce events to Google Sheets within minutes and propagates manual Sheets edits back to WooCommerce in real time via HMAC-signed Apps Script webhooks — with no infinite loops, configurable conflict resolution, and a chunked Action Scheduler backfill that never times out.

Year
2026
Role
Sole Developer — architecture, PHP backend, React settings UI, Google Sheets API integration, Apps Script, Action Scheduler pipeline, and WordPress.org release workflow.
Stack
19 teches
Status
Published

StoreSheet – WooCommerce Google Sheets Sync

Two-way sync between WooCommerce and Google Sheets. Products, orders, coupons, customers, and variations — live in your spreadsheet.

What It Does

  • Edit product prices, stock, and status in Sheets — changes write back to WooCommerce instantly.
  • Every new order, coupon, and customer appears in your spreadsheet within minutes.
  • Manage coupons in bulk: create, update, or delete rows and StoreSheet handles the rest.
  • Use Google Sheets formulas for revenue dashboards, margin calculations, and custom reports.
  • Full backfill at any time — processes 100 items per chunk via Action Scheduler, never times out.

Sync Coverage

| Tab | WC → Sheets | Sheets → WC | |---|---|---| | Products | ✓ | ✓ editable columns | | Variations | ✓ | ✓ | | Orders | ✓ | Status + note only | | Coupons | ✓ | ✓ create / update / delete | | Customers | ✓ | — | | Overview | — | Formula dashboard | | Reports | — | Formula analytics |

Architecture

WooCommerce event
    └─▶ Action Scheduler job
            └─▶ Pusher (batchUpdate / append)
                    └─▶ Google Sheets

Manual cell edit in Sheets
    └─▶ Apps Script onEdit trigger
            └─▶ HMAC-signed POST to /storesheet/v1/sheets/edit
                    └─▶ Action Scheduler pull job
                            └─▶ Puller (WC_Product / WC_Order / WC_Coupon)

Apps Script fires only on manual edits — not on API writes — so there are no infinite sync loops.

Conflict Resolution

Choose one strategy in Sync → Conflict Resolution:

| Strategy | Behaviour | |---|---| | sheets_wins | Sheets edits override WooCommerce (default) | | wc_wins | WooCommerce always overwrites Sheets | | newest_wins | Timestamp comparison — whichever is more recent wins |

Requirements

  • WordPress 6.6+
  • WooCommerce 3.0+
  • PHP 7.4+
  • A Google Cloud project with the Sheets API and Drive API enabled

Installation

  1. Upload the plugin folder to /wp-content/plugins/ and activate.
  2. Go to WooCommerce → StoreSheet.
  3. On the Connect tab, enter your Google OAuth Client ID and Secret, then click Authorize.
  4. Click Create Spreadsheet — StoreSheet builds the full sheet structure automatically.
  5. (Optional) Open the spreadsheet → Extensions → Apps Script, paste apps-script/Code.gs, and run setup() to enable real-time Sheets→WC edits.

Development

Requirements

  • PHP 7.4+, Composer 2
  • Node.js 20+, Yarn 4

Setup

BASH
composer install
yarn install

Build

BASH
yarn build          # production JS/CSS
yarn start          # dev watch

Code Quality

BASH
composer phpcs      # PHP CodeSniffer
composer phpcbf     # auto-fix
composer phpstan    # PHPStan Level 8
composer test       # PHPUnit

Release

BASH
composer release    # → release/storesheet.zip
composer zip:dev    # → release/dev/storesheet.zip

Tests

BASH
bash tests/php/install-wp-tests.sh wordpress_test root '' localhost latest
composer test

Run a single test class:

BASH
./vendor/bin/phpunit --filter RowMapperTest

License

GPL-2.0-or-later

Share
𝕏 in

Related work

Building something similar?

Let's talk about your project.

Open to freelance engagements and consulting on Laravel, WordPress, and AI-powered systems.