Campaign Kit docs
v0.1.0
Get help
● Operate · Acquisition & clients

Growth & clients
measure, message, report.

Tracked links with cost per real (non-bot) player, bot broadcasts to segments, white-label report links for clients and sponsors, clients, sponsors and one-click cloning of a campaign as a template.

02Broadcasts and segments

Broadcasts → New broadcast: a bot message (plain text, up to 1000 characters) with a button that opens the Mini App. Audiences:

SegmentWho
All playersEveryone in the campaign.
Inactive for N daysNo activity for 1–90 days (win-back).
No wallet linkedRemind before the snapshot.
Members of a squadOne squad.
Lifetime points at leastA minimum of lifetime points.
Joined via a tracked linkPlayers attributed to one link.

Count audience shows how many players will receive it. Send now or Schedule (UTC), Save draft, Cancel a scheduled or sending broadcast. Banned players and players who blocked the bot are always skipped.

The worker runs inside the API (BROADCAST_WORKER, on by default): at most 25 messages per second per bot, resumable after a restart, honours Telegram's retry_after, and marks a player as bot-blocked when Telegram answers 403. The button needs an https Mini App URL (mini_app_url_required otherwise); an empty audience is refused (segment_empty).

Wording

Never promise money or token prices in a broadcast. Announce seasons, events and snapshot dates.

Not yet tested against real chats

Broadcast sending is covered by automated tests with a mocked Telegram API. Send a first broadcast to a small segment of your own test accounts.

03Report links for clients and sponsors

Reports → New report link: a read-only, white-label page in the campaign's own colours with aggregates only, never player identities. No login, no MIKODES branding, no admin access. Fields: label (the report title), sections, optional expiry, and scope.

SectionDefault
Overview KPIs, Growth, Retention cohorts, Activation funnel, Anti-boton
Acquisition links, Sponsored questsoff
Revenue (Stars, sponsored and recorded income)off; owner only

Scope Sponsor makes a report for one sponsor: they see only their own quests' completions and cost, never your links or revenue.

The URL is <ADMIN_PUBLIC_URL>/r/<token> and is shown once. Only a hash of the token is stored, so a leaked database cannot open your clients' reports; if you lose a link, revoke it and create a new one. The list shows status (active, expired, revoked) and when it was last viewed. A revoked or expired link shows "This report is no longer available".

Client reports list
Reports: read-only links, revoke any time
Public client report page
What your client sees at /r/<token>: campaign colours, aggregates only
Set ADMIN_PUBLIC_URL

If ADMIN_PUBLIC_URL is not set on the API, report links fall back to the first CORS_ORIGINS entry, usually the Mini App, and open the wrong site. The admin host also needs the index.html fallback so /r/<token> loads.

04Clients

Clients → Add client: the token projects you run campaigns for (name, contact, private notes such as deal terms or the sponsor split). Assign each campaign to its client in Settings → Campaign. Clients group campaigns, revenue and reports. They do not get admin logins. Deleting a client (owner) keeps its campaigns and revenue entries, just unassigned.

05Sponsors

Sponsors → Add sponsor: a partner that pays you to put a quest in front of your players (name, website, logo, private contact). Then create a sponsored quest for them (Quests). The sponsor card shows completions, earned (completions × price, capped by budget) and budget left. Invoice CSV exports billable verified completions per quest and UTC day for a date range (aggregates only, no player data). Sponsor report creates a sponsor-scoped report link.

A sponsor that still has quests cannot be removed (sponsor_has_quests): delete or unlink its quests first. Removing a sponsor revokes its report links. If the campaign belongs to a client, agree in writing who keeps sponsor income, and record paid sponsor invoices in Revenue.

06Clone a campaign as a template

Settings → Campaign → Clone as new campaign (or Clone as template in the campaign list): your next client in minutes. Choose a new name and slug and what to copy: economy, branding, quests, shop and fairness (on by default) and seasons (off by default; when on, the schedule is shifted to start tomorrow and premium items are remapped).

Never copied: players, tracked links, reports, sponsors, revenue, the bot token and the Adsgram secret. The clone starts as a draft without a bot: connect a new bot in its Launch checklist.

07Overview analytics

The campaign Overview shows real numbers only: players, daily active, retention D1/D7/D30 (a player counts once their day N is complete), Stars, anti-bot counts, new players per day (with the via-link share and event markers), the activation funnel with the biggest drop, weekly retention cohorts, live activity (names shortened to "First L."), sponsored quests and client reports. Ranges: 24 h, 30 d, 90 d, all. Nothing is shown until real people play.