Skip to main content

Campaign Results

From the moment a campaign goes live, its campaign page becomes a permanent, linkable results view. Open it any time at https://onflowads.com/telegram/dashboard/cross-promotion/campaign/YOUR-CODE.

Results are never paywalled. Every number on this page is free on every plan, and visible only to the two participants.

The Results panelโ€‹

While the campaign is running the header is badged โ— Live now and the numbers update as the run progresses โ€” "These update as the campaign runs โ€” refresh to see the latest." After the run it is badged Completed and the numbers are final.

What the numbers meanโ€‹

StatMeaning
Your ad opensTaps on the links and buttons in your promo โ€” the one running in your partner's channel
Partner ad opensThe same for your partner's promo running in your channel
Total opensBoth sides combined
Joined your channelMembers who joined your own connected channel through your ad's campaign invite link, as Telegram attributes them. Shown once either side has one
Joined partner's channelThe same for your partner's channel
Your button clicksOne chip per button on your post, each with its own count
Partner's button clicksThe same for their post
Your subscribers gainedYour channel's own subscriber change between go-live and close, as a signed +N or โˆ’N chip
Partner subscribers gainedThe same for their channel

A mirrored split chart sits between them, comparing your opens against your partner's when both were measured.

About the subscriber numbers

Subscriber gain is each channel's total change over the run โ€” it includes organic growth, not only the swap, and the page says so under the tiles. A channel can shrink over a run, so the number can be negative. The tiles appear only on completed campaigns, because the closing snapshot is taken when the run ends. If a member count could not be captured at either end, the tile is hidden rather than showing a misleading zero.

How ad opens and joins are countedโ€‹

What a link becomes is decided by the website at the moment the bot publishes the post, by one rule for every engine โ€” see What gets posted. Every link and button takes one first-party hop โ€” its own onflowads.com/rr/โ€ฆ short link โ€” where the tap is counted; for a link into your own connected channel that short link opens a campaign invite link, and Telegram itself attributes every join to it.

The counting rules, exactly:

  • One open per reader, per link, per UTC day. A reader who taps the same button ten times in an afternoon counts once. Tomorrow they can count again. One reader's raw taps are capped per day on top.
  • Obvious automation is excluded. Crawlers, link-preview fetchers and scripted clients are served but not counted.
  • One join per member. A member who leaves is recorded as gone; one who comes back through the same link is not a second join. Beside the join count sits your channel's own subscriber growth, read from Telegram.
  • A tap after the run ends still works. The reader is sent on normally.
  • Older posts keep their older links. A post published before the direct-link design carries the earlier signed /c/ hop, and one published before every link became a short link carries the links it went out with; each keeps counting exactly as it did until the post comes down. No new link of those kinds is created.
Read opens per button, not only in total

The per-button chips are where the useful signal is. Two buttons with wildly different counts tell you which call to action worked, and that is the one thing you can change for free before your next swap. A single "Total opens" number cannot tell you that.

Click analytics for your adโ€‹

Under the figures, Click analytics for your ad opens the click analytics panel for your own side: your ad's taps over 7, 30 or 90 days, by day and hour, by country, device, the app they were opened in and more, with every link of your ad on its own. On a Blitz the creator sees their ad across every partner channel, and a partner sees their own slot. Your partner's side is theirs to read. See The click analytics panel.

Posting proofโ€‹

View your live post โ†— and View partner's post โ†— link straight to the actual delivered messages on Telegram, so both sides can verify the swap really ran. Proof links exist only for public channels, because private channels have no public message links.

When a post came down earlyโ€‹

Removing the ad before the agreed end is the one thing cross-promotion genuinely punishes, and the results header is where you find out it happened. The delivery monitor confirms a removal across two separate checks before anything is recorded, so what you see here is a settled finding, not a suspicion.

Three versions of the same verdict, depending on which side you are:

Header pillYou areThe banner says
ViolationThe side that removed the postYou removed the cross-post early. The monitor confirmed, in two separate checks, that the post came down before the campaign was scheduled to end. Your reliability score was reduced by 1.50 points on the 0โ€“10 trust rating. Repeated violations can lead to suspension, and the banner points at your reliability page to see the detail or appeal.
Partner pulled earlyThe side that was wrongedYour partner removed their post early. It was logged and the penalty was applied to them โ€” none of it counts against you. If your partner had declared insurance cover and it has been settled, the banner says your campaign insurance has paid you compensation and to check your wallet; if the campaign was not insured, it says plainly that there is no payout.
Early removalNeither (a read-only view)One side removed its post before the campaign ended, and a reliability penalty was applied to that side.
The 1.50 points come off the score that gates everything

There is one reliability score per account and it is used across the whole platform. A cross-promotion cut short does not stay in cross-promotion: the same number gates Paid Promotions, the Subscriber Exchange and your ability to start new swaps at all โ€” the cross-promotion floor is 5.0 out of 10. Wait for the end of the run; the bot removes both posts itself, on time, and a legitimate takedown is never read as a violation.

If you believe the finding is wrong, every entry on your reliability ledger carries an Appeal button and a human reviews it. See Appealing a penalty.

Insuranceโ€‹

An insured campaign shows ๐Ÿ›ก๏ธ Insured in the header, and ๐Ÿ›ก๏ธ Insured ยท paid out once the monitor has recorded a claim against a side. What actually moves is the cover the party at fault declared before the campaign was confirmed โ€” up to $500 โ€” settled by the website from their wallet into the other side's, once, as withdrawable money; if their wallet cannot cover it, they go into debt rather than the wronged side going unpaid. The verdict banner says whether compensation was paid. There is no fixed payout, and the bot pays nothing. See Campaign insurance.

Leaving the partner's channel earlyโ€‹

The monitor also confirms, the same two-pass way, when a partner unsubscribes from the other's channel before the run ends โ€” a leave-and-rejoin counts as leaving. That verdict is recorded against the side that left as โˆ’1.00 rather than โˆ’1.50, and both sides are told by DM. It surfaces on the results header exactly like a removed post.

When the ads did not go outโ€‹

Two different failures, with two different panels.

"Did not run"โ€‹

The delivery engine calls off any run it cannot fully publish: if one ad fails, the other is taken down again and nothing stays live. The results panel then shows a Did not run pill and one of two banners instead of statistics:

  • Neither ad could be posted or One of the two ads could not be posted, followed by: "This campaign was called off before it ran โ€” any ad that did go out was taken down again, so nothing stayed live and no one is penalised. This usually means our bot lost admin posting rights on a channel, or an ad image could not be fetched. Fix that, then run a fresh cross-promotion."

There are no numbers to show, so none are shown. A Run a fresh campaign button sits underneath.

"Not fully published"โ€‹

If a campaign did go live with a side missing, the header adds a Not fully published pill and a banner naming how many of the two ads never appeared โ€” usually because the bot is no longer an admin of that channel. Only the side that did go out has real numbers; the other stays at zero because nothing was ever posted there. The fix is the same: re-add the Onflow Ads bot as an admin on both channels, then run a fresh cross-promotion.

Blitz resultsโ€‹

A launched Blitz reports per partner slot instead of the single 1:1 panel:

  • Top tiles: partner channel count, total opens of the creator's ad across all channels, and the creator's own subscriber gain.
  • An Opens by partner bar chart for the creator, once at least two slots carry a measured number.
  • A per-partner row with that channel's subscriber gain, ad opens for both ads, joins through the partner's own invite link, and proof links.

The creator sees every partner's row; each partner sees only their own slot.

After a good swapโ€‹

The results panel offers the natural next steps:

  • Run another campaign โ€” a link to the create wizard, on a completed campaign.
  • Rate your partner โ€” the rating box appears under the results on completed campaigns; see Ratings.
  • ๐Ÿ’ผ Book a paid promotion โ€” shown when your partner also sells placements through Paid Promotions. The free swap has proved the audience fit; this is how you buy guaranteed reach from the same partner.
  • ๐Ÿ” Recurring swap โ€” the panel further down the campaign page proposes repeating this swap weekly, fortnightly or monthly. See Recurring promos.

If something goes wrongโ€‹

What you seeWhat it meansWhat to do
No results panel at allThe campaign has not gone live yet.Results appear from go-live. Until then, see Campaign lifecycle.
Every number is zero on a live campaignNobody has tapped a link or button yet โ€” or, with a Not fully published pill, the ad never appeared.Check for the pill first. Zero opens on a healthy run means the ad has not been clicked.
A subscriber-gain tile is missingThe member count could not be captured at go-live or at close for that channel.Nothing to fix; the tile is hidden rather than showing a wrong number. Ad opens are unaffected.
Per-button chips all read 0 while total opens is not 0The opens came from links in the post text rather than from buttons.Check the itemised link counts โ€” a text link is counted there, and in the side total, but never on a button chip.
A proof link does not workThe channel is private, or the post has been removed.A removed post before the agreed end is what the monitor watches for โ€” see When a post came down early.
Did not runThe engine could not publish both ads, so it published neither.Re-check the bot's admin rights on both channels, then run a fresh campaign. Nobody is penalised.
From the support chat

Ask cross promo results (or name the campaign) and the assistant reads back clicks, joins and โ€” where the executor flagged one โ€” the anti-cheat verdict, from the same results this page shows. What the assistant can do for you has the full list and the confirmation rule.


Next: Ratings โ€” close the loop by rating the partner you swapped with.