Skip to main content
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 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 dAppDescriptionNetworks
Build your own hooksManually enter target, callData, and gasLimit for any contract callAll
Claim GNO from validatorsClaim unclaimed GNO rewards from Gnosis Chain validators as a pre-hookGnosis Chain
The list of available hook dApps varies by network. Connect to a specific network to see which hooks are available there.

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. 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
  • 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 library. See the Hook dApp development guide 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:
{
  "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 for all fields.

3. Submit a pull request

Add your dApp to the CoW Swap repository by opening a pull request. The CoW Swap team will review and merge it to make it available in the Hook Store.
In the future, the Hook Store will use a decentralized registry, allowing anyone to publish hook dApps by URL without a pull request.

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.

Next steps

Last modified on March 12, 2026