Intermediate~20 min setupProductivity & E-commerceVerified April 2026
Google Sheets logo
Shopify logo

How to Create Daily Sales Reports from Shopify in Google Sheets with N8n

Automatically calculate daily revenue, order count, and average order value from Shopify and append as new rows in Google Sheets.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Teams comfortable with light JavaScript who want precise control over sales calculations and date filtering.

Not ideal for

Pure no-code teams or stores processing 500+ orders daily without custom pagination logic.

Sync type

scheduled

Use case type

export

Real-World Example

πŸ’‘

A 25-person D2C clothing brand uses this to track daily performance across their team. Before automation, the marketing manager manually exported Shopify orders every morning and calculated metrics in Excel, taking 20 minutes daily. Now the Google Sheet updates automatically at 11:30 PM, and the morning standup starts with accurate yesterday numbers already waiting.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently β€” Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured β€” you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Shopify store with Admin API access token created
Google Sheets document set up with column headers (Date, Revenue, Orders, AOV)
N8n instance running (cloud or self-hosted)
Google account with access to target spreadsheet

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Datereport_date
Total Revenuetotal_price
Order Countorder_count
Average Order Valueavg_order_value
1 optional fieldβ–Έ show
Currencycurrency

Step-by-Step Setup

1

Dashboard > New workflow

Create new N8n workflow

Start a fresh workflow for your daily sales summary automation. You'll build a scheduled workflow that runs once per day at a specific time.

  1. 1Click 'New workflow' from the N8n dashboard
  2. 2Click the default 'Start' node to delete it
  3. 3Drag the 'Schedule Trigger' node from the left panel onto the canvas
βœ“ What you should see: You should see an empty workflow with just a Schedule Trigger node in the center.
2

Schedule Trigger > Parameters

Configure daily schedule trigger

Set the trigger to fire once per day after business hours when all orders are finalized. This ensures you capture the complete day's sales data.

  1. 1Double-click the Schedule Trigger node
  2. 2Set 'Trigger Interval' to 'Days'
  3. 3Set 'Days Between Triggers' to 1
  4. 4Set 'Trigger at Hour' to 23 (11 PM)
  5. 5Set 'Trigger at Minute' to 30
βœ“ What you should see: The node should show 'Every 1 days at 23:30' in the trigger configuration.
⚠
Common mistake β€” Don't set this to run at midnight β€” Shopify orders can trickle in late and you'll miss same-day revenue.
n8n
+
click +
search apps
Google Sheets
GO
Google Sheets
Configure daily schedule tri…
Google Sheets
GO
module added
3

Nodes > Shopify > Order > Get All

Add Shopify node for orders

Connect to Shopify to pull yesterday's orders. You'll filter by date to get only the previous day's completed orders.

  1. 1Click the '+' button on the Schedule Trigger node
  2. 2Search for 'Shopify' and select it
  3. 3Choose 'Order' as the resource
  4. 4Select 'Get All' as the operation
βœ“ What you should see: A Shopify node appears connected to your trigger, showing Order resource and Get All operation.
4

Shopify node > Credentials > Create New

Configure Shopify credentials

Connect N8n to your Shopify store using a private app API key. This gives the workflow permission to read order data.

  1. 1Click 'Create New' next to Credentials
  2. 2Enter your Shopify store URL (yourstore.myshopify.com)
  3. 3Paste your Admin API access token
  4. 4Click 'Save' and then 'Test' to verify connection
βœ“ What you should see: Green 'Connected' status appears, confirming N8n can access your Shopify data.
⚠
Common mistake β€” Make sure your private app has 'read_orders' permission enabled in Shopify admin, or this will fail silently.
5

Shopify node > Additional Fields

Filter orders by yesterday's date

Add date filters to only grab orders from the previous day. This prevents pulling your entire order history every time the workflow runs.

  1. 1Scroll to 'Additional Fields' in the Shopify node
  2. 2Click 'Add Field' and select 'Created At Min'
  3. 3Set value to {{$now.minus({days: 1}).startOf('day').toISO()}}
  4. 4Add 'Created At Max' field
  5. 5Set value to {{$now.minus({days: 1}).endOf('day').toISO()}}
βœ“ What you should see: Both date filter fields show dynamic expressions that calculate yesterday's start and end times.
⚠
Common mistake β€” Don't use 'Updated At' filters β€” orders can be updated days later for refunds, which will skew your daily totals.
Google Sheets
GO
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Shopify
SH
notified
6

Nodes > Function

Add Function node for calculations

Create a JavaScript function to calculate your three key metrics from the order data. This node will process all orders and output summary statistics.

  1. 1Click '+' on the Shopify node
  2. 2Search for 'Function' and select it
  3. 3Replace the default code with calculation logic
  4. 4Add variables for totalRevenue, orderCount, and averageOrderValue
βœ“ What you should see: A Function node appears with a code editor showing your calculation script.
7

Function node > Code Editor

Write calculation JavaScript code

Add the specific code to sum revenue, count orders, and calculate averages. This handles the math for your daily summary metrics.

  1. 1Clear the existing code in the Function node
  2. 2Paste the sales calculation JavaScript
  3. 3Verify the code references correct Shopify field names
  4. 4Click 'Test step' to validate the calculation logic
βœ“ What you should see: The Function node output shows calculated values for revenue, count, and average order value.
⚠
Common mistake β€” Shopify returns prices as strings β€” make sure to use parseFloat() or your totals will be wrong.

Drop this into an n8n Code node.

JavaScript β€” Code Nodeconst orders = $input.all()[0].json;
β–Έ Show code
const orders = $input.all()[0].json;
const validOrders = orders.filter(o => o.financial_status === 'paid' && !o.test);
const totalRevenue = validOrders.reduce((sum, o) => sum + parseFloat(o.total_price || 0), 0);

... expand to see full code

const orders = $input.all()[0].json;
const validOrders = orders.filter(o => o.financial_status === 'paid' && !o.test);
const totalRevenue = validOrders.reduce((sum, o) => sum + parseFloat(o.total_price || 0), 0);
return [{
  reportDate: $now.minus({days: 1}).toISODate(),
  totalRevenue: Math.round(totalRevenue * 100) / 100,
  orderCount: validOrders.length,
  averageOrderValue: validOrders.length > 0 ? Math.round((totalRevenue / validOrders.length) * 100) / 100 : 0
}];
8

Nodes > Google Sheets > Append

Add Google Sheets node

Connect to your tracking spreadsheet to append the daily summary. You'll write a new row with yesterday's date and calculated metrics.

  1. 1Click '+' on the Function node
  2. 2Search for 'Google Sheets' and select it
  3. 3Choose 'Append' as the operation
  4. 4Select your existing sales tracking spreadsheet
βœ“ What you should see: Google Sheets node appears, ready to append data to your chosen spreadsheet.
9

Google Sheets node > Credentials > OAuth2

Configure Google Sheets credentials

Authenticate with Google to allow N8n to write to your spreadsheet. Use OAuth for the most reliable connection.

  1. 1Click 'Create New' next to Credentials
  2. 2Choose 'OAuth2' authentication method
  3. 3Click 'Sign in with Google'
  4. 4Grant permissions to access Google Sheets
  5. 5Test the connection
βœ“ What you should see: Green 'Connected' badge confirms N8n can write to your Google Sheets.
⚠
Common mistake β€” Don't use Service Account auth unless you share the sheet with the service account email β€” OAuth is simpler here.
10

Google Sheets node > Column Mapping

Map calculation results to sheet columns

Tell N8n which calculated values go in which spreadsheet columns. Map your Function node outputs to the correct column headers.

  1. 1Select your target spreadsheet and worksheet
  2. 2Choose 'Define Below' for column mapping
  3. 3Map 'Date' to {{$now.minus({days: 1}).toISODate()}}
  4. 4Map 'Revenue' to the totalRevenue from Function node
  5. 5Map 'Orders' to orderCount and 'AOV' to averageOrderValue
βœ“ What you should see: Column mappings show dynamic expressions pulling yesterday's date and calculated metrics.
Google Sheets fields
Column A
Column B
Email
Status
Notes
available as variables:
1.props.Column A
1.props.Column B
1.props.Email
1.props.Status
1.props.Notes
11

Workflow > Test workflow

Test the complete workflow

Run the entire automation to verify it pulls orders, calculates correctly, and writes to your sheet. This catches any connection or logic issues.

  1. 1Click 'Test workflow' in the top toolbar
  2. 2Watch each node execute and show green checkmarks
  3. 3Check your Google Sheet for the new row
  4. 4Verify the calculated numbers match your Shopify admin
βœ“ What you should see: All nodes show green with execution data, and a new row appears in your spreadsheet with correct metrics.
⚠
Common mistake β€” If no orders exist for yesterday's date range, the workflow will still run but append a row with zero values.
n8n
β–Ά Run once
executed
βœ“
Google Sheets
βœ“
Shopify
Shopify
πŸ”” notification
received
12

Workflow > Active toggle

Activate the workflow

Turn on the automation so it runs automatically every day at your scheduled time. Your daily sales summary will now generate without manual work.

  1. 1Click 'Save' to store your workflow
  2. 2Toggle the 'Active' switch in the top right
  3. 3Confirm the workflow shows 'Active' status
  4. 4Note the next scheduled execution time
βœ“ What you should see: The workflow shows 'Active' with a green indicator and displays the next run time.
⚠
Common mistake β€” Make sure your N8n instance stays running β€” if you're self-hosting, this won't execute when your server is down.

Scaling Beyond 250+ orders/day+ Records

If your volume exceeds 250+ orders/day records, apply these adjustments.

1

Add pagination logic

Shopify's API returns 250 orders maximum per call. Use N8n's SplitInBatches node with a loop to fetch all pages of results.

2

Implement result validation

Compare your calculated order count with Shopify's X-Shopify-Shop-Api-Call-Limit header to ensure you received complete data. Add an alert if counts don't match expectations.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use N8n for this if you want full control over the calculation logic and don't mind writing some JavaScript. The Function node lets you handle complex math, filter out test orders, and format data exactly how you need it. N8n's expression system handles date math cleanly for yesterday's range. Skip N8n if your team can't debug basic JavaScript β€” Zapier's built-in formatters might be simpler for pure no-code teams.

Cost

This workflow uses about 4 operations per day: the schedule trigger, one Shopify API call, the function execution, and one Google Sheets write. That's 120 operations monthly, which fits N8n's free tier of 5,000 executions. Even at scale with additional error handling nodes, you're looking at maybe 200 operations monthly. N8n cloud starts at $20/month but you won't need it unless you're running dozens of workflows. Zapier would cost $20/month minimum for this same automation since it requires multi-step workflows.

Tradeoffs

Make handles Shopify's API pagination better if you process 250+ orders daily β€” N8n requires custom loop logic for large result sets. Zapier's Google Sheets integration automatically creates missing columns, while N8n expects your sheet structure to exist already. But N8n wins on calculation flexibility. Make's math functions are basic, and Zapier can't handle complex order filtering without multiple steps that eat your task limit.

Shopify's created_at timestamps don't always match when customers actually completed checkout β€” payment processing delays can push orders into the next day's data. The Admin API sometimes returns draft orders mixed with completed ones, so add a financial_status filter for 'paid' orders only. Google Sheets API occasionally throws 429 rate limit errors if other integrations are hitting the same sheet β€” N8n doesn't retry these automatically like Zapier does.

Ideas for what to build next

  • β†’
    Add weekly summary calculations β€” Create a second workflow that runs every Sunday to sum the week's daily rows and calculate week-over-week growth percentages.
  • β†’
    Set up performance alerts β€” Build a companion workflow that checks if daily revenue drops below your target threshold and sends Slack notifications to the team.
  • β†’
    Expand metrics tracking β€” Enhance the Function node to calculate additional KPIs like new vs returning customer ratios, top-selling products, or geographic sales distribution.

Related guides

Was this guide helpful?
← Google Sheets + Shopify overviewn8n profile β†’