n8n + ConvertKit Integration: 5 Email Marketing Workflows
The n8n ConvertKit integration makes it simple to automate your email marketing workflows without manual data entry or expensive Zapier subscriptions. Whether you're a course creator managing thousands of students, a SaaS founder nurturing trial users, or a content creator building your newsletter, connecting ConvertKit with n8n lets you automate subscriber management, sequence enrollment, tagging, and campaign triggers across your entire tech stack.
ConvertKit is built for creators who need powerful email automation without complexity. When you pair it with n8n's visual workflow builder and 400+ integrations, you can connect ConvertKit to your payment processors, CRMs, forms, databases, and analytics tools to build sophisticated marketing automations that would cost hundreds per month on other platforms.
Why Connect n8n with ConvertKit?
ConvertKit's native integrations cover the basics, but they don't handle complex multi-step workflows or custom business logic. The n8n ConvertKit integration lets you build automations that ConvertKit can't handle alone:
- Multi-source subscriber enrichment: Pull data from Stripe, Airtable, Google Sheets, and your CRM to create detailed subscriber profiles with accurate tags and custom fields
- Conditional sequence enrollment: Automatically add subscribers to different email sequences based on purchase history, engagement scores, form responses, or API data
- Dynamic list segmentation: Create and update ConvertKit segments in real-time based on database queries, webhook data, or third-party API responses
- Cross-platform campaign triggers: Launch ConvertKit broadcast campaigns when specific events occur in Slack, Discord, your SaaS app, or support system
- Automated list hygiene: Remove unengaged subscribers, update invalid email addresses, and manage unsubscribes across multiple platforms automatically
Unlike Zapier's ConvertKit integration (which costs $29.99/month minimum), n8n is open-source and runs on n8nautomation.cloud starting at $15/month with unlimited workflow executions. You own your automation infrastructure and never hit arbitrary execution limits.
Setting Up the ConvertKit Integration in n8n
Before building workflows, you need to connect your ConvertKit account to n8n. The setup takes about 2 minutes:
Step 1: Get your ConvertKit API credentials
- Log into your ConvertKit account
- Navigate to Settings → Advanced → API & Webhooks
- Copy your API Secret (not your API Key — n8n uses the Secret for authentication)
Step 2: Add ConvertKit credentials in n8n
- Open your n8n instance (or start a free trial at n8nautomation.cloud)
- Click Credentials in the left sidebar
- Click New Credential and search for "ConvertKit"
- Paste your API Secret and click Save
Step 3: Test the connection
- Create a new workflow and add a ConvertKit node
- Select your credential and choose "Get All Subscribers" as the operation
- Click Execute Node — if you see your subscriber list, the connection works
Tip: ConvertKit credentials are workspace-wide in n8n. Once you add them, every workflow in your instance can use the same connection without re-authenticating.
Workflow 1: Auto-Tag Subscribers Based on Website Activity
Track what content your subscribers engage with and automatically tag them in ConvertKit based on pages they visit. This workflow monitors website activity via webhooks and applies relevant tags for better segmentation.
How it works:
- Webhook node: Receives POST requests from your website tracking script (Google Tag Manager, Segment, or custom JavaScript) containing email address and page URL
- Function node: Parses the page URL to extract topic keywords (e.g., "/blog/email-marketing" → tag: "interested-in-email")
- ConvertKit node (Get Subscriber): Looks up the subscriber by email address to get their subscriber ID
- IF node: Checks if the subscriber exists in ConvertKit
- ConvertKit node (Add Tag): Applies the relevant tag to the subscriber based on the page they viewed
Real-world use case: A course creator tracks which sales pages visitors view. When someone visits the "Advanced Facebook Ads" page, they're automatically tagged in ConvertKit and added to a nurture sequence for that specific course.
Node configuration:
- Webhook Trigger: Set to POST, path:
/convertkit-tag - Function:
const url = $json.page_url; const tag = url.includes('pricing') ? 'viewed-pricing' : 'general-interest'; return { email: $json.email, tag }; - ConvertKit (Get Subscriber): Resource: Subscriber, Operation: Get, Email:
{{ $json.email }} - ConvertKit (Add Tag): Resource: Tag, Operation: Add to Subscriber, Subscriber ID:
{{ $json.id }}, Tag ID: Select from dropdown or use expression
Workflow 2: Sync Stripe Customers to ConvertKit Sequences
Automatically enroll new paying customers into ConvertKit email sequences based on what they purchased. This workflow listens for Stripe payment events and adds customers to product-specific onboarding sequences.
How it works:
- Webhook node: Receives Stripe webhook events (configure in your Stripe dashboard: Developers → Webhooks → Add endpoint)
- IF node: Filters for
checkout.session.completedevents only - Stripe node (Get Checkout Session): Retrieves full customer details including email and purchased items
- Switch node: Routes to different branches based on product ID or price ID
- ConvertKit node (Add Subscriber to Sequence): Enrolls the customer in the appropriate email sequence (e.g., "SaaS Onboarding" or "Course Welcome Series")
- ConvertKit node (Add Tag): Tags the subscriber with their purchase type for segmentation
Real-world use case: A SaaS company sells three pricing tiers. When someone subscribes to the Pro plan via Stripe, they're automatically added to a ConvertKit sequence that teaches advanced features, while Starter plan customers get basic onboarding emails.
Node configuration:
- Webhook Trigger: Set to POST, Authentication: None (Stripe verifies via webhook signature)
- IF:
{{ $json.type === 'checkout.session.completed' }} - Stripe (Get Checkout Session): Session ID:
{{ $json.data.object.id }} - Switch: Route based on
{{ $json.metadata.plan_type }}or{{ $json.amount_total }} - ConvertKit (Add Subscriber to Sequence): Email:
{{ $json.customer_email }}, Sequence ID: Select your sequence from dropdown
Tip: Use ConvertKit's "Add Subscriber to Sequence" operation with the "Subscribe" option enabled to ensure the subscriber is created if they don't already exist in your account.
Workflow 3: Segment Subscribers from Google Forms Responses
Collect detailed information via Google Forms and automatically create ConvertKit segments based on responses. Perfect for lead magnets, surveys, and customer research that require follow-up campaigns.
How it works:
- Google Forms Trigger: Fires when a new form response is submitted
- Function node: Maps form fields to ConvertKit custom fields and calculates any derived values (e.g., interest score based on multiple checkbox selections)
- ConvertKit node (Create/Update Subscriber): Adds the subscriber with custom field data
- IF node: Checks form responses to determine which segment they qualify for
- ConvertKit node (Add Tag): Applies tags based on their responses (e.g., "enterprise-interested", "wants-demo", "budget-conscious")
- Slack node (optional): Notifies your sales team when a high-intent lead submits the form
Real-world use case: A marketing agency uses a Google Form to qualify leads. Respondents who select "$10k+ monthly budget" are tagged "high-value-lead" in ConvertKit and immediately added to a personalized nurture sequence, while smaller budgets get a self-service resource sequence.
Node configuration:
- Google Forms Trigger: Select your form from the dropdown
- Function:
const budget = $json['What is your monthly marketing budget?']; return { email: $json['Email Address'], segment: budget.includes('10k+') ? 'enterprise' : 'smb' }; - ConvertKit (Create Subscriber): Email:
{{ $json.email }}, Custom Fields: Map form responses to ConvertKit fields - IF:
{{ $json.segment === 'enterprise' }} - ConvertKit (Add Tag): Tag: "high-value-lead"
Workflow 4: Sync CRM Contacts to ConvertKit Email Sequences
Keep your CRM and email marketing platform in sync by automatically enrolling CRM contacts into ConvertKit sequences when they reach specific stages in your sales pipeline.
How it works:
- Webhook node or CRM Trigger: Monitors your CRM (HubSpot, Salesforce, Pipedrive, Airtable) for contact updates
- IF node: Checks if the contact moved to a specific pipeline stage (e.g., "Demo Completed", "Trial Started", "Proposal Sent")
- ConvertKit node (Get Subscriber): Checks if the contact already exists in ConvertKit
- IF node: Determines whether to create a new subscriber or update an existing one
- ConvertKit node (Add Subscriber to Sequence): Enrolls them in a stage-appropriate email sequence
- CRM node (Update Contact): Marks the contact record with a "Enrolled in Email Sequence" timestamp to prevent duplicate enrollment
Real-world use case: A B2B SaaS company manages leads in HubSpot. When a lead's status changes to "Trial Active", they're automatically enrolled in ConvertKit's 14-day trial nurture sequence that sends daily tips and feature highlights.
Node configuration:
- Webhook Trigger or HubSpot Trigger: Listen for contact property changes
- IF:
{{ $json.properties.lifecyclestage === 'opportunity' }} - ConvertKit (Get Subscriber): Email:
{{ $json.properties.email }} - ConvertKit (Add Subscriber to Sequence): Sequence ID: Your trial nurture sequence, Email:
{{ $json.properties.email }} - HubSpot (Update Contact): Contact ID:
{{ $json.vid }}, Property:convertkit_enrolled_date, Value:{{ $now }}
Workflow 5: Clean Your List by Removing Unengaged Subscribers
Maintain high deliverability and reduce costs by automatically unsubscribing or tagging subscribers who haven't engaged with your emails in 90+ days. This workflow runs on a schedule and processes your subscriber list in batches.
How it works:
- Schedule Trigger: Runs weekly or monthly (e.g., every Monday at 9 AM)
- ConvertKit node (Get All Subscribers): Retrieves your full subscriber list
- Function node: Filters subscribers who haven't opened or clicked an email in the last 90 days by checking the
created_atfield and absence of recent engagement data - IF node: Checks if the subscriber count exceeds zero
- ConvertKit node (Add Tag): Tags unengaged subscribers with "Unengaged-90-Days" for a re-engagement campaign attempt
- Wait node: Pauses for 14 days to allow the re-engagement campaign to run
- ConvertKit node (Get Subscriber): Checks if they've engaged since being tagged
- ConvertKit node (Unsubscribe): Removes subscribers who still haven't engaged after the re-engagement campaign
Real-world use case: A newsletter creator has 25,000 subscribers but only 8,000 open emails regularly. By automatically identifying and removing unengaged subscribers after a re-engagement attempt, they improve their sender reputation, reduce ConvertKit costs, and maintain a healthy 40%+ open rate.
Node configuration:
- Schedule Trigger: Cron expression:
0 9 * * 1(every Monday at 9 AM) - ConvertKit (Get All Subscribers): Return All: true
- Function:
const ninetyDaysAgo = new Date(Date.now() - 90*24*60*60*1000); return items.filter(item => new Date(item.json.created_at) < ninetyDaysAgo); - ConvertKit (Add Tag): Tag: "Unengaged-90-Days", Subscriber ID:
{{ $json.id }} - Wait: Amount: 14, Unit: Days
- ConvertKit (Unsubscribe Subscriber): Email:
{{ $json.email }}
Best Practices for ConvertKit Automation
Handle duplicate subscribers gracefully: Always use the "Get Subscriber" operation before creating or updating to avoid duplicate records. ConvertKit identifies subscribers by email address, so checking first prevents errors.
Use custom fields for dynamic personalization: ConvertKit supports custom fields for subscriber data. When syncing from your CRM or forms, map important fields (first name, company, role, signup source) to ConvertKit custom fields so you can personalize email content.
Implement error handling: Add Error Trigger nodes to your workflows to catch API failures, rate limits, or invalid email addresses. Send error notifications to Slack or log failures to a Google Sheet for review.
Respect ConvertKit's API rate limits: ConvertKit allows 120 requests per minute per account. For bulk operations (like syncing thousands of contacts), add a "Batch" node or Function node with delays to stay under the limit. On n8nautomation.cloud, workflows run reliably without timeout issues even for large batches.
Test with small segments first: Before running automation on your entire subscriber list, test with a small segment or a test tag. Verify that tags apply correctly, sequences enroll properly, and data syncs as expected.
Monitor workflow execution history: n8n tracks every workflow execution with full input/output logs. Review your ConvertKit automation logs weekly to catch edge cases, failed API calls, or unexpected subscriber behavior.
Document your tagging strategy: As you build more ConvertKit automations, your tag list grows quickly. Maintain a naming convention (e.g., "segment-" for behavioral tags, "purchased-" for product tags) and document what each tag represents so your team understands the automation logic.
The n8n ConvertKit integration unlocks email marketing automation that's impossible with ConvertKit alone or too expensive on platforms like Zapier. Whether you're syncing CRM data, triggering sequences from payment events, or maintaining list hygiene automatically, n8n gives you complete control over your email marketing workflows without vendor lock-in or execution limits.