7 Steps to Build Your First n8n Workflow in 30 Mins

You have probably heard about automation tools that promise to save hours of repetitive work, but setting them up often feels like learning a second language. n8n changes that dynamic by offering a visual canvas where you drag and connect nodes instead of writing endless lines of code. This n8n workflow tutorial walks you through building a real, working automation from scratch in about 30 minutes. By the time you finish, you will understand triggers, nodes, expressions, and conditional logic — the foundation that every other automation in n8n builds upon.

n8n workflow tutorial

What You Will Build Today

Imagine a system that checks the Bitcoin price every weekday at 9 AM, decides if it is above $100,000, and then sends a celebration email or a Slack notification depending on the result. That is exactly what we are creating. The workflow uses six nodes, two branches, and one schedule. It connects to a live API and sends real notifications. No fake data, no placeholder steps.

Here is the flow at a glance:

Schedule trigger (every weekday at 9 AM) connects to an HTTP Request node that fetches the Bitcoin price from CoinGecko. That data passes through an Edit Fields node that cleans up the structure. Then an If node checks whether the price exceeds $100,000. If true, an email node sends a celebration message. If false, a Slack node posts a notification to your workspace.

This pattern — fetch, transform, decide, notify — appears in countless real-world automations. Learning it here means you can adapt it to monitor stock prices, check server uptime, or track shipping statuses tomorrow.

Five Concepts You Need Before Clicking Anything

Before you open the n8n canvas, take two minutes to internalize these five ideas. They will save you hours of confusion later.

Workflow

A workflow is a collection of connected nodes that automate a process. One workflow equals one automation. You can have many workflows running simultaneously, each doing a different job.

Node

A node is a single step. Each node does exactly one thing: trigger the workflow, fetch data, transform data, or send a notification. Nodes connect to each other in a sequence, and data flows from one to the next like water through pipes.

Trigger Node

The trigger node is always the first node in a workflow. It decides when the workflow runs — on a schedule, when a webhook receives data, or when a file appears in a folder.

Execution

An execution is one complete run of the workflow from the trigger node to the last node. n8n logs every execution so you can inspect what happened at each step. This logging is your best friend when something goes wrong.

Expression

Expressions are JavaScript-flavored snippets wrapped in double curly brackets like {{ }}. They reference data from previous nodes. For example, {{ $json.bitcoin.usd }} grabs the price value from the CoinGecko API response.

When something breaks, ask yourself three questions: which node failed, what data did it receive, and what did it try to do with that data? Almost every problem maps to those three questions.

Setting Up Your n8n Environment

You have two paths to start using n8n. Both work identically for this tutorial.

n8n Cloud

Sign up at n8n.io for a 14-day free trial. No credit card is required. After the trial ends, paid plans start at about €24 per month for 2,500 executions. This is the fastest way to get started because you do not need to manage servers.

Self-Hosted

If you prefer to run n8n on your own hardware, it is free forever. You can deploy it using Docker on any Linux server. This path requires basic comfort with the command line, but it gives you full control over data and costs nothing beyond your server expenses.

For this n8n workflow tutorial, Cloud is the simpler choice. After signing up, click the Create Workflow button in the upper-right corner of the dashboard. You will see an empty canvas with a single button labeled Add first step.

Step 1: Add the Schedule Trigger

Click Add first step. A search bar appears. Type Schedule and select Schedule Trigger from the list.

Configure the trigger with these settings:

  • Trigger Interval: Days
  • Days Between Triggers: 1
  • Trigger at Hour: 9am

Optionally, under Trigger on Weekdays, select Monday through Friday only. This prevents the workflow from running on weekends when the crypto markets are quieter and you probably do not want notifications.

One critical detail: the Schedule trigger only fires when the workflow is published. While you are building and testing, you will run the workflow manually using the Execute Workflow button at the bottom of the canvas. Publishing comes after everything works.

Step 2: HTTP Request — Fetch the Bitcoin Price

The HTTP Request node is arguably the most powerful node in n8n. It can call any public API, even services that do not have a dedicated n8n integration. This single node opens the door to thousands of data sources.

Click the + icon on the right side of the Schedule trigger node. Search for HTTP Request and select it.

Fill in these settings:

  • URL: https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd
  • Authentication: None (CoinGecko allows unauthenticated requests for basic price lookups)
  • Method: GET

Now click the Execute Step button. This is a pro tip that saves hours of debugging: Execute Step runs only that single node with sample data, without firing the entire workflow. Use it on every new node before connecting the next one. This catches about 80 percent of mistakes early, when they are easy to fix.

After execution, you should see output that looks like this:

{ "bitcoin": { "usd": 105432 } }

That is the live Bitcoin price from CoinGecko. Close the node panel — we will use this data in the next step.

Step 3: Edit Fields — Clean Up the Data Shape

The CoinGecko response nests the price inside bitcoin.usd. That nested structure is fine for computers, but it makes later steps harder to read and configure. We want to promote that price to a top-level field called price.

Click the + icon on the HTTP Request node. Search for Edit Fields (some versions of n8n call this node Set).

Under Fields to Set, click Add Field. Configure it like this:

  • Name: price
  • Value: toggle to Expression mode and enter {{ $json.bitcoin.usd }}

You do not need to memorize this syntax. n8n provides a left panel that shows all available data from previous nodes. You can drag fields from that panel into the expression editor, and n8n writes the expression for you. This drag-and-drop approach makes expressions accessible even if you have never written JavaScript.

Click Execute Step again. The output should now be:

{ "price": 105432 }

Clean, flat, and ready for the next node.

Step 4: If Node — Conditional Branching

Now we need to decide what happens based on the price. The If node creates two branches: one for when a condition is true, and another for when it is false.

You may also enjoy reading: Why a Sam Bankman-Fried Trial Would Be a Massive Waste.

Click the + icon on the Edit Fields node. Search for If and select it.

Configure the condition like this:

  • Operation: Number
  • Value 1: {{ $json.price }}
  • Operation: Larger
  • Value 2: 100000

Here is a common gotcha: make sure the Operation dropdown is set to Number, not String. If you leave it as String, n8n will compare text values alphabetically, and “99999” will appear larger than “100000” because the digit 9 comes after 1 in character order. This bug is subtle and easy to miss, so double-check this setting.

After configuring, click Execute Step. The If node now exposes two output connectors: a true connector at the top and a false connector at the bottom. Each connector leads to a different branch of the workflow.

Step 5: Email Notification for High Prices

When the Bitcoin price exceeds $100,000, we want to celebrate by email. Click the true output connector of the If node. Search for Email and select the email node.

Configure these settings:

  • From Email: your verified sender address (in n8n Cloud, this is typically the email you signed up with)
  • To Email: where you want the celebration message to arrive
  • Subject: Bitcoin is above $100,000!
  • Text: The current Bitcoin price is {{ $json.price }} USD.

If you are using the self-hosted version, you may need to configure SMTP credentials in the n8n settings first. Cloud users have email sending pre-configured.

Click Execute Step to verify the email sends correctly. You should receive a test message within a few seconds.

Step 6: Slack Notification for Lower Prices

When the price is at or below $100,000, we want a less dramatic notification. Click the false output connector of the If node. Search for Slack and select the Slack node.

You will need to connect n8n to your Slack workspace. Click the Create New button next to the Credential field. A new window opens asking you to authorize n8n to post messages. Grant the appropriate permissions and return to the canvas.

Configure these settings:

  • Channel: the Slack channel where you want notifications (for example, #crypto-updates)
  • Text: Bitcoin price is {{ $json.price }} USD. Not above $100,000 today.

Click Execute Step to verify the Slack message posts correctly. You should see the notification appear in your chosen channel.

Testing the Full Workflow

Now that every individual node works, it is time to test the entire flow from start to finish. Click the Execute Workflow button at the bottom of the canvas. n8n runs through all six nodes in sequence, fetches the live price, evaluates the condition, and sends the appropriate notification.

Watch the execution log on the right side of the screen. Each node turns green as it completes successfully. If any node turns red, click it to see the error message. Most errors at this stage come from typos in expressions or incorrect field names.

Once the workflow runs cleanly, click the Publish button in the upper-right corner. The Schedule trigger becomes active, and your workflow will run automatically every weekday at 9 AM.

Common Mistakes and How to Avoid Them

Even experienced users hit the same few snags when building their first n8n workflow. Here are the most frequent ones and the fixes.

If Node Compares Strings Instead of Numbers

As mentioned earlier, the If node defaults to String comparison. Change the Operation dropdown to Number before entering your values. Otherwise, a price of $99,999 will appear larger than $100,000 because the string “99999” starts with a 9, which is alphabetically greater than 1.

Schedule Trigger Does Not Fire

The Schedule trigger only activates after the workflow is published. During development, always use the Execute Workflow button to test. If you published the workflow and it still does not run, check that the trigger is configured to run on the correct days and hours.

HTTP Request Returns an Error

CoinGecko occasionally rate-limits unauthenticated requests. If you get a 429 error, wait a minute and try again. For production workflows, consider using an API key or switching to a different data provider.

Expression Returns Undefined

If your expression returns undefined, the field name you referenced does not exist in the data from the previous node. Open the previous node’s output panel and verify the exact field names. Remember that JSON is case-sensitive — bitcoin is not the same as Bitcoin.

What You Have Learned and Where to Go Next

In about 30 minutes, you built a workflow that fetches live data from a public API, transforms it into a clean format, makes a conditional decision, and sends notifications through two different channels. You now understand triggers, nodes, expressions, and conditional logic — the same concepts that power every n8n automation, whether it involves 6 nodes or 60.

This foundation opens up many possibilities. You could modify the workflow to check the weather every morning and send you a text if rain is forecast. You could monitor a website for price changes and alert your team when a product drops below a certain threshold. You could connect a Google Sheet to a Slack channel and post updates whenever a new row is added.

The pattern is always the same: trigger, fetch, transform, decide, notify. Everything else is just a variation on those five steps.

Add Comment