

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
scheduledUse case type
exportReal-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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Date | report_date | |
| Total Revenue | total_price | |
| Order Count | order_count | |
| Average Order Value | avg_order_value | |
1 optional fieldβΈ show
| Currency | currency |
Step-by-Step Setup
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.
- 1Click 'New workflow' from the N8n dashboard
- 2Click the default 'Start' node to delete it
- 3Drag the 'Schedule Trigger' node from the left panel onto the canvas
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.
- 1Double-click the Schedule Trigger node
- 2Set 'Trigger Interval' to 'Days'
- 3Set 'Days Between Triggers' to 1
- 4Set 'Trigger at Hour' to 23 (11 PM)
- 5Set 'Trigger at Minute' to 30
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.
- 1Click the '+' button on the Schedule Trigger node
- 2Search for 'Shopify' and select it
- 3Choose 'Order' as the resource
- 4Select 'Get All' as the operation
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.
- 1Click 'Create New' next to Credentials
- 2Enter your Shopify store URL (yourstore.myshopify.com)
- 3Paste your Admin API access token
- 4Click 'Save' and then 'Test' to verify connection
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.
- 1Scroll to 'Additional Fields' in the Shopify node
- 2Click 'Add Field' and select 'Created At Min'
- 3Set value to {{$now.minus({days: 1}).startOf('day').toISO()}}
- 4Add 'Created At Max' field
- 5Set value to {{$now.minus({days: 1}).endOf('day').toISO()}}
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.
- 1Click '+' on the Shopify node
- 2Search for 'Function' and select it
- 3Replace the default code with calculation logic
- 4Add variables for totalRevenue, orderCount, and averageOrderValue
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.
- 1Clear the existing code in the Function node
- 2Paste the sales calculation JavaScript
- 3Verify the code references correct Shopify field names
- 4Click 'Test step' to validate the calculation logic
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
}];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.
- 1Click '+' on the Function node
- 2Search for 'Google Sheets' and select it
- 3Choose 'Append' as the operation
- 4Select your existing sales tracking spreadsheet
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.
- 1Click 'Create New' next to Credentials
- 2Choose 'OAuth2' authentication method
- 3Click 'Sign in with Google'
- 4Grant permissions to access Google Sheets
- 5Test the connection
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.
- 1Select your target spreadsheet and worksheet
- 2Choose 'Define Below' for column mapping
- 3Map 'Date' to {{$now.minus({days: 1}).toISODate()}}
- 4Map 'Revenue' to the totalRevenue from Function node
- 5Map 'Orders' to orderCount and 'AOV' to averageOrderValue
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.
- 1Click 'Test workflow' in the top toolbar
- 2Watch each node execute and show green checkmarks
- 3Check your Google Sheet for the new row
- 4Verify the calculated numbers match your Shopify admin
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.
- 1Click 'Save' to store your workflow
- 2Toggle the 'Active' switch in the top right
- 3Confirm the workflow shows 'Active' status
- 4Note the next scheduled execution time
Scaling Beyond 250+ orders/day+ Records
If your volume exceeds 250+ orders/day records, apply these adjustments.
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.
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
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.
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.
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
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup