

How to Track Shopify Refunds in Google Sheets with Make
Automatically log every Shopify refund with order number, amount, reason, and date to track refund rates over time.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
E-commerce teams needing detailed refund analytics with real-time data capture and custom field mapping
Not ideal for
Stores processing fewer than 10 refunds per month or teams that only need basic refund notifications
Sync type
real-timeUse case type
syncReal-World Example
A 25-person fashion e-commerce company uses this to track seasonal return patterns and identify product quality issues. Before automation, their customer service team manually compiled refund reports from Shopify admin every week, missing real-time trends. Now they spot sizing issues within hours and can adjust product descriptions before return rates spike.
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 Make
Copy the pre-built Make blueprint and paste it straight into Make. 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 | ||
| Order Number | order_id | |
| Refund Amount | amount | |
| Refund Date | created_at | |
3 optional fields▸ show
| Refund Reason | note |
| Customer Email | order.customer.email |
| Transaction ID | transactions[0].id |
Step-by-Step Setup
Dashboard > Create scenario > Shopify
Create New Scenario
Set up a new Make scenario to handle the refund webhook. This creates the foundation for your refund tracking automation.
- 1Click 'Create a new scenario' from the Make dashboard
- 2Click the large '+' button in the center of the canvas
- 3Type 'Shopify' in the search box and select it
Scenario > Shopify > Watch Refunds
Add Shopify Watch Refunds Trigger
Configure the trigger to fire whenever a refund is created in your Shopify store. This uses a webhook for instant notifications.
- 1Select 'Watch Refunds' from the trigger options
- 2Click 'Add' next to Connection to create a new Shopify connection
- 3Enter your Shopify store URL in format: yourstore.myshopify.com
Shopify module > Settings
Configure Webhook Settings
Set up the webhook parameters to capture all necessary refund data. This determines what information Make receives from Shopify.
- 1Leave 'Limit' field empty to process all refunds
- 2Click 'Save' to create the webhook
- 3Copy the webhook URL that appears — you'll need this for Shopify
Scenario > Run once
Run Initial Test
Execute the scenario once to activate the webhook and see sample data structure. This helps you understand what fields are available.
- 1Click 'Run once' button in the bottom toolbar
- 2Go to your Shopify admin and process a test refund
- 3Return to Make and wait for the execution to complete
Scenario > Add module > Google Sheets > Add a row
Add Google Sheets Module
Connect Google Sheets as the destination for refund data. This is where you'll store and analyze refund information over time.
- 1Click the '+' button to the right of the Shopify module
- 2Search for 'Google Sheets' and select it
- 3Choose 'Add a row' from the action list
Google Sheets module > Add connection
Connect Google Account
Authenticate with your Google account to access spreadsheets. Make needs permission to read your sheets and write new rows.
- 1Click 'Add' next to Connection in the Google Sheets module
- 2Click 'Sign in with Google' and complete OAuth flow
- 3Select your Google account and grant Make permission
Google Sheets module > Spreadsheet selection
Select Target Spreadsheet
Choose the specific Google Sheet and worksheet where refund data will be logged. Create headers first if this is a new sheet.
- 1Click the Spreadsheet dropdown and select your target sheet
- 2Choose the worksheet tab (usually 'Sheet1')
- 3Set 'Table contains headers' to Yes
Google Sheets module > Values section
Map Refund Data Fields
Connect Shopify refund data to your Google Sheet columns. This determines what information gets logged for each refund.
- 1Click in the 'Order Number' column field
- 2Select 'order_id' from the Shopify data dropdown
- 3Map 'amount' to your Refund Amount column
Google Sheets module > Values section
Add Date and Reason Mapping
Complete the field mapping with refund timestamp and reason. These fields help you analyze refund patterns and causes.
- 1Map 'created_at' to your Date column
- 2Map 'note' to your Reason column
- 3Map 'order > customer > email' to Customer Email column
Scenario > Run once
Test Complete Workflow
Run the full scenario to verify data flows correctly from Shopify to Google Sheets. This confirms your mapping works as expected.
- 1Click 'Run once' again to test the complete flow
- 2Process another test refund in Shopify admin
- 3Check your Google Sheet for the new row with refund data
Scenario > Schedule toggle
Enable Automatic Scheduling
Turn on the scenario to run automatically when refunds occur. This activates real-time refund tracking without manual intervention.
- 1Toggle the 'ON' switch in the bottom left of the scenario
- 2Confirm the scheduling dialog that appears
- 3Verify the scenario status shows 'Active'
Drop this into a Make custom function.
JavaScript — Custom Function{{formatDate(created_at; "YYYY-MM-DD HH:mm")}}▸ Show code
{{formatDate(created_at; "YYYY-MM-DD HH:mm")}}... expand to see full code
{{formatDate(created_at; "YYYY-MM-DD HH:mm")}}Scaling Beyond 100+ refunds/day+ Records
If your volume exceeds 100+ refunds/day records, apply these adjustments.
Add Data Store Buffer
Use Make's Data Store to queue refunds during peak times. This prevents Google Sheets API rate limits from breaking your scenario when processing bulk refunds.
Batch Multiple Rows
Switch to Google Sheets 'Add multiple rows' action and use an aggregator to write 10-20 refunds at once. This reduces operations consumed and avoids API rate limits.
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 Make for this if you need real-time refund tracking with detailed data mapping. Make's Shopify webhook triggers fire within 30 seconds of a refund, and you can map specific fields like refund transactions and customer data that Zapier doesn't expose. The visual scenario builder makes it easy to add data transformations or route different refund types to separate sheets. Skip Make if you only need basic refund notifications — Shopify's built-in email alerts work fine for that.
This workflow uses 2 operations per refund (Shopify trigger + Google Sheets row). At 50 refunds/month, that's 100 operations total. That fits Make's free tier of 1,000 operations. At 200 refunds/month, you'll need the Core plan at $9/month for 10,000 operations. Zapier would cost $20/month for the same volume since their Shopify triggers start at the Starter plan. Make is $11/month cheaper and gives you more operation headroom.
Zapier has a cleaner Shopify integration with pre-built refund templates that require less setup time. N8N offers better data transformation options if you need to calculate refund rates or format currency values before logging. But Make strikes the right balance — you get Shopify's full webhook data without Zapier's premium pricing, plus enough transformation tools to clean up timestamps and amounts without N8N's coding complexity.
Shopify's refund webhook includes transaction arrays that can confuse field mapping — if you see 'object Object' in your sheet, you're mapping the wrong level of the data structure. The webhook fires for partial refunds too, so high-volume stores might burn through operations faster than expected. Google Sheets has a 100-cell-per-second write limit, so if you process 50+ refunds simultaneously (like after a product recall), some rows might get queued and appear delayed.
Ideas for what to build next
- →Add Refund Rate Calculations — Create Google Sheets formulas to calculate monthly refund rates and identify trends by product or customer segment.
- →Set Up Slack Alerts for High Refunds — Add a Make filter and Slack module to notify your team when individual refunds exceed a threshold amount like $500.
- →
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