🔓 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: birthday emails sent on cue

Lisa Granqvist Partner Workflow Automation Expert

You mean to send birthday emails. Then the week gets busy, the spreadsheet gets buried, and you remember two days late (again).

This Sheets Gmail birthdays automation hits team leads first, but community managers and solo operators feel it too. You get consistent, on-time birthday notes without a daily “check the sheet” habit.

Below you’ll see how the workflow works, what it automates, and what you can change so the messages sound like you, not a template.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Gmail: birthday emails sent on cue

The Problem: Birthday outreach slips through the cracks

Birthday emails are the kind of “small thing” that quietly becomes a big thing. You either check the sheet every morning (and still miss it when you’re traveling or buried in client work), or you rely on memory and send a rushed note at night. Then comes the awkward part: copying the same message to everyone because you don’t have time to personalize it. It’s not hard work. It’s just never the most urgent task, so it keeps losing.

It adds up fast. Here’s where it breaks down in real life:

  • You spend about 10 minutes a day just checking dates and scrolling rows, even when nobody has a birthday.
  • Manual copy-paste invites mistakes, like the wrong name in the greeting or last year’s subject line.
  • When you’re sending to a list (students, members, clients), “personalization” turns into generic filler that doesn’t feel genuine.
  • Someone always gets missed, which means you now have a relationship problem, not a spreadsheet problem.

The Solution: Daily birthday checks + AI-written emails in Gmail

This workflow runs on a simple rhythm. Every morning at 9 AM, n8n reads your Google Sheet (Name, Email, and DOB) and looks for anyone whose birthday matches today’s day and month. For each match, it asks an AI model (via OpenRouter, using an OpenAI-compatible chat model) to write a personalized subject line and email message. The workflow then cleans up that AI response so Gmail receives a proper subject and body, and sends the email automatically. You wake up looking consistent and thoughtful, without needing another recurring task on your calendar.

The workflow starts with a scheduled trigger, then pulls your contact rows from Google Sheets. After filtering for today’s birthdays, an AI agent generates a friendly message and Gmail sends it out to the right person. No tabs. No reminders. No last-minute scrambling.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you maintain a list of 120 clients and partners in Google Sheets and you do a “birthday check” every weekday. If it takes about 10 minutes to open the sheet, filter, and send any emails, that’s roughly 3 to 4 hours a month even when only a handful of birthdays happen. With this workflow, your time drops to basically zero on normal days, plus maybe 10 minutes once a month to tweak your prompt or scan a sent-email log. The emails still go out at 9 AM. You just stop being the delivery mechanism.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store Name, DOB, Email.
  • Gmail to send the birthday messages.
  • OpenRouter (or OpenAI-compatible) API key (get it from your OpenRouter dashboard).

Skill level: Intermediate. You’ll connect accounts, map fields, and adjust an AI prompt without touching code.

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

How It Works

A daily schedule starts the run. The workflow fires every morning at 9 AM, so you’re not relying on anyone to remember. Set the timezone once and it stays consistent.

Google Sheets rows are pulled in. n8n reads your sheet and brings in the fields you care about (usually Name, Email, DOB). If your sheet has extra columns, that’s fine; you just ignore them.

Today’s birthdays are filtered. The workflow extracts day and month from DOB and keeps only the contacts that match today’s date. This is the quiet part that prevents accidental sends.

An AI agent writes the message, then Gmail sends it. The agent generates a subject plus body through OpenRouter’s chat engine, a parser splits that response into clean fields, and the Gmail node dispatches the email.

You can easily modify the tone and message format to match your brand voice based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the workflow to run automatically every day at a specific hour.

  1. Add the Scheduled Automation Start node as the trigger.
  2. Set the schedule rule to run daily at 9 (as configured under ruleintervaltriggerAtHour).
  3. Ensure Scheduled Automation Start connects to Retrieve Sheet Rows.

If you want greetings sent at a different time, adjust the triggerAtHour value before going live.

Step 2: Connect Google Sheets

Pull birthday records from your spreadsheet so the workflow can evaluate who should receive a greeting.

  1. Open Retrieve Sheet Rows and select the spreadsheet in documentId using the value [YOUR_ID].
  2. Set sheetName to Sheet1 (value gid=0).
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials.
  4. Confirm the node outputs to Apply Date Filter.

⚠️ Common Pitfall: Ensure your sheet columns include name, DOB, and EMail exactly as referenced by later nodes.

Step 3: Set Up Filtering Logic

Filter rows to keep only contacts whose birthday matches today.

  1. Open Apply Date Filter and set the date comparison condition.
  2. Set leftValue to {{ $json.DOB.split('/').slice(0,2).join('-')}}.
  3. Set rightValue to {{ $now.toFormat("dd-MM") }}.
  4. Keep the operator as equals for date match.

This filter expects DOB values in dd/MM/yyyy or similar format where day and month are first.

Step 4: Set Up the AI Greeting Generator

Generate a personalized subject and body using the AI agent.

  1. Open Compose Greeting Agent and set text to =use below name for birthday wishes. name:{{ $json.name }} dob:{{ $json.DOB }} write email according to you and best regards..
  2. Confirm promptType is define and hasOutputParser is enabled.
  3. Ensure OpenRouter Chat Engine is connected as the language model with model set to openai/gpt-4o-mini.
  4. Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Engine.
  5. Verify Structured Result Parser is attached as the output parser with jsonSchemaExample matching the configured subject/body schema.

The Structured Result Parser is a sub-node—add credentials to OpenRouter Chat Engine, not the parser.

Step 5: Configure Email Delivery

Send the AI-generated greeting to the contact’s email address.

  1. Open Dispatch Email Notice and set sendTo to {{ $('Apply Date Filter').item.json.EMail }}.
  2. Set subject to {{ $json.output.subject }}.
  3. Set message to {{ $json.output.body }} and keep emailType as text.
  4. Credential Required: Connect your gmailOAuth2 credentials.

Step 6: Test and Activate Your Workflow

Validate the full flow and then activate it for daily automated use.

  1. Click Execute Workflow to run a manual test from Scheduled Automation Start.
  2. Confirm Retrieve Sheet Rows returns records and Apply Date Filter only passes birthdays that match today.
  3. Check that Compose Greeting Agent outputs subject and body fields.
  4. Verify Dispatch Email Notice sends a message to the address from EMail.
  5. Turn the workflow Active to enable the scheduled runs.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets permissions can be deceptively strict. If things break, check the connected Google account access to the exact spreadsheet (and tab) in n8n credentials 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 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 Gmail birthdays automation?

About 30 minutes if your Google and OpenRouter accounts are ready.

Do I need coding skills to automate birthday emails from Google Sheets?

No. You’ll mostly map fields like Name, Email, and DOB, then tweak the message prompt.

Is n8n free to use for this Sheets Gmail birthdays 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 OpenRouter/OpenAI API costs, which are usually a few cents per batch of emails.

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 Sheets Gmail birthdays workflow for different tones or languages?

Yes, and it’s honestly the best part. Update the instructions inside the Compose Greeting Agent so it writes in your tone (formal, playful, short, “from the whole team,” and so on). You can also ask for a specific language, or include extra context from your Google Sheet like Company, Last purchase, or Class name. If you change the output format, make sure the Structured Result Parser still matches the subject/body structure.

Why is my Gmail connection failing in this workflow?

Usually it’s expired OAuth access or the wrong Google account connected. Reconnect the Gmail credentials in n8n, then confirm the sender address matches the inbox you expect. If it still fails, check Google’s security prompts and make sure the account is allowed to send (some Workspace setups restrict this). Rate limits can also show up if you’re blasting a large list on the same day, so spacing sends or batching can help.

How many contacts can this Sheets Gmail birthdays automation handle?

For most small teams, hundreds or even a few thousand contacts are fine, because you only send to the few that match today’s date. On n8n Cloud, your practical limit is monthly executions on your plan; if you self-host, it mostly depends on your server and Google API limits. If you expect many birthdays per day (large schools or communities), add a small delay between sends to keep Gmail happy.

Is this Sheets Gmail birthdays automation better than using Zapier or Make?

It can be, especially if you want AI-generated content plus more control over filtering and formatting without paying extra for every branch. n8n also gives you a self-hosted path, which keeps costs predictable when you scale. Zapier or Make are simpler for very small “if date equals today then send” setups, but they get awkward once you want structured AI output and cleaner parsing. If you’re unsure, the quickest way is to decide if you want “set it once and forget it” or “review drafts before sending.” Talk to an automation expert and we’ll help you choose.

Set it up once and birthdays stop being a recurring worry. The workflow handles the repetitive part, and you keep the relationships.

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