Create a Merkl campaign
Everything you need to know to create campaigns on Merkl
Last updated
Everything you need to know to create campaigns on Merkl
Last updated
Before setting up your campaign on Merkl, make sure you have read and understood:
: A high-level overview of Merklâs mechanisms and processes.
: A detailed guide on campaign types, distribution methods, and customization options.
Key Considerations:
Ensure you understand how your selected campaign and distribution types work.
Familiarize yourself with the hooks you plan to use for customization.
Check for any additional features that may be relevant to your campaign.
Some Merkl features (e.g., new distribution types, campaign types, hooks) may not be directly available in the campaign creation flow. If a required configuration option is not available in the frontend, we can:
Help you generate the correct campaign payload.
Provide dedicated API endpoints so you can structure your campaign as needed.
Before starting your campaign, you need to ensure that the token you want to use as reward with Merkl has been whitelisted. We usually process token whitelisting requests once a day, and it's a way for us to ensure that we will be able to properly compute APRs and that the token will be safe to use for our users.
Access the Campaign Creation Page Go to the Merkl App and go to the campaign creation section by selecting Create Campaign from the dashboard.
Connect your Wallet
Select your campaign type
Once your token is whitelisted, you can choose your specific campaign type by clicking on the appropriate button (see screenshot below).
Fill Out Campaign Details
In most campaigns, you will be required to input a rewards amount as well as start and end dates for the campaign. The total rewards amount is the total amount of rewards to be distributed over the whole campaign duration (a maintenance fee may be applied on top).
For each whitelisted token, Merkl sets a minimum amount of token that can be distributed per hour. If your token amount is too low (generally parameters are calibrated so that you cannot distribute less than $1 per hour), then you will not be able to create your campaign.
While the Merkl frontend usually detects the protocols incentivized and will automatically link to the right frontend associated with the opportunity, campaign creators may provide onchain the deposit URL where users can participate in the campaign.
Customize your campaign with hooks
Preview Transaction and Submit
Double-check all the information entered for accuracy. Once you have finished configuring your campaign, proceed by pressing the Preview Transaction button.
Sign and Submit
You can sign and submit using either an EOA account or a multisig wallet. The recommended method for distributing rewards with Merkl using a multisig is through the Gnosis Safe Transaction Builder. Regardless of the method you choose, you will need to follow these steps: accept the T&C, approve the tokens for transfer, and deposit them.
Using an EOA Account:
Double-check your campaign configuration.
Read and accept Merkl's T&Cs by clicking on the Accept button and signing using your wallet.
Approve the tokens for transfer and deposit the amount you want to incentivize, plus the maintenance fee of 3%.
After these steps, congratulations! You have created your Merkl Campaign!
Using a multisig wallet (Safe Wallet):
The recommended method for distributing rewards with Merkl using a multisig is through the Gnosis Safe Transaction Builder.
To get started, youâll need to provide:
The assets you'd like to incentivize
Once provided, weâll save this configuration on our end and generate the corresponding keys needed to launch your campaigns in bulk. We will share with you these keys via a GitHub Gist.
Once your configuration is set, youâll be able to create multiple campaigns at once, all sharing the same following base parameters:
program
: Provided by us â the internal ID of your incentive program
creator
: The Safe address that will execute the campaign payload
rewardToken
: In checksum format
distributionChainId
: The chain where the rewards will be distributed
startTimestamp
: Campaign start time (Unix)
endTimestamp
: Campaign end time (Unix)
This setup is particularly useful for protocols or chains running recurring or large-scale programs. For example, a chain running a coordinated incentive program may want to incentivize its DEXes, lending protocols, vaults, and more â all with aligned campaign durations and launch timing.
To use it:
Input the base parameters listed above.
In the request body, paste the JSON file with the keys and placeholder amounts we provided via GitHub Gist. You can find an example below in the example section.
For each key:
Replace the placeholder amount with the number of tokens you want to allocate (in raw units).
Use the correct number of decimals (e.g. 5000000000000000000
for 5 tokens if the token has 18 decimals).
If you do not plan to incentivize a specific key, do not set the amount to 0
. Instead, remove the key entirely from the JSON.
Click Send. If the payload is successfully generated, youâll be able to download it. If not, there may be an error, feel free to reach out to us â weâll help troubleshoot.
Download the generated payload and drag it into the Safe Transaction Builder to execute it.
Letâs say youâre a chain and want to incentivize:
5 Uniswap pools
2 Euler vaults
You would send us the addresses of the pools and vaults you want to incentivize. Once received, weâll configure your setup and return the associated keys via a GitHub Gist.
The Gist will follow this format:
For example, it would look like this:
The values(100000000000000000000
) are placeholder values. When creating your campaigns, youâll need to replace them with the actual amounts you want to allocate. All amounts must be entered in raw format using the correct token decimals.
Then proceed with the steps outlined in the Payload Generation section above.
Minimum Rewards Threshold: Each campaign must meet the minimum hourly token distribution (typically âĨ ~$1/hour). If a campaign in the payload falls below this threshold, the payload will not be generated and will return an error message.
Duplicate Campaigns: If you're reusing the same keys to increase rewards for an existing campaign, youâll need to modify the startTimestamp
or endTimestamp
slightly (e.g., by 1 second) to avoid a duplicate campaign error.
Payload Size Limitations: If your payload is too large, Safe may fail to execute the transaction. In that case, split your campaigns into multiple smaller batches. Creating up to ~20 campaigns at once typically works fine.
Decimal Precision: Ensure the amounts you distribute match the token's decimals. For example, for an 18-decimal token, 1 token = 1000000000000000000
.
You can find all whitelisted tokens by chain on this . If your token is not part of the list, please fill out the following .
You must also make sure that you have read and understood . You will be required to agree to these terms during the campaign setup process.
Connect your wallet and select the chain on which you want to distribute the rewards. The chain connected to your wallet during the campaign creation will determine where the rewards are distributed, but not necessarily where you'll be incentivizing activity. To see all the chains that Merkl supports, check this .
You will then be redirected to the campaign configuration page. The details required will depend on the campaign type you selected. Refer to for your specific campaign type or category. These pages provide detailed explanations of each required parameter.
Campaigns on Merkl are fully customizable, and you may typically have to decide whether to modify the default behavior for the campaign. Some of the hooks supported on Merkl are detailed .
To learn how to deploy your campaign from a multisig or Gnosis Safe Transaction Builder, check this where everything is explained in more detail.
If you're planning to launch several campaigns simultaneously â for example, as part of a protocol-level program or a chain-wide initiative â please reach out to us on Telegram so we can better support you and fast-track the operational setup and onboarding. If weâre not already in contact, you can open a BD ticket on our
Any optional custom hooks you'd like to apply (you can read more about supported hooks )
You can generate your campaign payloads using this endpoint: .