n8n CRM Integration: 3 Workflows You Can Build Today (With HubSpot Free, Airtable, or PostgreSQL)

A practical guide to building CRM automation with n8n, covering three real workflows, the Email Send node configuration for Gmail and Outlook, and an honest comparison of when n8n replaces a full CRM versus when it doesn't.

Most CRM automation tutorials assume you're running Salesforce or HubSpot Professional. That's not the reality for most small businesses. You're on HubSpot Free, or you've got an Airtable base acting as your contact database, or you're running PostgreSQL because a developer set it up and it just works.

n8n connects to all three. It charges per workflow execution, not per step, so a 15-node CRM workflow that runs 500 times a month costs the same as a 2-node one. That pricing model is why we run 50+ production workflows on it at Rain Automation, and it's why it makes sense for CRM automation specifically, where workflows tend to get complex fast. For a full breakdown of what n8n self-hosting costs at different production scales, including real server specs and monthly numbers, see the self-hosting cost analysis we published from our own stack.

This post covers three CRM workflows you can build in n8n today, walks through the Email Send node configuration that trips up most people, and gives you an honest framework for deciding whether n8n can replace your CRM or just sit alongside it.

If you're new to n8n CRM automation, start with our n8n CRM Integration Tutorial for Small Businesses for the step-by-step setup before returning to this overview. Before diving in, if you're evaluating which connection approach fits your stack, this guide on CRM integration patterns covers webhook, API, and native connector approaches side by side.

Three CRM Workflows You Can Build in n8n Today

1. Contact Sync From Form Submissions via Webhook

This is the most common starting point. A form gets submitted on your website, and the contact needs to land in your CRM without manual data entry.

The workflow looks like this:

  • Trigger: Webhook node receives the form POST data (name, email, phone, source)
  • Transform: Set node maps form fields to your CRM's field names
  • Dedup check: Query your CRM backend to see if this contact already exists (by email)
  • Create or update: If new, create the contact. If existing, update with the latest info and log the new form submission as an activity
  • Notify: Send a Slack message or email to the sales owner

The dedup step is what separates a real workflow from a toy demo. Without it, you'll have duplicate contacts within a week. In n8n, you handle this with an IF node after the lookup query: if the query returns results, route to the Update path. If empty, route to Create.

This workflow works identically whether your backend is HubSpot, Airtable, or PostgreSQL. The only thing that changes is the node you use for the CRM operations.

2. Automated Follow-Up Sequences Triggered by Inactivity

This is the workflow that actually moves the needle on revenue, and it's the one most small businesses don't have.

The logic: if a lead hasn't had any activity in X days (no emails opened, no calls logged, no deal stage change), trigger an automated follow-up sequence.

  • Trigger: Schedule node runs every morning at 8 AM
  • Query: Pull all contacts from your CRM where last_activity_date is older than your threshold (7 days, 14 days, whatever fits your sales cycle)
  • Filter: Exclude contacts already in an active sequence, or those marked as closed-lost
  • Send: Use the Email Send node (more on configuration below) to fire the first follow-up email
  • Log: Write the follow-up activity back to the CRM so the rep knows it happened

Here's the detail that matters: on HubSpot Free, you don't have workflow webhook triggers. Your n8n workflow has to poll. That means the Schedule trigger queries the HubSpot Search API (GET /crm/v3/objects/contacts) with a filter for lastmodifieddate before your threshold. Run it every 5 minutes during business hours, or once daily for less aggressive follow-up cadences.

On PostgreSQL, this is a straightforward SQL query:

SELECT * FROM contacts
WHERE last_activity_at < NOW() - INTERVAL '7 days'
AND status NOT IN ('closed-lost', 'in-sequence')
ORDER BY last_activity_at ASC
LIMIT 50;

On Airtable, you'll use the Search Records operation with a formula filter like AND(DATETIME_DIFF(NOW(), {Last Activity}, 'days') > 7, {Status} != 'Closed Lost').

3. Deal Stage Transition Notifications

When a deal moves from "Proposal Sent" to "Negotiation," or from "Negotiation" to "Closed Won," the right people need to know immediately. Not tomorrow. Not when someone checks the CRM.

  • Trigger: Webhook (if your CRM supports it) or Schedule polling (for HubSpot Free)
  • Detect change: Compare the current deal stage against the previous value stored in n8n's static data or a Postgres table
  • Route: Switch node sends different notifications based on the new stage
  • Notify: Slack message for the sales team on deal progression, email to the operations team on Closed Won (so they can start onboarding), manager alert on deals stuck in the same stage for 14+ days

The stuck-deal alert is the one that pays for itself. A deal sitting in "Proposal Sent" for three weeks without movement is a dead deal walking. Surfacing that automatically means your manager can intervene before it's too late. For a look at where HubSpot's native deal stage alert capabilities hit their ceiling and when a custom pipeline makes more sense, see this breakdown.

The n8n Email Send Node: Configuration That Actually Works

The Email Send node (n8n-nodes-base.emailsend) is the most-searched n8n topic we see in our analytics, and for good reason. SMTP configuration has more failure modes than most people expect. For a full breakdown of every parameter the node accepts, Rain's complete n8n-nodes-base.emailsend reference guide covers credentials, operations, options, and the Send and Wait response types in one place.

For a complete walkthrough with screenshots, see our n8n Send Email Node: Complete Configuration Guide. Here's the summary of what you need to know for each provider. If you're weighing the Send Email node against the Gmail or Outlook nodes before getting into SMTP setup, see which n8n email node fits your workflow for a side-by-side breakdown.

Generic SMTP Setup

Every SMTP configuration needs four things:

  • Host: Your mail server (e.g., smtp.gmail.com, mail.yourdomain.com)
  • Port: 465 (SSL) or 587 (STARTTLS)
  • User: Your email address
  • Password: Your email password (or app-specific password)

Turn SSL on for port 465. Turn it off for port 587 (STARTTLS handles encryption at that port).

Multiple recipients go in the To, CC, or BCC fields as comma-separated addresses. Under the hood, n8n uses nodemailer, so standard email formatting works.

Gmail SMTP

Gmail requires a few extra steps that trip people up:

  1. Enable 2-Step Verification on your Google account (Security settings)
  2. Generate an App Password at Google Account > Security > 2-Step Verification > App Passwords
  3. Use smtp.gmail.com as the host, port 465, SSL on
  4. Your username is your full Gmail address. The password is the 16-character App Password, not your regular Google password

Using your regular Gmail password will fail with an authentication error. Google deprecated "less secure app access" entirely. The App Password is the only path that works for SMTP. If you want to connect Gmail to your n8n workflows using OAuth2 instead, our OAuth2 setup guide for the n8n Gmail node walks through each Google Cloud Console step and includes the fix for the 7-day token expiry that trips up most self-hosted deployments.

Outlook and Microsoft 365

This is the one that catches people off guard. Microsoft is retiring Basic Authentication for SMTP in Exchange Online. The default-off date for existing tenants is December 2026, but many organization admins have already disabled it. If your tenant is already on the new default and you try the old configuration (host: smtp.office365.com, port: 587, your regular password), you'll get:

Authentication unsuccessful, basic authentication is disabled

The fix is straightforward but requires a different approach: don't use the Email Send node for Outlook. Use the Microsoft Outlook node (n8n-nodes-base.microsoftOutlook) instead, which authenticates via OAuth 2.0. You'll register an app in Azure AD, grant Mail.Send permissions, and configure the OAuth2 credential in n8n. It takes about 10 minutes to set up, and it works reliably after that.

For the full OAuth setup walkthrough, check our Email Send node tutorial.

Common SMTP Errors and Fixes

Error Cause Fix
connect ETIMEDOUT Your VPS provider is blocking the SMTP port at the network level Open port 465 or 587 in your cloud firewall rules
SSL routines:ssl3_get_record:wrong version number Port and encryption mismatch Port 465 needs SSL on. Port 587 needs SSL off (STARTTLS)
Client network socket disconnected before secure TLS connection Docker or nginx reverse proxy TLS conflict Set environment variable N8N_SMTP_STARTTLS=off
Authentication unsuccessful, basic authentication is disabled Microsoft deprecated Basic Auth Switch to the Microsoft Outlook node with OAuth 2.0

Integration Options: Three CRM Backends for n8n

Here's where this post differs from every other n8n CRM guide: instead of covering Salesforce and HubSpot Enterprise, we're covering the backends small businesses actually use.

HubSpot Free

Authentication: OAuth 2.0 or HubSpot Private Apps (Private Apps are easier for self-hosted n8n since you don't need a public OAuth callback URL). HubSpot deprecated regular API keys, so don't use those even though the n8n UI still shows the option.

What works on Free:

  • Create, update, and delete contacts, companies, and deals
  • Read contact lists and engagement history
  • Form submission to HubSpot contact creation via n8n webhook
  • Upsert patterns (create-or-update) using the n8n HubSpot node
  • Lead enrichment via HubSpot Breeze Intelligence (see this walkthrough for the complete n8n workflow that fills in company size, industry, and role data automatically)

What doesn't work on Free:

  • Webhook triggers from HubSpot (requires Professional plan). Your n8n workflow must poll the Search API on a schedule
  • Some workflow triggers require Professional or Enterprise
  • API rate limits: 10 requests/second, 40,000 requests/day

The polling pattern is simple: use a Schedule trigger, query GET /crm/v3/objects/contacts filtered by createdAfter or lastmodifieddate, and store the latest timestamp in n8n's static data so you only process new records each run.

Airtable

Airtable works well as a lightweight CRM backend, especially if your team is already comfortable with the spreadsheet-like interface.

Authentication: Personal Access Token (PAT). Airtable deprecated API keys entirely. Generate a PAT at airtable.com/create/tokens with data.records:read and data.records:write scopes. Copy the token immediately because Airtable only shows it once.

Available operations in n8n: Create Record, Update Record, Upsert (create or update), Delete Record, Search Records, Get Record, Get Many Bases, Get Base Schema.

CRM pattern: Create an Airtable base with tables for Contacts, Deals, and Activities. Use a Webhook trigger in n8n to capture form submissions, write to Airtable via the Create Record operation, then trigger follow-up emails via the Email Send node. The visual interface means your sales team can view and edit contacts directly in Airtable without needing a separate CRM UI.

PostgreSQL

If you want full control, SQL flexibility, and zero per-seat licensing costs, PostgreSQL as your CRM backend is hard to beat.

Authentication: Standard database credentials (host, port, database name, user, password). n8n also supports SSH tunneling for remote Postgres connections.

Available operations: Execute Query, Insert, Update, Delete, Select. You can run any SQL, including joins across tables, aggregations, and complex filtering that would require a paid CRM tier.

CRM pattern: Build a contacts table, deals table, and activity_log table. n8n webhook receives the form submission, runs an INSERT (or upsert with ON CONFLICT), does a dedup check, and triggers the follow-up sequence. Use parameterized queries (n8n's Query Parameters field) to prevent SQL injection.

Query batching options: Single Query (all items at once), Independently (one query per item for granular error handling), or Transaction (all-or-nothing with rollback).

The tradeoff is obvious: PostgreSQL gives you the most power and the lowest recurring cost, but you need someone technical to set up and maintain the schema. If that's you (or you have a developer), it's the best option. If not, Airtable is the pragmatic middle ground.

When to Use n8n vs. a Full CRM

Here's the honest answer that other n8n tutorials won't give you: n8n is not a CRM. It has no contact management UI, no pipeline board, no built-in reporting dashboard. It's an automation layer.

n8n makes sense when:

  • You already have a CRM (even a free one) and need to automate the workflows around it: syncing contacts, triggering follow-ups, sending notifications, connecting to other tools
  • You're using Airtable or PostgreSQL as your contact database and need the automation logic that a CRM's built-in workflows would normally handle
  • Your Zapier bill is growing because you're building multi-step CRM workflows and getting charged per step. n8n charges per execution, not per step. A 15-node workflow costs the same as a 2-node workflow per run
  • You need integrations that your CRM doesn't natively support (custom APIs, internal databases, niche tools)

For a detailed cost comparison of n8n against Zapier and Make using real-world execution data from 10,000+ workflow runs, that breakdown covers per-task pricing, reliability numbers, and when each platform's cost model starts working against you.

A full CRM makes more sense when:

  • Your team needs a visual pipeline board and daily contact management UI. n8n doesn't provide this
  • You have non-technical salespeople who need to log calls, take notes, and manage their pipeline without touching automation tools
  • You need built-in email tracking (opens, clicks, replies) at the individual rep level
  • Your sales process requires compliance features like call recording, audit trails, or territory management
  • You're a solo operator under 50 contacts. A spreadsheet or free HubSpot account is simpler than setting up n8n

The best setup for most small businesses: Use a CRM for the human-facing work (pipeline view, contact notes, call logging) and n8n for everything that should happen automatically (contact sync, follow-up triggers, notifications, cross-system data flow). They complement each other. Trying to make n8n replace the CRM entirely works only if everyone on your team is comfortable with a database backend and no visual interface.

Get This Built for Your Business

If you've read this far, you probably fall into one of two categories: you want to build these workflows yourself, or you want someone who's already built 50+ n8n automations to set it up right the first time.

For the DIY path, start with the two deep-dive guides:

If you'd rather skip the learning curve and get a CRM automation system built to your exact workflow, schedule a call with us. We'll map out your pipeline, recommend the right backend (HubSpot, Airtable, or Postgres), and build the n8n workflows that keep your leads from falling through the cracks. See what a custom CRM build looks like at /custom-development, or read what happens each week of a custom CRM engagement from scoping to go-live.

Schedule a Call


Some links in this post are affiliate links. If you sign up through them, Rain Automation earns a referral commission at no extra cost to you. We only recommend tools we use in production.