Telegraft

Integration

Airtable, for teams who want a database and a spreadsheet

Airtable gives a Telegram bot a structured record store with real field types and a usable API, editable by non-technical staff. It sits between a spreadsheet and a database. The limits are five requests per second per base and a record ceiling that arrives sooner than most teams plan for.

Airtable integration: auth, limits and availability

Auth model
API key
Rate limit
5 requests/second per base
GCC availability
No regional restriction; plan tier governs limits
Data flow
5 hops, worker-mediated

As of 2025-10-01, Telegram Bot API 13.4

Why this integration exists

The reason Airtable keeps appearing in these projects is that it resolves a genuine tension. Operations staff want something they can look at and edit; engineers want typed fields, referential links and an API that does not corrupt data under concurrent writes. Airtable is a reasonable compromise on both, which is more than a spreadsheet manages.

For a bot, this means the operational data — menu items, service definitions, rota, property listings — can live somewhere a manager updates directly, while the bot reads it through an API with actual types. A linked record is a link rather than a text field containing a name that somebody will eventually misspell. That difference removes a whole category of defect that spreadsheet-backed bots suffer permanently.

The constraints are firmer than they look. Five requests per second per base sounds generous until a bot doing per-user reads meets a busy hour, and the per-base record limits mean a high-volume transactional log does not belong here at all. The right division is that Airtable holds operational data that humans curate, while transactional records the bot generates go to a database. Mixing them produces a base that hits its ceiling and takes the operational data down with it.

How the data actually moves

Request inTelegramlookupBot Workercheck firstCachefiltered queryAirtable basebot writes hereD1transactions
Airtable holds curated operational data and is read through a cache. Records the bot generates go to D1, so a busy hour cannot exhaust the base's rate limit or its record ceiling.

A personal access token scoped to specific bases and specific permissions, held as a Worker secret. Scoping matters more than it seems: a token with access to every base in a workspace is a single secret that reaches all of the company's operational data, and it will be copied into somewhere less careful eventually.

Auth model: API key

Their limits, and what they mean for you

The API is limited to 5 requests per second per base.

A bot doing a lookup per user will exceed it during any busy period. Operational data is cached with a short refresh rather than read per request, which is the design that makes this integration viable at all.

Bases have record limits that vary by plan, and performance degrades before the hard limit.

Transactional volume belongs in a database. A base used as an append-only log will slow down long before it stops accepting records.

A list request returns a page of records with a cursor, and pagination consumes the rate limit.

Full-table reads are expensive. Filtered views defined in Airtable are used so the API returns only what is needed rather than everything followed by client-side filtering.

Field types are enforced, and changing a field type in the UI can silently alter stored values.

A single-select converted to text keeps the values; text converted to number does not keep what will not parse. Schema changes are treated as deployments rather than as edits.

How it fails, and what happens when it does

The rate limit is hit during a busy period.

Reads serve from cache and writes queue. Without caching this is not an edge case but the normal state of any bot with real traffic.

Someone renames a field in the Airtable UI.

Reads by field name break immediately. Field ids are used where available, and a startup validation names the missing field rather than failing on the first user request.

A linked record points at a row somebody deleted.

The link resolves to nothing and the bot must handle it rather than assume presence. Deletion in the UI carries no warning about what referenced the row.

A view filter is edited and the bot starts seeing a different record set.

Reading through a view is convenient and couples the bot to a UI setting. The filter that matters is documented, and a record count outside expectations raises an alert.

Availability in the UAE and the wider GCC

Global

No regional restriction. Plan tier determines record limits, API access and automation quotas.

Operational data curated by humans

The intended case. Menus, listings, rotas and service definitions belong here and benefit from typed fields.

Transactional logs

A poor fit. Record limits and the five-per-second ceiling both bite, and the failure is gradual degradation rather than a clear error.

Data residency requirements

Data is held in Airtable's infrastructure. Where a regulator requires local residency this is a decision for counsel rather than a setting.

When not to use this integration

  • You need transactional volume. Record limits and the per-second ceiling both bite, and degradation is gradual rather than obvious.
  • You need sub-second reads under load without caching. Five requests per second per base is a hard ceiling and no amount of engineering raises it.
  • Nobody will maintain the base. Airtable's advantage is that non-technical staff curate it; an unmaintained base is a database with a worse API.
  • You already run a proper database and staff do not need to edit records. Then the base is a second source of truth for no benefit.

What it runs on

ComponentVersionWhy
Cloudflare WorkerscurrentCached reads, queued writes and startup schema validation.
Cloudflare KVcurrentOperational data cache with a short refresh interval.
Cloudflare D1currentTransactional records the bot generates, kept out of the base.
Zod4.4Validation of records, since humans edit the source directly.

Questions that come up during scoping

Can Airtable be the only data store behind a bot?

For low-volume operational data, yes. For anything transactional, no — the five-per-second limit and the record ceiling both bite, and the failure is gradual slowdown rather than a clear error. The workable division is curated data in Airtable, generated records in a database.

How do we stay inside the rate limit?

By caching operational data with a short refresh rather than reading per request. A bot doing one lookup per user exceeds five per second during any busy period, so caching is what makes this viable rather than an optimisation.

What happens when someone renames a field?

Reads by field name break immediately. Field ids are used where available and a startup validation names the missing field, so it surfaces at deploy time rather than on the first user request of the morning.

Should the bot read through a view?

It is convenient and it couples the bot to a UI setting anyone can edit. Where a view is used, the filter it depends on is documented and an unexpected record count raises an alert.

How does this compare to Google Sheets?

Better in every technical respect — typed fields, real links, an API that does not corrupt rows under concurrent writes. Sheets wins only on familiarity, which is a real consideration for a team that already lives in one.

How should the access token be scoped?

To specific bases and the minimum permissions needed. A workspace-wide token is one secret that reaches all of the company's operational data, and it will eventually be copied somewhere less careful than where it started.

Related reading