AutomationFlowsEmail & Gmail › Stripe to Brevo Onboarding Emails

Stripe to Brevo Onboarding Emails

Original n8n title: Ntf 10 Customer Onboarding Flow

NTF 10 Customer Onboarding Flow. Uses gmail. Webhook trigger; 13 nodes.

Webhook trigger★★★☆☆ complexity13 nodesGmail
Email & Gmail Trigger: Webhook Nodes: 13 Complexity: ★★★☆☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "NTF 10 Customer Onboarding Flow",
  "tags": [
    {
      "name": "NTF-Playbook"
    }
  ],
  "settings": {
    "executionOrder": "v1"
  },
  "nodes": [
    {
      "id": "sticky-readme",
      "name": "README",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -60,
        -520
      ],
      "parameters": {
        "content": "## NTF 10 Customer Onboarding Flow\n\n**Trigger:** Webhook, new CRM customer event (or manual trigger)\n\n**30-day sequence:**\n- Day 0: Welcome email immediately\n- Day 3: First check-in plus tips email\n- Day 7: Short friction survey\n- Day 14: If survey score low, flag to inbox (human needed)\n- Day 30: NPS survey plus referral ask if NPS high\n\n**Setup:**\n- Connect Gmail OAuth credential\n- Webhook receives: { name, email, company, plan }\n- Edit email templates in each Send Email node\n- Day 14 and Day 30 branches use IF nodes based on survey responses\n- For survey responses: use a separate webhook-triggered workflow or Typeform/Tally integration",
        "height": 400,
        "width": 560,
        "color": 6
      }
    },
    {
      "id": "webhook-trigger",
      "name": "New Customer Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ],
      "parameters": {
        "httpMethod": "POST",
        "path": "customer-onboarding",
        "responseMode": "responseNode",
        "options": {}
      }
    },
    {
      "id": "extract-customer",
      "name": "Extract Customer Data",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        220,
        0
      ],
      "parameters": {
        "mode": "manual",
        "assignments": {
          "assignments": [
            {
              "id": "name",
              "name": "name",
              "value": "={{ $json.body.name }}",
              "type": "string"
            },
            {
              "id": "email",
              "name": "email",
              "value": "={{ $json.body.email }}",
              "type": "string"
            },
            {
              "id": "company",
              "name": "company",
              "value": "={{ $json.body.company || '' }}",
              "type": "string"
            },
            {
              "id": "plan",
              "name": "plan",
              "value": "={{ $json.body.plan || 'Standard' }}",
              "type": "string"
            },
            {
              "id": "sender_name",
              "name": "sender_name",
              "value": "YOUR_NAME",
              "type": "string"
            }
          ]
        }
      }
    },
    {
      "id": "webhook-response",
      "name": "Webhook Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        440,
        -160
      ],
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ received: true }) }}"
      }
    },
    {
      "id": "day-0-welcome",
      "name": "Day 0 Welcome Email",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        440,
        0
      ],
      "parameters": {
        "operation": "send",
        "sendTo": "={{ $json.email }}",
        "subject": "=Welcome, {{ $json.name }}, here's how to get started",
        "message": "=Hi {{ $json.name }},\n\nWelcome, and thank you for joining.\n\nHere's what to do first:\n1. [STEP 1, most important action]\n2. [STEP 2, second most important action]\n3. [STEP 3, quick win]\n\nIf you run into anything, reply to this email. I read every reply.\n\n{{ $json.sender_name }}",
        "options": {}
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "id": "wait-3-days",
      "name": "Wait 3 Days",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        660,
        0
      ],
      "parameters": {
        "resume": "timeInterval",
        "unit": "days",
        "amount": 3,
        "options": {}
      }
    },
    {
      "id": "day-3-checkin",
      "name": "Day 3 Check-in Email",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        880,
        0
      ],
      "parameters": {
        "operation": "send",
        "sendTo": "={{ $json.email }}",
        "subject": "=Quick check-in, how's it going?",
        "message": "=Hi {{ $json.name }},\n\nThree days in. How are things going?\n\nHere are a few things customers find most useful at this stage:\n* [TIP 1]\n* [TIP 2]\n* [TIP 3]\n\nAnything unclear or not working as expected? Hit reply.\n\n{{ $json.sender_name }}",
        "options": {}
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "id": "wait-4-more-days",
      "name": "Wait 4 More Days",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        1100,
        0
      ],
      "parameters": {
        "resume": "timeInterval",
        "unit": "days",
        "amount": 4,
        "options": {}
      }
    },
    {
      "id": "day-7-survey",
      "name": "Day 7 Friction Survey",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        1320,
        0
      ],
      "parameters": {
        "operation": "send",
        "sendTo": "={{ $json.email }}",
        "subject": "=One quick question (takes 30 seconds)",
        "message": "=Hi {{ $json.name }},\n\nYou're a week in. One question:\n\nOn a scale of 1-10, how likely are you to keep using [PRODUCT]?\n\nReply with just a number. If it's below 7, tell me why in one sentence. I'll fix it.\n\n{{ $json.sender_name }}",
        "options": {}
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "id": "wait-7-more-days",
      "name": "Wait 7 More Days",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        1540,
        0
      ],
      "parameters": {
        "resume": "timeInterval",
        "unit": "days",
        "amount": 7,
        "options": {}
      }
    },
    {
      "id": "day-14-flag",
      "name": "Day 14 Flag for Human Touch",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        1760,
        0
      ],
      "parameters": {
        "operation": "send",
        "sendTo": "={{ $json.sender_name }}@YOUR_DOMAIN.com",
        "subject": "=[Action needed] 14-day check-in for {{ $json.name }} ({{ $json.company }})",
        "message": "=Customer {{ $json.name }} ({{ $json.email }}) at {{ $json.company }} has been active for 14 days on the {{ $json.plan }} plan.\n\nThis is your manual touchpoint reminder. Reach out personally today.\n\nSuggested talking points:\n- What have they achieved so far?\n- Any friction points they haven't mentioned?\n- Are there features they haven't discovered yet?\n\nRemember: a proactive call here prevents a cancellation at day 30.",
        "options": {}
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "id": "wait-16-more-days",
      "name": "Wait 16 More Days",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        1980,
        0
      ],
      "parameters": {
        "resume": "timeInterval",
        "unit": "days",
        "amount": 16,
        "options": {}
      }
    },
    {
      "id": "day-30-nps",
      "name": "Day 30 NPS plus Referral",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        2200,
        0
      ],
      "parameters": {
        "operation": "send",
        "sendTo": "={{ $json.email }}",
        "subject": "=30 days in, two quick things",
        "message": "=Hi {{ $json.name }},\n\nYou've been with us for 30 days. Two things:\n\n1. How likely are you to recommend us to someone you know? Reply with a number from 0 to 10.\n\n2. If there's one person in your network who would benefit from [PRODUCT], I'd love an introduction. No pressure, just if someone comes to mind.\n\nThank you for being a customer.\n\n{{ $json.sender_name }}",
        "options": {}
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "New Customer Webhook": {
      "main": [
        [
          {
            "node": "Extract Customer Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Customer Data": {
      "main": [
        [
          {
            "node": "Webhook Response",
            "type": "main",
            "index": 0
          },
          {
            "node": "Day 0 Welcome Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Day 0 Welcome Email": {
      "main": [
        [
          {
            "node": "Wait 3 Days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 3 Days": {
      "main": [
        [
          {
            "node": "Day 3 Check-in Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Day 3 Check-in Email": {
      "main": [
        [
          {
            "node": "Wait 4 More Days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 4 More Days": {
      "main": [
        [
          {
            "node": "Day 7 Friction Survey",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Day 7 Friction Survey": {
      "main": [
        [
          {
            "node": "Wait 7 More Days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 7 More Days": {
      "main": [
        [
          {
            "node": "Day 14 Flag for Human Touch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Day 14 Flag for Human Touch": {
      "main": [
        [
          {
            "node": "Wait 16 More Days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 16 More Days": {
      "main": [
        [
          {
            "node": "Day 30 NPS plus Referral",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

NTF 10 Customer Onboarding Flow. Uses gmail. Webhook trigger; 13 nodes.

Source: https://github.com/MinaSaad1/n8n-customer-onboarding/blob/main/workflows/01-customer-onboarding.json — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

Wait. Uses httpRequest, itemLists, slack, gmail. Webhook trigger; 29 nodes.

HTTP Request, Item Lists, Slack +2
Email & Gmail

Receive support tickets via webhook, categorize by priority, track SLA deadlines, notify your team on Slack, and send confirmation emails to customers.

HTTP Request, Slack, Gmail +1
Email & Gmail

This workflow demonstrates a resilient publish/subscribe automation pattern using n8n, RabbitMQ, JSON Schema validation, and Gmail.

Rabbitmq, N8N Nodes Schema Guard, Rabbitmq Trigger +2
Email & Gmail

This workflow is a fully automated AI matte painting generation system for VFX pipelines, designed to convert a single environment prompt into multiple cinematic background variations. It handles gene

HTTP Request, Jira, Slack +3
Email & Gmail

Construction and renovation businesses that need to generate detailed quotes from customer inquiries—plasterers, painters, contractors, renovation specialists, or any construction service provider han

Stop And Error, Supabase, Gmail