Build automated invoice reminders with Google Sheets and Gmail. Get the tracker layout, timing rules, safeguards, and copy-ready payment reminder templates.
A reliable invoice reminder system needs to do more than send an email. It must identify the right invoice, choose the right stage, personalize the message, avoid duplicates, and stop immediately when payment arrives.
This guide shows how to build that workflow with Google Sheets and Gmail. You can use the sheet structure and templates with a manual process, Apps Script, or a no-code tool such as Mailvern.
The workflow in one minute
- Keep one invoice per row in Google Sheets.
- Record its due date and payment status.
- Add a reminder stage such as
Before due,Due today,7 days overdue, orFinal. - Send only rows whose status is
Unpaidand whose reminder stage is due. - Record when each reminder was sent.
- Change the status to
Paidto stop all future reminders.
The most important rule is simple: payment status is the stop condition. A reminder must never be eligible when the invoice is marked paid, cancelled, disputed, or on hold.
When Google Sheets is a good fit
A spreadsheet reminder system works well when you already track invoices in Sheets, send a manageable number of reminders through Gmail, and need rules that your invoicing product does not provide.
Use a dedicated accounts-receivable platform instead when you need payment reconciliation across several entities, a customer payment portal, collections case management, or accounting-ledger synchronization. The best system is the smallest one that reliably reflects payment status.
Build the invoice tracker
Use explicit columns rather than trying to infer state from notes or cell colors.
| Column | Example | Purpose |
|---|---|---|
| Client | Northstar Studio | Personalization |
| billing@example.com | Recipient | |
| Invoice | INV-2043 | Reference in subject and body |
| Amount | $1,250.00 | Personalization |
| Due Date | 2026-09-15 | Timing |
| Payment Link | https://… | Clear next step |
| Status | Unpaid | Primary eligibility rule |
| Reminder Stage | 7 days overdue | Selects the right template |
| Last Reminder Sent | 2026-09-22 | Audit trail and duplicate control |
| Owner | Priya | Reply routing or internal follow-up |
Keep status values consistent: Unpaid, Paid, Disputed, On hold, and Cancelled are easier to filter than free-form notes. The same principle is covered in our guide to segmenting inside Google Sheets.
Define eligibility and stop conditions
Write the rule in plain English before configuring a tool:
Send this reminder only when Status is Unpaid, Reminder Stage matches this campaign, Email is present, and this stage has not already been sent.
A row should be skipped when:
- the invoice is paid, cancelled, disputed, or on hold;
- the email address is blank or invalid;
- the reminder for that stage was already sent;
- the due date is missing or not a real date;
- the client asked for a temporary pause.
Mailvern currently lets you filter rows with a campaign condition. For workflows that need several checks, create a helper column such as Reminder Eligible in the sheet and calculate the full rule there. Then send only rows where that column equals Yes. See conditional sending documentation for the current setup.
Choose a reminder cadence
There is no universal sequence. Match the timing to your payment terms, client relationships, and escalation policy. A practical starting point is:
| Stage | Timing | Tone | Goal |
|---|---|---|---|
| Upcoming | 3 days before due | Helpful | Prevent an accidental delay |
| Due today | Due date | Clear | Put the payment link at hand |
| First overdue | 7 days after | Direct, courteous | Confirm status and request action |
| Final follow-up | 14–30 days after | Firm | Set a response deadline and next step |
Do not automate legal threats, late fees, or collection escalation unless those terms are valid for the invoice and your business has approved the wording.
Set up automated reminders with Mailvern
1. Prepare and test the sheet
Use two or three sample rows first, including one that should be skipped. Confirm that dates are real spreadsheet dates and every placeholder has a value or fallback.
2. Create one campaign per reminder stage
A separate campaign for each stage keeps the subject, wording, condition, and schedule understandable. For example, the “7 days overdue” campaign should only select rows assigned to that stage.
3. Add placeholders
Use column headers in the subject and body:
Subject: Reminder: invoice {{Invoice}} is now due
Hi {{Client}},
This is a quick reminder that invoice {{Invoice}} for {{Amount}} was due on {{Due Date}}.
You can review and pay it here: {{Payment Link}}
Preview a real row before sending. Our personalization guide explains placeholders and fallbacks.
4. Add the campaign condition
Set the campaign to include only its eligible rows. A helper column is safer than relying on a complicated mental checklist.
5. Schedule Auto Run
Choose a schedule that matches when the sheet is updated. If payment status is imported each morning, run reminders after that update—not before it. Learn how schedules behave in Scheduling and Auto Run.
6. Record the result
Keep the send result and last-reminder date visible. That audit trail helps you answer “Did we already contact this client?” without searching Gmail.
A manual alternative without automation
The same sheet can support a safe manual process:
- Filter
StatustoUnpaid. - Filter
Reminder Stageto the stage due today. - Exclude rows with a matching
Last Reminder Sentvalue. - Review the eligible rows.
- Send a mail merge.
- Write the send date back to the sheet.
This takes more attention but is still better than composing reminders from memory. If you are comparing methods, read how to automate emails from Google Sheets without Apps Script.
Prevent duplicate and incorrect reminders
Duplicate prevention is not the same as a permanent “email this person once” rule. A client may correctly receive several messages for the same invoice at different stages.
Use a stage-specific key such as INV-2043 + 7-days-overdue. Once that stage is sent, it should not send again unless someone deliberately resets it. The next stage uses a different key.
Before every scheduled run:
- update payment statuses;
- exclude disputed and paused invoices;
- verify the eligible count;
- preview at least one row;
- keep replies monitored by a person.
Copy-ready payment reminder email templates
Adapt these to your terms and voice. Do not include a late fee or deadline that was not agreed with the client.
Three days before the due date
Subject: Invoice {{Invoice}} is due on {{Due Date}}
Hi {{Client}},
A quick heads-up that invoice {{Invoice}} for {{Amount}} is due on {{Due Date}}.
You can review the invoice and payment details here: {{Payment Link}}
If payment is already arranged, no action is needed. Please reply if you need anything from us.
Thanks,
{{Owner}}
Due today
Subject: Invoice {{Invoice}} is due today
Hi {{Client}},
This is a friendly reminder that invoice {{Invoice}} for {{Amount}} is due today.
Payment details: {{Payment Link}}
Please let me know if the invoice needs to be resent or if there is a question we can resolve.
Thanks,
{{Owner}}
Seven days overdue
Subject: Follow-up on overdue invoice {{Invoice}}
Hi {{Client}},
Our records show that invoice {{Invoice}} for {{Amount}}, due on {{Due Date}}, remains unpaid.
You can review and pay it here: {{Payment Link}}
Could you confirm the payment status or expected payment date? If there is an issue with the invoice, reply and I will help resolve it.
Regards,
{{Owner}}
Final follow-up
Subject: Action requested: invoice {{Invoice}}
Hi {{Client}},
I am following up again about invoice {{Invoice}} for {{Amount}}, originally due on {{Due Date}}.
Please reply by [date] with the payment status or any issue preventing payment. The invoice and payment details are here: {{Payment Link}}
If payment has already been sent, please disregard this message and share the reference when convenient.
Regards,
{{Owner}}
Test the workflow safely
Create test rows that cover the important paths:
| Test row | Expected result |
|---|---|
| Unpaid and eligible | Sends the correct stage |
| Paid | Skipped |
| Missing email | Skipped with a visible issue |
| Already sent at this stage | Skipped |
| Disputed | Skipped |
| Missing placeholder | Uses a fallback or is corrected before launch |
Send all tests to addresses you control. Check the subject, mobile layout, payment link, reply address, and the sheet result before enabling a schedule. The best-practices checklist covers the final review.
Troubleshooting
A paid customer received a reminder
The payment status was probably updated after eligibility was calculated or after the campaign ran. Move the schedule after your payment-data update and make Paid an explicit stop condition.
The same stage sent twice
Check whether the last-sent value or unique stage key is written back reliably. Do not clear send history when preparing the next run.
Dates select the wrong rows
Confirm the cells contain dates rather than text. Also check the spreadsheet timezone. Displayed dates can look correct while underlying values or timezone boundaries differ.
Some reminders did not send
Check blank email addresses, eligibility conditions, Gmail quota, and campaign results. Gmail limits still apply to messages sent through a mail merge; see our current Gmail sending limits guide.
Privacy and deliverability checklist
- Send only information the recipient needs to identify and pay the invoice.
- Avoid sensitive account details in subject lines.
- Use a monitored reply address.
- Authenticate your sending domain where applicable.
- Start with expected, relevant recipients rather than sudden bulk volume.
- Check message content with the free email spam checker.
- Keep the spreadsheet shared only with people who need access.
Frequently asked questions
How do I send automatic invoice reminders?
Track due date, payment status, reminder stage, and last sent time. Then run a scheduled campaign that selects only unpaid, eligible rows. Always update payment status before the reminder runs.
Can Google Sheets send payment reminders?
Google Sheets can hold the rules and recipient data. Native notifications are designed mainly for spreadsheet-change alerts; personalized customer reminders require a mail merge, Apps Script, or an add-on such as Mailvern.
When should I send an overdue invoice reminder?
A common sequence is a courtesy message before the due date, a due-date reminder, and follow-ups after 7 and 14–30 days. Adjust it to your terms and customer relationships.
How do I stop reminders after payment?
Make payment status the primary stop condition. Once a row changes from Unpaid to Paid, it must become ineligible for every reminder campaign.
What should a payment reminder email include?
Include the client name, invoice number, amount, due date, a clear payment link or instructions, and a monitored way to reply. Keep the tone factual and avoid unsupported fees or threats.
Can I send invoice reminders from Gmail?
Yes. Gmail can send the messages, while Google Sheets holds the invoice data. Your account’s Gmail sending limits still apply.
Turn the tracker into a dependable workflow
The safest reminder system is easy to inspect: every row shows why it is eligible, which message it should receive, and whether that stage already ran.
If your invoices already live in Google Sheets, Mailvern’s getting-started guide shows how to turn those rows into personalized Gmail reminders without writing Apps Script. Start with test rows, then add a schedule only after every stop condition works.
