🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets + WhatsApp tracking updates, sent smart

Lisa Granqvist Partner Workflow Automation Expert

Your team shouldn’t be answering “Any update?” all day. But once shipments leave the warehouse, customers get anxious, statuses change quietly, and you end up copy-pasting tracking info from courier sites into messages that nobody enjoys sending.

This is where Sheets WhatsApp tracking helps fast. Support leads feel it when the inbox piles up. Store owners feel it when repeat buyers hesitate. And ops teams get stuck doing the same checks every morning.

This workflow pulls your shipment list from Google Sheets, checks Delhivery and DHL automatically, updates your sheet, then notifies customers by WhatsApp and email only when something actually changes. You’ll see how it works, what you need, and where teams usually trip up.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + WhatsApp tracking updates, sent smart

The Problem: Tracking Updates Turn Into Daily Firefighting

Shipment tracking looks simple until you do it at scale. One spreadsheet row becomes ten courier page refreshes, then a WhatsApp message, then an email “just in case.” Multiply that by a few dozen active orders and you’ve lost your morning to tabs, logins, and status codes that don’t match across couriers. Worse, you often notify customers when nothing meaningful changed, so they reply with more questions. It’s noisy, and honestly it trains customers to expect manual updates from you.

The friction compounds. Here’s where it usually breaks down in real life.

  • Someone checks Delhivery and DHL one-by-one, which eats about 1–2 hours on a normal day.
  • Status names differ across couriers, so “in transit” and “on the way” get recorded inconsistently in your sheet.
  • Customers get duplicate messages when you send updates on a schedule instead of on real changes.
  • Delivered orders keep getting rechecked because nobody reliably filters them out.

The Solution: Daily Tracking Checks With Change-Only Alerts

This n8n workflow runs every day at 9 AM and acts like a quiet tracking assistant. It starts by pulling your shipment roster from Google Sheets, then ignores anything already delivered or missing a tracking number. Next, it routes each shipment to the right courier (Delhivery or DHL) and makes real-time tracking requests using your API credentials. After that, it normalizes the response into a consistent set of fields (status, location, estimated delivery, and last updated) and compares the new status to what’s already stored in the sheet. Only when there’s a real status change does it update the row, send a WhatsApp notification, and email the customer. Finally, it logs an execution summary so you can see what happened that run.

The workflow begins with a scheduled trigger, then moves through “fetch, filter, route, check.” Once it detects a status shift, it updates Google Sheets and sends WhatsApp plus email in the same pass. No changes? No messages. That’s the whole point.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you have 40 active shipments in a Google Sheet and you check updates every morning. Manually, even a quick routine is maybe 2 minutes per tracking number once you include opening the courier page, finding the right row, and sending a message, so that’s about 80 minutes a day. With this workflow, you spend about 10 minutes maintaining the sheet (new orders in, delivered orders out), then the 9 AM run does the rest and only messages customers when something changed. Most days, that means you get an hour back before lunch.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store the shipment roster.
  • WhatsApp Business API to send customer notifications.
  • Delhivery + DHL API keys (get them from your Delhivery/DHL developer or account portal).

Skill level: Intermediate. You’ll connect accounts, paste API keys, and confirm your sheet columns match the workflow.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A 9 AM schedule kicks it off. The Cron trigger runs daily, so you get a predictable update cycle without someone remembering to “do tracking.”

Your shipment roster comes from Google Sheets. The workflow reads a sheet with columns like tracking_number, order_id, customer_email, customer_phone, courier, status, location, last_updated, and estimated_delivery. If you already maintain a fulfillment sheet, this becomes your single source of truth.

Courier checks happen automatically. It filters out delivered items and empty tracking numbers, then routes each row to the right API call (Delhivery or DHL). Responses are normalized so you’re not juggling two different formats.

Updates only fire when something changed. The workflow compares the new status to what’s currently in your sheet. When there’s a status shift, it updates the row, sends a WhatsApp message, sends an email, and logs a run summary.

You can easily modify the courier routing to add another provider based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

Set the workflow to run on a schedule so it can periodically check shipment statuses.

  1. Add and open Scheduled Automation Trigger to define when the workflow runs.
  2. Configure the schedule settings you want (daily, hourly, or custom cron) in Scheduled Automation Trigger.
  3. Leave Flowpast Branding as a non-functional note for documentation and attribution.

Step 2: Connect Google Sheets

Pull shipment data from your spreadsheet and keep it updated after status changes.

  1. Open Retrieve Shipment Roster and set Document to jko9876trde456yhn and Sheet to =iuhgt678io.
  2. Credential Required: Connect your googleApi credentials in Retrieve Shipment Roster.
  3. Open Modify Sheet Records and set Operation to update, Document to 0iuhgy678o, and Sheet to =09iuok.
  4. Credential Required: Connect your googleApi credentials in Modify Sheet Records.

⚠️ Common Pitfall: Make sure the sheet columns match the fields produced by Normalize Tracking Details (e.g., tracking_number, current_status, last_updated), or updates may fail.

Step 3: Filter and Route Shipments by Courier

Only process active shipments and route them to the correct carrier API.

  1. In Filter Ongoing Shipments, confirm the conditions: status notEquals delivered and tracking_number notEmpty with ={{ $json.tracking_number }}.
  2. In Courier Branch Logic, keep the condition courier equals delhivery using ={{ $json.courier }}.
  3. Verify the routing: Filter Ongoing ShipmentsCourier Branch Logic which splits to Delhivery API Request and DHL API Request.

Step 4: Configure Carrier API Calls and Normalize Results

Call the carrier tracking endpoints and normalize response data into a consistent schema.

  1. In Delhivery API Request, set URL to https://track.delhivery.com/api/v1/packages/json/ and the query parameter waybill to ={{ $json.tracking_number }}.
  2. Credential Required: Connect your httpHeaderAuth credentials in Delhivery API Request.
  3. In DHL API Request, set URL to https://api-eu.dhl.com/track/shipments and the query parameter trackingNumber to ={{ $json.tracking_number }}.
  4. Credential Required: Connect your httpHeaderAuth credentials in DHL API Request.
  5. In Normalize Tracking Details, keep the provided JavaScript to map carrier responses into standardized fields (e.g., current_status, location, last_updated).
  6. Confirm Normalize Tracking Details outputs to Validate Status Shift for change detection.

⚠️ Common Pitfall: If the carrier API response structure changes, update the parsing logic in Normalize Tracking Details or statuses may default to in_transit.

Step 5: Configure Updates and Notifications

When a status changes, update the sheet and notify customers via WhatsApp and email.

  1. In Validate Status Shift, keep the boolean filter ={{ $json.status_changed }} equals true.
  2. Note the parallel execution: Validate Status Shift outputs to both Modify Sheet Records and Dispatch WhatsApp Alert and Email Update Notice in parallel.
  3. In Dispatch WhatsApp Alert, set URL to https://api.whatsapp.com/send and confirm phone uses ={{ $json.customer_phone }} and the message text template includes {{ $json.order_id }}, {{ $json.tracking_number }}, and {{ $json.current_status }}.
  4. In Email Update Notice, set Subject to Shipment Update - Order #{{ $json.order_id }}, To Email to ={{ $json.customer_email }}, and From Email to [YOUR_EMAIL].
  5. Credential Required: Connect your smtp credentials in Email Update Notice.
  6. Keep Run Summary Log connected from Modify Sheet Records, Dispatch WhatsApp Alert, and Email Update Notice to log execution summary data.

⚠️ Common Pitfall: Dispatch WhatsApp Alert has no credentials configured—ensure your API endpoint accepts unauthenticated requests or add authentication to avoid failed notifications.

Step 6: Test and Activate Your Workflow

Run a manual test to confirm API calls, updates, and notifications before turning on automation.

  1. Click Execute Workflow and verify Retrieve Shipment Roster returns rows with tracking_number and status.
  2. Confirm either Delhivery API Request or DHL API Request runs based on Courier Branch Logic, and that Normalize Tracking Details outputs current_status and status_changed.
  3. Check that Modify Sheet Records updates the sheet, and that Dispatch WhatsApp Alert and Email Update Notice send notifications for changed statuses.
  4. Open the execution log in Run Summary Log and confirm summary counts for processed and updated shipments.
  5. When the test looks correct, switch the workflow to Active to enable scheduled automation.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or need specific permissions. If things break, check the Google connection inside n8n credentials and confirm the sheet is shared with the connected Google account.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Sheets WhatsApp tracking automation?

About 30–60 minutes if your APIs are ready.

Do I need coding skills to automate Sheets WhatsApp tracking updates?

No. You’ll mostly connect accounts and paste API keys. The only “technical” part is making sure your Google Sheet columns match the workflow.

Is n8n free to use for this Sheets WhatsApp tracking workflow?

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 courier/WhatsApp API costs, which depend on how many shipments you check and how many messages you send.

Where can I host n8n to run this Sheets WhatsApp tracking automation?

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.

Can I customize this Sheets WhatsApp tracking workflow for hourly checks instead of daily?

Yes, but make sure your courier APIs can handle the volume. Change the Cron schedule from daily to hourly (for example, “0 * * * *”), then keep the “status change” filter exactly as-is so customers don’t get spammed. Common customizations include adding a quiet window at night, changing WhatsApp wording by courier, and skipping notifications after the first delivery attempt.

Why is my Google Sheets connection failing in this workflow?

Most of the time it’s an expired OAuth connection or the sheet isn’t shared with the same Google account used in n8n. Reconnect the Google Sheets credential in n8n, then verify the sheet ID is correct and the tab name matches what the node expects. If the workflow suddenly can’t “find columns,” your header row probably changed (extra spaces and renamed columns cause this). Also check execution logs for a permissions error, because it usually tells you exactly what Google blocked.

How many shipments can this Sheets WhatsApp tracking automation handle?

On n8n Cloud Starter, you can usually handle a few thousand runs a month, which is plenty for many small shops checking daily. If you self-host, there’s no execution cap, so your limit becomes courier rate limits and your server size. Practically, teams often run this against 50–200 active shipments per day without thinking about it, as long as API quotas are configured correctly.

Is this Sheets WhatsApp tracking automation better than using Zapier or Make?

Often, yes. This workflow needs filtering, branching by courier, and “only send when status changes,” and n8n handles that logic cleanly without turning it into a pricey multi-step zap. You also get self-hosting, which matters when you don’t want per-task limits. Zapier or Make can still be fine if you’re only tracking a handful of shipments and you want the quickest possible setup. If you’re unsure, Talk to an automation expert and you’ll get a straight answer based on your volume and tools.

Once this is running, customers get timely updates without you babysitting courier pages. You’ll still care about delivery, of course. You just won’t spend your day proving it.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal