How Do I Send WooCommerce Orders to Google Sheets Automatically?
You can send WooCommerce orders to Google Sheets automatically using Krom Automation, a visual workflow plugin for WordPress. The Google Sheets integration is a Pro feature, so you need at least the Basic plan, which starts at $69 a year or $199 as a lifetime purchase. Setup takes under 20 minutes and requires no code, just a Google service account and a mapped spreadsheet.
WooCommerce does not have a built-in export to Google Sheets. Every method that does this, whether a dedicated connector plugin, Zapier, or a custom Apps Script, adds a layer outside WordPress. Krom Automation keeps that layer inside your own server, so order data never passes through a third-party cloud service you do not control.
This article covers the two workflows you actually need: one that appends a new row when an order is created, and one that finds and updates that row when the order status changes. It also covers how to structure the spreadsheet for a fulfillment team, where things break, and what honest limitations to expect.
Browse the full feature list to see everything the Google Sheets integration can do before you start.
Quick Summary
| Question | Answer |
|---|---|
| Does the free plugin cover Google Sheets? | No. Google Sheets is a Pro integration. |
| What Pro plan do you need? | Any plan. Basic ($69/year or $199 lifetime) covers 1 site. |
| Which trigger fires for new orders? | Order Created (WooCommerce trigger, free plugin) |
| Which action appends a row? | Google Sheets: Append Row (Pro action) |
| Can it update a row when status changes? | Yes. Use Find Row, then Update Cell. |
| Does it need Zapier? | No. Everything runs inside WordPress. |
| Does it work in real time? | Yes, via Action Scheduler. Low-traffic sites need real server cron. |
| Can I export old orders? | Not automatically. Historical export needs a one-time CSV upload. |
What Do I Need Before I Start?
You need the free Krom Automation plugin installed and active, plus the Pro add-on for the Google Sheets integration. You also need a Google Cloud project with a service account and a credentials JSON file. The service account is what Krom Automation uses to write to your spreadsheet without requiring you to log in through OAuth every 60 days.
The setup steps for the service account are covered in the Google Sheets and Google Calendar integrations documentation, so we will not repeat them here. The short version: create a project in Google Cloud Console, enable the Google Sheets API, create a service account, download the JSON key, and share your target spreadsheet with the service account email as an Editor.
On the WordPress side, you need WooCommerce active and at least one test order you can place to verify the workflow. WordPress 6.2 or higher and PHP 7.4 or higher are required by Krom Automation.
How Do I Structure the Google Sheet Before Connecting It?
This is the step most tutorials skip, and it is the one that causes the most problems two months after launch. Decide your column order before you build the workflow, because every Append Row action maps merge tags to column positions, and changing the column order later breaks the mapping.
A practical column layout for a WooCommerce order tracker:
- Column A: Order ID – the unique identifier used by the Find Row action to locate existing rows
- Column B: Date – order creation date, used for sorting and date-range filtering
- Column C: Customer Name – full name from billing details
- Column D: Customer Email – used for team lookups and supplier communication
- Column E: Items – product names and quantities as a single merged string
- Column F: Order Total – numeric value, no currency symbol, so the column stays sortable
- Column G: Status – the field the update workflow writes to when status changes
- Column H: Shipping Address – for fulfillment teams who need to print or copy it
- Column I: Notes – optional, for internal team annotations
Put a header row in row 1 and freeze it. Share the spreadsheet with your service account email as Editor and with your fulfillment team as Viewer or Commenter, not Editor. Giving a supplier full Edit access means they can accidentally overwrite the Status column that your automation depends on.
Decide your column order before you build the workflow. Changing it after the integration is live means rebuilding the mapping from scratch.
How Do I Build the “New Order” Workflow?
In your WordPress admin, go to Krom Automation and create a new workflow on the visual canvas. Add the Order Created trigger, which fires the moment WooCommerce creates a new order regardless of payment status. If you only want to capture paid orders, use the Order Completed trigger instead, but be aware that pending and processing orders will not be logged.
Add a Google Sheets: Append Row action as the next node on the canvas. Select your connected Google account, choose your spreadsheet, choose the sheet tab, and map each column to the corresponding merge tag. The merge tags documentation lists every available token for WooCommerce order data, including order ID, customer name, billing email, line items, total, and current status.
A working column-to-merge-tag mapping looks like this:
| Column | Merge Tag | Notes |
|---|---|---|
| Order ID | {{order.id}} | Must be unique per row for Find Row to work later |
| Date | {{order.date_created}} | ISO format; format in Sheets if needed |
| Customer Name | {{order.billing.first_name}} {{order.billing.last_name}} | Combine both tags in one field |
{{order.billing.email}} | ||
| Items | {{order.items_summary}} | Comma-separated product names and quantities |
| Total | {{order.total}} | Numeric only |
| Status | {{order.status}} | Writes “processing”, “pending”, etc. |
| Shipping Address | {{order.shipping.address_1}}, {{order.shipping.city}} | Combine address fields as needed |
Save the workflow, set it to active, and use the workflow simulator to run a dry test before placing a real order. The simulator executes the logic without side effects, so you can confirm the merge tag values resolve correctly before any data hits your spreadsheet.
How Do I Update the Row When the Order Status Changes?
The Append Row action only creates new rows. To keep the spreadsheet accurate as orders move from processing to shipped to completed, you need a second workflow that finds the existing row by Order ID and updates the Status column in place.
Create a second workflow with the Order Status Changed trigger. Add a Google Sheets: Find Row action, searching column A for a value matching {{order.id}}. When a match is found, add a Google Sheets: Update Cell action targeting the row found and column G, writing {{order.status}} as the new value.
This two-workflow pattern, one for creation and one for updates, is the right architecture for a live order tracker. A single workflow with an Upsert action sounds simpler but creates race conditions when two status changes fire within seconds of each other on a busy store.
A single upsert workflow sounds cleaner, but two separate workflows for create and update are more reliable at volume. Race conditions on busy stores are real.
For the full setup walkthrough, see the Google Sheets integration documentation, which covers Find Row, Update Cell, and how to handle cases where no matching row is found.
What About Timing? Is This Actually Real Time?
Krom Automation processes all actions through Action Scheduler, which runs in the background without blocking page loads. On a site with regular traffic, orders appear in your spreadsheet within 30 to 60 seconds of being placed. That is fast enough for fulfillment teams checking the sheet every few minutes.
On very low-traffic sites where no visitor arrives for hours, WordPress Cron fires late and your Action Scheduler queue backs up. The fix is a real server cron job that hits wp-cron.php every minute.
Most managed WordPress hosts offer this as a one-click option. Without it, a site getting 2 or 3 visitors a day could see delays of 20 to 40 minutes between an order being placed and the row appearing in Sheets.
This is not unique to Krom Automation. Every plugin that relies on WP-Cron has the same timing behavior on low-traffic sites. Zapier and Make avoid this because they poll from outside WordPress, but they introduce different latency and per-task costs at volume.
What Are the Real Costs at Scale?
This is where self-hosted automation pulls ahead of per-task billing tools. Here is what each method costs at different order volumes:
| Method | 100 orders/month | 1,000 orders/month | 10,000 orders/month |
|---|---|---|---|
| Krom Automation Pro (1 site, lifetime) | $199 once | $199 once | $199 once |
| Krom Automation Pro (1 site, annual) | $69/year | $69/year | $69/year |
| Zapier (Professional, as of September 2026) | ~$240/year for 750 tasks/month; overages apply above that | Higher plan required | Enterprise pricing |
| Dedicated connector plugin (typical) | $50 to $100/year | $50 to $100/year | May throttle API calls |
Krom Automation has no per-execution fee and no run caps at any plan level. At 10,000 orders a month, the cost is the same as at 10.
Zapier’s Professional plan covers 750 tasks a month at around $240 a year billed annually (as of September 2026), and a two-workflow setup for orders uses 2 tasks per order, meaning 1,500 tasks a month for 750 orders. That pushes a mid-volume store into a higher tier before the year is out.
What Does Not Work, and What Breaks?
Being honest about limits saves you from discovering them at the worst time. Here is what Krom Automation’s Google Sheets integration does not cover:
- Historical orders: The workflow only fires on new events. Orders placed before the workflow was activated do not appear automatically. Export those as a CSV from WooCommerce and paste them into the sheet manually as a one-time step.
- Two-way sync: If someone edits the Status column in Sheets, WooCommerce does not update. This is one-direction only: WordPress writes to Sheets. Nothing reads from Sheets back into WooCommerce.
- Line-item rows: The integration appends one row per order, not one row per product in the order. If you need a separate row for each product in a multi-item order, you need a different data architecture and the current action set does not support it natively.
- Google API rate limits: The Sheets API allows 300 write requests per minute per project. At very high order volumes, a burst of simultaneous orders could trigger a rate limit error. Krom Automation’s retry logic with configurable backoff handles transient errors, but a sustained burst above that threshold needs a queue or batching strategy.
- Service account credential expiry: JSON key files do not expire, but if you delete the service account in Google Cloud or revoke the key, all writes stop immediately with no warning inside WordPress. Check your execution logs monthly.
Historical orders will not appear automatically. Export them as a CSV and paste them in once. Everything after that point runs without you.
How Do I Share the Sheet With My Fulfillment Team Without Giving Them WordPress Access?
This is the genuine advantage of a Google Sheets tracker over every in-WordPress solution. Share the spreadsheet directly from Google Drive with the team member’s Google account. Set their permission to Viewer if they only need to read orders, or Commenter if they need to add fulfillment notes in the Notes column without editing the data columns that your automation writes.
Do not give fulfillment team members Editor access. An Editor can overwrite the Order ID in column A, which breaks the Find Row lookup in your update workflow.
Locking columns A through H using Google Sheets’ protected ranges feature takes 90 seconds and prevents this class of error entirely. Leave column I (Notes) unprotected so the team can annotate without restrictions.
For suppliers who need access but do not have Google accounts, use the “Anyone with the link” setting at Viewer level. That is lower security but appropriate for non-sensitive product fulfillment data if your orders do not include payment details (they should not, since Krom Automation never writes card numbers).
What Else Can I Automate at the Same Time?
Once the Order Created trigger is live, adding parallel actions costs nothing extra. Common additions that run from the same trigger:
- Send a Slack or Discord message to a fulfillment channel with the order summary (see the messaging integrations documentation for setup)
- Tag the customer in FluentCRM as a buyer, covered in the FluentCRM integration documentation
- Subscribe the customer to a post-purchase email sequence in Mailchimp via the Mailchimp integration
- Create a coupon for a repeat-purchase incentive using the Create Coupon action
Each of these runs as an additional action node on the same canvas, triggered by the same Order Created event. There is no limit on how many actions a single trigger can chain. If you run WooCommerce Subscriptions, the WooCommerce Subscriptions integration adds renewal and cancellation triggers that work the same way.
What Does This Cost Compared to Doing It Manually?
At 100 orders a month, manually copying order details into a spreadsheet takes roughly 3 minutes per order, or 5 hours a month. At a conservative $25 an hour for admin work, that is $125 a month in labor, or $1,500 a year.
The Krom Automation Pro Basic plan costs $69 a year. The math is straightforward regardless of order volume.
At 1,000 orders a month, manual entry is simply not viable. The choice becomes which automated method, not whether to automate.
At that volume, Krom Automation’s flat annual fee is the cost-stable option. Task-based pricing tools charge more as you grow, which is the opposite of how costs should work on a scaling store.
If you want to understand the broader Zapier comparison before committing, our article on Zapier alternatives for WordPress covers the full picture, including which use cases Zapier still handles better.
Also from wpRigel
Pollify is wpRigel’s poll, survey and quiz plugin. It is built as native Gutenberg blocks, so adding a post-purchase survey to any page works the same as adding a paragraph. No shortcodes, no separate interface.
Commandify is a command palette for the WordPress admin. Press Cmd or Ctrl plus K to search orders, jump to any settings page, or run admin actions without navigating through menus. It is the only command palette plugin with real WooCommerce depth, including order status changes, customer lookups and product edits, all from the keyboard.
Frequently Asked Questions
Can I send WooCommerce orders to Google Sheets without Zapier?
Yes. Krom Automation’s Google Sheets integration runs entirely inside WordPress with no third-party automation service involved.
You connect via a Google service account and all execution happens on your own server. The Pro plan starts at $69 a year.
Does the free version of Krom Automation include Google Sheets?
No. Google Sheets is a Pro integration. The free plugin includes 16 triggers and 21 actions, covering email, user management, post operations, and basic WooCommerce triggers, but the Sheets connection requires a Pro plan.
Will it export orders that were placed before I set up the workflow?
No. The workflow fires on new events only.
For historical orders, export them from WooCommerce as a CSV and paste them into the spreadsheet manually. After that one-time step, every new order appends automatically.
What happens if the Google Sheets API returns an error?
Krom Automation logs the failure in the execution history with a per-step audit trail and retries automatically with configurable backoff. You also receive a failure notification by email. If the credential JSON is invalid or the service account lacks Editor access, the error message in the log identifies which step failed and why.
Can I update an order’s status in Google Sheets and have WooCommerce reflect it?
No. The integration is one-directional: WordPress writes to Sheets.
Changes made in the spreadsheet do not propagate back to WooCommerce. Two-way sync requires a custom solution outside the scope of this integration.
How many Google Sheets workflows can I run at once?
There is no workflow limit at any Krom Automation plan. You can run separate workflows for Order Created, Order Status Changed, Order Completed, and any other WooCommerce trigger simultaneously, each writing to the same or different spreadsheets.
See full pricing details and compare all three plans to find the right fit for your store, or download the free plugin from the WordPress.org plugin directory to explore the canvas before upgrading.