Forward SMS to Telegram: set up a private chat that works
Bring useful Android SMS copies into a private Telegram conversation. Connect your own bot, identify the right chat and test the full route, with clear guidance for HashKeep’s backup-dependent public release.
Short answer
To forward SMS to Telegram with HashKeep, create a bot, start a private conversation, and connect its token and numeric chat ID in Delivery. Test the destination, then enable a suitable rule. The verified public release, 0.1.55, requires qualifying Drive backups; newer backup-independent rules are in Internal Testing. Telegram receives readable copies, separate from the encrypted archive.
An appointment reminder arrives on your Android phone while you are arranging your day at a laptop. Telegram is already open. Putting a readable copy in a dedicated conversation means the time and address are there when you need them, with the original SMS still on your phone.
That is the job of SMS-to-Telegram forwarding. Your phone receives the carrier message; an app sends a separate readable copy through a Telegram bot. The useful part is not the bot itself. It is choosing the right destination and making the whole route predictable.
This guide covers a private conversation with your own bot using HashKeep's Delivery feature. It separates three jobs that are easy to confuse: connecting Telegram, choosing which messages qualify, and confirming that an actual SMS reaches the chat.
What forwarding to Telegram gives you
Think of the Telegram conversation as a convenient working copy. A parcel reference, appointment time or maintenance reminder can sit alongside the other information you use during the day. You do not have to turn every text message into a notification on every device.
Start with a simple purpose. “Put delivery updates where I work” is a better setup brief than “send everything everywhere.” It makes the destination easier to recognize and gives you a sensible test: can you find the information you meant to keep?
HashKeep's encrypted archive and its readable Delivery copies are separate. The archive is for keeping and finding your SMS records. The Telegram destination is for reading selected copies in another service. HashKeep does not send a new carrier SMS to another phone number, and this workflow covers SMS text rather than MMS attachments or RCS conversations.
A bot conversation also is not a Telegram Secret Chat. Telegram distinguishes its cloud conversations from end-to-end encrypted Secret Chats. Treat forwarded content as readable at the destination, with the access and retention choices that come with it. Telegram's encryption explanation describes that distinction.
Create a bot with one clear job
Use a dedicated bot for your SMS copies. Giving it a descriptive name, such as “My SMS desk,” makes it easier to distinguish from unrelated alerts. A separate bot also means you can change this workflow later without disrupting another integration.
Open the verified BotFather account in Telegram, send /newbot, and follow its naming instructions. BotFather gives you a bot token. That token authorizes software to act as the bot; it is not your Telegram password. Keep it private and enter it only where it is needed to connect your own bot. Telegram's official bot tutorial documents this setup.
Open the bot you just created and tap Start, or send /start. This starts your private conversation. A newly created bot does not need to answer immediately to be usable as a destination: HashKeep will send its connection test later.
There are now three different things on your screen or in your notes: the bot's name, its token and the conversation itself. Keep those distinct. The name helps you recognize the bot. The token authorizes it. The chat ID tells HashKeep where to send the copy.
Find the private chat's numeric ID
For a private conversation, use the numeric chat ID from your own bot's getUpdates response. After sending /start, retrieve the response through Telegram's official API using a trusted local API tool. Find the message you sent and read message.chat.id. The Bot API documentation defines the response and the chat object.
This is the technical step in the setup. If you are unfamiliar with API tools, ask for help with that step while keeping the token on your own computer. There is no need to give a chat-ID lookup website control of your bot. Avoid pasting token-bearing API URLs into shared documents, support tickets or screenshots.
Use the ID of the conversation, not the bot's ID, its username or your phone number. Those identifiers look equally plausible when copied into the wrong field, but they answer different questions. For this private-chat walkthrough, the destination is the numeric value identifying your conversation with the bot.
If getUpdates has no relevant message, send /start again and retrieve the response again. A bot already connected to another integration may have an update consumer or webhook. Telegram documents that webhook delivery and getUpdates cannot operate simultaneously. A fresh dedicated bot avoids borrowing a setup that another tool controls. Telegram's bot FAQ explains the two update routes.
Connect Telegram in HashKeep
Open HashKeep's Delivery settings and add a Telegram destination. Enter a recognizable channel name, the bot token and the private chat's numeric ID. The channel name is your label inside HashKeep; it does not have to match the bot's public name.
Use the destination's test action. It sends a fixed test message, so you can verify the connection without forwarding a personal SMS. Open Telegram and confirm that the test appears in the intended bot conversation, then save the destination. HashKeep requires a successful destination test before saving the connection.
This small pause is worth taking. A success indicator tells you the request worked, but looking at the receiving conversation confirms the part that matters to you: the copy went to the right place. If you keep several Telegram accounts or bots, the difference is easy to miss.
Saving a destination does not finish message routing. A destination answers “where?” A rule answers “which messages?” Add or review the associated rule, make its scope intentional, and confirm that it is enabled. Keep the first setup simple enough that you can explain the route in one sentence.
Match the rule to your installed version
Version matters here. As of 19 October 2026, the verified public Production release is HashKeep 0.1.55. Its Delivery rules send eligible backed-up messages. A successful Telegram connection test does not itself back up your SMS or make an unbacked message eligible for delivery.
For that public release, receive or import the SMS into HashKeep, complete the required Drive backup, and use the enabled rule to deliver eligible copies. A local-file export is not the qualifying Drive backup for this workflow. “Nothing to deliver” can therefore mean that the connection works but the messages are not eligible yet.
Newer Internal Testing builds add a separate option for forwarding newly captured SMS without a backup. That option should not be assumed present in the public version, and existing backup-dependent rules do not silently change behavior. Follow the rule mode shown in your installation rather than relying on a newer screenshot.
Customizing the Drive backup schedule is a Pro feature. The practical lesson is simple: prove the whole route your installed app supports. If your goal is unattended delivery, a successful manual backup and send demonstrate the connection, but they do not establish that future messages will arrive automatically under your current settings.
Run a harmless end-to-end test
Choose an ordinary test message such as “Delivery test: blue parcel at reception.” Send it as an SMS to the Android phone from another phone. Using a distinctive phrase makes it easy to identify the same message at each stage without sharing an account code or private conversation.
First, confirm that the phone received it. Then find that message in HashKeep's archive. Finally, let the configured rule process it according to its mode and cadence, including a qualifying backup where required, and look for the copy in Telegram.
These three observations answer different questions. A message in the phone's inbox proves reception. A message in HashKeep proves capture. A copy in Telegram proves that the destination received this particular SMS. The earlier fixed test proves only that the destination can accept a test message.
For an automatic workflow, repeat with a second new SMS without manually triggering delivery. Observe the real outcome rather than treating the first success as proof of every future condition. HashKeep processes copies in batches, and Android can defer background work. The selected cadence is not an exact arrival guarantee.
Keep your test notes short: installed app version, rule mode, whether a manual action was needed, and whether the copy arrived. You do not need to record the bot token or the message body to know which part worked.
When the test works but the SMS does not arrive
Troubleshoot the first missing step, not all the settings at once. If the SMS is absent from the phone, Telegram configuration is not the place to start. If it reached the phone but not HashKeep, review incoming capture and SMS permissions. Our SMS permissions guide explains what those permissions enable.
If the message is archived but missing from Telegram, inspect the rule: is it enabled, does this message fit its scope, and does its mode require backup? On the public backup-dependent release, an incomplete Drive backup can explain the gap even when the destination test passes.
If the destination test itself fails, return to the token and chat ID. Confirm that the token belongs to this bot and that you started this private conversation. A token replaced through BotFather must also be updated in HashKeep. Test the repaired destination before relying on it again.
A network failure calls for a different response from an incorrect credential. Restore connectivity and use the app's displayed status to guide the next step. Repeatedly creating new bots or broadening the rule rarely helps identify which boundary failed. Preserve the simple setup until one harmless message completes the route.
Keep the conversation useful over time
Once the route works, decide how much content belongs there. A dedicated conversation is easier to use when its contents have a purpose. If the copies are mostly information you never read, narrow the workflow using the options available in your installed version rather than adding more destinations.
Review the setup when you replace the phone, change the bot token or stop using that Telegram account. Pause the route before reworking its destination, then repeat the fixed test and a harmless SMS. That is a manageable maintenance habit, not a daily checklist.
Retention deserves its own decision. The archived record and the Telegram copy live in different places; changing how you keep one is not a promise to delete the other. Choose a sensible window for the original archive and manage the destination conversation separately. The archive retention guide helps frame that choice.
The best setup is one you can understand at a glance: this phone receives the SMS, this rule selects eligible records, and this private Telegram conversation gets a readable copy. Start there. Once that route is proven, you have a useful connection instead of another configuration screen to wonder about.
Sources
- Telegram: From BotFather to Hello World
Bot creation, token meaning, private chat initiation.
- Telegram Bot API: getUpdates
Update response and message.chat.id.
- Telegram Bots FAQ: Getting Updates
Webhook/getUpdates incompatibility.
- Telegram FAQ: Encryption
Cloud versus Secret Chat distinction.
- Telegram Bot Features: BotFather
Bot token management.
- HashKeep privacy policy
Readable Delivery copies are separate from encrypted archives and backups.