But Merkl isn’t limited to token distribution!
Its indexing capabilities and powerful computation engine can just as easily be used to build points systems, giving teams full flexibility to track user behavior and assign points across multiple protocols and chains — just like Etherlink and Puffer have done.
So how exactly do you launch a points program with Merkl? Let’s break it down.
Merkl excels at two things:
These two pillars can work together or independently — and many protocols take advantage of that flexibility:
While Merkl is capable of handling complex reward setups like Uniswap v4 liquidity provision, it also offers robust capabilities to track onchain activities such as LP positions, lending, or protocol usage — enabling the creation of sophisticated points campaigns based on this data.
There are two main setups for running points programs with Merkl:
Let’s dive into each setup.
In this setup, points are issued as ERC20 tokens but configured to be non-transferable. From Merkl’s perspective, this is just like running a standard token reward campaign.
How does it work?
Creator
and Distributor
contracts so we can distribute your pointsIf you later choose to airdrop a token based on points, simply map your airdrop distribution to user point balances. Just be sure to exclude Merkl’s distributor contract, which may still hold unclaimed tokens.
With this setup, you benefit from all of Merkl’s default features — including leaderboards and public campaign visibility in the frontend. Merkl can even assign an estimated value to your points directly within the interface, so users see estimated APR values when farming.
This is a straightforward way to leverage Merkl’s full stack while retaining control over the transferability of your points.
In this case, points are most likely accounted for in an offchain database that you control. This means that Merkl cannot mint points for you, it can just run computations based on onchain activity. Here you simply need to define the logic, Merkl tracks user actions, and you use the results however you like.
How it works:
Merkl will give you some mock tokens on a chain of your choice (like Gnosis Chain). You'll then be able to use these tokens to create campaigns that effectively track what you’re interested in rewarding with your points (e.g providing liquidity in a pool).
You can setup these campaigns to mirror your intended logic (e.g., “1 mock token per $1,000 deposited”). Note that campaigns can be created in a fully programmatic way through easy scripts.
The campaigns you’re creating with this will effectively distribute mock tokens, but these won’t be visible to your users and users do not need to claim rewards. As explained above, Merkl cannot mint points for you, rather you need to parse the results of these campaigns to know how to allocate your rewards.
Use Merkl’s API to retrieve the list of eligible addresses as well as their relative contribution to the pool or the protocol that you are tracking. Reward amounts are expressed in mock token units.
https://api.merkl.xyz/v4/campaigns?creatorAddress=<YOUR_ADDRESS>&test=true
https://api.merkl.xyz/v4/rewards?chainId=<ID OF THE CHAIN WHERE THE TEST TOKEN IS>&campaignId=<YOUR_CAMPAIGN_ID>&test=true
Please note that the rewards endpoint is paginated — be sure to fetch all pages using: &page=<NUMBER>
The mock token units (points) can be renormalized to fit your specific needs.
For example, if you create one campaign that distributes 1 point per $1,000 deposited in a protocol, and another campaign that does the same for a different protocol, you can apply different multipliers as needed when allocating points to your users.
If you want to apply a 5× multiplier for the second protocol afterwards, you can simply mint 5x more points to recipients of this campaign — if address A has earned 1 mock token in reward from the second campaign, you can assign 5 points to that address.
This approach offers complete control over point allocation, allowing you to exclude certain campaigns, selectively boost rewards for specific users, or customize the system however you like.
In this setup, you are responsible for displaying points on their own UI. However, you can easily build a leaderboard or dashboard using the data from Merkl’s mock campaigns via the Merkl API as seen above.
Merkl offers advanced tools that make building complex point systems easier and more powerful:
Merkl features a system called forwarders: when the recipient address in a Merkl campaign belongs to a protocol recognized by Merkl, the rewards are automatically distributed to the users of that protocol — not to the protocol itself.
For example, if a stablecoin issuer wants to reward users of its token, including LPs on Pendle and lenders on Morpho, it only needs to create one campaign. Merkl will automatically recognize and attribute points to those indirect users.
Check if forwarding is supported when rewards are accruing to an address via: https://api.merkl.xyz/docs#tag/node
If you want to apply dedicated points multipliers for holders of these stablecoins, you can blacklist protocols (e.g. here Pendle and Morpho) in the main campaign and create separate campaigns on top of all these underlying protocols. However, this isn’t always necessary, as the main campaign’s rewards endpoint provides detailed reasons explaining how points were accumulated.
You can add a referral system to any point program. Merkl can help you reward both referrers and referees with custom multipliers — e.g., “10% boost on points earned.”
Whether you're running a gamified community engagement campaign or want to analyze onchain activity across multiple chains and protocols, Merkl gives you the flexibility to do it your way.
Merkl’s infrastructure lets you scale reward programs across ecosystems, and adapt point logic exactly to your needs.
Ready to launch your own points campaign?
Head to Merkl Studio and get started — or reach out for support on creating your first campaign.