{
  "id": "KitWelcomeFree00001",
  "name": "Send automatic welcome emails to new newsletter subscribers (works on Kit's free plan)",
  "nodes": [
    {
      "id": "d7e8f9a0-0001-4c3b-8e22-cc0000000001",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1180,
        -260
      ],
      "parameters": {
        "width": 520,
        "height": 1360,
        "content": "## Send automatic welcome emails to new newsletter subscribers (works on Kit's free plan)\n\n### How it works\n\nAutomated welcome sequences are a paid feature on most email platforms \u2014 on Kit (ConvertKit) they start at $25/mo. This workflow restores the part that actually matters on the free plan: the moment someone confirms their subscription, Kit calls this workflow's webhook, and a personalised welcome email goes out within seconds from your own Gmail (or any SMTP server), so it lands in the inbox rather than the Promotions tab.\n\nTwo optional steps follow the email: tag the subscriber as `welcomed` in Kit so you can segment on it later, and post a line to Slack so you watch the list grow without opening a dashboard.\n\nA separate one-click branch registers the webhook with Kit for you \u2014 run it once and Kit calls your production URL for every new confirmed subscriber from then on.\n\n### Setup steps\n\nTakes \u224810 minutes. Works the same on n8n Cloud and self-hosted.\n\n- Open **Kit Subscriber Trigger** and replace `CHANGE-ME` in the webhook path with a long random string. Kit does not sign its webhooks, so the secret URL is the authentication \u2014 keep it private.\n- Connect your Gmail account in **Send Gmail Welcome Email** (one click on n8n Cloud) and rewrite the subject and body in your own voice. The subscriber's first name and email are available as `{{ $json.first_name }}` and `{{ $json.email }}`.\n- Create a *Header Auth* credential named `X-Kit-Api-Key` with your Kit API key (Kit \u2192 Settings \u2192 Developer) and select it in **Post Subscriber Tag to Kit** and **Register Kit Webhook via API**.\n- **Activate the workflow**, then open the **Register Kit Webhook via API** branch and click *Execute workflow* once. It subscribes your production URL to Kit's `subscriber.subscriber_activate` event \u2014 one click, done forever.\n- Test by subscribing to your own form with a spare address and confirming the email.\n\n### Customization\n\n- **Self-hosting n8n?** Swap the Gmail node for the *Send Email* (SMTP) node \u2014 any provider works, including your domain's SMTP or a Brevo/Mailjet free tier.\n- **Don't want the extras?** Delete **Post Subscriber Tag to Kit** and **Post New Subscriber to Slack**; the email path keeps working on its own.\n- **Tag ID** for the tagging node: Kit \u2192 Grow \u2192 Tags (the ID is in the URL), or `GET https://api.kit.com/v4/tags`.\n- **Want a multi-email sequence?** Duplicate the email node and put *Wait* nodes between the copies (day 2, day 5, \u2026) \u2014 a free-plan onboarding drip.\n- Using beehiiv, Mailchimp or Buttondown instead? Point the webhook at their equivalent subscriber-created event and adjust the field names in **Parse Subscriber Data**."
      },
      "typeVersion": 1
    },
    {
      "id": "d7e8f9a0-0009-4c3b-8e22-cc0000000009",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -600,
        -260
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 400,
        "content": "## Receive subscriber event\n\nKit calls this secret webhook URL the moment a subscriber confirms. The next node pulls out the fields the email needs."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-03-2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        -260
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 420,
        "content": "## Welcome and tag subscriber\n\nSends your welcome message from your own mailbox seconds after the subscriber confirms, then tags them as welcomed in Kit so you can segment on it later."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-03-3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        472,
        -260
      ],
      "parameters": {
        "color": 7,
        "width": 260,
        "height": 420,
        "content": "## Notify team in Slack\n\nPosts a line to Slack so you watch the list grow without opening a dashboard. Optional \u2014 delete this node and the tagging node if you only want the email."
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-03-4",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -580,
        320
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 360,
        "content": "## Register Kit webhook\n\nActivate the workflow first, then execute this branch a single time. It tells Kit to call your production URL for every new confirmed subscriber."
      },
      "typeVersion": 1
    },
    {
      "id": "d7e8f9a0-0002-4c3b-8e22-cc0000000002",
      "name": "Kit Subscriber Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -521,
        -37.80000000000001
      ],
      "parameters": {
        "path": "kit-new-subscriber-CHANGE-ME-to-a-long-random-string",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "d7e8f9a0-0003-4c3b-8e22-cc0000000003",
      "name": "Parse Subscriber Data",
      "type": "n8n-nodes-base.code",
      "position": [
        -281,
        -37.80000000000001
      ],
      "parameters": {
        "jsCode": "// Kit posts { subscriber: { id, first_name, email_address, state, ... } }\nconst body = $input.first().json.body ?? $input.first().json;\nconst s = body.subscriber ?? {};\nif (!s.email_address) {\n  throw new Error('No subscriber in payload \u2014 was this called by Kit? Payload: ' + JSON.stringify(body).slice(0, 300));\n}\nreturn [{\n  json: {\n    subscriber_id: s.id ?? null,\n    email: s.email_address,\n    first_name: (s.first_name ?? '').trim(),\n    greeting: (s.first_name ?? '').trim() || 'there',\n  },\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "d7e8f9a0-0004-4c3b-8e22-cc0000000004",
      "name": "Send Gmail Welcome Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2,
        -37.80000000000001
      ],
      "parameters": {
        "sendTo": "={{ $json.email }}",
        "message": "=<p>Hey {{ $json.greeting }},</p><p>Thanks for subscribing \u2014 you're in!</p><p>Here's what to expect: one email a week, five minutes to read, no fluff. While you wait for the next issue, here are two favourites from the archive:</p><ul><li><a href=\"https://YOUR-SITE.example/best-issue\">A reader favourite</a></li><li><a href=\"https://YOUR-SITE.example/another-issue\">Another good one</a></li></ul><p>Hit reply anytime \u2014 replies land in my actual inbox.</p><p>\u2014 YOUR NAME</p>",
        "options": {},
        "subject": "Welcome aboard \ud83d\udc4b"
      },
      "typeVersion": 2.1
    },
    {
      "id": "d7e8f9a0-0005-4c3b-8e22-cc0000000005",
      "name": "Post Subscriber Tag to Kit",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        242,
        -37.80000000000001
      ],
      "parameters": {
        "url": "https://api.kit.com/v4/tags/REPLACE_WITH_TAG_ID/subscribers",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ JSON.stringify({ email_address: $('Parse Subscriber Data').item.json.email }) }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "d7e8f9a0-0006-4c3b-8e22-cc0000000006",
      "name": "Post New Subscriber to Slack",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        552,
        -37.80000000000001
      ],
      "parameters": {
        "url": "https://hooks.slack.com/services/PASTE/YOUR/SLACK_WEBHOOK",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "text",
              "value": "=\ud83c\udf89 New subscriber: {{ $('Parse Subscriber Data').item.json.email }} \u2014 welcome email sent."
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d7e8f9a0-0007-4c3b-8e22-cc0000000007",
      "name": "Manual Execution Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -514,
        476.2
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d7e8f9a0-0008-4c3b-8e22-cc0000000008",
      "name": "Register Kit Webhook via API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -274,
        476.2
      ],
      "parameters": {
        "url": "https://api.kit.com/v4/webhooks",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ JSON.stringify({ target_url: 'PASTE_THE_PRODUCTION_URL_OF_THE_WEBHOOK_NODE_ABOVE', event: { name: 'subscriber.subscriber_activate' } }) }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.2
    }
  ],
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "Parse Subscriber Data": {
      "main": [
        [
          {
            "node": "Send Gmail Welcome Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Kit Subscriber Trigger": {
      "main": [
        [
          {
            "node": "Parse Subscriber Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Execution Trigger": {
      "main": [
        [
          {
            "node": "Register Kit Webhook via API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Gmail Welcome Email": {
      "main": [
        [
          {
            "node": "Post Subscriber Tag to Kit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Subscriber Tag to Kit": {
      "main": [
        [
          {
            "node": "Post New Subscriber to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}