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

# Contract Submission Guide

> A guide for chains and protocols to submit contracts for decoding on Dune.

## Why Submit Contracts for Decoding?

Decoding creates structured, queryable datasets for your protocol's smart contracts on Dune. Once decoded, your team and the broader community can build dashboards and analytics using human-readable event and function data instead of raw bytecode.

## How to Submit Contracts

### Submit via UI (Recommended)

Use the Dune UI for a guided submission process: [https://dune.com/contracts/new](https://dune.com/contracts/new).

### Batch Submission via CSV (Advanced)

If you are looking to submit dozens of protocol contracts, you may submit via CSV. Work with us through Slack or Telegram, ensuring the CSV is formatted correctly for batch submission.

<Warning>
  Batch submission bypasses UI safeguards, so make sure all flags are accurate, the ABI is formatted correctly, and naming follows Dune standards. Using the UI is preferred, as it includes checks that reduce errors and debugging time.
</Warning>

Follow [this Google Sheet template](https://docs.google.com/spreadsheets/d/1yxJqlmSE2yYgXgSIXcPRr5xxP9ck9JZB8_sGOITtYEM/edit?gid=0#gid=0) for exact format, and refer to [Dune’s documentation](./decoding-contracts) for guidance on fields like:

* **`has_multiple_instances`** is flag for for [dynamic contracts](./decoding-contracts#are-there-several-instances-of-this-contract-dynamic-contract)
* **`is_created_by_factory`** is flag for [factory contracts](./decoding-contracts#is-it-created-by-a-factory-contract-factory-contract)

## Submission Strategy

* **For Chains:** Encourage top protocols to submit their key contracts.
* **For Protocols:** Collaborate with your developers or data analysts to identify which contracts include the main logic and events.

## Special Instructions by Contract Type

### Proxy Contracts

If using a proxy pattern, submit the **implementation contract's ABI**.
<Note> Dune’s pipeline cannot handle dynamic proxies or complex patterns automatically yet. </Note>

### ERC20, ERC721, ERC1155 Tokens

These contracts typically don’t need submission, as Dune already covers standard approvals and transfers. Submit only if custom events are needed.

### DEX Contracts

Look for below sets of contracts:

* **Factory Contract**: should emit pool creation events.
* **Pair/Pool Contract**: should emit swap events.

If decoding is required for additional contracts like routers or position managers, please submit those as well.

### NFT Marketplace Contracts

Submit the main marketplace contract with key events, such as:

* `ERC721BuyOrderFilled`
* `ERC721SellOrderFilled`
* `ERC1155BuyOrderFilled`
* `ERC1155SellOrderFilled`

### Unverified Contracts

If the contract isn’t verified on the block explorer, contact the protocol developers to obtain the ABI.

{/* ---
title: Survivor's Kit for Contract Submission
description: New kid (chain) on the block (Dune)? What and how to submit your chain's protocol contracts to Dune.
---

General guideline on what to submit, how to submit 

To submit via UI, please go to https://dune.com/contracts/new.

If you are a chain, engage with the top protocols on your chain to submit their relevant contracts
If you are a protocol, talk to your devs or data analyst to see which protocol contracts contain the main logic so you can track relevant events and functions calls. 

If you want to do a batch submission, follow the format of this google sheet exactly https://docs.google.com/spreadsheets/d/1yxJqlmSE2yYgXgSIXcPRr5xxP9ck9JZB8_sGOITtYEM/edit?gid=0#gid=0
Please note you must give the ABI properly and not just proide a ULR link.
Also, for questions on what "has_multiple_instances" and "is_created_by_factory" means, please visit this page (link). has_multiple_instances correspond to https://docs.dune.com/web-app/decoding/decoding-contracts#are-there-several-instances-of-this-contract-dynamic-contract and is_created_by_factory corresponds to https://docs.dune.com/web-app/decoding/decoding-contracts#is-it-created-by-a-factory-contract-factory-contract.

Please also note if your contract is a proxy contract, you MUST submit the implementation contract's ABI. Please also note that our current automatic pipeline is not able to handle dynamic proxy pattern or other more exotic contract patterns. 

Tips
- No need to submit ERC20, ERC721, ERC1155 token contracts to be decoded because we have the corresponding approval and transfers table.. unless you want to incorporate more/specialized events from that contract 
- if DEX, what to submit 
For DEX
Factory contract: this will emit the events for pool creation 
Pair/pool contract: this will emit the swaps events 

- if you have NFT platform, what to submit 
For NFT: typically one contract facilitating marketplace transactions, typically has 4 events 
ERC721BuyOrderFilled 
ERC721SellOrderFilled 
ERC1155BuyOrderFilled 
ERC1155SellOrderFilled


If the contract is not verified on the block explorer, contact the protocol devs to obtain the ABI.   */}
