A step-by-step, no-code guide to building free birthday automation using Google Sheets, Google Apps Script, and Pabbly Connect and how to know when you’ve outgrown it.
Why use Google Sheets for birthday automation?
If you’re not ready to pay for dedicated software, or you simply have a small enough contact list that a free DIY solution makes sense, Google Sheets paired with Gmail is the most accessible route. It costs nothing beyond the time to set it up, uses tools most people already have access to, and is genuinely capable of sending real, personalized birthday emails on a schedule, though with real limitations you should understand going in.
This guide covers two methods: a fully scripted approach using Google Apps Script, and a no-code approach using Pabbly Connect.
Method 1: Google Apps Script (fully free, requires basic scripting)
Step 1: Set up your Google Sheet
Create a sheet with columns for at minimum: First Name, Email, and Birthday (formatted consistently, e.g. MM/DD). Add a column for “Last Sent Year”, this is important to prevent the script from sending the same person multiple emails if it runs more than once on their birthday.
Step 2: Open the Script Editor
From your Google Sheet, go to Extensions → Apps Script. This opens a code editor where you’ll write a small JavaScript-based script.
Step 3: Write the date-checking script
The core logic loops through each row, compares today’s month and day against the birthday column, and sends an email via Gmail’s built-in GmailApp.sendEmail() function if there’s a match and the “Last Sent Year” doesn’t already equal the current year. After sending, the script updates the “Last Sent Year” cell to prevent duplicate sends.
This requires comfort with basic JavaScript syntax, looping through spreadsheet rows, and using the Date object correctly, including handling the genuine edge case of February 29th birthdays in non-leap years, which trips up many first attempts at this script.
Step 4: Set a daily trigger
In the Apps Script editor, go to Triggers (the clock icon) and add a new trigger set to run your function daily, ideally early in the morning so birthday emails go out before most people start their day.
Step 5: Test before relying on it
Temporarily change a test row’s birthday to today’s date, run the script manually, and confirm the email arrives correctly formatted with the right personalization. Then revert the test date and let the daily trigger take over.
Limitations: this method is Gmail-only (no WhatsApp or SMS), sends from your personal or shared Gmail address rather than a branded sender, has Gmail’s daily sending limits (which matters if you have a larger list), doesn’t handle timezones per contact, and fails silently if there’s a script error, meaning a missed birthday might go unnoticed unless you’re actively checking.
Method 2: Pabbly Connect (no-code, more reliable than raw scripting)
Pabbly Connect is a no-code automation platform that can connect Google Sheets to an email provider without requiring you to write or maintain a script.
Step 1: Set up the same structured Google Sheet
Same as above – First Name, Email, Birthday columns, formatted consistently.
Step 2: Create a new workflow in Pabbly Connect
Set Google Sheets as your trigger app, configured to check your sheet on a schedule (Pabbly supports scheduled triggers that run daily).
Step 3: Add a filter step for date matching
Use Pabbly’s built-in filter or formatter step to compare today’s date against each row’s birthday column, only allowing matching rows to proceed to the next step.
Step 4: Connect your email-sending action
Add an action step using Gmail, or any other supported email provider, to send the personalized birthday message using the matched row’s data.
Step 5: Activate and monitor
Turn the workflow on and check Pabbly’s task history regularly for the first few weeks to confirm sends are firing correctly and catch any formatting issues early.
Limitations: still email-only (Pabbly doesn’t natively support WhatsApp birthday sends), requires a paid Pabbly plan once you exceed the free tier’s task limits, and date-matching logic still needs to be configured carefully to avoid duplicate or missed sends.
Method comparison
| Factor | Google Apps Script | Pabbly Connect | Dedicated tool (PeopleWisher) |
|---|---|---|---|
| Cost | Free | Free tier, then paid | Free tier, then $9.99/mo |
| Coding required | Yes | No | No |
| WhatsApp/SMS support | ✗ | ✗ | ✓ |
| Timezone-aware delivery | ✗ | ✗ | ✓ |
| Failure monitoring/alerts | Manual | Task history dashboard | Built-in delivery reports |
| Setup time | 1–3 hours | 30–60 minutes | Under 3 minutes |
| Branded sender address | ✗ (sends from your Gmail) | Depends on email provider | ✓ |
When the free DIY route stops making sense

The Google Sheets approach works well for businesses with a small contact list and someone comfortable maintaining it, generally under 50–100 contacts. It starts to break down when:
- Your list grows large enough to hit Gmail’s daily sending limits
- You want WhatsApp or SMS in addition to email
- You need timezone-aware delivery for an international contact list
- Nobody on the team has time to monitor the script for silent failures
- You want a branded sender address rather than a personal Gmail account
At that point, migrating your existing Google Sheet of birthdays into a dedicated tool like PeopleWisher is straightforward, it accepts the same CSV/spreadsheet format you’ve already been using, so there’s no need to re-collect data, and the free plan covers many small businesses without requiring an immediate upgrade.

Frequently asked questions
Is Google Sheets birthday automation really free?
Yes, both Google Sheets and Apps Script are free with a standard Google account, and Gmail sending is included up to Gmail’s standard daily sending limits. Pabbly Connect has a free tier with limited monthly tasks, beyond which it requires a paid plan.
Can I send WhatsApp messages from Google Sheets?
Not natively, Google Apps Script and Pabbly Connect’s free integrations don’t include WhatsApp Business API access, which requires a dedicated automation platform or a separate paid WhatsApp API integration.
What happens if my Apps Script fails silently?
This is the main risk of the DIY approach, there’s no built-in alerting unless you specifically build error-handling and notification logic into the script yourself, which adds complexity. Dedicated platforms typically include automatic failure alerts.
How do I migrate from Google Sheets to a dedicated birthday tool later?
Most dedicated platforms, including PeopleWisher, accept direct CSV import, so you can export your existing Google Sheet and import it without re-entering data, then build proper templates and automation rules on top of the data you’ve already collected.
Ready to move beyond spreadsheets and scripts?
PeopleWisher accepts your existing Google Sheet via CSV import and adds WhatsApp, SMS, and timezone-aware delivery, free to start.
📚 Related reading