Ready to automate your first task? This hands-on tutorial will walk you through creating a working n8n workflow from scratch. By the end, you'll have a real automation running.

What We'll Build

We'll create a simple but practical workflow: Get notified on Slack whenever someone submits a form. This teaches you the fundamentals that apply to any automation.

The workflow:

  1. Receives form submissions via webhook
  2. Formats the data nicely
  3. Sends a message to Slack

Step 1: Sign Up for n8n

You have two options:

Option A: n8n Cloud (Easiest)

  1. Go to n8n.io and click "Get Started Free"
  2. Create an account with email or Google
  3. You'll land in the n8n editor—ready to build!

Option B: Self-Hosted (Free Forever)

If you have Docker installed:

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

Then open http://localhost:5678 in your browser.

Step 2: Create a New Workflow

  1. In n8n, click "New Workflow" or press Ctrl+Alt+N
  2. Give it a name: "Form to Slack Notification"
  3. You'll see an empty canvas with a "+" button

Step 3: Add a Webhook Trigger

The webhook will receive data when someone submits a form.

  1. Click the "+" button on the canvas
  2. Search for "Webhook" and select it
  3. In the node settings:
    • HTTP Method: POST
    • Path: form-submission
  4. Click "Listen for Test Event"

You'll see a URL like: https://your-instance.n8n.cloud/webhook-test/form-submission

Test the Webhook

Open a new terminal and send test data:

curl -X POST https://YOUR-WEBHOOK-URL \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com", "message": "Hello!"}'

You should see the data appear in n8n. Click "Stop Listening" once you see it.

Step 4: Format the Message

Let's create a nicely formatted message for Slack.

  1. Click the "+" after the Webhook node
  2. Search for "Set" and select it
  3. Click "Add Value" and choose String
  4. Name: slackMessage
  5. Value (click the expression toggle { }):
New form submission!

Name: {{ $json.name }}
Email: {{ $json.email }}
Message: {{ $json.message }}

Step 5: Connect to Slack

  1. Click the "+" after the Set node
  2. Search for "Slack" and select it
  3. For credentials:
    • Click "Create New"
    • Follow the OAuth flow to connect your Slack workspace
  4. Configure the node:
    • Resource: Message
    • Operation: Send
    • Channel: Select your channel (e.g., #notifications)
    • Text: Click { } and enter {{ $json.slackMessage }}

Step 6: Test the Complete Workflow

  1. Click "Execute Workflow" at the bottom
  2. Go back to the Webhook node and click "Listen for Test Event"
  3. Send another test request with curl
  4. Watch the data flow through each node
  5. Check Slack—you should see your message!

Step 7: Activate Your Workflow

To make it run automatically:

  1. Click the "Inactive" toggle in the top right
  2. It will turn green and say "Active"
  3. Your workflow is now live!

Important: Note the production webhook URL (without "-test"). Use this URL in your actual form.

Next Steps

Congratulations! You've built your first n8n workflow. Here's what to try next:

Enhance This Workflow

  • Add an IF node to only notify for certain message types
  • Store submissions in Google Sheets for records
  • Send an auto-reply email to the submitter

Explore Pre-Built Workflows

Don't reinvent the wheel. Browse our library of production-ready workflows:

Learn More

Find Your Next Workflow

Browse 493+ ready-to-use n8n workflows. Import, customize, and automate.

Explore Workflows