by Roshan Ramani
Replace BillyBot: Free Slack Employee Birthday & Anniversary Automation Who's it for HR teams, team leaders, and operations managers looking to automate employee celebrations without expensive third-party tools like BillyBot. Perfect for startups to enterprise teams wanting to save $600-2,400+ annually while maintaining personalized, engaging employee recognition. What it does This workflow automatically monitors your employee database daily and posts AI-generated, unique celebration messages to Slack for birthdays and work anniversaries. Unlike generic bots, it creates personalized messages that never repeat, rotating through 12 different styles and tones to keep celebrations fresh and authentic. How it works Daily Check: Runs every morning at 9 AM to scan your employee Google Sheet Smart Filtering: Matches today's date against employee birthdays and joining dates Data Aggregation: Collects all celebrating employees into a single payload AI Generation: Google Gemini creates unique, heartfelt messages with proper Slack formatting Auto-Post: Sends personalized celebrations directly to your chosen Slack channel The AI ensures no two messages feel templated, calculating years of service for anniversaries and adapting tone based on tenure length. Requirements Google Sheets** with employee data (columns: NO, Name, Email, Date of Birth, Joining Date in YYYY-MM-DD format) Slack workspace** with bot permissions to post messages Google Gemini API key** (free tier included) n8n Cloud** ($20/month) or self-hosted n8n (free) Cost comparison: Save $600-2,400+ per year BillyBot pricing: $1 per employee/month 50 employees = $600/year 100 employees = $1,200/year 200 employees = $2,400/year This solution: $0-20/month (unlimited employees) Google Gemini API: FREE Google Sheets API: FREE Slack API: FREE n8n: $20/month (Cloud) or $0 (self-hosted) Your savings: 95-100% cost reduction regardless of team size. Setup instructions Create Google Sheet: Add columns: NO, Name, Email, Date of Birth, Joining Date (ensure dates are YYYY-MM-DD format) Connect Google Sheets: Authenticate your Google account in the "Get row(s) in sheet" node Set up Slack: Create a Slack bot with chat:write permission and add to your celebration channel Configure Gemini: Add your Google Gemini API key to the "Google Gemini Chat Model" node Adjust Schedule: Change trigger time in "Schedule Trigger" node (default: 9 AM daily) Select Channel: Update Slack channel in "Send a message" node to your desired celebration channel Test: Run workflow manually to verify messages post correctly Customization options Change celebration time**: Modify the Schedule Trigger to any hour (e.g., 8 AM for morning celebrations) Adjust message tone**: Edit the AI Agent system prompt to match your company culture (formal, casual, playful) Multi-channel posting**: Duplicate the Slack node to post to multiple channels (e.g., company-wide + team-specific) Add upcoming reminders**: Modify the IF node to check for celebrations within 7 days Include photos**: Extend the workflow to pull employee photos from your HR system Custom emoji styles**: Update the AI prompt to use your organization's custom Slack emojis Key features 12 rotating message styles prevent repetition Automatic tenure calculation for work anniversaries Culturally inclusive and professional tone Mobile-optimized message length (1-3 lines) Slack markdown formatting for visual appeal Scales infinitely without additional cost Note: Ensure your Google Sheet date formats are consistent (YYYY-MM-DD) for accurate date matching. The workflow processes dates in MM-DD format to match across years automatically.
by Nabin Bhandari
Appointment Reminder Agent automates phone call reminders for upcoming appointments by seamlessly connecting Google Calendar with Retell AI. This powerful workflow is designed to help businesses, clinics, and service providers ensure clients never miss their scheduled appointments—reducing no-shows and increasing efficiency. ##Use Cases Healthcare practitioners reminding patients of upcoming visits Salons, spas, and beauty services confirming bookings Consultants, therapists, and coaches sending appointment reminders Any service-based business wanting to reduce missed appointments ##Workflow Overview Trigger – A scheduler node runs every day at 9 AM (configurable) to start the workflow. Fetch Events – Pulls all events scheduled in the next 12 hours from Google Calendar. Extract Details – A Code node parses each event’s description for: Name Phone number (must be in E.164 format, e.g., +14155552671) Reason for appointment Start and end time Configure Retell – Uses credentials to set up: from_number (Retell-registered phone number) agent_id (Retell agent ID) Send Call – Calls Retell AI’s API to place a personalized reminder call to the client. ##Setup Instructions Add your Retell API key to n8n credentials (never hardcode it). Add your Google Calendar account to credentials. Set the from_number (Retell-registered number). Set the agent_id (Retell agent ID). Ensure all calendar event descriptions include required fields (Name, Phone number, Reason, Start & End times) in the specified format. Adjust the scheduler trigger time if needed. ##Requirements Retell AI account with API key Registered Retell phone number Google Calendar account Event descriptions formatted properly with all required details ##Customization Options Modify the trigger schedule (e.g., nightly, hourly, or webhook-based). Add logging or tracking (e.g., use Google Sheets or Airtable to log call attempts/results). Tailor the Retell agent script to suit different appointment types (e.g., “Consultation,” “Follow-up,” “Service Visit”). Expand with additional channels (e.g., SMS or email reminders before or after calls).
by Johnny Rafael
AI-Enriched Cold Outreach: Research → Draft → QA → Write-back What this template does Automates cold email drafting from a lead list by: Enriching each lead with LinkedIn profile, LinkedIn company, and Crunchbase data Generating a personalized subject + body with Gemini Auto-reviewing with a Judge agent and writing back only APPROVED drafts to your Data Table Highlights Hands-off enrichment via RapidAPI; raw JSON stored back on each row Two-agent pattern: Creative Outreach Agent (draft) + Outreach Email Judge (QA) Structured outputs guaranteed by LangChain Structured Output Parsers Data Table–native: reads “unprocessed” rows, writes results to the same row Async polling with Wait nodes for scraper task results How it works (flow) Trigger: Manual (replace with Cron if needed) Fetch leads: Data Table “Get row(s)” filters rows where email_subject is empty (pending) Loop: Split in Batches iterates rows Enrichment (runs in parallel): LinkedIn profile: HTTP (company_url) → Wait → Results → Data Table update → linkedin_profile_scrape LinkedIn company: HTTP (company_url) → Wait → Results → Data Table update → linkedin_company_scrape Crunchbase company: HTTP (url_search) → Wait → Results → Data Table update → crunchbase_company_scrape (All calls use host cold-outreach-enrichment-scraper with a RapidAPI key.) Draft (Gemini): “Agent One” composes a concise, personalized email using row fields + enrichment + ABOUT ME block. Structured Output Parser enforces: { "email_subject": "text", "email_content": "text" } Prep for QA: “Email Context” maps email_subject, email_content, and email for the judge. QA (Judge): “Judge Agent” returns APPROVED or REVISE (brief feedback allowed). Route: If APPROVED → Data Table “Update row(s)” writes email_subject + email_body (a.k.a. email_content) back to the row. If REVISE → Skipped; loop continues. Required setup Data Table: “email_linkedin_list” (or your own) with at least: email, First_name, Last_name, Title, Location, Company_Name, Company_site, Linkedin_URL, company_linkedin (if used), Crunchbase_URL, email_subject, email_body, linkedin_profile_scrape, linkedin_company_scrape, crunchbase_company_scrape (string fields for JSON). Credentials: RapidAPI key for cold-outreach-enrichment-scraper (store securely as credential, not hardcoded) Google Gemini (PaLM) API configured in the Google Gemini Chat Model node ABOUT ME block: Replace the sample persona (James / CEO / Company Sample / AI Automations) with your own. Nodes used Data Table** HTTP Request:** AI Agent:** Google Gemini Chat Model** Split in Batches:** Main Loop Set:** RapidAPI-Key Customization ideas Process flags:** Add email_generated_at or processed boolean to prevent reprocessing. Human-in-the-loop:** Send drafts to Slack/Email for spot check before write-back. Delivery:** After approval, optionally email the draft to the sender for review. Quotas & costs RapidAPI: Multiple calls per row (three tasks + result polls). Gemini: Token usage for generator + judge per row. Tune batch size and schedule accordingly. Privacy & compliance You are scraping and storing person/company data. Ensure lawful basis, respect ToS, and minimize stored data.
by Robert Breen
🧑💻 Description This workflow automatically compares the version of your n8n instance with the latest release available. Keeping your n8n instance up-to-date is essential for security patches, bug fixes, performance improvements, and access to new automation features. By running this workflow, you’ll know right away if your instance is behind and whether it’s time to upgrade. After the comparison, the workflow clearly shows whether your instance is up-to-date or outdated, along with the version numbers for both. This makes it easy to plan updates and keep your automation environment secure and reliable. ⚙️ Setup Instructions 1️⃣ Set Up n8n API Credentials In your n8n instance → go to Admin Panel → API Copy your API Key In n8n → Credentials → New → n8n API Paste the API Key Save it Attach this credential to the n8n node (Set up your n8n credentials) ✅ How It Works Get Most Recent n8n Version** → Fetches the latest release info from docs.n8n.io. Extract Version + Clean Value** → Parses the version string for accuracy. Get your n8n version** → Connects to your own n8n instance via API and retrieves the current version. Compare* → Evaluates the difference and tells you if your instance is *current* or needs an *update**. 🎛️ Customization Guidance Notifications**: Add an Email or Slack node to automatically notify your team when a new n8n update is available. Scheduling: Use a **Schedule Trigger to run this workflow daily or weekly for ongoing monitoring. Conditional Actions**: Extend the workflow to log version mismatches into Google Sheets, or even trigger upgrade playbooks. Multi-Instance Tracking**: Duplicate the version-check step for multiple n8n environments (e.g., dev, staging, production). 💬 Example Output “Your instance (v1.25.0) is up-to-date with the latest release (v1.25.0).” “Your instance (v1.21.0) is behind the latest release (v1.25.0). Please update to get the latest bug fixes and features.” 📬 Contact Need help setting up API credentials or automating version checks across environments? 📧 robert@ynteractive.com 🔗 Robert Breen 🌐 ynteractive.com
by Avkash Kakdiya
How it works This workflow starts when a user triggers a custom slash command in Slack. The workflow checks if a valid message (email address or HubSpot contact ID) was provided. Based on the input, it searches HubSpot for the contact either by email or by ID. Once the contact is found, the workflow formats the details into a clean, Slack-friendly message card and posts it back into the Slack channel. Step-by-step Start with Slack Slash Command The workflow is triggered whenever someone uses a custom slash command in Slack. It checks if the user actually entered something (email or ID). If nothing is entered, the workflow stops with an error. Parse Search Input The workflow cleans up the user’s input and determines whether it’s an email address or a HubSpot contact ID. This ensures the correct HubSpot search method is used. Search in HubSpot If the input is an email → the workflow searches HubSpot by email. If the input is an ID → the workflow retrieves the contact directly using the HubSpot contact ID. Format Contact Info The retrieved HubSpot contact details (name, email, phone, company, deal stage, etc.) are formatted into a Slack-friendly message card. Send Contact Info to Slack Finally, the formatted contact information is posted back into the Slack channel, making it instantly visible to the user and team. Why use this? Quickly look up HubSpot contacts directly from Slack without switching tools. Works with both email addresses and HubSpot IDs. Provides a clean, structured contact card in Slack with key details. Saves time for sales and support teams by keeping workflows inside Slack. Runs automatically once set up — no extra clicks or manual searches.
by Ayis Saliaris Fasseas
How it works A form trigger accepts an Industry + Location query (e.g. Accountants London). Text Search Page 1 calls Google Places Text Search to return results and a next_page_token. Conditional checks + 5s wait nodes fetch page 2 and page 3 when a next page exists. All pages are merged, split into individual place results, and each place_id is passed to Place Details. Place Details returns name, formatted_phone_number, website, formatted_address. Results are formatted and appended to a Google Sheet. Setup steps Enable Google Cloud project billing and Places API (Text Search + Details). Create an API key and add it to the three Text Search and Place Details HTTP request nodes (<YOUR KEY>). Add Google Sheets OAuth credentials to the Google Sheets node. Create a Google Sheet with columns: Company Name, Phone Number, Website, Address Update the Google Sheets node documentId and sheetName to your spreadsheet. Import/paste this workflow into n8n and test with a small query. Customization Edit Place Details fields to retrieve more/less info (address_components, opening_hours, etc.). Adjust the number of pages fetched (workflow currently supports up to 3 pages). Alter output mapping in the code node to add/remove columns or change column order. Add further nodes after the sheet (e.g., email scraper/ sender, CRM integration, enrichment API) Use cases B2B lead generation for targeted industries and locations. Building outreach lists for sales teams and agencies. Enriching CRM with phone, website, and address data from Google Places. Rapid market mapping for local competitors, vendors, or partners. Troubleshooting tips No results / invalid API key: verify API key is correct, not restricted incorrectly, and Places API is enabled. next_page_token not working: the token can take a couple of seconds to activate. Keep the 5s wait nodes; if still failing, increase to ~10s+ Quota / billing errors: confirm billing is enabled on the Google Cloud project and check your Places API quota. Missing phone/website: not all places provide all fields; fallback handling is already included (nulls). Duplicates in Sheets: run tests on small queries and inspect the Merge/Split logic; add a dedupe step before appending if needed. Place Details rate limits: if you plan high volume, throttle requests or add longer waits to avoid quota/rate-limit errors. Permissions / OAuth: ensure the Google Sheets OAuth user has edit access to the target spreadsheet.
by Robert Breen
This workflow pulls all tasks from your Trello board every day and logs them into a Google Sheet. Use it to track project progress, due dates, and keep a daily snapshot of your board’s status. ⚙️ Setup Instructions 1️⃣ Connect Trello (Developer API) Get your API key: Trello App Key On the same page, generate a Token (click Token) In n8n → Credentials → New → Trello API, paste your API Key + Token, then save. Open each Trello node (Get Board, Get Lists, Get Cards) and select your Trello credential. 🧠 How It Works Schedule Trigger**: Runs daily (can be customized). Get Board → Get Lists → Get Cards**: Pulls every task, its list, due date, and description. Map Fields**: Normalizes the data (board name, list name, task name, description, due date, URL). Today's Date Node**: Adds a timestamp column so each run is logged. Google Sheets (Append): Appends all task rows into a sheet → creating a **daily history log. 📬 Contact Need help customizing this (e.g., filtering by list, or sending reports by email/Slack)? 📧 rbreen@ynteractive.com 🔗 Robert Breen 🌐 ynteractive.com
by iamvaar
Youtube Explanation: [https://youtu.be/KgmNiV7SwkU](https://youtu.be/KgmNiV7SwkU ) This n8n workflow is designed to automate the initial intake and scheduling for a law firm. It's split into two main parts: New Inquiry Handling: Kicks off when a potential client fills out a JotForm, saves their data, and sends them an initial welcome message on WhatsApp. Appointment Scheduling: Activates when the client replies on WhatsApp, allowing an AI agent to chat with them to schedule a consultation. Here’s a detailed breakdown of the prerequisites and each node. Prerequisites Before building this workflow, you'll need accounts and some setup for each of the following services: JotForm JotForm Account**: You need an active JotForm account. A Published Form**: Create a form with the exact fields used in the workflow: Full Name, Email Address, Phone Number, I am a..., Legal Service of Interest, Brief Message, and How Did You Hear About Us?. API Credentials**: Generate API keys from your JotForm account settings to connect it with n8n. Google Google Account**: To use Google Sheets and Google Calendar. Google Sheet**: Create a new sheet named "Law Client Enquiries". The first row must have these exact headers: Full Name, Email Address, Phone Number, client type, Legal Service of Interest, Brief Message, How Did You Hear About Us?. Google Calendar**: An active calendar to manage appointments. Google Cloud Project**: Service Account Credentials (for Sheets): In the Google Cloud Console, create a service account, generate JSON key credentials, and enable the Google Sheets API. You must then share your Google Sheet with the service account's email address (e.g., automation-bot@your-project.iam.gserviceaccount.com). OAuth Credentials (for Calendar): Create OAuth 2.0 Client ID credentials to allow n8n to access your calendar on your behalf. You'll need to enable the Google Calendar API. Gemini API Key: Enable the Vertex AI API in your Google Cloud project and generate an API key to use the Google Gemini models. WhatsApp Meta Business Account**: Required to use the WhatsApp Business Platform. WhatsApp Business Platform Account: You need to set up a business account and connect a phone number to it. This is **different from the regular WhatsApp or WhatsApp Business app. API Credentials**: Get the necessary access tokens and IDs from your Meta for Developers dashboard to connect your business number to n8n. PostgreSQL Database A running PostgreSQL instance**: This can be hosted anywhere (e.g., AWS, DigitalOcean, Supabase). The AI agent needs it to store and retrieve conversation history. Database Credentials**: You'll need the host, port, user, password, and database name to connect n8n to it. Node-by-Node Explanation The workflow is divided into two distinct logical flows. Flow 1: New Client Intake from JotForm This part triggers when a new client submits your form. JotForm Trigger What it does: This is the starting point. It automatically runs the workflow whenever a new submission is received for the specified JotForm (Form ID: 252801824783057). Prerequisites: A JotForm account and a created form. Append or update row in sheet (Google Sheets) What it does: It takes the data from the JotForm submission and adds it to your "Law Client Enquiries" Google Sheet. How it works: It uses the appendOrUpdate operation. It tries to find a row where the "Email Address" column matches the email from the form. If it finds a match, it updates that row; otherwise, it appends a new row at the bottom. Prerequisites: A Google Sheet with the correct headers, shared with your service account. AI Agent What it does: This node crafts the initial welcome message to be sent to the client. How it works: It uses a detailed prompt that defines a persona ("Alex," a legal intake assistant) and instructs the AI to generate a professional WhatsApp message. It dynamically inserts the client's name and service of interest from the Google Sheet data into the prompt. Connected Node: It's powered by the Google Gemini Chat Model. Send message (WhatsApp) What it does: It sends the message generated by the AI Agent to the client. How it works: It takes the client's phone number from the data (Phone Number column) and the AI-generated text (output from the AI Agent node) to send the message via the WhatsApp Business API. Prerequisites: A configured WhatsApp Business Platform account. Flow 2: AI-Powered Scheduling via WhatsApp This part triggers when the client replies to the initial message. WhatsApp Trigger What it does: This node listens for incoming messages on your business's WhatsApp number. When a client replies, it starts this part of the workflow. Prerequisites: A configured WhatsApp Business Platform account. If node What it does: It acts as a simple filter. It checks if the incoming message text is empty. If it is (e.g., a status update), the workflow stops. If it contains text, it proceeds to the AI agent. AI Agent1 What it does: This is the main conversational brain for scheduling. It handles the back-and-forth chat with the client. How it works: Its prompt is highly detailed, instructing it to act as "Alex" and follow a strict procedure for scheduling. It has access to several "tools" to perform actions. Connected Nodes: Google Gemini Chat Model1: The language model that does the thinking. Postgres Chat Memory: Remembers the conversation history with a specific user (keyed by their WhatsApp ID), so the user doesn't have to repeat themselves. Tools: Know about the user enquiry, GET MANY EVENTS..., and Create an event. AI Agent Tools (What the AI can *do*) Know about the user enquiry (Google Sheets Tool): When the AI needs to know who it's talking to, it uses this tool. It takes the user's phone number and looks up their original enquiry details in the "Law Client Enquiries" sheet. GET MANY EVENTS... (Google Calendar Tool): When a client suggests a date, the AI uses this tool to check your Google Calendar for any existing events on that day to see if you're free. Create an event (Google Calendar Tool): Once a time is agreed upon, the AI uses this tool to create the event in your Google Calendar, adding the client as an attendee. Send message1 (WhatsApp) What it does: Sends the AI's response back to the client. This could be a confirmation that the meeting is booked, a question asking for their email, or a suggestion for a different time if the requested slot is busy. How it works: It sends the output text from AI Agent1 to the client's WhatsApp ID, continuing the conversation.
by EmailListVerify
Who is this template for? This template is designed for link building. When you reach out to some small blogs it is common for the owner to have an address like DomainName@gmail.com. This workflow will find such emails for you. What problem does this workflow solve? Get from a list of domain names to a list of email addresses. This is perfect to prepare a cold outreach campaign for link building. This workflow allows you to find email addresses with any extension. I recommend searching for Gmail as a starting Point. But you can also use workflow to check for other email providers. Pro-tip: Check the email provider used in the geography you target: Lapost.net for France Seznam.cz for Czechia What this workflow does This workflow will: Generate email candidates based on the domain name and root you are providing Check if those email addresses are valid using EmailListVerify ##Requirement This template uses: Google Sheet to handle input and output data EmailListVerify to discover email (from $0.05 per email) Setup (10 minutes) 1: Make a copy of the GoogleSheet template 2: In "[Input] pattern" sheet write the email extension you want to check. Gmail is a no-brainer. Depending on the location you target, you might want to include local email providers like laposte.net for France. 3: In "[Input] domain" put the domain for which you want to find email addresses. 4: Add your EmailListVerify API key to setting to the 3rd step 5: Update Google Sheet node to point to your copy of the template 6: Trigger the workflow
by Miha
This n8n template auto-enriches brand-new HubSpot contacts with company details. Each day it finds contacts created in the last 24 hours (skipping free email domains), researches the company from the contact’s email domain, and writes back clean fields—no manual lookup needed. Perfect for GTM teams that want better segmentation and faster personalization from day one. How it works A daily schedule trigger starts the workflow. HubSpot: Get recently created/updated contacts** pulls the newest records. A filter keeps only contacts: created within the last 24 hours whose email domain doesn’t contain gmail.com (adjust as needed). An AI research agent (Gemini + SerpAPI): extracts the company domain from the contact’s email searches the web and returns structured JSON: company_name, industry, headquarters_city, headquarters_country, employee_count, website, linkedin, description HubSpot: Add company info** updates the contact with the enriched fields. How to use Connect HubSpot on both HubSpot nodes (OAuth2). Connect SerpAPI (paste your API key). Connect Google Gemini (Google AI Studio API key). (Optional) Edit the agent prompt to fetch more/different fields. (Optional) Tweak the filter to include/exclude other domains. Activate the workflow to run daily. Requirements HubSpot** (OAuth2) for reading/updating contacts SerpAPI** for web search results Google Gemini** for company profiling and structured output Notes & customization Free domains:** Add more exclusions (e.g., yahoo.com, outlook.com) to reduce false positives. Confidence gating:** Require website + LinkedIn before writing to HubSpot, or route low-confidence results for manual review. Field mapping:** Extend the update step with additional properties (e.g., industry tags, HQ timezone). Frequency:** Switch the trigger to hourly for faster enrichment on high-volume inbound. Data hygiene:** Normalize employee count ranges and country names to your CRM picklists.
by Léo
How it works This workflow automates a full weekly monitoring and reporting cycle using AI. Scheduled Trigger** Every Monday at 9 AM, the workflow starts automatically. AI Agent Configuration** A system prompt defines the role, objectives, and behavior of your AI agent for web monitoring or research tasks. Language Model via OpenRouter** The agent uses a powerful model (e.g., DeepSeek from Perplexity) to generate relevant insights. Data Storage in Notion** The results are saved and updated directly in a connected Notion database. Email Dispatch** A summary report is automatically sent by email to predefined recipients. Customizable elements: - AI prompt and objectives - Trigger schedule - Target database and report structure - Email recipients and message content
by Kaden Reese
Daily ETH Wallet Balance & Holdings Alerts Never miss a snapshot of your (or others) ETH wallet, this workflow polls your wallet on a schedule, fetches balances and current ETH prices, formats a concise summary, and posts it to Discord (or email/Slack/Telegram). Easy to customize to track multiple wallets, tokens, or alert on thresholds. How it works Schedule Trigger - Runs on your cadence (default: morning and evening). Query Blockchain - Calls Etherscan (or another API) to get wallet balances and token holdings. Process Balances - Calculates totals and converts values using CoinGecko price lookups. Format Summary - Creates a readable report (holdings, USD value, % change, etc.). Deliver Alert - Sends the snapshot to Discord (swap in Slack/Telegram/email/webhook as needed). Quick setup notes Add your Etherscan (or preferred) API key and CoinGecko key where indicated. Set the wallet address(es) in the code node(s) supports one or many. Adjust the schedule, number of snapshots, and message format to suit your needs. Use cases / variations Single-wallet daily snapshot** - Quick morning/evening balances. Multi-wallet portfolio digest** - Aggregate several addresses into one report. Token breakdown** - Show ERC-20 token amounts and fiat values. Price/threshold alerts** - Ping when ETH or a token crosses a set price or % change. On-demand reporting** - Trigger via webhook or command to pull a live snapshot. NFT & token inventory** - Report owned collections and token counts. Tax / bookkeeping exports** - Add CSV output for record-keeping. Why use this Hands-off monitoring** - automated snapshots replace manual checks. Customizable** - swap APIs, add wallets, or change channels in minutes. Actionable** - get the data you need (holdings, fiat value, alerts) where you already work.