When a user taps a button in your Telegram bot, the naive approach is to send a brand-new message with updated content. After a few interactions the chat looks like a dump — 10 near-identical messages stacked on top of each other.
The correct approach: use editMessageText to update the text of the existing message, and editMessageReplyMarkup to swap out the inline keyboard. The message stays in place, the chat stays clean.
How it works in Make
In Make, the Telegram Bot module has separate actions for sending and editing. The critical piece is storing the message_id of the original message — you get it from the webhook payload when the user first triggers the bot, and you pass it to every subsequent edit call.
Store message_id in a variable or a data store. On every callback_query, pull it out and use it in editMessageText instead of sending a new message.
When you can't avoid a new message
There are edge cases: you can only edit messages sent by the bot itself (not user messages), and you cannot edit messages older than 48 hours. In those cases, send a new message and delete the old one using deleteMessage — same clean result.
Practical result
For the Cakes by Sofy project, switching to editMessage cut the number of messages in the admin chat by ~80%. The operator sees one persistent message that updates as order status changes — not a thread of 15 status updates.