Step by step
- 01
Prepare the group
In the group settings allow members to add people, or give the accounts admin rights to invite. Better turn join requests off: while they are on, an account only gets in once you approve its request.
- 02
Create a campaign
"New campaign" → "Name", "Invite into" (t.me/…, @username or t.me/+…). "Accounts": an "Account group" or "Pick manually" (only active accounts with a SOCKS5/HTTP proxy). "Whom to invite": a "Username list" (one per line, or separated by spaces or commas; @name, name, t.me/name) or an "Audience".
- 03
Check the limits
By default it is 20 invites per account per day and a pause of 90–240 seconds. The limit can go up to 500, but above 50 the form warns about the ban risk. "Join spacing" of 30–120 seconds keeps the accounts from joining the group all at once.
- 04
Start
"Create and start" (or "Create", then "Start" on the campaign page). The "Joining" status means the accounts are entering the group; then it changes to "Running". An account sends its first invite 10–20 minutes after joining, which is safer. Under "Import" you see how many usernames were added, how many duplicates there were and what was not recognized.
- 05
Watch the progress
The campaign page shows counters by result (clicking a tile filters the table), the accounts table with each account's state, today's invites and the time of the next one, the limits (editable on the fly) and the "Targets" table with a "CSV" button. The page refreshes itself every 5–10 seconds.
- 06
Pause, resume, stop
"Pause" freezes everything and "Resume" continues from the same point. "Stop" ends the campaign for good. "Add" in "Targets" appends usernames to the end of the queue, including in a completed campaign.
Target statuses: how each invite ended
The result for every username is shown in the "Targets" table. Clicking a counter tile on the campaign page filters the table by status, and the "CSV" button exports the current selection. The details of a failure are in the "Reason" column.
- Invited
- The person was added to the group.
- Already in group
- They are already a member and are not invited a second time.
- Privacy restricted
- Their privacy settings do not allow adding them to groups.
- Mutual contact needed
- They allow only mutual contacts to invite them.
- Too many groups
- They are already in the maximum number of groups and channels, so they cannot be added to a new one.
- Banned in group
- The user is banned in your group.
- Not found
- There is no such username, the account was deleted, or it is a channel or a group. Before this status is set, the username is checked by different accounts.
- Bot
- The username belongs to a bot; the inviter does not add bots.
- Failed
- Telegram did not let the person be added for another reason.
Fields and settings
- Daily limit
- Invites per account; one counter shared by all inviter campaigns. Safe is up to 20. Telegram counts refusals (privacy and so on) too, so an account makes no more than twice the limit in attempts per day and no more than three times the limit in username lookups (from 60 to 300); after that it waits until tomorrow.
- Min / Max pause, sec
- A random pause between invites from one account.
- Join spacing
- The pause between accounts joining the group at the start.
- Privacy restricted
- The person does not allow being added to groups, so they cannot be invited.
- Mutual contact needed
- Telegram lets only people in this person's contacts add them.
- No right to invite
- An account state: the group does not let members add people, and the account has no admin rights.
- Limited
- The account hit PeerFlood after joining: it rests for a day and the other accounts take over its targets. If it hit PeerFlood while joining, it joins once the restriction is lifted.
Tips
- Use warmed-up accounts with history and keep it at 15–20 invites a day.
- The more accounts you have, the faster the list goes: the limit is counted per account.
- Export "Privacy restricted" and "Mutual contact needed" to CSV: you can message these people directly with a link to the group.
Gotchas and common mistakes
- With join requests on, the account gets "Did not join": approve its request or turn requests off, and on the next "Resume" it joins again.
- "Stop" cannot be undone; use "Pause" for a break.
- If the TDLib worker is down, starting replies "TDLib is temporarily unavailable".
- A limit above 50 a day per account noticeably raises the ban risk.
Where to get a username list — scraping groups and channels.