🔓 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 + Gmail: invoices sent, reminders tracked

Lisa Granqvist Partner Workflow Automation Expert

Invoicing is rarely the hard part. It’s the chasing, the checking, and the “did they pay yet?” spreadsheet archaeology that quietly steals your week (and your patience).

This invoice reminder automation hits small business owners first, but agency operators and bookkeepers feel it too. You’ll send invoices on schedule, follow up automatically when they’re late, and keep a clean record in Google Sheets without babysitting it.

Below, you’ll see exactly what the workflow does, what you get out of it, and how to make it fit your billing cadence.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Gmail: invoices sent, reminders tracked

The Problem: Invoices go out, but follow-ups slip

Most businesses don’t struggle to create invoices. They struggle to run the process consistently. A few invoices go out late because you were busy. Then a client pays late because nobody followed up. Then you’re digging through email threads, trying to remember when the last reminder went out, and updating a spreadsheet after the fact. It’s not just time. It’s mental load, awkward conversations, and cash flow that becomes unpredictable when your “system” depends on you remembering to chase.

The friction compounds. Here’s where it breaks down.

  • Invoices get sent, but nobody records the send date and due date in one reliable place.
  • Overdue follow-ups happen “when you have a minute,” which means they happen late or not at all.
  • Clients receive inconsistent reminders because templates change depending on your mood that day.
  • You can’t easily answer basic questions like “Who’s 7 days late?” without manual filtering and double-checking.

The Solution: Automated monthly invoicing + daily overdue reminders

This n8n workflow turns Google Sheets into your billing control panel and Gmail into your delivery and reminder engine. On a monthly schedule, it pulls your client list from a sheet, filters to active customers, generates the invoice details in a consistent format, and records the invoice row back into Google Sheets. Then it emails the invoice out automatically. Separately, a daily check scans the sheet for unpaid invoices, calculates how overdue each one is, and sends the right reminder email (gentle, follow-up, urgent, or final notice). Every reminder is logged back to the sheet, so you can see what happened without hunting through your inbox.

The workflow starts with two timers (one monthly, one daily). In the middle, Google Sheets acts as the source of truth while n8n decides who gets invoiced and which reminder to send. Finally, Gmail delivers the message and the sheet gets updated so your records stay honest.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you bill 25 clients monthly. Manually, you might spend about 6 minutes per client to copy amounts, update a sheet, send the email, and note the due date, which is roughly 2.5 hours each month. Then overdue follow-ups: even 8 late payers at 10 minutes each is another hour-plus (and it’s easy to forget who you already nudged). With this workflow, you spend maybe 15 minutes reviewing the sheet and templates, then the monthly send and daily checks run on their own while tracking everything in Google Sheets.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store clients, invoices, and reminder logs.
  • Gmail (or SMTP email) to send invoices and reminders.
  • Google Sheets API access (enable it in Google Cloud Console).

Skill level: Intermediate. You’ll connect accounts, map sheet columns, and tweak reminder thresholds and email templates.

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

How It Works

Monthly invoice trigger. On your chosen day each month, n8n starts the billing run (via a Cron schedule) and pulls your client list from Google Sheets.

Client filtering and invoice prep. The workflow filters to active customers, then builds an invoice payload (invoice ID, amount, due date, and status) in a consistent format so your sheet stays tidy.

Send + log. It records the invoice row in Google Sheets, emails the invoice through Gmail, and logs the send activity for auditing and “what happened here?” moments later.

Daily overdue scan and reminders. Every day, a second Cron trigger checks the sheet for unpaid invoices, calculates how late they are, routes them into the right reminder type, then sends the correct email and updates the reminder tracker.

You can easily modify reminder thresholds to match your payment terms based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Cron Triggers

Set up the two scheduled triggers that launch monthly invoicing and daily overdue scanning.

  1. Open Monthly Billing Trigger and configure your monthly schedule in the Cron settings (the node is currently empty).
  2. Open Daily Overdue Scan and configure a daily schedule in the Cron settings (the node is currently empty).
  3. Confirm the execution flow: Monthly Billing TriggerRetrieve Billing Clients and Daily Overdue ScanFetch Past-Due Invoices.

⚠️ Common Pitfall: Both Cron nodes have no schedule defined in the JSON. If you don’t configure the timing, the workflow will never run automatically.

Step 2: Connect Google Sheets

Attach Google Sheets credentials and configure the client and invoice data sources used across the workflow.

  1. Open Retrieve Billing Clients and set Sheet Name to Clients and Document ID to [YOUR_ID].
  2. Credential Required: Connect your googleApi credentials in Retrieve Billing Clients (uses Authentication = serviceAccount).
  3. Open Fetch Past-Due Invoices and set Sheet Name to Invoices and Document ID to [YOUR_ID].
  4. Credential Required: Connect your googleApi credentials in Fetch Past-Due Invoices (uses Authentication = serviceAccount).
  5. Open Record Invoice in Sheets and set Operation to appendOrUpdate, Sheet Name to Invoices, and Document ID to [YOUR_ID].
  6. Credential Required: Connect your googleApi credentials in Record Invoice in Sheets.
  7. Open Update Reminder Tracker and set Operation to update, Sheet Name to Invoices, and Document ID to [YOUR_ID].
  8. Credential Required: Connect your googleApi credentials in Update Reminder Tracker.
  9. Open Log Invoice Activity and set Operation to appendOrUpdate, Sheet Name to Activity_Log, and Document ID to [YOUR_ID].
  10. Credential Required: Connect your googleApi credentials in Log Invoice Activity.

Use the same spreadsheet [YOUR_ID] across all Google Sheets nodes to keep invoice status and reminder tracking aligned.

Step 3: Set Up Processing Nodes

Configure the JavaScript processing nodes that filter clients, build invoices, and classify reminders.

  1. Open Select Active Customers and confirm the Code field contains the provided script to filter status === 'active' and billing_date <= today.
  2. Open Build Invoice Payload and confirm the invoice generation logic in Code (invoice number format and 30-day due date).
  3. Open Filter Past-Due Records and confirm the script filters invoices where status === 'pending' and due_date <= yesterday.
  4. Open Compute Reminder Category and confirm it sets reminder_type and email_subject based on days overdue.

⚠️ Common Pitfall: In Compute Reminder Category, the line let reminderType = 'gentle';- contains an extra hyphen that will cause a syntax error. Remove the trailing - before running.

Step 4: Configure Email Outputs and Routing

Set up the email notifications for invoices and reminders, and route messages by reminder type.

  1. Open Dispatch Invoice Email and set Text to ={{ $json.result }}, Subject to New Invoice - {{ $json.invoice_number }}, To Email to ={{ $json.email }}, and From Email to [YOUR_EMAIL].
  2. Credential Required: Connect your smtp credentials in Dispatch Invoice Email.
  3. Open Route by Reminder Type and confirm each rule uses ={{$json.reminder_type}} with values gentle, follow-up, urgent, and final.
  4. Configure each reminder email node with the same subject pattern: Send Soft Reminder, Send Follow-up Notice, Send Urgent Notice, and Send Final Alert should use ={{ $json.email_subject }} - Invoice {{ $json.invoice_id }} and ={{ $json.email }}.
  5. Credential Required: Connect your smtp credentials to all reminder email nodes (4 nodes handle the reminder sequence).

Execution flow reminder: Compute Reminder CategoryRoute by Reminder Type → one of the reminder email nodes → Update Reminder Tracker.

Step 5: Configure Logging and Tracking

Ensure invoice activity and reminder updates are stored correctly.

  1. Confirm Record Invoice in Sheets is connected to Dispatch Invoice Email to ensure new invoices are logged before emails are sent.
  2. Confirm Dispatch Invoice Email outputs to Log Invoice Activity for audit logging.
  3. Confirm each reminder email node outputs to Update Reminder Tracker to track reminder counts and last sent dates.

Step 6: Test and Activate Your Workflow

Run a manual test for both the invoicing and reminder paths, then activate the workflow for production use.

  1. Click Execute Workflow and test Monthly Billing Trigger by running Retrieve Billing ClientsSelect Active CustomersBuild Invoice PayloadRecord Invoice in SheetsDispatch Invoice EmailLog Invoice Activity.
  2. Test the overdue path by running Daily Overdue ScanFetch Past-Due InvoicesFilter Past-Due RecordsCompute Reminder CategoryRoute by Reminder Type and verify the correct reminder email node fires.
  3. Verify successful execution by checking the Invoices and Activity_Log sheets for new entries and updates.
  4. Once confirmed, toggle the workflow to Active to enable scheduled runs.
🔒

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’s Credentials section first.
  • 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 email copy is usually too generic. Bake your brand voice and payment instructions into the invoice and reminder templates early, or you’ll be editing messages forever.

Frequently Asked Questions

How long does it take to set up this invoice reminder automation?

About an hour if your Google Sheet and email account are ready.

Do I need coding skills to automate invoice reminders?

No. You’ll mostly connect accounts and map your sheet columns. The logic is already built into the workflow.

Is n8n free to use for this invoice reminder automation 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 want to account for email sending limits on your provider (Gmail, SMTP, or a workspace account).

Where can I host n8n to run this 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 invoice reminder automation workflow for different reminder timings?

Yes, and it’s one of the best reasons to use n8n here. You can change the overdue thresholds in the “Compute Reminder Category” logic and adjust routing in “Route by Reminder Type” to add or remove stages. Common tweaks include sending a reminder 1 day after the due date, adding a “7 days late” escalation, and changing subject lines per reminder type to match your tone.

Why is my Google Sheets connection failing in this workflow?

Most of the time it’s credentials or permissions. Reconnect your Google Sheets credential in n8n, then confirm the spreadsheet is shared with the same Google account the credential uses. Also check that your sheet name and tab names match what the nodes expect, because a renamed tab can look like a “connection” issue. If you’re running a lot of reminders at once, you may also hit Google API quotas, so spacing executions can help.

How many invoices can this invoice reminder automation handle?

Plenty for most small teams. On n8n Cloud Starter you typically run enough executions for monthly invoicing plus daily checks, and higher tiers cover heavier volume. If you self-host, there’s no execution cap (it depends on your server). Practically, Google Sheets will become the bottleneck first if you push thousands of rows without optimizing how you read and write data.

Is this invoice reminder automation better than using Zapier or Make?

Often, yes, because this workflow has branching logic (different reminder types) and ongoing daily checks, which can get expensive or awkward in simpler tools. n8n also gives you the option to self-host, which is nice when you don’t want to count every task. Zapier or Make can still be a good fit if your process is “send one email when a row changes” and that’s it. This one is closer to a mini billing system. If you want a second opinion, Talk to an automation expert.

Once this is running, your spreadsheet becomes the truth and your reminders stop depending on memory. Set it up, watch it work, and move on to the parts of your business that actually need you.

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