Skip to main content

Telegram client Mini App

The React Mini App chooses the connected experience when Telegram supplies raw launch data. It signs in automatically through the API's channel authentication, as described in Mini App sign-in. After trusted contact association, it loads the profile, claimed appointments, prior professionals, preferences, and inbox from the API. A later launch on another device reads the same stored state. See Telegram client authentication.

Contact onboarding​

Sign-in does not wait for a phone number. Right after signing in, the app reads the account's onboarding status. While it is contact_required, the app shows only a request to share the contact:

  1. The client taps the button and Telegram asks them to share their contact with the bot. Declining shows a message and leaves the request in place.
  2. After sharing, the app checks the onboarding status every 2 seconds, for up to about 30 seconds, with the same session. It never signs in again to do so. Telegram's confirmation in the app proves nothing; only the bot's update, applied by the API, verifies the contact.
  3. When the status becomes ready, the app loads the account.
  4. If the bot's update has not arrived by then, the app says so and offers Check again, which repeats the check without asking to share again.

Bot write permission is shown separately in the settings screen. Allowing messages refreshes the account; it never stands in for contact.

Connected journey​

A schedule launch opens an active Telegram-enabled schedule. The client chooses a service and a local date, then sees availability supplied by the API. Booking uses the server response as the confirmed result and refreshes the account. The same idempotency key is kept while retrying a submission; changing the selection starts a new attempt. If the selected place is taken, the app reports the conflict and reloads available times. See Public booking.

The account separates upcoming appointments from history and shows prior professionals. An archived schedule remains in history without a booking action. A personal booking launch parameter, or the action to add a personal link, claims the existing server appointment. Opening that link again does not duplicate or reactivate it. The client can edit the contact suggested for future bookings and cancel an eligible owned appointment. A failed write leaves the last server-confirmed state visible with a retryable message. See Client accounts.

The settings screen exposes reminder and cancellation preferences. The inbox supports reading, dismissal, and clearing; those states come from the API. The app does not promise a bot message when the server has not observed write permission. See Client booking notifications.

Signing out​

The settings screen has a Sign out button. It revokes the session through the API, clears the account from the screen, and shows a message to reopen the Mini App from Telegram. The app does not sign in again on its own afterwards.

Browser preview​

Without raw Telegram launch data, the app loads a visibly labeled sample experience in a separate bundle. Its mock schedules, appointments, profile, notifications, and mock links stay in browser storage. They do not contact the API, create a session, or upload appointments to the API. A sample token is not a real management link.