Automatically Log Every Shopify Order to Google Sheets in Real Time
Every time a new order is placed in your Shopify store, this workflow instantly captures the key details and appends a new row to your Google Sheet. No more manual exports or missed orders — your sales log stays up to date automatically.
- 1
Connect your Shopify store as the trigger
Add a
Shopify Triggernode to your canvas. In the node settings, selectorders/createas the Topic so the workflow fires on every new order. Create a Shopify credential using your store URL and API credentials (Admin API access token). Save and activate the node. - 2
Extract and rename the order fields
Add a
Setnode after the trigger. Create the following fields:orderNumbermapped to{{ $json.order_number }},customerNamemapped to{{ $json.billing_address.name }},customerEmailmapped to{{ $json.email }},totalPricemapped to{{ $json.total_price }}, andorderDatemapped to{{ $json.created_at }}. This keeps the data clean before writing to Sheets. - 3
Append the order as a new row in Google Sheets
Add a
Google Sheetsnode set to theAppend Rowoperation. Connect your Google account credential. Enter yourSpreadsheet ID(found in the Sheet URL) and set theSheet Nameto match your tab name (e.g. Orders). Map each column header to the fields you created in the previous step: Order Number, Customer Name, Email, Total Price, and Order Date. Make sure your Sheet has these headers in row 1 before running.
Frequently asked questions
Do I need any coding experience to set this up?
No coding is required. You only need to copy and paste your Shopify API token and your Google Sheet ID into the node credentials fields. The visual n8n editor handles everything else.
What happens if an order comes in while n8n is offline?
If you are using n8n cloud, it runs 24/7 and no orders will be missed. If you self-host n8n, make sure your server is always running. Shopify webhooks do retry failed deliveries a few times, but a prolonged outage could result in missed rows.
Can I add more order fields like shipping address or product names?
Yes. In the `Set` node, add extra fields and reference them using expressions like `{{ $json.shipping_address.address1 }}` for shipping or `{{ $json.line_items[0].name }}` for the first product. Add matching column headers to your Google Sheet and map the new fields in the Google Sheets node.