> For the complete documentation index, see [llms.txt](https://docs.fuul.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fuul.xyz/core-concepts/trigger-integrations/custom-onchain-events.md).

# 6️⃣ Custom Onchain Events

Fuul allows projects to set up any smart contract function or event as a conversion event through the Fuul Incentives Manager. You can filter transactions by specific parameters to target exactly the onchain actions you want to reward.

### What You Can Incentivize

| Trigger type                 | Description                                                                           | Reward basis                              |
| ---------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------- |
| **Deposit & Hold**           | Incentivize users to deposit liquidity and reward them periodically for holding       | Proportional to deposited value over time |
| **Swap**                     | Reward users for exchanging one token for another on your platform                    | Per swap or proportional to volume        |
| **Mint**                     | Encourage users to mint in-game assets, NFTs, or any other type of token              | Per mint event                            |
| **Stake**                    | Incentivize users to stake tokens and reward them periodically for their staked value | Proportional to staked value over time    |
| **Any contract interaction** | Define any smart contract function or event as a trigger                              | Configurable per event                    |

### How It Works

| Step                          | What happens                                                                                            |
| ----------------------------- | ------------------------------------------------------------------------------------------------------- |
| **1. Define the trigger**     | Select a smart contract address and specify the function or event you want to track                     |
| **2. Set filters (optional)** | Add parameter-level filters to narrow which transactions qualify (e.g., minimum amount, specific token) |
| **3. Monitor transactions**   | Fuul monitors the blockchain for matching transactions in real time                                     |
| **4. Record events**          | Qualifying transactions are recorded and attributed to the user's wallet address                        |
| **5. Distribute rewards**     | Rewards are distributed based on the configured reward basis — either per event or proportionally       |

### Hold-Based vs Event-Based Triggers

|                                 | Event-based (Swap, Mint)            | Hold-based (Deposit & Hold, Stake)   |
| ------------------------------- | ----------------------------------- | ------------------------------------ |
| **When rewards are calculated** | At the time of the transaction      | Periodically (e.g., daily snapshots) |
| **Reward basis**                | Per event or proportional to volume | Proportional to value held over time |
| **Use case**                    | One-time actions                    | Ongoing participation incentives     |

{% hint style="info" %}
Custom onchain triggers support any EVM-compatible chain. If you need help defining the right contract events and filters for your protocol, reach out at <ecosystem@fuul.xyz>.
{% endhint %}
