Pushes: re-engage your bot audience

A bot subscriber base is the closest thing traffic arbitrage has to an owned asset: you paid for those users once, and you can message them again for free. Pushes are that lever - send a new offer to a bot's whole audience on a schedule, or follow up automatically with the exact user who just registered but hasn't deposited. Every push is another shot at revenue from traffic you already bought.

Two kinds of pushes

  • Scheduled - a broadcast to the bot's audience at a date and time you pick.
  • Event-Based - an armed message that fires when a user triggers a funnel event (e.g. registration, deposit). It goes to that specific user, not the whole base.

Create a push

  1. Open Pushes and click Create Push.
  2. Enter the target bot's ID into Bot ID - this is the bot's internal ID, not its @username. The audience comes from that one bot's subscribers, nobody else's.
  3. Set the push name (internal only, subscribers never see it) and the message text, up to 4096 characters. The text sends with Telegram HTML formatting on, so <b>, <i> and <a href=""> work - keep your tags balanced, because a stray unescaped < or & makes the whole send fail.
  4. Optionally attach one image under Image (optional). When an image is attached, your message text is sent as the photo's caption rather than a plain message.
  5. Pick the trigger: Scheduled or Event-Based. A Scheduled push needs a date and time before you can submit it.
  6. Click Create Push.

A scheduled push whose time is already in the past goes out immediately, so double-check the picker if you meant "now" and it defaulted a few minutes back.

Create push form with scheduled and event-based optionsCreate push form with scheduled and event-based options

Where the audience comes from

A subscriber lands in the base only when someone starts a bot that has an active Message Flow running - recording the subscriber happens as part of that flow starting. A bot with no active flow can rack up /start taps that never turn into a tracked subscriber, so if a push's reach looks thin, check for an active flow before you check the push itself.

Once tracked, the audience for a push is that bot's active subscribers: people who started the bot and haven't blocked it since.

Statuses and delivery stats

Every push you create goes live right away, into Scheduled - armed and waiting, whether that means counting down to its send time (Scheduled) or sitting ready for the next matching event (Event-Based). A Scheduled broadcast then moves to Sending while it goes out, and lands on Sent or Failed. An Event-Based push stays on Scheduled for good - that's not stuck, it's the normal armed state, ready to fire again the next time someone triggers the event.

The Reach column shows delivered/total for the run.

  • Users who blocked the bot are detected during the send, marked automatically, and skipped in future broadcasts.
  • One dead chat never fails the whole broadcast - failures are counted per recipient. A push is marked Failed only when it had an audience and reached nobody; an empty audience is an honest Sent with Reach 0/0.

How event-based pushes behave

An event-based push arms the moment you create it and stays armed: many users can each trigger it over time, and each one gets it at most once per triggering event, as long as they're still an active subscriber when it fires. Use it for money moments - "you registered, here's the deposit bonus" lands while intent is hot.

One thing the create form can't do yet: it only switches a push to Event-Based, with no field for choosing which event arms it. A push made in the dashboard isn't tied to a specific event and won't fire on its own, so to run an event-based push against a real event (registration, deposit, and so on) ask support to arm it for you after you create it.

Common pitfalls

  • There's no edit or pause action after creation, only create, list and delete. To change the time, text or trigger, delete the push and make a new one; deleting a live Event-Based push is also how you stop it from firing.
  • The Bot ID field takes the bot's internal ID, not its @username, and Bots doesn't display that ID - keep track of it from when you connected the bot, or ask support.
  • A Scheduled push needs its date and time set before you can submit - there's no "save now, schedule later" flow.
  • Pushes reach only people who started the bot while it had an active flow. Small reach is usually a flow problem upstream, not a push problem.
  • Telegram caps plain message text at 4096 characters, and the form enforces that. Attach an image, though, and the text rides along as the photo's caption, which Telegram caps at 1024 - the form still accepts up to 4096 with no warning, so an image push with a longer message fails at send. Keep the text under 1024 characters whenever you attach an image.
  • Reach below your subscriber count is normal churn: blocked chats are skipped and marked.
  • Need a mass announcement? That's Scheduled. Event-Based messages go only to the user who triggered the event.