A campaign can also leave the main arc early in a couple of ways, covered further down.
Phase by phase
Configured
The campaign config is committed, the on-chain contract is deployed, and the reward budget is locked in — but the campaign’sstartTime hasn’t hit yet.
Nothing user-facing happens. This is the team’s window to:
- Review the live config one last time.
- Seed any UI pieces that surface the campaign.
- Coordinate launch comms.
Active
startTime has passed, endTime hasn’t, and the budget hasn’t been fully paid out (see Automatic early end below). Users earn continuously while their position is eligible.
What’s happening behind the scenes:
- Rabbithole watches the chain for relevant events and updates earnings as positions change.
- A reward snapshot publishes on a regular cadence so claims become available shortly after the campaign goes live.
- The team can watch the campaign run on rabbithole.gg — TVL, participants, distributed rewards, and live leaderboard stats are all surfaced there.
Ended
endTime has passed, the budget has run out, or the campaign was ended early (see Mid-flight adjustments). Earning stops for everyone, but the campaign isn’t fully wrapped up yet.
A few things are still in motion:
- The final reward snapshot rolls up the last few hours of earnings.
- Users keep claiming on the same schedule as during the active phase.
- The team can no longer change anything about the campaign.
Finalized
The final merkle snapshot is published and locked. Total distributed rewards are confirmed. At this point, the creator can recover any unspent budget. That can include:- Rewards from periods when no one was participating.
- Rewards held back by Capped APY when the natural rate would have exceeded the cap.
- Forfeited rewards from broken cliffs (once Cliff is live).
Closed
The claim window expires. Standard campaigns run a 60-day claim window measured from finalization, but this is configurable per campaign. Once the window closes:- New claims stop being accepted.
- Anything still unclaimed becomes recoverable by the creator through the same withdraw flow.
- The campaign is fully wound down.
Mid-flight adjustments
While a campaign is active, it can be topped up to run longer. It can also leave the active phase before its scheduledendTime in two ways: early termination or an automatic early end.
Topping up
A top-up adds funds to a live campaign so it keeps paying out for longer.- The rate stays the same. Rewards keep paying out at the campaign’s daily rate, so a top-up extends how long the campaign runs. It doesn’t raise the APY.
- The fee matches the original deposit. It comes out of the amount added, at the rate agreed when the campaign was created. See Pricing.
- The minimum is one day of rewards. A top-up must cover at least 24 hours at the campaign’s daily rate, after the fee.
- Top up before the budget runs out. Once a campaign runs out it ends, and it is usually finalized within minutes. A finalized campaign can’t be topped up; continuing means launching a new one.
- The latest end date doesn’t move. Each campaign has a latest end date, set at launch and at most a year out. Funds that can’t be paid out before then stay in the campaign and are recoverable at finalization.
Early termination
Creators (or the protocol admin in emergencies) can end a campaign before its scheduledendTime.
- Earning stops at the moment of cancellation.
- Already-accrued rewards stay claimable on the normal schedule.
- The campaign skips straight to settlement: ended → finalized → claim window.
Automatic early end
A campaign ends as soon as its reward budget is fully paid out, even ifendTime hasn’t been reached. This happens in two cases.
Campaigns that can be topped up pay out at a set daily rate, so the budget lasts budget ÷ daily rate and the campaign ends when it runs out, unless it is topped up first. Quiet periods and Capped APY slow the payout rather than holding budget back, so they only make the campaign run longer, never shorter, up to its latest end date. If at least one eligible position is held throughout and there’s no cap, the end date is known from launch and only moves with top-ups.
A Fixed APY campaign ends early when participation is higher than the team anticipated. The budget drains faster than the original schedule, and the campaign wraps up the moment the last reward is distributed.
On other campaigns, modes don’t trigger this. Capped APY never moves the schedule there: when the cap binds, less reward gets distributed per second, and the held-back budget stays in the pool as recoverable funds at finalization.
An automatic early end follows the same flow as any other ending: status flips to ended, the final snapshot rolls up the last earnings, and the campaign moves into Finalized once the operator settles. The claim window still runs from endTime, so users get the full window, measured from the latest end date rather than from when the budget ran out.
What can’t change
Once a campaign launches, the rules are locked:- Reward token
- Targets (which positions count)
- Eligibility (open, allowlist, verification)
- Modes (caps, tiers, fixed APY, etc.)
- Reward rate and schedule. A top-up extends how long the budget lasts, but not the latest end date
What users see at each phase
What teams do at each phase
Recoverable funds
When a campaign winds down, leftover budget can show up in a few places. All of it is recoverable by the creator through the same withdraw flow:- Undistributed budget — periods when no one was participating, so no rewards were earned.
- Throttled rewards — when Capped APY held the rate below its natural value, the saved budget stays in the pool.
- Forfeited rewards — when Cliff ships, rewards from broken cliffs flow back here.
- Budget past the latest end date — on a campaign that can be topped up, anything it couldn’t pay out before its latest end date.
- Unclaimed rewards — after the claim window closes, anything users didn’t pull is returned to the creator.
Keep Exploring
Reward Calculation
How eligible balance and time held translate into rewards.
Campaign Modes
The stackable rules that shape who earns and how much.
Launch a Campaign
What it looks like to bring a campaign live with the Rabbithole team.
Glossary
Quick definitions for terms used across the docs.