Skip to main content

Campaign Lifecycle

Every cross-promotion moves through a defined set of statuses, shown as a coloured pill on the campaign page and in every campaign list. This page explains each status, what you can do in it, and how campaigns end.

Setup states (agreeing the deal)โ€‹

The campaign page is fully interactive here.

Status shownWhat it meansWhat you can do
Awaiting partnerThe code is minted; nobody has joinedCreator: copy and share the code, list or unlist it on the board, or cancel. Unused codes expire after 24 hours
Awaiting confirmation (In progress in campaign lists)A partner attached their channel and is reviewing the scheduleJoiner: Accept & confirm or Propose changes. Either side can cancel. Both sides can already build posts
New time proposed (Changes proposed in lists)One side proposed new timing; the other side decidesThe decider sees both schedules side by side and presses Accept changes or Decline โ€” see Schedule proposals
ConfirmedBoth sides locked in the scheduleBuild and review posts (Creatives); either side can still Propose new time or Cancel campaign

Delivery statesโ€‹

Once the schedule is confirmed, both posts are built and both reviews are approved, the campaign is handed to our delivery bot and becomes read-only.

Status shownWhat it means
ScheduledEverything approved; the bot will publish at go-live automatically. You can still cancel
Going liveThe bot is publishing the posts right now
Live nowBoth posts are up; results update live
Wrapping upThe run ended; the bot is removing the posts
CompletedDone โ€” final results and ratings available
Didn't runThe run was called off before it started โ€” see below

What "Didn't run" actually meansโ€‹

If the delivery engine cannot publish both ads, it publishes neither. Any ad that did go out is taken down again, the campaign is marked failed, and nobody is penalised. A half-run โ€” one channel carrying its partner's ad for free while its own never appeared โ€” is a deal neither side agreed to, so it is deliberately not allowed to stand.

The results panel on such a campaign shows a Did not run pill and an explanatory banner instead of zeroed statistics, with a Run a fresh campaign button. The usual cause is the bot losing admin posting rights on a channel, or an ad image that could not be fetched. Full copy on Campaign results.

A confirmed campaign that never queued is not a status

A campaign can be built, approved and stuck. It stays at Confirmed and grows a warning banner instead โ€” "This campaign missed its go-live window", "Delivery is blocked โ€” a channel has no @username", or "Delivery is blocked โ€” no go-live time". Nothing was posted, nobody is penalised, and the campaign is still yours to reschedule. Details and fixes: If your campaign was never queued.

Closed statesโ€‹

Status shownWhat it means
ExpiredNo partner joined within 24 hours โ€” you were emailed. Or a joiner attached but never confirmed, and the campaign was released with the note "Partner didn't confirm in time" (see anti-ghost protections)
CancelledOne side cancelled before go-live; the other side was notified by DM and email

Cancellingโ€‹

Cancel campaign is a two-tap button โ€” it arms to Confirm cancel first.

  • Awaiting partner: only the creator can cancel (there is no partner yet). The campaign never counts against your allowance.
  • Awaiting confirmation / New time proposed / Confirmed / Scheduled: either participant can cancel. You do not need the other side's agreement, and you do not need to be the creator.
  • Once the campaign starts going live, it can no longer be cancelled: "This campaign can't be cancelled โ€” it may already be live or finished."

The other participant is always told by Telegram DM and email when a swap is called off. On a Blitz, where the participants are the slot holders rather than a single partner, every slot holder is notified individually.

Cancelling a Scheduled campaign is your last chance

Scheduled means the hand-off already happened and the bot is holding the campaign until go-live. Cancelling then is still clean โ€” nothing has been posted and nobody is penalised. Once the status moves to Going live, the ads are being published and the only way out is to leave the post up for the full run. Taking it down early costs 1.50 reliability points, and leaving your partner's channel early costs 1.00; see The delivery monitor.

Expiry, at both endsโ€‹

Two clocks protect you from a partner who never shows up:

  • Unjoined codes expire 24 hours after creation. You are emailed, the campaign shows Expired, and it costs nothing from your allowance. Blitz codes are exempt โ€” they stay open until launched or cancelled.
  • Unconfirmed joins are released after 48 hours: if a joiner attaches a channel but never confirms or proposes, the campaign is closed out, the creator is freed with no allowance spent, and the joiner takes a strike and โˆ’0.30 reliability. Details in Rules and fairness.

Both clocks are swept every 10 minutes, so an expiry lands promptly rather than at some daily boundary.

Your campaign listsโ€‹

My Cross-Promotionsโ€‹

The My Cross-Promotions page at /telegram/dashboard/cross-promotion/campaigns (the My campaigns pill) is the one place that holds your complete history โ€” every status, cancelled campaigns included.

The My Campaigns page with filter tabs reading All 9, Active 5, Completed 3 and Ended 1, and campaign rows each showing the channel pairing, a status chip such as AWAITING PARTNER or CHANGES PROPOSED, a VIA WEB source tag, the go-live date and duration, the Campaign OFC- id, the Join code OFCP- id, and a View button

Plus plan ยท Advertiser. My Cross-Promotions. The four filter tabs carry live counts, and every row opens with View โ€” the pairing, the status chip and both IDs are on the row itself, so you can find a swap without opening it.

Each row shows the channel pairing ("A โ†” B", or "Your channel ยท awaiting a partner"), a status chip, a via Web tag, the schedule or creation date, the campaign's OFC- ID, the join code, and a View button.

Empty state: "No cross-promotions yet", with Start a campaign.

Your campaigns (manual page)โ€‹

The manual page lists your campaigns under Your campaigns, with a + New campaign shortcut. It is the working list while you are actively creating and joining with codes โ€” but it hides cancelled campaigns. For everything, use My Cross-Promotions.

Portfolioโ€‹

If you run several channels, the Portfolio page aggregates activity per channel โ€” active swaps, completions, opens and directory state.

If something goes wrongโ€‹

What you seeWhat it meansWhat to do
"You don't have access to this campaign."You are not a participant. Campaign pages are participant-only.If you meant to join it, use the join page with its code. A Blitz slot holder counts as a participant.
"This campaign can't be cancelled โ€” it may already be live or finished."The bot started publishing between your first and second tap.Let it run. Taking your partner's post down early carries a penalty.
A campaign is missing from Your campaignsIt was cancelled โ€” that list hides cancelled campaigns.Open My Cross-Promotions and use the Ended tab.
Status stuck at Confirmed past the go-liveThe campaign was never queued.Read the banner on the page โ€” it names the cause. See If your campaign was never queued.
Didn't runThe engine could not publish both ads, so it published neither.Confirm the Onflow Ads bot is still an admin of both channels, then start a fresh campaign.
From the support chat

Confirm the cross-promo with @partner confirms a campaign your partner joined; cancel my cross-promo pulls one back before it goes live. Both are proposed first and run only after CONFIRM. What the assistant can do for you has the full list and the confirmation rule.


Next: Campaign results โ€” the numbers and proof links a campaign reports once it goes live.