Launching an ad is easy. Learning something reliable from it is harder.
Telegram Ads can introduce a channel, bot, mini app, or public post to a new audience. But an impression is not a customer, and a click is not necessarily a meaningful action. A useful campaign therefore needs two systems working together:
- an advertising system that records delivery and traffic; and
- a product analytics system that records what happens after the visit.
This article presents a practical measurement framework for teams that want to make budget decisions using evidence rather than vanity metrics.
Adsito is an independent service. It is not part of Telegram or an official representative of Telegram. Ad review and delivery remain subject to the applicable platform processes and policies.
Start with a decision, not a dashboard
Before choosing targeting or setting a CPM, write down the decision the campaign should inform.
Good examples include:
- Should we scale this audience or test another one?
- Does a bot onboarding flow convert better than a channel landing post?
- Is the lower-volume audience producing more qualified users?
- Which message attracts people who complete the first meaningful action?
This matters because a dashboard can display dozens of numbers while answering none of those questions. A campaign objective should identify one primary outcome, one time window, and one threshold for action.
For a Telegram bot, the primary outcome might be a completed onboarding flow within 24 hours. For a mini app, it might be account creation. For a public channel, membership may be harder to observe precisely, so the team could use a tracked landing experience or a bot-assisted welcome flow instead.
Use a four-layer funnel
A simple way to structure measurement is to separate the funnel into four layers.
1. Delivery
Delivery answers whether the advertisement reached people. Typical fields are impressions, spend, CPM, delivery by day, and campaign status.
CPM = spend / impressions × 1,000
Delivery metrics are necessary for pacing and budget control, but they do not say whether the message resonated.
2. Response
Response describes the immediate interaction with the ad. Typical fields are clicks, click-through rate, and cost per click.
CTR = clicks / impressions × 100
CPC = spend / clicks
CTR is most useful as a diagnostic signal. A weak CTR may indicate poor message-market fit, an unclear promise, or targeting that is too broad. A strong CTR is encouraging, but it can still produce low-quality traffic.
3. Activation
Activation is the first action that demonstrates real intent. It should be specific to the destination.
Examples include:
- sending /start to a bot;
- completing bot onboarding;
- opening a mini app and creating an account;
- reaching a feature that delivers the product's core value;
- requesting a quote or starting a checkout.
Activation belongs in your own application analytics. Do not assume the advertising platform can observe it automatically.
4. Value
Value is the outcome that matters to the business: a retained user, a qualified lead, a purchase, or another clearly defined event.
CPA = spend / attributed conversions
The word attributed is important. A conversion can happen after multiple contacts, and not every destination provides deterministic identity. Report your attribution method next to the result instead of presenting CPA as absolute truth.
Design links and events before launch
Measurement work is cheapest before traffic arrives. Create a campaign identifier that stays consistent across the ad record, destination deep link, bot or mini-app events, internal experiment log, and exported reports.
For a bot, a deep-link payload can identify a campaign or creative. For a web page, standard campaign parameters can provide the same bridge. Keep identifiers opaque and avoid placing personal data in URLs.
Your event schema should be small and stable. A useful minimum might include an event name, campaign ID, timestamp, and destination type. Do not collect more data than the decision requires. Privacy and data-minimization rules still apply to marketing analytics.
Separate targeting tests from creative tests
Changing the audience, message, destination, and budget at once produces an ambiguous result. You may see an improvement without knowing what caused it.
Instead, change one major variable per test:
- hold the audience constant while comparing two messages; or
- hold the message constant while comparing two audiences.
Use a clear naming convention such as:
product_objective_audience_message_version
Choose the minimum observation window before launch, then avoid stopping a variant only because of a few early clicks. Low-volume data is noisy. Practical decision-making is not the same as waiting for perfect statistical certainty, but it does require consistent rules.
Build a daily operating loop
A repeatable campaign loop is more valuable than a one-time report.
Check delivery
Is spend progressing at the expected rate? Is the campaign active? Did a status change require attention?
Check data quality
Did impression and click counts update? Are destination events arriving? Did a release break a deep link or onboarding event?
Compare rates, not only totals
A larger campaign naturally produces larger totals. Compare CTR, CPC, activation rate, and qualified-action rate alongside volume.
Record the decision
Write a short entry in the experiment log:
Observation: Variant B has a higher CTR but a lower onboarding completion rate.
Decision: Keep Variant A and test a clearer value proposition.
Confidence: Directional; sample remains limited.
This prevents teams from rewriting the story after seeing the result.
Add automation without removing judgment
An API becomes useful when it reduces repetitive work while keeping decisions visible.
For example, a team may use the Adsito public API to list advertisements and inspect lifecycle state, create and submit supported ad records, retrieve workspace and per-ad statistics, request pricing information, export campaign and daily-stat reports, and read wallet balances and ledger entries.
The API uses bearer keys scoped to a workspace and IP allowlisting. Financial operations that support it should use an Idempotency-Key so a retried request does not accidentally execute twice. Responses are JSON, while structured errors include a stable code and trace identifier for diagnosis.
The current reference, endpoint details, and cURL examples are available in the Adsito API documentation.
A lightweight reporting job could follow this shape:
- Fetch the active campaign list.
- Fetch daily stats for each campaign.
- Join advertising data with activation events by campaign ID.
- Flag missing data and unusual changes.
- Generate a review table; do not auto-scale solely on one metric.
Automation should surface decisions, not conceal them. Keep safeguards around budgets, status transitions, and retries.
A compact review table
| Layer | Metric | Diagnostic question |
|---|---|---|
| Delivery | Impressions, spend, CPM | Did the campaign deliver and pace normally? |
| Response | Clicks, CTR, CPC | Did the message earn relevant attention? |
| Activation | Starts, sign-ups, completed onboarding | Did visitors experience initial value? |
| Value | Qualified actions, CPA, retention | Did the campaign create a useful business outcome? |
Add a data-quality column and an attribution note. A number without context is easy to overinterpret.
Common measurement mistakes
Optimizing only for CTR. Curiosity-driven copy can win clicks and lose qualified users.
Using a different definition of conversion in every report. Define the event once and version intentional changes.
Ignoring delayed events. A user may activate or purchase later. Use a documented attribution window.
Treating incomplete tracking as zero performance. Broken instrumentation is not evidence that an audience failed.
Scaling before validating the destination. Test the bot, mini app, or landing flow on real devices before increasing spend.
Assuming advertising reports include downstream conversions. Destination behavior often requires separate analytics and a deliberate join strategy.
The real deliverable is a learning system
A strong campaign is not merely an ad with an attractive CTR. It is a small, controlled experiment with a reliable path from spend to observation to decision.
If you define the outcome first, preserve identifiers across systems, separate delivery from activation, and keep a written decision log, each campaign improves the next one—even when the first result is disappointing.
Teams that want to manage Telegram advertising, reporting, exports, and API-based workflows in one workspace can explore Adsito. Review the product's current capabilities, limitations, and active payment options before starting a campaign.
Top comments (0)