> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cow.bleu.builders/llms.txt
> Use this file to discover all available pages before exploring further.

# Hook Store

> Browse, use, and publish pre-built hooks in the CoW Swap Hook Store

The **Hook Store** is a feature in CoW Swap that lets you extend your swaps with pre-built hooks created by third parties. Instead of manually encoding callData, you can browse a catalog of hook dApps — each with its own UI — that generate the hook data for you.

## Using the Hook Store

To access the Hook Store:

1. Open [CoW Swap](https://swap.cow.fi) and connect your wallet
2. Navigate to the hook controls (pre-hook or post-hook section)
3. Click **"Add Pre/Post-Hook Action"** to open the Hook Store

You'll see a list of available hook dApps. Each dApp provides a focused UI for a specific action — for example, claiming validator rewards or building a custom hook.

### Available hook dApps

The Hook Store ships with several built-in dApps:

| Hook dApp                     | Description                                                            | Networks     |
| ----------------------------- | ---------------------------------------------------------------------- | ------------ |
| **Build your own hooks**      | Manually enter target, callData, and gasLimit for any contract call    | All          |
| **Claim GNO from validators** | Claim unclaimed GNO rewards from Gnosis Chain validators as a pre-hook | Gnosis Chain |

<Tip>
  The list of available hook dApps varies by network. Connect to a specific network to see which hooks are available there.
</Tip>

### Custom hook dApps

You can also load any hook dApp by URL:

1. Click **"Add Pre/Post-Hook Action"**
2. Go to the **"My Custom Hooks"** tab
3. Paste the URL of the hook dApp

The dApp loads in an iframe and communicates with CoW Swap via [post-messages](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). CoW Swap handles fee estimation (including hook gas costs) and includes the hook in your order automatically.

## How hook dApps work

Each hook dApp is a lightweight web application that:

1. **Receives context** from CoW Swap — connected wallet, chain ID, order parameters
2. **Presents a UI** for the user to configure the hook (e.g., select a vault, choose an amount)
3. **Generates hook data** (target, callData, gasLimit) and sends it back to CoW Swap via the `addHook` callback

CoW Swap then:

* Includes the hook gas cost in the fee estimation shown to the user
* Attaches the hook to the order's [appData](/cow-protocol/reference/core/intents/app-data)
* Ensures solvers execute the hook as part of the settlement

## Publishing a hook dApp

To make your hook dApp available in the Hook Store:

### 1. Build the dApp

Create a web application using the [`@cowprotocol/hook-dapp-lib`](https://www.npmjs.com/package/@cowprotocol/hook-dapp-lib) library. See the [Hook dApp development guide](/cow-swap/hooks/hook-dapp) for the full API reference and a working example.

### 2. Add a manifest

Your dApp must serve a `manifest.json` file that describes its capabilities:

```json theme={null}
{
  "cow_hook_dapp": {
    "id": "06a2747d08f0026f47aebb91ac13172a318eb3f6116f742751e2d83cc61b8753",
    "name": "My Hook Dapp",
    "descriptionShort": "Short description of what this hook does",
    "description": "Full description with details about the hook's functionality",
    "version": "0.1.0",
    "website": "https://my-hook-dapp.example.com",
    "image": "https://my-hook-dapp.example.com/logo.png",
    "conditions": {
      "position": "pre",
      "smartContractWalletSupported": false,
      "supportedNetworks": [1, 100, 42161]
    }
  }
}
```

The `id` field is a 64-bit hex identifier generated by `keccak256(YOUR_APP_NAME)`. It links hooks in orders back to the dApp that created them. See the [manifest specification](/cow-swap/hooks/hook-dapp#manifest) for all fields.

### 3. Submit a pull request

Add your dApp to the [CoW Swap repository](https://github.com/cowprotocol/cowswap) by opening a pull request. The CoW Swap team will review and merge it to make it available in the Hook Store.

<Note>
  In the future, the Hook Store will use a decentralized registry, allowing anyone to publish hook dApps by URL without a pull request.
</Note>

## Hook dApp ideas

Hooks can integrate with any DeFi protocol. Some examples of what hook dApps could do:

* **Swap and bridge** — automatically bridge received tokens to an L2 after a swap
* **Swap and stake** — stake received tokens in a liquid staking protocol
* **Swap and deposit** — deposit into a yield vault or lending protocol
* **Claim and swap** — claim rewards or airdrops, then immediately swap them
* **Approve and swap** — batch a token approval with the trade itself

For end-to-end implementation examples, see [Post-Hook Examples](/cow-swap/hooks/post-hook-examples).

## Next steps

<CardGroup cols={2}>
  <Card title="Build a Hook dApp" icon="code" href="/cow-swap/hooks/hook-dapp">
    Full development guide and API reference
  </Card>

  <Card title="Hooks Getting Started" icon="play" href="/cow-swap/hooks/getting-started">
    Create your first hook step-by-step
  </Card>
</CardGroup>
