Telegram to GitHub, cleaner releases with one command
You shouldn’t need a checklist just to cut a release. But between copying version strings, double-checking tags, and fixing “v1.2.3” vs “1.2.3” mistakes, releases become a slow, error-prone ritual.
This Telegram GitHub releases automation hits DevOps teams first. A tech lead doing fast handoffs feels it too, and a small agency shipping client work will appreciate the consistency. One chat command creates a clean GitHub release, with the version pulled straight from your message.
Below, you’ll see how the workflow works, what you need, and what kind of time (and headaches) it gives back once it’s running.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram to GitHub, cleaner releases with one command
flowchart LR
subgraph sg0["Telegram Message Listener Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Message Listener"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Conditional Command Check", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/github.dark.svg' width='40' height='40' /></div><br/>GitHub Release Lookup"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Version Value", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Ignore Other Requests", pos: "b", h: 48 }
n1 --> n3
n1 --> n4
n3 --> n2
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1 decision
classDef customIcon fill:none,stroke:none
class n0,n2 customIcon
The Problem: Releases Die in the Details
Release work is the kind of “small” task that quietly drains your week. Someone pings you to ship a hotfix, you jump into GitHub, manually create a release, type the tag, paste notes, then realize the version string doesn’t match what’s in the changelog. So you redo it. Or worse, you don’t notice until a teammate pulls the wrong tag and Slack turns into a crime scene. It’s not hard work. It’s brittle work, and it punishes you when you’re moving fast.
The friction compounds. Here’s where it usually breaks down.
- Tag names end up inconsistent across repos because everybody has their own “style”.
- Manual copy-paste invites typos, and one wrong character can create a release nobody can reproduce.
- Releases get delayed because the one person who “knows the steps” is in a meeting.
- Context gets lost during handoffs, so the release exists, but nobody trusts it.
The Solution: Create GitHub Releases From a Telegram Command
This workflow turns a simple Telegram bot message into a repeatable release action. It starts when someone sends a message to your Telegram bot. n8n checks if the message contains the right command (in this workflow, it’s deploy). If it matches, the workflow extracts the version number from the message, then uses that value to create a GitHub release with a properly named tag. If the command doesn’t match, the workflow quietly ignores it, so the bot doesn’t try to “release” on random chat noise.
The flow is straightforward. Telegram triggers the run, a conditional gate keeps it safe, then the version is parsed and passed into GitHub to create the release. The outcome is a consistent release process that works the same way every time.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your team ships 3 releases a week. Manually, creating each release (open GitHub, create release, type tag, double-check formatting, fix mistakes) is often about 10 minutes, so roughly 30 minutes weekly. With this workflow, you send “deploy 1.8.0” in Telegram, wait a moment for processing, and the release is created consistently without extra clicks. That’s about half an hour back a week, plus fewer interruptions when something is urgent.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram to send the bot command.
- GitHub to create releases and tags.
- GitHub personal access token (create it in GitHub Developer settings).
Skill level: Beginner. You’ll connect accounts and adjust the command/version parsing to match your release format.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Telegram message kicks it off. When someone messages your bot, the workflow starts immediately. You can keep this in a private chat or a team channel, depending on how you manage releases.
A command check acts as a safety lock. The workflow inspects the incoming text and only proceeds when it matches the expected command (deploy). Random messages go to a “do nothing” path, so nothing accidental gets created.
The version is extracted and prepared. n8n grabs the version value from the message and stores it as a clean variable. This is where you enforce conventions like “v” prefixes, or reject versions that don’t match your pattern.
GitHub creates the release. Using the extracted version as the tag, the workflow creates the new release in your repo. From that point, your existing delivery steps can pick it up.
You can easily modify the “deploy” command to something like “release” or “hotfix” based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the workflow to listen for incoming Telegram messages.
- Add the Telegram Message Listener node as your trigger.
- Open Telegram Message Listener and keep Updates set to
message. - Credential Required: Connect your telegramApi credentials in Telegram Message Listener.
Step 2: Add Command Filtering Logic
Filter messages so only /deploy commands proceed to version extraction.
- Add the Conditional Command Check node after Telegram Message Listener.
- Set the condition to String → Operation
contains. - Set Value 1 to
{{$json["message"]["text"]}}and Value 2 to/deploy. - Connect the true output of Conditional Command Check to Extract Version Value.
- Connect the false output of Conditional Command Check to Ignore Other Requests.
/deploy, the next step won’t be able to parse the version value correctly.Step 3: Set Up Version Parsing
Extract the version tag from the Telegram message text.
- Open Extract Version Value and enable Keep Only Set as
true. - Add a string field named version with the value
{{$json["message"]["text"].split(' ')[1]}}.
Step 4: Configure GitHub Release Lookup
Use the parsed version to fetch release details from GitHub.
- Add the GitHub Release Lookup node after Extract Version Value.
- Set Resource to
release. - Set Owner to
n8n-ioand Repository ton8n. - Set Release Tag to
{{$json["version"]}}. - Credential Required: Connect your githubOAuth2Api credentials in GitHub Release Lookup.
Step 5: Test and Activate Your Workflow
Verify the workflow works end-to-end before enabling it in production.
- Click Execute Workflow and send a Telegram message like
/deploy 1.0.0to the bot. - Confirm Conditional Command Check routes the message to Extract Version Value, then to GitHub Release Lookup.
- Verify that GitHub Release Lookup returns a matching release for the provided tag.
- When satisfied, toggle the workflow to Active so it listens for Telegram messages continuously.
Common Gotchas
- GitHub credentials can expire or need specific permissions. If things break, check your token scopes in GitHub Developer settings first.
- If you later add Wait nodes or external build steps, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Telegram commands are easy to “almost” match. Make the IF condition strict, and standardize your message format, or you’ll be chasing weird edge cases in chat history.
Frequently Asked Questions
About 30 minutes if your Telegram bot and GitHub token are ready.
No. You will connect Telegram and GitHub, then adjust a few fields for your command format.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in GitHub costs, which are typically $0 for API usage at normal volumes.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll want to be intentional. You can swap the Telegram trigger for another chat tool later, but the easiest win is editing the Conditional Command Check so it accepts more commands (like “hotfix”) and then adjusting Extract Version Value to parse different message formats. For multiple repos, duplicate the GitHub Release Lookup node and route based on a keyword in the message (for example, “deploy api 2.3.0” vs “deploy web 2.3.0”). Keep the “ignore” path in place so unknown messages don’t accidentally hit GitHub.
Usually it’s an expired token or missing permissions. Regenerate your GitHub personal access token, make sure it can create releases in the target repo, then update the credential in n8n. If it only fails sometimes, you might be hitting org restrictions or trying to release to a repo you don’t actually have access to.
A lot.
Often, yes, if you care about control and repeatability. n8n is comfortable with conditional logic (like “only run when the command is deploy”) without turning your automation into a pile of paid add-ons, and self-hosting is there if you want it. Zapier or Make can still work for basic flows, but chat-triggered release logic gets fiddly fast. If your release process is part of a bigger CD pipeline, n8n tends to fit more naturally because you can extend it without rewriting everything. Talk to an automation expert if you’re not sure which fits.
Releases should feel boring. Set this up once, and the workflow handles the picky parts so your team can ship with fewer interruptions.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.