Skip to main content

What You Are Actually Buying

A rate card row says something like "1 hour at the top ยท 24 hours in feed". Three things decide what that actually produces in the channel, and all three surprise people:

  1. "At the top" is exclusivity, not a pin. For the promised window the ad is the newest post โ€” the owner publishes nothing else. It is not held above the feed.
  2. A pin is a separate thing you buy. Some owners offer it as an extra on their rate card, at a fixed platform rate, and one format sells nothing but the pin.
  3. The platform adds one line under your copy. advertisement via onflowads.com, and whether it appears is decided by the channel's plan, not yours.

This page is the whole of that, once, so the rest of the section can refer back to it.

"N hours at the top" means newest, not pinnedโ€‹

Every numeric format sells a window of top-of-feed exclusivity: for those minutes the owner posts nothing after your ad, so anyone who opens the channel in that window sees it first. When the window closes the ad keeps living in the feed for its promised in-feed duration, in ordinary feed position.

FormatExclusive windowIn feed forPinned?
1 hour at the top ยท 24 hours in feed60 minutes24 hoursNo
2 hours at the top ยท 48 hours in feed120 minutes48 hoursNo
3 hours at the top ยท 72 hours in feed180 minutes72 hoursNo
Native ยท 7 days in feed ยท 1 hour at the top60 minutes168 hoursNo
30 days in feed ยท 3 hours at the top180 minutes720 hoursNo
Forward / repostnone24 hoursNo
7 days in feed ยท pinned throughoutnone168 hoursYes โ€” the whole run

7 days in feed ยท pinned throughout is the one format that really is a pin: it sells the pin itself, which is why it promises no exclusivity window on top of it. The pin is the placement โ€” and like everything else here it ends when the run does. This slot was called "7 days in feed ยท pinned throughout" until we corrected it: nothing on the platform is permanent, the bot takes every post down when its booked time is up, and it releases this pin with it.

This is a policed promise, not a prevented one

No bot can stop a channel's own admins from posting โ€” Telegram's slow mode does not apply to them, and there is no API that would. So the platform does not prevent a breach; it checks afterwards and prices it. What the format buys you is a commitment the owner made and a check that runs against it, not a mechanical guarantee.

Bookings made before this changed still mean the old thing

The product used to implement the top hours as a pin โ€” pin for N hours, then unpin. That was a different promise (a pinned ad under three newer posts is not "at the top" in any sense a reader would recognise), and it was corrected rather than extended. Orders booked before the correction were sold under the pin meaning and are still delivered and policed as pins, deliberately: nothing was retroactively rewritten. Everything you book now works the way this page describes.

The exclusivity checkโ€‹

After the window closes, the platform reads the channel's own history once and reconstructs the whole window from the message timestamps โ€” including anything posted and then deleted inside it, which no repeated polling could have caught.

ThingThe figure
When it looks5 minutes after the window closes
What counts as a breachAny message in the channel newer than your ad, dated inside the window
Not a breachYour own album's other photos, service messages (a pin, a join, a title change), and forwards or edits of the ad itself
The verdictok, breached, or unknown
What a breach costs the ownerโˆ’0.40 reliability, once
What it costs youNothing. There is no money consequence
An inconclusive read never penalises anybody

If the channel cannot be read โ€” it went private, the reader could not reach it, the history came back empty โ€” the verdict is unknown. Unknown is never filed as a clean run and never as a breach. It is simply retried on later passes, and if it is still unresolved 25 hours after publication it is closed as unknown, permanently, so "we never checked" can never be mistaken for "we checked and it was fine".

This is a single retrospective read of a past that cannot change, so it is not re-probed the way a live "is the post still there?" check is. The protection here is the three-state verdict, not a second look.

What you see when it happensโ€‹

You are notified. The item is titled "Your ad did not get its full time at the top", names the channel, says how many other posts went up and how far into the window the first one landed, and adds "We have recorded it against the channel. Your ad is still running for its full booked duration." It links back to your Campaigns page. The owner gets their own notification and takes the reliability hit.

The notification is the only surface

The verdict is stored against the order, but no page renders it today โ€” not the order card, not the proof archive, not the campaign rollup. If you dismiss the notification there is nowhere to go back and read it. Screenshot it, or quote the OFO- to support.

A breach is not a dispute reason

The four dispute reasons are never published, deleted early, content altered and wrong channel โ€” none of them covers "the owner posted over my ad". They are not near-misses to be borrowed: a dispute the review finds unfounded costs you โˆ’0.5 reliability. The exclusivity breach is handled end to end without you, and it carries no refund, because your ad still ran for its full booked duration.

The pin, as an extraโ€‹

Where an owner offers it, their rate card carries one extra under the formats:

Pinned for the whole campaign โ€” "The ad is pinned in the channel from the moment it goes live until the campaign ends โ€” so it stays at the top even after the owner posts again. Unpinned automatically when the run finishes."

RuleDetail
Who prices itThe platform. One rate, identical on every channel โ€” an owner opts in or does not, but cannot mark it up
What you pay$6.00 a placement โ€” $5 for the pin, $1 platform charge on your side
What the owner receives$4.00 โ€” $5 less our $1 fee on theirs. We take a dollar from each side and nothing else
Where it lands in the totalLast โ€” after every discount, so no percentage lever touches it
How it is countedPer placement, times the quantity on the line
Where you tick itIn the composer's Price panel, and again on each line in the cart
If the owner withdraws itThe checkout is refused rather than quietly downgraded, and the cart clears the ask

It does not change the opening hours. A 1/24 promises one hour as the newest post whether or not you tick this; the two ride together, and neither shortens or extends the other.

Not every channel offers it. The row and the checkbox render only where the owner has switched it on, because it is a promise one owner is willing to make rather than a platform feature โ€” a greyed row advertising something you cannot have there would be worse than no row.

Why some owners cannot offer it

Pinning needs the platform's bot to hold Edit Messages of Others rights in the channel โ€” the switch that grants pinning in a channel. Those rights are not required to list a channel at all, so an owner who never granted them simply cannot switch it on โ€” the save is refused with an explanation. If a channel you want does not offer the pin, that is usually why.

The rate is ours, and it can change

Unlike a rate card, this number is the platform's. If it changes, every screen changes with it โ€” and a booking already paid for keeps the numbers it was taken at.

The line under your adโ€‹

Every ad the platform delivers into a channel carries one extra line, one blank line under your copy:

advertisement via onflowads.com

It is a link back to Onflow Ads. It is the platform's disclosure, and it replaced the #ad hashtag the product used to ask advertisers to type โ€” a disclosure that depended on somebody remembering, and the one thing that could quietly be left out.

The host's plan decides, not yours

The line is removed on Plus and above โ€” but the plan that is read is the channel owner's, never yours. It is a mark on somebody's feed, so the person who earns its removal is the person whose feed carries it. Upgrading your own plan does not remove it from your ads, and it never will.

You can tell before you book: a channel's public page states which of the two applies to it, under Labelling. And the composer says so with its character budget โ€” where the line applies, 33 characters are held back from the caption limit, and a note under the box explains why. See Booking a promo slot.

The line is stamped by the platform itself

The line is appended by the platform when it publishes the ad โ€” and the platform's bot publishes every placement, so what runs in the channel is exactly what the composer showed you, line included.

If you ever find it missing from a live post that should carry it, that is what support is for, quoting the OFO-.

The owner's own "marks the post as an ad" setting, shown on their listing, is a separate promise and it is theirs to keep.

The 33 characters are reserved either way

The composer's reserve is read from the channel owner's plan, not from how the ad will be delivered โ€” so a Free-plan owner's channel costs you 33 characters of caption on every delivery route. Reserving characters that turn out to be free costs you a sentence; not reserving them would cost a rejected caption after the ad was written.