Opening Problem Statement
Meet Sarah, a busy team lead at a growing tech startup. Every day she juggles multiple projects, meetings, and deadlines. Amid this chaos, remembering her team’s birthdays becomes an overwhelming challenge — birthdays can easily slip her mind. Missing these important personal milestones not only affects team morale but also reflects poorly on her leadership. Sarah wishes there was an automated way to remind her and the team about birthdays without manually checking calendars or contacts.
Before discovering this workflow, Sarah spent up to 15 minutes daily scanning her Google Contacts for upcoming birthdays, often forgetting or overlooking important dates. This led to missed opportunities for team bonding and negative impacts on workplace culture.
What This Automation Does
This n8n workflow automates the entire process of retrieving birthday info from Google Contacts and sending daily reminders to a Slack channel. Here’s what happens every day when this automation runs:
- The workflow triggers at 8:00 AM every day automatically.
- It fetches all contacts from your Google Contacts account, including email, names, nicknames, and birthday info.
- Contacts without birthdays are filtered out, focusing only on those with birthday data.
- A conditional check compares each contact’s birthday with the current day to identify whose birthday is today.
- For contacts with birthdays today, a personalized Slack message is sent to a configured Slack channel to remind the team.
By automating these steps, you save time on manual calendar checks, reduce errors, and boost team engagement with timely birthday shout-outs. Sarah now never misses a birthday, improving team spirit effortlessly.
Prerequisites ⚙️
- n8n account (free or self-hosted) to build and run the workflow.
- Google Contacts account with contacts having birthday information.
- Slack workspace and a channel where birthday reminders will be posted.
- Configured OAuth2 credentials for Slack to authorize message posting.
Step-by-Step Guide
Step 1: Set Up Schedule Trigger to Run Daily
Navigate to Triggers & Events → Schedule Trigger in n8n. Configure it to trigger at 8:00 AM daily by editing the rule property, setting the hour to 8. This ensures the workflow checks contacts every morning.
You’ll see the trigger details on the node panel. Confirm the trigger is active and correctly scheduled.
Common mistake: Forgetting to set the trigger interval properly can cause the workflow never to run automatically.
Step 2: Add Google Contacts Node to Fetch Contacts
Click Nodes → Google Contacts node, select getAll operation, and include the fields emailAddresses, birthdays, names, and nicknames. Choose returnAll=true to get all contacts.
This node connects to your Google Contacts account and fetches a list of your contacts with their details.
Common mistake: Not configuring the Google OAuth2 credentials properly will result in authentication errors.
Step 3: Filter Contacts That Have Birthdays
Add a Filter Contact node of type Filter. Set a condition to filter contacts where the birthday field is not empty. This removes contacts without birthday data from the flow.
After this filter, only contacts with birthday information proceed.
Common mistake: Incorrect field reference can cause the filter to exclude all or none of the contacts.
Step 4: Check If Today Matches Contact’s Birthday
Add an If node to compare the current date with the birthday date of each contact. Configure the condition to check if the birthday equals today’s date.
To do this, set the left value to the current date (e.g., using an expression {{ $json.today }}) and the right value to the contact’s birthday in the JSON data (e.g., {{ $('Google Contacts').item.json.birthdays }}).
Contacts where birthday matches today go to the “true” path for sending Slack messages.
Common mistake: Date format mismatch can cause the condition to fail. Ensure the date formats align.
Step 5: Send Personalized Birthday Reminder to Slack
Add a Slack node. Configure authentication with your Slack OAuth2 credentials and choose the channel where the reminders should be posted.
Set the messageType as block and customize the message block to say:Today is {{$json["first_name"]}} {{$json["last_name"]}}'s birthday! 🎉.
This sends a celebratory birthday reminder message to your team every day for the contacts that have birthdays.
Common mistake: Not setting the correct Slack channel or missing OAuth credentials will cause messages to fail.
Step 6: Add Sticky Notes for Workflow Documentation (Optional)
You can add Sticky Note nodes to your workflow for clear documentation or reminders about each node. This helps maintain clarity if you revisit or share the workflow later.
Customizations ✏️
- Change Reminder Time: In the
Schedule Triggernode, modify the triggerAtHour value to your preferred reminder time, for example 9 AM or noon. - Customize Slack Message: Edit the
Slacknode message block to include emojis, team member roles, or additional birthday wishes for a personal touch. - Filter by Specific Contact Groups: Extend the
Google Contactsnode filter to select contacts from specific groups or labels for reminders only about those teams. - Add Upcoming Birthday Notifications: Enhance the workflow by adding a node to check birthdays in the next 7 days and send weekly summaries to Slack.
- Include Nicknames: Modify the Slack message to use the
nicknamesfield from Google Contacts for more casual reminders.
Troubleshooting 🔧
Problem: “Authentication Failed” in Google Contacts Node
Cause: OAuth2 credentials for Google Contacts are missing or incorrectly configured.
Solution: Go to n8n credentials, re-authenticate your Google Contacts account, and ensure the required permissions for accessing contacts are granted.
Problem: Slack messages not posting
Cause: Missing or incorrect Slack OAuth2 credentials or wrong channel ID.
Solution: Double-check OAuth2 credentials in the Slack node and verify channel ID is set correctly. Test with a simple message before full workflow run.
Problem: No birthdays detected today
Cause: Date formatting mismatch between the Google Contacts birthday field and the condition in the If node.
Solution: Verify the date format in Google Contacts and ensure the If node condition uses the same format for comparison.
Pre-Production Checklist ✅
- Verify Google Contacts credentials by fetching sample contacts manually.
- Check team birthday data is present and correctly formatted in Google Contacts.
- Test Slack OAuth2 integration by sending test messages.
- Run the workflow manually once to observe data flow and outputs.
- Ensure the Schedule Trigger is active and set to the desired time.
- Backup your workflow and credentials before production deployment.
Deployment Guide
Activate the workflow in n8n by setting it to “Active” status in your workflow dashboard. Since it uses a Schedule Trigger, it will run every day at the configured hour automatically.
Monitor the workflow execution logs in n8n for any errors or failures. You can set up additional error handling nodes if needed.
This automation requires minimal maintenance once deployed, but regular checks on credentials and contacts data ensure smooth running.
FAQs
- Can I use a different messaging platform instead of Slack?
- Yes, you can replace the Slack node with other notification nodes supported in n8n such as Microsoft Teams, Discord, or even email nodes. Just adjust authentication and message formatting accordingly.
- Does this workflow consume Google API limits?
- Since it fetches all contacts and runs daily, it uses some API calls, but generally keeps within free tier limits for typical contact volumes.
- Is my contact data safe?
- This workflow only accesses your Google Contacts via OAuth2 and sends birthday data to your Slack workspace. Ensure your n8n instance is secured and access controlled.
Conclusion
By implementing this workflow, you have automated the tedious task of tracking birthdays within your team. Sarah and others like her can now focus on work without fearing they’ll miss out on celebrating their colleagues’ special days.
This flow saves around 15 minutes daily previously spent manually checking birthdays and enhances team morale through consistent notifications. Next, consider extending this to send monthly birthday summaries or integrate with calendar apps for even richer reminders.
With this solid automation foundation using n8n, Google Contacts, and Slack, you’re empowered to scale personal and team engagement effortlessly.