> 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/uniswap-v4.md).

# 1️⃣5️⃣ Uniswap V4 LPs

Reward liquidity providers on Uniswap V4 pools

Fuul enables projects to reward Liquidity Providers (LPs) on Uniswap V4 pools. Like Uniswap V3, V4 uses concentrated liquidity: LPs allocate capital to a price range, and only liquidity inside the current price range is actively used by the pool.

## How rewards are distributed

Fuul uses **Active Liquidity**: each in-range position earns rewards proportional to its value relative to the pool's other in-range positions.

| Step                      | What happens                                                                                                                                    |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **1. Fetch positions**    | Fuul reads every open position in the pool                                                                                                      |
| **2. Filter in-range**    | Only positions whose price range includes the pool's current price are considered                                                               |
| **3. Value positions**    | Each in-range position is valued in one of the pool's two tokens at the current pool price. A wallet's positions in the pool are added together |
| **4. Distribute rewards** | Rewards are split proportionally: your share of the in-range value = your share of rewards                                                      |

Out-of-range positions receive zero rewards, so incentives go to liquidity that is actively contributing to the pool.

## Setting up a V4 trigger

Uniswap V4 pools have no contract address of their own: every pool lives inside Uniswap's singleton PoolManager and is identified by a **pool ID**. When creating a V4 trigger, provide the pool ID (`0x` followed by 64 hex characters). A 40-character contract address is rejected.

|                     | Uniswap V4 on Fuul                                                                                                                                                                                                  |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Networks**        | Ethereum mainnet                                                                                                                                                                                                    |
| **Pool identifier** | Pool ID (bytes32)                                                                                                                                                                                                   |
| **Reward method**   | Active Liquidity: in-range positions earn, out-of-range positions earn zero                                                                                                                                         |
| **Who is credited** | Positions opened through Uniswap's PositionManager (e.g., the Uniswap app) are credited to the current owner of the position NFT. Positions opened through a hook or another contract are credited to that contract |

{% hint style="warning" %}
Each V4 pool has to be enabled on Fuul's side before its trigger produces data. Reach out at <ecosystem@fuul.xyz> with the pool ID before launching a V4 campaign.
{% endhint %}

## Differences from Uniswap V3

|                     | Uniswap V3                      | Uniswap V4                                             |
| ------------------- | ------------------------------- | ------------------------------------------------------ |
| **Pool identifier** | Pool contract address           | Pool ID                                                |
| **Networks**        | Many EVM chains                 | Ethereum mainnet                                       |
| **Position value**  | USD value of in-range liquidity | In-range value denominated in one of the pool's tokens |

For Uniswap V3 and other concentrated liquidity AMMs, see [CLAMM LPs](/core-concepts/trigger-integrations/clamm-lps-e.g.-uniswap-v3.md).
