Your First n8n Workflow: Complete Beginner Tutorial
If you're tired of manually copying data between apps or spending hours on repetitive tasks, n8n is about to change your life. This powerful automation platform lets you connect any app to any other app, without writing a single line of code (unless you want to).
In this tutorial, I'll walk you through building your very first n8n workflow from scratch. By the end, you'll have a working automation that captures form submissions and sends them to both Google Sheets and Slack.
π Reading time: 10 minutes
What you'll learn:
- How to set up n8n (cloud or self-hosted)
- Understanding n8n's visual workflow builder
- Building a practical automation step-by-step
- Testing and deploying your workflow
- Common mistakes and how to avoid them
Let's dive in.
What is n8n?
n8n is an open-source workflow automation tool that connects your apps and services. Think of it as the glue between all your business toolsβCRM, email, databases, spreadsheets, messaging apps, and more.
Why n8n stands out:
- Fair-code licensed - You can see and modify the source code
- Self-hostable - Run it on your own server for unlimited executions
- 300+ integrations - Connect to virtually any app
- Visual workflow builder - Drag-and-drop interface
- Powerful features - Advanced logic, data transformation, error handling
Who should use n8n:
- Technical teams who want full control
- Agencies building automations for multiple clients
- Businesses hitting execution limits on Zapier or Make
- Anyone who wants to learn real automation skills
Prerequisites
Before we start building, you'll need:
1. An n8n account Choose one:
- n8n Cloud (recommended for beginners) - Sign up at n8n.io
- Self-hosted - Install on DigitalOcean, AWS, or your own server
2. A Google account (for Google Sheets integration)
3. A Slack workspace (optional, but recommended)
4. 30 minutes to follow along
Note: This tutorial uses n8n Cloud, but the workflow works identically on self-hosted instances.
Understanding n8n's Interface
When you first open n8n, you'll see the workflow canvasβa blank space where you'll build your automation.
Key interface elements:
Workflow Canvas - The main area where you drag and drop nodes
Node Panel (left side) - Browse available integrations and tools
Execution Panel (right side) - See your workflow run in real-time
Top Toolbar - Save, execute, and configure your workflow
Nodes - Individual building blocks (triggers, actions, logic)
What are Nodes?
Nodes are the building blocks of n8n workflows. Each node represents one action:
- Trigger nodes - Start the workflow (form submission, schedule, webhook)
- Action nodes - Perform tasks (send email, add to database, create ticket)
- Logic nodes - Make decisions (if/then, switch, merge)
- Function nodes - Transform data (code, set values, aggregate)
Think of nodes like LEGO blocksβyou connect them to build complex automations.
Building Your First Workflow
We're building a lead capture automation that:
- Receives form submissions via webhook
- Adds the data to Google Sheets
- Sends a notification to Slack
This is a real-world workflow used by thousands of businesses.
Step 1: Create a New Workflow
- Click "New Workflow" in the top-left corner
- You'll see a blank canvas
- Click "Add first step" in the center
That's itβyou're ready to build!
Step 2: Add a Webhook Trigger
A webhook is a URL that receives data from external sources (like web forms, apps, or services).
To add a webhook:
- In the node selection panel, search for "Webhook"
- Click "Webhook" to add it to your canvas
- The Webhook node will appear
Configure the webhook:
- Click on the Webhook node to open its settings
- Under "HTTP Method", select POST
- Under "Path", enter:
form-submission - Click "Execute Node" to generate your webhook URL
Your webhook URL will look like:
https://your-instance.app.n8n.cloud/webhook/form-submissionCopy this URL - you'll use it to send test data.
Step 3: Send Test Data
Before connecting more nodes, let's test the webhook with sample data.
Using a tool like Postman or curl:
bash
curl -X POST https://your-webhook-url \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"message": "Interested in your services"
}'Or use the built-in test:
- Click "Listen for Test Event" in the Webhook node
- Use a form builder (Typeform, Google Forms, or a simple HTML form) to send data to your webhook URL
- Submit the form
You should see the data appear in n8n! This confirms your webhook is working.
Step 4: Add Google Sheets Node
Now we'll save this data to a spreadsheet.
Preparation:
- Create a new Google Sheet named "Leads"
- Add these column headers in row 1:
Name,Email,Company,Message,Timestamp
Add the node:
- Click the "+" button on your Webhook node
- Search for "Google Sheets"
- Select "Google Sheets"
Configure the node:
- Under "Credential to connect with", click "Create New"
- Click "Connect to Google" and authorize n8n
- Under "Operation", select "Append"
- Under "Document", search for your "Leads" spreadsheet
- Under "Sheet", select "Sheet1"
Map the data:
Now we need to tell n8n which data goes into which column.
Click "Add Column" for each field:
Column 1:
- Column:
Name - Value: Click the input field β Select
{{ $json.name }}
Column 2:
- Column:
Email - Value:
{{ $json.email }}
Column 3:
- Column:
Company - Value:
{{ $json.company }}
Column 4:
- Column:
Message - Value:
{{ $json.message }}
Column 5:
- Column:
Timestamp - Value:
{{ $now }}
What's {{ $json.name }}?
This is n8n's expression syntax. It pulls data from the previous node (the webhook) and inserts it into the spreadsheet. The {{ }} brackets tell n8n "this is dynamic data, not plain text."
Step 5: Add Slack Notification
Let's send a notification to your team when a new lead comes in.
Preparation:
- Make sure you have a Slack workspace
- Create a channel called #leads (or use an existing channel)
Add the node:
- Click the "+" button on your Google Sheets node
- Search for "Slack"
- Select "Slack"
Configure the node:
- Under "Credential to connect with", click "Create New"
- Click "Connect to Slack" and authorize n8n
- Under "Operation", select "Send Message"
- Under "Channel", select #leads
Write your message:
In the "Text" field, write:
New lead captured!
Name: {{ $json.name }}
Email: {{ $json.email }}
Company: {{ $json.company }}
Message: {{ $json.message }}
Added to Google Sheets βThis creates a formatted Slack message with all the lead details.
Step 6: Test Your Complete Workflow
Now let's test the entire automation end-to-end.
- Click "Execute Workflow" (top right)
- Send another test form submission
- Watch the execution flow through each node
You should see:
- Webhook receives the data β
- Google Sheets adds a new row β
- Slack sends a notification β
Check your results:
- Open your Google Sheet - new row should appear
- Check your Slack channel - notification should arrive
If something fails:
- Click on the failed node to see the error
- Most common issues: incorrect field names, missing credentials, wrong data format
Step 7: Activate Your Workflow
Your workflow is built and tested! Now let's make it live.
To activate:
- Give your workflow a name: "Lead Capture Automation"
- Click "Save" (top right)
- Toggle the "Active" switch to ON
Your workflow is now running 24/7!
Any form submission to your webhook URL will automatically:
- Save to Google Sheets
- Send to Slack
- All without you lifting a finger
What You Just Built
Congratulations! You just created a real automation that many businesses pay thousands of dollars for.
Your workflow:
- Captures leads from any source
- Stores them in a organized spreadsheet
- Notifies your team instantly
- Runs automatically, forever
Time saved: If this captures 50 leads/month, you're saving ~2 hours of manual data entry.
Common Mistakes to Avoid
1. Not testing before activating Always send test data through your workflow before turning it on. Catch errors early.
2. Forgetting to map all fields Double-check that every piece of data you want is mapped to the right destination.
3. Using the wrong HTTP method Most webhooks use POST, not GET. Make sure your trigger matches your data source.
4. Hardcoding values that should be dynamic Use {{ expressions }} for data that changes. Only hardcode static values.
5. Not handling errors Add error workflows (we'll cover this in advanced tutorials) to catch and fix issues automatically.
Next Steps
Now that you've built your first workflow, here's what to learn next:
Beginner:
- Build a workflow with scheduling (daily reports, reminders)
- Add conditional logic (if/then statements)
- Connect to your CRM (HubSpot, Salesforce, Pipedrive)
Intermediate:
- Use the HTTP Request node for custom API calls
- Transform data with the Code node (JavaScript)
- Build multi-branch workflows with Switch nodes
Advanced:
- Error handling and retry logic
- Webhooks with authentication
- Database integrations (PostgreSQL, MongoDB)
Resources
Official n8n Resources:
Next Tutorials:
- n8n vs Zapier: Which Should You Choose?
- Advanced n8n Patterns for Agencies
- Self-Hosting n8n on DigitalOcean
Get Started Today
Ready to try n8n yourself?
Start with n8n Cloud Free Trial β
Or if you'd prefer we build this for you:
We specialize in custom n8n automation implementations. From simple workflows to complex multi-system integrations, we handle the technical work so you can focus on your business.
See Our Automation Services β
Questions about this tutorial? Drop a comment below or join our newsletter for weekly n8n tips and workflow templates.
Tags: guides, n8n, beginner Target Keyword: n8n tutorial Meta Description: Learn to build your first n8n workflow with this complete beginner tutorial. Step-by-step guide to automating form submissions with Google Sheets and Slack.