Create a Rewards Program
Create a Morpho Vault or market reward program with Merkl, then check which campaign types the Morpho App displays.
This tutorial guides you through creating a new rewards program for Morpho Vaults or Markets using Merkl, the current standard for reward distribution.
Prerequisites
Before creating a rewards program, ensure you have:
- A clear incentive strategy (what behavior do you want to encourage?)
- Reward tokens ready for distribution
- Knowledge of target Morpho Markets or Vaults
- A wallet with assets to deposit reward tokens
- Understanding of Reward Program Types
Overview: Merkl for Rewards Programs
Merkl is the standard distribution system for Morpho rewards. It provides:
- Automated Distribution: Rewards calculated and distributed every 8 hours
- Flexible Configuration: Target specific markets, vaults, or user groups
- Multi-Chain Support: Works across all chains where Morpho is deployed
- Transparent Tracking: Real-time visibility into reward distribution
Creating a Program via Merkl
Merkl provides a user-friendly interface for creating reward campaigns. The process differs slightly between Vault and Market programs.
Fill the inputs as per Merkl doc
Check your configuration against Campaigns displayed by Morpho before you fund the campaign.
Campaigns displayed by Morpho
Merkl distributes every campaign it accepts. Morpho's rewards backend filters campaigns before calculating the reward APRs used by Morpho interfaces. A campaign excluded by these filters can still distribute on Merkl, but does not contribute to the APRs shown by Morpho interfaces.
These conditions follow the rewards backend's current filtering and can change.
Supported campaign types
| Merkl type | Subtype | Rewards |
|---|---|---|
MORPHOSUPPLY | Any | Suppliers of one market |
MORPHOBORROW | Any | Borrowers of one market |
MORPHOCOLLATERAL | Any | Collateral providers of one market |
MORPHO | 1 | Suppliers of one market |
MORPHO | 2 | Borrowers of one market |
MORPHO | 3 | Collateral providers of one market |
MORPHOSUPPLY_SINGLETOKEN | Any | Suppliers of every listed market whose loan token is the target token |
MORPHOBORROW_SINGLETOKEN | Any | Borrowers of every listed market whose loan token is the target token |
MULTILENDBORROW | Any | Suppliers (entry campaignType 24) or borrowers (entry campaignType 45) of each market in the campaign |
MORPHOVAULT | Any | Users of one vault |
ERC20LOGPROCESSOR | Any | Holders of one vault's share token |
MORPHO | 0 | Users of one vault |
The rewards backend ignores every other type and subtype, and every other MULTILENDBORROW entry campaignType.
Parameters to avoid
The rewards backend excludes a campaign globally or for the affected market or vault when it uses any of these settings.
| Setting | What to do instead |
|---|---|
isPrivate: true | Create a public campaign |
Non-empty params.whitelist | Leave the whitelist empty |
Any hook other than hookType: 27 (blacklist) or hookType: 23 with protocols containing MorphoVaultV2, including either one combined with any other hook | Use no hook, hook 27, hook 23, or hooks 23 and 27. With hook 23, the campaign counts only in the APR of Morpho Vault V2 users, not in market APRs |
Less than 24 hours between startTimestamp and endTimestamp | Run the campaign for at least 24 hours |
rewardToken.type other than TOKEN, such as points or pre-TGE rewards | Reward in an ERC-20 token |
rewardToken.isTest: true | Use a production reward token |
Reward token on a chain Morpho does not support for rewards, or an invalid rewardToken.address | Use a valid token on a supported chain |
Market campaign without a valid params.marketId or params.market, single-token campaign without a valid params.targetToken, MULTILENDBORROW campaign without valid params.markets entries, or vault campaign whose params.targetToken is not the vault address | Set the target the campaign type expects |
Blacklists are supported: a params.blacklist does not make the rewards backend reject the campaign outright. If the blacklist contains a vault or a Vault V2 adapter address, the rewards backend excludes that campaign from the reward APRs calculated for the vault's users.
Forwarded vault rewards
A Morpho Vault V2 user sees supply-side market campaigns for markets the vault reaches through a MorphoMarketV1AdapterV2, and the campaigns of vaults it allocates to through a MorphoVaultV1Adapter, weighted by allocation. The rewards backend does not forward rewards from a Morpho Vault V2 that another Morpho Vault V2 allocates to.
Display in the Morpho App
The Morpho App shows a reward only when its computed APR is above 0. A campaign with a computed APR of 0, such as a Target APR campaign whose target the native yield already meets, shows no reward.
Next Steps
- Fetch campaign data: Follow the Fetch Rewards Data tutorial
- Integrate display: Check out the Integrate Display tutorial
- Enable claiming: See the Claim Rewards tutorial