Shopify to Google Sheets, plus Discord order alerts
New orders come in, and somehow the important details still get missed. Someone forgets to log the order, the team doesn’t see it until later, and you end up double-checking Shopify like it’s your second job.
This Shopify order alerts setup hits store owners first, but ops managers and agency teams feel it too. You get a live order log in Google Sheets and a clean Discord summary the moment an order is created, which means fewer “did anyone see this?” messages.
Below you’ll see the workflow, what it automates, and what kind of time (and mistakes) it helps you avoid once it’s running.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Shopify to Google Sheets, plus Discord order alerts
flowchart LR
subgraph sg0["Shopify Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/shopify.svg' width='40' height='40' /></div><br/>Shopify Trigger"]
n1@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/discord.svg' width='40' height='40' /></div><br/>Discord"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code1"]
n2 --> n1
n4 --> n3
n0 --> n2
n1 --> n4
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1 database
class n2,n4 code
classDef customIcon fill:none,stroke:none
class n0,n2,n3,n4 customIcon
The Problem: Orders Get Noticed Too Late (or Logged Wrong)
When Shopify is the only place your order truth lives, you end up context-switching all day. A new order lands, then someone screenshots it into Discord, somebody else copies the customer details into a sheet, and you still don’t fully trust the record because line items were abbreviated or totals were typed in wrong. It gets worse when you have multiple people touching fulfillment, support, and reporting. The “quick manual check” becomes constant checking, and frankly it’s exhausting.
It adds up fast. Here’s where it usually breaks down.
- Orders get shared in chat without the right fields, so someone has to open Shopify anyway.
- Google Sheets logs drift over time because different people paste data in different formats.
- Line items are the first thing to get mangled, which leads to avoidable fulfillment mistakes.
- When you’re busy, you miss an order notification and only find out when a customer follows up.
The Solution: Auto-Log Every New Shopify Order and Post It to Discord
This workflow listens for the orders/create event in Shopify and immediately turns that raw order payload into two useful outputs. First, it extracts the messy parts (especially line items, titles, and prices) and appends a single clean row into Google Sheets, using consistent columns like order number, customer details, totals, currency, tax, payment gateway, and an order link. Then it formats a readable Discord message that your team can scan in seconds, including the line items in a human-friendly way. Nothing is hardcoded, and credentials live in n8n’s UI, so you can update access without editing scripts.
The workflow starts with a Shopify Trigger watching new orders. Next, code nodes transform line items and build a structured Discord notice. Finally, it appends to your Google Sheet and posts the summary to Discord so your team sees the same truth at the same time.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get about 20 orders per day. Manually logging one order into a sheet (totals, customer fields, line items, link) can easily take 3 minutes, and posting a usable summary into Discord is another minute. That’s roughly 80 minutes a day of repetitive work. With this workflow, the “after” is basically zero manual time: the trigger fires instantly, the formatting runs in the background, and your sheet row plus Discord post show up automatically.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Shopify to trigger on new orders.
- Google Sheets for your shared order log.
- Discord webhook (create it in your Discord channel settings)
- Shopify Access Token (generate via a custom/private Shopify app)
Skill level: Beginner. You’ll connect accounts, paste a webhook URL, and map the sheet columns once.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A new order is created in Shopify. The Shopify Trigger listens to the orders/create event so you don’t need polling or manual checks.
The workflow cleans up the order details. A code step extracts line item titles and prices and turns them into readable lists, instead of a blob of product JSON that nobody wants to parse.
Your order log updates in Google Sheets. The workflow appends a new row with key fields (customer, totals, tax, currency, payment gateway, financial status, and an order link) so reporting stays consistent from day one.
A Discord summary is posted for the team. Another code step formats a message that’s easy to scan, then Discord sends it to your chosen channel so fulfillment, support, or sales all see the same update.
You can easily modify the sheet columns to match your internal reporting, or switch the trigger event to cover refunds or updated orders based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Shopify Trigger
This workflow starts when a new Shopify order is created. Set up the trigger to listen for order events from your store.
- Add the Shopify Order Trigger node and set Topic to
orders/create. - Set Authentication to
accessToken. - Credential Required: Connect your shopifyAccessTokenApi credentials.
Step 2: Connect Google Sheets
Order data is logged to a Google Sheet. Configure the append action and map the order fields.
- Add the Append Sheet Entry node and set Operation to
append. - Set Document ID to
[YOUR_ID]and Sheet Name to[YOUR_ID](cached asshopify ordersandSheet1). - Map columns using the provided expressions, for example: Order Number to
{{ $('Shopify Order Trigger').item.json.order_number }}and Customer Email to{{ $('Shopify Order Trigger').item.json.email }}. - Include line item mappings from the previous step: Line Item Titles to
{{ $json.line_item_titles }}and Line Item Prices to{{ $json.line_item_prices }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials.
Step 3: Set Up the Processing Nodes
Two code nodes prepare the data: one formats Shopify line items and the other builds the Discord message content.
- Add the Transform Line Items node and set Language to
python. - Paste the provided Python code into Python Code to create
line_item_titlesandline_item_prices. - Add the Compose Discord Notice node and paste the provided JavaScript into JS Code to build the final message string.
Step 4: Configure Discord Output
Send the formatted alert to Discord using a webhook connection.
- Add the Send Discord Alert node and set Authentication to
webhook. - Set Content to
{{ $json.content }}to use the output from Compose Discord Notice. - Credential Required: Connect your discordWebhookApi credentials.
Step 5: Test and Activate Your Workflow
Verify the full flow from Shopify to Google Sheets to Discord, then activate the workflow for live orders.
- Manually execute Shopify Order Trigger with a test order event or use Shopify’s test webhook feature.
- Confirm Append Sheet Entry adds a new row with mapped fields and that line item columns are populated.
- Verify Send Discord Alert posts the formatted message with order details and a working View Order link.
- Click Activate to enable the workflow for production order events.
Common Gotchas
- Shopify credentials can expire or your private app can lose access after permission changes. If things break, check your Shopify app scopes and the access token stored in n8n credentials first.
- Google Sheets “Append row” failures are often a column mismatch, not a workflow bug. Confirm the sheet tab name and that your columns still match the fields you’re writing.
- Discord webhooks are channel-specific and can be deleted without warning during cleanup. If alerts suddenly stop, regenerate the webhook in Discord and update it in the Discord node.
Frequently Asked Questions
About 30 minutes if your Shopify app token and sheet are ready.
No. You’ll mostly paste credentials, select your Google Sheet, and choose a Discord channel webhook.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Sheets and Discord (usually free) and any Shopify app setup you choose.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll want to adjust the trigger and the message format. Switch the Shopify Trigger event from orders/create to something like orders/updated or refunds/create, then update the “Transform Line Items” and “Compose Discord Notice” code to match the new payload. Common tweaks include adding SKU/quantity, changing the Google Sheets columns, and routing high-value orders to a different Discord channel.
Usually it’s an expired or replaced access token from your Shopify custom/private app. Update the token in n8n credentials, then confirm the app still has permission to read orders. If you’re testing in a development store, make sure you’re creating real order events (Shopify’s Bogus gateway works fine). Rate limits can also show up if you’re replaying lots of events at once.
A typical small store volume is fine, and the workflow runs once per new order.
Often, yes. n8n makes it easier to keep the formatting “clean” because you can run code steps for line items and message composition without fighting platform limits, and self-hosting avoids per-task pricing when order volume grows. Zapier or Make can be quicker for a basic two-step “new order → send message” setup, but they get messy when you need a structured sheet row plus a readable, multi-line Discord summary. If you also want branching (different Discord channels by country, payment status, or order total), n8n is simply more comfortable to work in. Talk to an automation expert if you want help choosing.
Once this is live, orders stop living in one tab that only you check. The sheet stays accurate, Discord stays in the loop, and you get to move faster without adding more process.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.