Work Approach Pricing Notes Contact

Dynamic Telegram keyboards via Make: building menus without hardcoding

Static buttons are a dead end when content changes. A pattern for generating inline buttons from Airtable data in real time using iterator and array aggregator in Make.

All notes

Hardcoded inline keyboards in Telegram bots break the moment content changes. If you have 5 order statuses today and 7 next month, you're back in the scenario editing it manually.

The pattern

Pull your button options from Airtable (or any data source) at runtime. In Make, this looks like:

  1. Trigger (webhook or schedule)
  2. Search Airtable records — returns a list of items
  3. Iterator — processes each item one by one
  4. Array Aggregator — collects results into a JSON array formatted as Telegram inline keyboard buttons
  5. Send/Edit Telegram message with the aggregated keyboard

Each button object: {"text": "Order #42", "callback_data": "order_42"}. The aggregator builds the array; you pass it as reply_markup.inline_keyboard.

Callback handling

When a user taps a button, the bot receives a callback_query with your callback_data. Parse it in a Router to branch into the right flow — no hardcoded conditionals needed if your data is structured cleanly.

Limits to watch

Telegram limits inline keyboards to 100 buttons total. If your dataset can exceed this, add filtering before the iterator — show only the most relevant items, with a "load more" option.

Have a similar process?

Tell me where leads, money or manual time are leaking. I'll look at what can become a system.

DM on Telegram