Docs

Campaign Management

Manage your campaigns once they're live

As a campaign manager, you have full control over your campaigns and can perform several actions on your live campaign.

The Merkl Studio is where campaign managers can monitor and manage their campaigns.

Dashboard view in Merkl Studio

The Studio also helps you monitor campaign performance and track key metrics like APR and TVL. For advanced analytics and programmatic access, use the Merkl API.

🛑 Campaign Cancellation

You can cancel live campaigns and recover undistributed rewards at no cost.

To cancel a campaign, open Merkl Studio and sign in with the manager address. If you only need the cancellation transaction payload (e.g., for a Safe), you may impersonate the manager address to fetch it.

Step 1: From the Opportunities list, open the opportunity that contains your campaign.

From the Opportunities list

Step 2: Select the campaign and click Cancel on the right.

Select the campaign and click Cancel on the right.

Step 3: Confirm the action by typing STOP when prompted. You can then execute the cancellation transaction. If you prefer to execute via a Safe, download the payload and drag it into the Safe Transaction Builder.

Confirm action

Once canceled, the campaign stops accruing rewards immediately. Undistributed tokens become withdrawable within 24 hours, either from the Merkl UI or directly by calling the contract.

After cancellation, the campaign will appear as "Invalid" in the Studio dashboard. This is expected behavior: the Merkl engine processes cancellations by overriding the campaign to an invalid campaign type, which triggers the return of undistributed rewards to the admin address of the campaign.

Cancellation is irreversible. The engine will not process further updates for this campaign, and previously processed distributions remain final.

✏️ Campaign Overrides

Merkl allows campaign managers to modify active campaigns by adding customization options, such as:

  • Adjusting blacklists or whitelists to include or exclude specific addresses
  • Enabling additional features as needed
  • Changing start and end dates if they haven't passed yet

❌ What You Cannot Do:

  • Change the reward token
  • Change the total reward amount
    • To reduce the total amount: Cancel and recreate a new campaign. If you want identical dates, offset either the start or end by at least 15 minutes to avoid campaign duplication in the Merkl engine.
    • To increase the total amount, or to add another reward token: create an additional campaign in parallel. Offset its start or end date by at least 15 minutes to avoid campaign duplication in the Merkl engine. In the Merkl app, opportunities with 2+ lightning icons indicate multiple active campaigns.

🔁 Campaign Renewal

The fastest way to renew a campaign is to reuse the batch you launched last time, rather than rebuilding it from scratch.

When reviewing a batch in Merkl Studio, click Save draft to store your current configuration. Next time you open Studio, you can reload that draft directly from the campaign creation flow and relaunch it as-is, or tweak a few parameters (dates, reward amount, blacklist) before submitting.

Save draft button on the campaign review page

Loading a saved draft from the campaign creation flow

Saved drafts are stored locally in your browser. They are tied to the device and browser you used to create them, so they won't follow you across machines, profiles, or teammates.

If you need to share a batch with a teammate or back it up, use JSON view to export the configuration and share the file. Your teammate can then load it via Import batch on their side.

You can also renew without a saved draft by searching the previous campaign ID or your creator address , see Step 3 of Create Campaigns.

When reusing a previous batch, double-check inherited blacklists/whitelists and customization options. They carry over and may no longer be appropriate for the new campaigns.

🔄 Campaign Reallocation

As a campaign manager, you can reallocate unclaimed rewards from any recipient address to another address at your discretion. This gives you full control over reward distribution, especially when certain addresses cannot claim their rewards.

Once a campaign has ended, you can reallocate unclaimed rewards from specific recipients or reallocate all unclaimed rewards at once.

To give users time to claim their rewards, reallocation is only available after a defined window following the campaign's end. Currently, this window ranges from 1 day to 1 year post-campaign.

A reallocation takes up to 24 hours: Merkl runs security checks, then publishes the result at the next reward update. The new address then claims the rewards like any other Merkl reward. Reallocations are free.

Claiming is not yet available in the studio app, campaign managers must go to the app dashboard to claim their reallocated rewards.

Use Cases

  • Smart contracts without claim functions that need rewards redirected to claimable addresses
  • Lost wallets or inaccessible addresses
  • One-time partner facilitation (redirecting from contract addresses to partner wallets)

Campaign managers can perform reallocations either through the Merkl Studio interface or programmatically via the smart contract.

How to Reallocate Rewards:

Call the reallocateCampaignRewards function on the Campaign Creator contract:

function reallocateCampaignRewards(
    bytes32 _campaignId,
    address[] memory froms,
    address to
)

Parameters:

  • _campaignId: The campaign ID for reallocation
  • froms: Array of addresses to reallocate from (use ["0x0000000000000000000000000000000000000000"] to reallocate all unclaimed rewards)
  • to: The destination address

Example Safe payload: download the example. It batches reallocations from one source address to one destination across several campaigns. Add one transaction object per campaign ID.

Each campaign needs its own reallocation call, but you can batch the calls in one Safe transaction.