Get a Telegram message for every new test build
· 4 min read
If your team, your testers or your client talk in a Telegram group, that is where a new test build should be announced. Copying each install link into the group by hand works until the day someone forgets. This guide shows two ways to get a Telegram message for every new build: with AppForShare's Telegram integration, and with a plain curl call from any CI.
Step 1: make a bot
Telegram messages from a service come from a bot that you own.
- In Telegram, open a chat with @BotFather and send
/newbot. - Pick a display name and a user name ending in "bot", such as
acme_builds_bot. - BotFather replies with a bot token that looks like
123456789:AAE.... Treat it as a password: anyone with it can post as your bot.
Step 2: add the bot and find the chat id
- A group: add the bot to the group as a member.
- A channel: add the bot as an administrator that can post messages.
Then you need the chat id. A public channel can use its @name. For a group or a private channel, send a message in it (in a group, a command such as /hello@acme_builds_bot works even when the bot only sees commands), then open https://api.telegram.org/bot<token>/getUpdates in a browser and look for "chat":{"id":. Group and channel ids are negative numbers such as -1001234567890.
Option A: the AppForShare Telegram integration
On AppForShare Pro and Team, Telegram notifications are part of Integrations.
- Open Dashboard, Integrations, and add Telegram.
- Paste the bot token and the chat id, and pick the events: build ready, build installed and tester feedback.
- Press Send test. If the message arrives, you are done.
Each event becomes a short message with a link to the install page or the feedback report. Feedback messages say the kind of report, the device and how many attachments it has, but never the tester's text, name or email: those stay in AppForShare. The bot token and chat id are stored encrypted and never shown again, and messages go to api.telegram.org only. It works for uploads from the web, the CLI, the GitHub Action, fastlane and every other path, because it fires when the build is ready, not when a pipeline step runs. Add one integration per chat if you post to several.
Option B: curl from your CI
If you only want a message at the end of a pipeline, Telegram's Bot API takes a plain HTTP call. Store the token and the chat id as secrets in your CI, then add a step after the upload:
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d parse_mode=HTML \
-d disable_web_page_preview=true \
--data-urlencode text="New build <b>${APP_VERSION}</b> is ready: ${INSTALL_URL}"
With AppForShare, the CLI prints the install link after an upload, so a step can capture it and send it. This route sends one message per pipeline run and nothing for installs or feedback; it also only knows about builds that went through that pipeline.
Which to choose
- The integration if builds arrive from more than one place, if you want install and feedback messages too, or if you would rather not keep a bot token in every pipeline.
- curl if you are not on a paid plan, or you want full control of the message text in one pipeline.
Keep the group useful
- Post installs to a separate chat from new builds if the team is large; install messages add up quickly on a busy test day.
- Keep tester text out of group chats. Feedback can hold personal details, which is why the integration posts only the kind and the device.
- If the token leaks, send
/revoketo BotFather to get a new one, then update the integration.
Slack, Microsoft Teams, Google Chat and Discord work the same way from the Integrations page, with more event kinds such as store review states; see Slack and Discord build notifications and webhooks.
Common questions
Can the bot post to a channel?
Yes, once it is an administrator of the channel that can post messages.
Why does getUpdates return nothing?
The bot has not seen a message yet. Send a command that mentions the bot in the group, then load getUpdates again. If a webhook is set on the bot, getUpdates stays empty; use a fresh bot for notifications.
Which plan has the Telegram integration?
Pro and Team, like the other integrations.


