The next tool I work with is n8n.

If Make.com is no-code for the masses, n8n is a tool for those who want more control, flexibility and limitless possibilities.


🧠 How is it different from Make?

  • n8n can be self-hosted on your own server and run entirely free.

  • It supports 1000+ integrations, including non-standard and custom APIs.

  • It lets you use JavaScript, JSONata, Webhooks, Git, Docker and much more.


💰 Paid or free?

OptionPriceWhat to know
🧠 Self-hosting$0Requires know-how: where to get a server (paid and free options), how to install and maintain n8n.
☁️ n8n’s cloud version$24/moJust sign up and start. There’s a 14-day trial.

🤖 Case: Email + GPT + Telegram = a smart auto-responder

We'll build an assistant bot that:

  1. Receives an email in Gmail
  2. Generates a reply with GPT
  3. Sends it to you on Telegram
  4. You approve — and the email goes out to the recipient

🛠 Step 1: create the workflow

  1. Click Create Workflow
  2. The first module — Gmail → On Message Received
  3. Authorize access to your Google account

What it looks like:


🧠 Step 2: connect GPT

  1. Add the OpenAI module
  2. Your OpenAI account needs at least 5)
  3. Go to https://platform.openai.com/account/api-keys
  4. Click Create new secret key, name it and copy the key
  5. Paste it into n8n when connecting OpenAI

API key:


The GPT assistant

  1. Without closing the API tab, go to the Dashboard
  2. On the left, choose Assistants
  3. Create a new assistant
  4. Give it a name
  5. And with the prompt auto-fill, write what it will do

Here's how mine looks:


💬 Step 3: a Telegram bot for approval

  1. Create a bot via @BotFather/newbot
  2. Get the API key
  3. Add the n8n module: Telegram → Send Message & Wait for Response
  4. Paste the token

Now we just need the Chat ID

Where to get the Chat ID?

  1. Write any message to your bot
  2. In a browser, open the link:
https://api.telegram.org/bot<TOKEN_ID>/getUpdates
  • Remove <Token_ID> — put your token’s API key here.
  1. In the response, find chat: { id: ... } — that’s the Chat ID

Where's the Chat ID?


✅ The approval message

  • Put into the message:
📩 Here's the incoming email:
{{ $json["snippet"] }}

🤖 GPT generated this reply:

{{ $json["gpt_output"] }}

Send it?`
  • In the settings:
    • Response Type → Approve only
    • Button → “Send”

What it looks like:


📤 Step 4: condition + sending

  1. Add the IF module
  2. Condition: if the user clicked “Send”

What to put in the IF module:

Paste this code into Conditions and switch to “Expression” mode

{{$json["data"]["approved"]}}
  • Choose the condition “Is true”
  1. In the true branch, add the module: Gmail → Reply to Email

From the "True" branch we add the Gmail module:

  1. Use the Message ID from the first module, and the text from GPT

Done. You’ve built your own email assistant.


Keep going?