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

How to Track Abandoned Carts from Shopify to Google Sheets with N8n

Automatically log abandoned Shopify checkouts to Google Sheets with customer details, cart value, and product lists for follow-up campaigns.

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 custom abandoned cart tracking with data processing beyond basic logging.

Not ideal for

Simple stores wanting plug-and-play abandonment tracking without technical setup.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 25-person fashion e-commerce team uses this to track abandonment patterns by product category and customer location. Before automation, they manually exported Shopify reports weekly and missed 60% of recovery opportunities. Now they get real-time abandonment data with custom fields and built targeted email campaigns that recovered 18% of abandoned carts worth $47K monthly.

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 (read_checkouts permission)
Google account with access to Google Sheets
N8n instance running (cloud or self-hosted)
Existing Google Sheet with column headers for tracking data

Optional

At least one abandoned checkout in your store for testing

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Timestampcreated_at
Customer Emailemail
Cart Totaltotal_price
Product Titlesline_items[].title
3 optional fields▸ show
Customer Phonebilling_address.phone
Recovery URLabandoned_checkout_url
Currencycurrency

Step-by-Step Setup

1

Workflows > New

Create new N8n workflow

Start a fresh workflow in N8n and name it something descriptive. This gives you a clean workspace to build your abandoned cart tracker.

  1. 1Click 'New Workflow' from your N8n dashboard
  2. 2Rename the workflow to 'Shopify Abandoned Cart Tracker'
  3. 3Click the + button to add your first node
What you should see: You should see a blank canvas with one + button in the center.
2

Add Node > Shopify > Trigger > Webhook

Add Shopify Webhook Trigger

Configure N8n to listen for abandoned checkout events from Shopify. This trigger fires when a customer leaves items in their cart without completing payment.

  1. 1Search for 'Shopify' in the node selector
  2. 2Select 'Shopify Trigger' from the results
  3. 3Choose 'Webhook' as the trigger type
  4. 4Select 'Checkouts Abandoned' from the event dropdown
What you should see: The Shopify trigger node appears with webhook configuration fields visible.
Common mistake — Don't select 'Checkout Create' — that fires for every checkout, not just abandoned ones.
n8n
+
click +
search apps
Google Sheets
GO
Google Sheets
Add Shopify Webhook Trigger
Google Sheets
GO
module added
3

Shopify Node > Credentials > Create New

Connect your Shopify store

Add your Shopify store credentials to N8n. This creates the connection N8n needs to receive webhook events from your store.

  1. 1Click 'Create New Credential' in the credentials dropdown
  2. 2Enter your Shopify store subdomain (without .myshopify.com)
  3. 3Paste your Shopify Admin API access token
  4. 4Click 'Test' to verify the connection
What you should see: Green checkmark appears next to credentials with 'Connection successful' message.
Common mistake — Your API token needs 'read_checkouts' permission — basic tokens won't work here.
4

Shopify Trigger Node > Execute Node

Execute trigger to get sample data

N8n needs sample data to build the workflow. Execute the trigger to pull in a recent abandoned checkout from your store.

  1. 1Click 'Execute Node' on the Shopify trigger
  2. 2If no recent abandoned carts exist, create one by adding items to cart and leaving
  3. 3Return to N8n and click 'Execute Node' again
What you should see: Sample abandoned checkout data appears in the output panel with customer email, cart total, and line items.
Common mistake — Sample data expires in Shopify after 3 days — you might need fresh test abandonment.
5

Add Node > Google Sheets > Append

Add Google Sheets node

Connect Google Sheets to receive the abandoned cart data. Configure it to append new rows to your tracking spreadsheet.

  1. 1Click the + button after the Shopify trigger
  2. 2Search for and select 'Google Sheets'
  3. 3Choose 'Append' as the operation
  4. 4Select your existing spreadsheet or create new one
What you should see: Google Sheets node appears connected to Shopify trigger with spreadsheet selection fields.
6

Google Sheets Node > Credentials > OAuth2

Set up Google Sheets authentication

Connect N8n to your Google account with proper permissions. This allows N8n to write data to your chosen spreadsheet.

  1. 1Click 'Create New Credential' for Google Sheets
  2. 2Select 'OAuth2' authentication method
  3. 3Click 'Connect my account' and complete Google OAuth flow
  4. 4Grant N8n permission to edit your Google Sheets
What you should see: Green connection badge shows your Google account email address.
Common mistake — Use OAuth2, not Service Account — it's simpler and works with personal Google accounts.
7

Google Sheets Node > Document > Spreadsheet

Configure spreadsheet columns

Map abandoned cart data to specific columns in your Google Sheet. This structures the data for easy analysis and follow-up.

  1. 1Select your target spreadsheet from the dropdown
  2. 2Choose the worksheet tab (usually 'Sheet1')
  3. 3Set 'Column to match on' to 'A' (for timestamp)
  4. 4Configure values for Date, Email, Cart Value, and Products columns
What you should see: Column mapping interface shows 4-6 rows for different data fields.
Common mistake — Create column headers in your sheet first — N8n won't auto-generate them.
8

Google Sheets Node > Values to Send

Map abandoned cart fields

Connect specific data from Shopify's abandoned checkout to your spreadsheet columns. This extracts customer email, cart total, and product details.

  1. 1Set column A to {{new Date().toISOString()}} for timestamp
  2. 2Map column B to {{$node.Shopify.json.email}} for customer email
  3. 3Set column C to {{$node.Shopify.json.total_price}} for cart value
  4. 4Map column D to {{$node.Shopify.json.line_items.map(item => item.title).join(', ')}} for products
What you should see: Each column shows the mapped expression with preview data from your sample abandonment.
Common mistake — Don't use raw JSON output — the line_items array needs the .map() function to display properly.
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
9

Google Sheets Node > Values to Send > Add Column

Add customer phone extraction

Pull the customer's phone number if available for SMS follow-up campaigns. Some abandoned checkouts include phone data.

  1. 1Add a new column mapping for column E
  2. 2Set the value to {{$node.Shopify.json.billing_address?.phone || 'N/A'}}
  3. 3This handles cases where phone number is missing
What you should see: Column E shows the phone number from sample data or 'N/A' if empty.
Common mistake — Use the ?. operator — billing_address might be null for guest checkouts.
10

Workflow > Execute Workflow

Test the complete workflow

Run the entire automation with your sample data to verify everything works. This catches mapping errors before going live.

  1. 1Click 'Execute Workflow' at the bottom of the screen
  2. 2Check that both nodes show green success indicators
  3. 3Open your Google Sheet to verify the row was added correctly
What you should see: New row appears in your Google Sheet with timestamp, email, cart value, products, and phone number.
n8n
▶ Run once
executed
Google Sheets
Shopify
Shopify
🔔 notification
received
11

Workflow > Toggle Active

Activate the webhook

Turn on the workflow so it runs automatically when customers abandon carts. N8n will register the webhook with Shopify.

  1. 1Click the toggle switch in the top right to 'Active'
  2. 2Confirm activation in the popup dialog
  3. 3Copy the webhook URL from the Shopify trigger node
What you should see: Workflow shows 'Active' status and webhook URL is displayed in the trigger node.
Common mistake — Webhook registration can take 30-60 seconds — don't create test abandonment immediately.
12

Shopify Admin > Settings > Notifications > Webhooks

Verify webhook registration

Confirm that Shopify is properly sending abandoned cart events to N8n. Check your Shopify admin to see the webhook listed.

  1. 1Go to your Shopify Admin > Settings > Notifications
  2. 2Scroll to 'Webhooks' section
  3. 3Look for 'Checkout abandoned' webhook with N8n URL
  4. 4Create a test abandonment to verify data flows through
What you should see: Webhook appears in Shopify admin and test abandonment creates new row in Google Sheets within 2-3 minutes.
Common mistake — If webhook doesn't appear, deactivate and reactivate the N8n workflow.

Drop this into an n8n Code node.

Copy this template{{$node.Shopify.json.line_items.filter(item => item.price > 50).map(item => `${item.title} ($${item.price})`).join(' | ') || 'No high-value items'}}
▸ Show code
{{$node.Shopify.json.line_items.filter(item => item.price > 50).map(item => `${item.title} ($${item.price})`).join(' | ') || 'No high-value items'}}

... expand to see full code

{{$node.Shopify.json.line_items.filter(item => item.price > 50).map(item => `${item.title} ($${item.price})`).join(' | ') || 'No high-value items'}}

Scaling Beyond 100+ abandonment events/day+ Records

If your volume exceeds 100+ abandonment events/day records, apply these adjustments.

1

Add execution queuing

Use N8n's built-in queue mode to prevent Google Sheets API rate limiting. Configure max concurrent executions to 5 in workflow settings.

2

Implement batch writing

Collect multiple abandonment events and write to Google Sheets in batches every 5 minutes instead of real-time individual rows.

3

Switch to database storage

Replace Google Sheets with PostgreSQL or MongoDB nodes for better performance. Google Sheets API starts throttling after 300 writes per minute.

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 need custom data processing or run high volume (500+ abandonment/month). The code nodes let you clean messy Shopify data and calculate custom metrics like average abandonment value by product category. Skip N8n if you just want basic logging — Zapier's Shopify integration is simpler and doesn't require webhook URL management.

Cost

This workflow uses 1 execution per abandoned checkout. At 300 abandonment/month, that's 300 executions monthly. N8n's Starter plan ($20/month) includes 2,500 executions, so you're well covered. Zapier would cost $30/month for the same volume (Professional plan needed for webhooks), and Make charges $21/month. N8n wins on price but requires more setup time.

Tradeoffs

Zapier handles Shopify webhook registration automatically — no manual URL copying needed. Make's visual interface makes field mapping cleaner than N8n's expression syntax. But N8n's code nodes are unmatched for processing complex cart data like calculating abandonment rates by customer segment or extracting variant-specific product info that Shopify buries deep in JSON.

You'll hit Shopify's webhook delivery quirks after setup. Abandoned checkout events sometimes fire twice if customers return to complete checkout then abandon again — add deduplication logic using checkout token. Google Sheets API throws 429 errors at high volume, so add a 2-second delay node between executions if you process 100+ abandonment per hour. Shopify's abandoned_checkout_url expires after 30 days, making recovery emails useless for old data.

Ideas for what to build next

  • Add automated email recoveryConnect Mailchimp or SendGrid to automatically email customers 1 hour after abandonment with their recovery link.
  • Create abandonment analytics dashboardUse Google Sheets pivot tables or connect to Data Studio for visual reporting on abandonment patterns by product and time.
  • Set up Slack notifications for high-value cartsAdd a Slack node with condition to notify your team immediately when carts over $500 are abandoned.

Related guides

Was this guide helpful?
Google Sheets + Shopify overviewn8n profile →