by Anchor
Enrich Profiles directly in Google Sheet ! This n8n template shows how to enrich Google spreadsheet with LinkedIn profiles automatically using the Apify LinkedIn Profile Enrichment actor from Anchor. It will create a new sheet with the enriched data. You can use it to build lead enrichment workflows, update your CRM records, or personalize outreach campaigns β all directly inside n8n. Who is this for Sales Teams: Build targeted B2B lead lists fast. Recruiters: Gather candidate data from LinkedIn profiles. Growth Marketers: Enrich outreach lists with LinkedIn info. Researchers: Analyze industries, roles, and company trends. CRM Builders: Auto-populate contact data from LinkedIn. Lead-Gen Agencies: Deliver qualified prospect lists at scale. How it works The workflow starts with a list of LinkedIn profile URLs (you need to set the Google sheet URL after you added the Google credentials from the n8n settings). The Apify node runs the LinkedIn Profile Enrichment actor to extract structured data such as name, title, company, location, and more. The results are then stored in a new Google Sheet How to use In Google Sheet: Create a Google sheet, rename the sheet "profiles" and add all the LinkedIn URLs you want to enrich (one url per row) In this Workflow: Open the "Set google sheet URL & orginial sheet name" and replace the example Google sheet URL, and the name of the sheet where your LinkedIn URLs are In the n8n credentials: Connect your Google Sheet account, with read and write privileges for google sheets Connect to your Apify account In Apify: Sign up for this Apify Actor Requirements Apify account with access to the LinkedIn Profile Enrichment actor LinkedIn profile URLs to process Need Help? Open an issue on directly on ApifyοΏΌ! Avg answer in less than 24h Happy Enrichment!
by Matthieu
π N8N Security Audit Report - Automated Weekly Email π― What does this workflow do? This workflow automatically generates and emails a comprehensive security audit report for your N8N instance every week. It identifies potential security risks related to: Credentials** π : Exposed or insecure credentials Nodes** π§© : Sensitive nodes (Code, HTTP Request, SSH, FTP, etc.) Instance settings** π’ : Global security configuration Community nodes** π¦ : Third-party nodes that may pose risks The report includes direct links to affected workflows, execution statuses, and actionable recommendations. β¨ Key Features π Smart Risk Assessment Calculates overall risk level: π© Low / π§ Moderate / π₯ High Tracks unique credentials (not just total occurrences) Provides detailed breakdown by node type π Direct Workflow Links Clickable links to each workflow mentioned Shows last execution status (π’ success / π΄ failed) Displays execution timestamps π Bilingual Support Full support for French and English Switch language with a single variable π§ Beautiful HTML Email Clean, professional formatting Color-coded risk levels Emoji icons for easy scanning π Quick Setup (5 minutes) 1οΈβ£ Configure Credentials N8N API**: Generate an API key in your N8N settings Gmail OAuth2**: Set up OAuth2 for Gmail sending 2οΈβ£ Set Your Variables Edit the "Set Config Variables" node: { "email_to": "your.email@domain.com", "project_name": "My-N8N-Project", "server_url": "https://n8n.yourdomain.com", // NO trailing slash! "Language": "EN" // or "FR" } 3οΈβ£ Test & Activate Click "Execute Workflow" to test Check your email inbox Activate for weekly automation π§ Example Report Output Subject: π Audit Report My-Project β Risk π§ Moderate Content: π Summary β’ Credentials involved: 8 (5 unique) β’ Nodes involved: 12 π» code: 4 π httpRequest: 3 π ssh: 2 β’ Community nodes: 1 β’ Overall risk level: π§ Moderate π Credentials Risk Report πΉ Credentials with full access π My AWS Credentials π Database Admin π Workflow: Data Processing Pipeline π’ (25-10-2024 06:15 β 06:16) π» Process Data π API Call π§© Nodes Risk Report [...detailed node analysis...] π¨ Customization Options Change Schedule Modify the "Schedule Trigger" node to run: Daily at 8 AM Monthly on the 1st Custom cron expression Add Recipients Add multiple emails in the Gmail node's toList parameter Adjust Risk Thresholds Edit the JavaScript in "Format Audit Report" nodes to customize when risk levels change Use Different Email Service Replace Gmail node with: SMTP Microsoft Outlook SendGrid Any email service N8N supports π‘ Use Cases β Compliance Monitoring: Track security posture for audits β Team Awareness: Keep your team informed of security status β Change Detection: Notice when new risky nodes are added β Best Practices: Get recommendations to improve security β Multi-Environment: Run separate instances for dev/staging/prod π§ Technical Details Nodes Used: 8 Credentials Required: 2 (N8N API + Gmail OAuth2) External Dependencies: None N8N Version: Compatible with latest N8N versions Execution Time: ~10-20 seconds π Requirements N8N instance with API access Gmail account (or other email service) N8N API key with audit permissions Valid SSL certificate for workflow links (recommended) π Troubleshooting Empty report? β Check your N8N API key has audit permissions Workflow links don't work? β Verify server_url is correct and has no trailing slash No execution status shown? β Workflows must have been executed at least once Wrong language displayed? β Set Language to exactly "FR" or "EN" (uppercase) π Why This Template? Unlike basic monitoring tools, this workflow: β Provides context-aware security analysis β Links directly to affected workflows β Shows real execution data (not just theoretical risks) β Calculates unique credential exposure (not just counts) β Supports bilingual reports β Delivers actionable recommendations π€ Feedback & Support Found this helpful? Please rate the template! Have suggestions? Drop a comment below. Pro tip: Combine this with N8N's native alerting for real-time incident response! Tags: #security #audit #monitoring #compliance #automation #email #reporting #credentials #governance π License MIT - Feel free to modify and share!
by Trung Tran
Automated Slack Channel Audit Workflow with Chatbot and GPT-4.1 > Automatically scans all public Slack channels weekly to detect those with no activity in the past 30 days, then generates and sends a detailed inactivity report to admins for review and action. Helps keep your Slack workspace clean, relevant, and clutter-free. π§βπΌ Whoβs it for This workflow is built for: Slack Workspace Admins** IT or Ops Managers** HR/Compliance Teams** β¦who want to maintain a clean and active Slack workspace by regularly reviewing inactive channels. βοΈ How it works / What it does This automated n8n workflow: Runs weekly via a scheduled trigger. Fetches all public Slack channels in the workspace. Checks message history of each channel for activity. Filters channels that have had no discussion in the past 30 days. Generates a Slack-friendly report with key metadata (name, member count, purpose, etc.). Sends the report to a Slack channel for admin review and possible action (e.g., archive, engage, repurpose). π οΈ How to set up Configure your Slack App Go to https://api.slack.com/apps β Create App Add the following OAuth scopes to your Bot Token: channels:read β to get list of public channels channels:history β to fetch message history users:read β to personalize report (optional) chat:write β to post the report to a Slack channel Install the app in your workspace Copy the Bot User OAuth Token Add it to your n8n Slack credentials under "Slack API" Customize the schedule in the "Weekly Schedule Trigger" node to control report frequency. Connect your Slack workspace to the workflow using your credentials. β Requirements n8n (self-hosted or cloud) Slack App with: channels:read channels:history chat:write Active channels and member data A designated Slack channel to receive the report π§ How to customize the workflow | Component | Customization Options | |----------|------------------------| | β±οΈ Schedule Trigger | Change to daily, monthly, etc. | | π Inactivity Threshold | Modify Filter channel with last discussion 30 days ago to 60/90 days | | π Report Formatting | Tweak the Consume slack report node to change formatting or summary | | π¬ Output Channel | Change target channel in Send Channel Inactivity Report | | π« Auto-archiving | Add logic to archive channels with 0 members or activity (using Slack API) | π Slack Permissions Reference | Action | Slack Scope Required | |--------|-----------------------| | Get all public channels | channels:read | | Get message history of a channel | channels:history | | Post message to Slack | chat:write | | Get user info (optional) | users:read |
by Harshil Agrawal
This workflow allows you to create a quote and a transfer, execute the transfer and get the information of the transfer using the Wise node. Wise node: This node will create a new quote in Wise. Wise1 node: This node will create a new transfer for the quote that we created in the previous node. Wise2 node: This node will execute the transfer that we created in the previous node. Wise3 node: This node will return the information of the transfer that we executed in the previous node.
by Harshil Agrawal
This workflow allows you to create, update, and get an object from Bubble. Bubble node: This node will create a new object of the type Doc in Bubble. If you want to create an object with a different type, use that type instead. Bubble1 node: This node will update the object that we created using the previous node. Bubble2 node: This node will retrieve the information of the object that we created earlier.
by Gaurav
Automated Email Verification for Google Sheets This n8n template demonstrates how to automatically validate email addresses from your Google Sheets using a reliable email verification API. Perfect for cleaning contact lists, validating leads, and ensuring email deliverability before marketing campaigns. Use cases are many: Lead qualification for sales teams, contact list cleaning for marketing, subscriber validation for newsletters, or CRM data hygiene maintenance! Good to know The rapid-email-verifier API is free for up to 1,000 verifications per month Each email verification typically takes less than 500ms to complete The workflow runs automatically every hour, checking for new entries Only processes emails that haven't been verified yet, preventing duplicate API calls How it works Monitor Google Sheets: The trigger watches your spreadsheet for new email entries every hour Smart Filtering: Only emails with empty "Email Verified" columns are processed to avoid duplicates Batch Processing: Emails are processed one by one to respect API rate limits and ensure reliability API Verification: Each email is sent to the rapid-email-verifier service which returns validation status Results Update: The original sheet is updated with verification results (valid/invalid/unknown) using the Serial Number as a match key The verification accuracy is consistently above 95% and shows excellent detection of invalid, disposable, and risky email addresses! How to use The Google Sheets trigger monitors your spreadsheet automatically, but you can also test manually Simply add new rows with email addresses to your connected Google Sheet Leave the "Email Verified" column empty for new entries The workflow will automatically process and update the verification status Technically, you can process unlimited emails, but consider API rate limits and costs for large batches. Requirements Google Sheets account** with a spreadsheet containing columns: SrNo, Name, Email, Email Verified Google Sheets credentials** configured in n8n for both trigger and update operations Internet connection** for API access (no additional API key required for rapid-email-verifier) Customising this workflow Email verification can be enhanced for many use-cases: Add webhook trigger** for real-time verification when leads are captured Connect to CRM systems** like HubSpot or Salesforce for direct integration Add email categorization** to separate personal vs business emails Include bounce detection** by connecting to your email service provider Set up notifications** to alert when invalid emails are detected in important lists This template is perfect for marketing managers, sales professionals, data analysts, and anyone managing contact databases who needs reliable email validation!
by David Olusola
ποΈ Auto-Create Airtable CRM Records for Zoom Attendees This workflow automatically logs every Zoom meeting attendee into an Airtable CRM β capturing their details for sales follow-up, reporting, or onboarding. βοΈ How It Works Zoom Webhook β Captures participant join event. Normalize Data β Extracts attendee name, email, join/leave times. Airtable β Saves/updates record with meeting + contact info. π οΈ Setup Steps 1. Zoom Create a Zoom App with meeting.participant_joined event. Paste workflow webhook URL. 2. Airtable Create a base called CRM. Table: Attendees. Columns: Meeting ID Topic Name Email Join Time Leave Time Duration Tag 3. n8n Replace YOUR_AIRTABLE_BASE_ID + YOUR_AIRTABLE_TABLE_ID in the workflow. Connect Airtable API key. π Example Airtable Row | Meeting ID | Topic | Name | Email | Join Time | Duration | Tag | |------------|--------------|----------|--------------------|----------------------|----------|----------| | 999-123-456 | Sales Demo | Sarah L. | sarah@email.com | 2025-08-30T10:02:00Z | 45 min | New Lead | β‘ With this workflow, every Zoom attendee becomes a structured CRM record automatically.
by Entech Solutions
Short Description Automatically exports customer records from NetSuite and syncs them into Salesforce β creating or updating Accounts and Contacts depending on whether the NetSuite record represents a company or an individual. Who is this for / Use case This template is designed for businesses and integration developers who: Use NetSuite as their ERP or CRM system. Need to automatically sync customer data (both companies and individuals) into Salesforce. Want a reliable, scalable solution that supports pagination and upserts. Prefer a ready-to-use, easily customizable workflow built on n8n. How it works Initialize pagination offset. Fetch customer records from NetSuite in batches via REST API. Split the retrieved array into individual items. Check record type β company or individual. Upsert to Salesforce: For companies β creates/updates Account records. For individuals β creates/updates both Account and Contact (linked to the Account). Merge results from both branches. Update pagination offset for the next batch. Repeat until all records are processed, then end the workflow. Setup / Configuration Import the workflow into your n8n instance. Set your NetSuite and Salesforce credentials. Ensure your Salesforce Account/Contact objects have a matching External ID field. (Optional) Adjust mapping fields or filters to your data needs. Execute manually or trigger on a schedule (e.g., daily sync).
by Moe Ahad
How it works: This flow checks the user's Google calender of events from Sunday to Saturday of current week, to determine how many hours have been booked each day. If a day has over 6 hours booked, it blocks out the remaining work hours for dedicated focus time. The flow assumes 8 work hours per day. For example, if the Monday of this week has 6.5 hours booked (for meetings, tasks etc.), it automatically blocks off the remaining 1.5 hours for dedicated focus time, so external users can see and not book new events for those hours. Benefit: Prevents users from being overloaded with meetings and gives time for dedicated deep work/focus time. Set up steps: Update start time of the "Schedule Trigger," this is the time the flow will run daily. Note: the workflow assumes a 9AM-5PM work schedule so it's recommended to schedule the flow to trigger before 9AM. Update the credentials for the "Get Full Weeks Events" and "Create Focus Time Event" nodes. Use your Google credentials so the workflow can connect to your Google calendar.
by Rahul Joshi
Description Automatically track Stripe invoices and create Google Calendar reminders for upcoming due dates. This workflow ensures you never miss a payment deadline by running daily checks, filtering invoices due within the next 7 days, and adding them to your calendar with invoice details. β°π³π What This Template Does Runs daily at 8:00 AM using a scheduled trigger. β° Fetches draft invoices from Stripe. π³ Splits invoice data into individual records for processing. π Filters invoices due within the next 7 days. π Prevents duplicates by checking against existing calendar events. π Creates Google Calendar events for valid invoices with details (ID, customer, amount). π Key Benefits Automated invoice due date reminders with no manual effort. β‘ Avoids duplicate entries in Google Calendar. π‘οΈ Provides a clear overview of pending payments. π Saves time for freelancers, agencies, and finance teams. β±οΈ Keeps all payment reminders in one central place. π² Features Daily schedule with cron expression (0 8 * * *). Stripe API integration to fetch draft invoices. Smart filtering: only invoices with due dates within 7 days are selected. Google Calendar integration to check existing events and avoid duplicates. Detailed calendar events with invoice ID, amount due, and customer email. Customizable reminders β add customer name, invoice link, or change times. Requirements n8n instance (cloud or self-hosted). Stripe API credentials with invoice read access. Google Calendar OAuth2 credentials with event write permissions. Access to the target Google Calendar (replace placeholder with your own). Target Audience Freelancers and solopreneurs managing invoices. π©βπ» Agencies tracking multiple client invoices. π’ Finance and accounting teams requiring automated reminders. π Businesses wanting to automate payment follow-ups. πΌ Remote teams centralizing billing schedules. π Step-by-Step Setup Instructions Configure Stripe API credentials in n8n. Add Google Calendar OAuth2 credentials with access to your target calendar. Replace the placeholder calendar ID (your-calendar@gmail.com) with your actual calendar. Import this workflow into n8n. Test the workflow by creating a test draft invoice in Stripe with a due date in the next 7 days. Verify the Google Calendar event is created with the invoice details. Enable the workflow to run daily and enjoy hands-free invoice tracking. β
by Robert Breen
Send a templated outreach email to new leads in a Google Sheet on a daily schedule, then mark each lead as contacted so they wonβt be emailed twice. Built with: Schedule Trigger β Google Sheets β Filter β Outlook Send Email β Google Sheets (append/update). Whoβs it for Teams that collect leads in Sheets and want automatic, once-per-lead outreach Solo founders/consultants running simple top-of-funnel follow-ups Anyone prototyping CRM-lite flows in n8n How it works / What it does Schedule Trigger runs daily (e.g., 09:00). Get rows (Google Sheets) pulls leads from your sheet. Filter keeps only rows where Contacted is empty. Outlook β Send a message emails each remaining lead (to = {{$json.Email}}). Google Sheets (appendOrUpdate) writes back Contacted = Yes (match on Email) to prevent re-sending. How to set up 1) Google Sheets (OAuth2) In n8n β Credentials β New β Google Sheets (OAuth2), sign in and grant access. In Get rows: select your Lead Source sheet (e.g., βNew Leadsβ). In Append/Update: select the sheet you want to mark as contacted (can be the same sheet or a CRM sheet). Make sure your sheet has at least: Email, Contacted (blank for new). 2) Outlook (Microsoft Graph) OAuth2 n8n Cloud (quick connect):** In Credentials β New β Microsoft Outlook OAuth2, choose Connect, sign in with your Microsoft account, and accept permissions. Self-hosted (Azure App Registration):** 1) Azure Portal β App registrations β New registration. 2) Add redirect URL: https://YOUR_N8N_URL/rest/oauth2-credential/callback. 3) API permissions (Delegated): offline_access, Mail.Send, User.Read. Grant admin consent if required. 4) Create a Client secret; copy Application (client) ID and Directory (tenant) ID. 5) In n8n, create Microsoft Outlook OAuth2 credential with those values and scopes: offline_access Mail.Send openid email profile. In the Send a message node, select that credential and keep To mapped to {{$json.Email}}. Customize Subject and Body to your brand (default provided). Requirements A Google Sheet of leads with an Email column (and an optional Contacted column). A Microsoft account with permission to send mail via Microsoft Graph (Outlook). How to customize the workflow Email content:** Edit subject/body (add variables like {{$json.FirstName}}). Send window:** Change Schedule Trigger time/interval. Idempotency:** Use the same sheet for read+write (match on Email) or separate source/CRM sheets. Logging:** Add a Sheet or Notion append step after send for an audit trail. Security & best practices No hardcoded secrets:* Always use *OAuth2 credentials** (Sheets & Outlook). Sanitize PII:* If publishing, *remove real spreadsheet IDs/URLs** and personal emails/phone numbers. Sticky notes are mandatory:* Add a *yellow sticky note** in the workflow with this description and a short setup checklist. Use neutral sticky notes for per-node tips. Troubleshooting No emails sent:** Ensure Contacted is blank for new rows and the Filter checks βis empty.β Auth errors (Outlook):** Reconnect credential; confirm Graph scopes and tenant consent. Sheets errors:** Re-select spreadsheet/tab; verify headers (Email, Contacted). Duplicates:* Confirm *Append/Update* uses *matching column = Email**. Tags & category Category: Sales & CRM Tags: outreach, follow-up, google-sheets, outlook, schedule, dedupe, cold-email Changelog v1.0.0 β Initial release: scheduled outreach, Outlook email, de-dupe via Contacted = Yes. Contact Need help customizing (personalization, rate-limits, CRM sync, bounce checks)? π§ rbreen@ynteractive.com π Robert Breen β https://www.linkedin.com/in/robert-breen-29429625/ π ynteractive.com β https://ynteractive.com
by Rivers Colyer
Whoβs it for: SALES teams and AGENCIES that want to automatically send call summaries to their CRM. This flow is best suited for agencies and businesses that use ZoomInfo Chorus AI to capture and analyze calls, and HubSpot as their main CRM system for managing client data. How it works / What it does: The flow runs every hour and checks Chorus for new call summaries. If new summaries are found, they are added as notes to the corresponding HubSpot company record. If the company does not exist in HubSpot, the summary will be skipped. If the engagement already exists as a note in HubSpot, it will also be skipped. In short: every hour, Chorus β HubSpot notes sync (only when unique & matched). Workflow Overview Hereβs how the logic works, step by step: Triggers Run every hour (scheduled) or When clicking Execute workflow (manual testing). Fetch from Chorus.AI Get Chorus Engagement per last day: requests new engagements from the last 24h. Pagination is handled automatically (up to 15 requests). Merge paginated engagements: combines all pages into a single list. Filter items with empty meeting_summary: removes calls without summaries. Loop through engagements Loop Over Engagements: processes each engagement one by one. Find matching HubSpot company Search Company In HubSpot By Name: looks for an exact match with account_name. If company exists: continues only if a match is found. Otherwise β Skip, if company not found. Check for existing notes Search notes: searches HubSpot for a note containing the engagement_id. If note not exist: continues only if no duplicate is found. Otherwise β Skip, if note already exists. Create a new HubSpot note Create Note Payload: builds a formatted note body with: Call date/time Summary text Link to call recording Engagement ID Create Note: inserts the note into HubSpot, associated with the matched company. Loop continues After processing, the flow moves back to Loop Over Engagements until all are handled. Requirements Chorus AI account or an existing API Token. HubSpot account with the ability to create applications OR an existing App Token. How to set up: Generate a Chorus.AI API Token: Go to Settings β Personal Settings β API Access β Generate API Token. Save this token in a secure place. In your N8N instance, create new credentials with any name you prefer (e.g., Chorus.AI - API Token). Type: Header Auth Header Name: Authorization Header Value: your generated Chorus API Token Save the credentials. Create a HubSpot Application with the following access scopes: crm.objects.contacts.write crm.objects.companies.read Save the Access Token and Client Secret securely. The Access Token will be used in this flow. In your N8N instance, create new credentials with any name you prefer (e.g., HubSpot App Token). Type: HubSpot App Token App Token: paste the token from step 3 Save the credentials. Install this flow in your N8N instance (cloud or self-hosted). After installation, some nodesβGet Chorus Engagement per last day, Search Company In HubSpot By Name, Search notes, Create Noteβwill show errors. This is expected, as they need to be linked to your new credentials. Open the node Get Chorus Engagement per last day and update the credentials: Authentication: Generic Credential Type Generic Auth Type: Header Auth Header Auth: select the Chorus credentials you created in step 2. Open the node Search Company In HubSpot By Name and update the credentials: Authentication: Predefined Credential Type Credential Type: HubSpot App Token HubSpot App Token: select the credentials from step 4. Repeat step 8 for the node Search notes. Repeat step 8 for the node Create Note. Save your updated flow by clicking Save in the top-right corner. Run the workflow by clicking Execute Workflow to test if all credentials work correctly. Once confirmed, activate your flow by toggling the switch in the top-right corner. Thatβs it! π Your flow will now run every hour, syncing new Chorus call summaries to HubSpotβonly when the company names match and the engagement isnβt already logged.