Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Submitting a Proposal

Types of Proposal

There are three types of governance proposal:

  1. Executable Proposal: A series of smart contract operations to be executed by accounts the DAO controls — token transfers or arbitrary contract calls, such as funding a working group multisig or upgrading a core ENS contract. Requires a 1% quorum and 50% approval to pass.
  2. Social Proposal: Asks for the DAO's agreement on something that can't be enforced onchain, such as changing the royalty percentage for the ENS secondary market on OpenSea, or a petition to the root keyholders. Requires a 1% quorum and 50% approval to pass.
  3. Constitutional Amendment: A social proposal that amends the constitution. Rules for amending the constitution are set in the constitution itself — currently a 1% quorum and two-thirds approval.

Titles and Proposal Numbers

A proposal's title should contain only the title itself — no EP number and no type tag like [Executable] or [Social].

Since the DAO's second working group term, most proposals have self-assigned an EP ("ENS Proposal") number and type tag in the title (e.g. "[7.1] [Social] SPP3: Marketplace RFP"). Because titles are free text, this broke down in practice: unrelated proposals have used duplicate numbers, some funding proposals were split into sub-numbers like 6.6.1 while others weren't, and formatting varies from title to title.

Neither piece of metadata belongs in the title, because both can be derived objectively:

  • The EP number is assigned automatically when the proposal is posted for a vote (see below).
  • The type is inferred from where the vote takes place: the governor contract means Executable, Snapshot means Social.

The one exception is a temp check prefix while the proposal is still a draft on the forum:

  • When first sharing a draft on the forum, prepend [Temp Check] and a space to the title: "[Temp Check] Do Something Cool".
  • When posting to Snapshot or the governor contract, use the plain title: "Do Something Cool". Ideally, remove the prefix from the forum topic at this point too.

How EP numbers are assigned

Offchain platforms such as this site assign each proposal a canonical number of the form {termNumber}.{proposalNumber}: the working group term in which the vote is posted, and a counter that increments with each vote posted during that term. Each platform displays the number and inferred type as it sees fit — these docs reconstruct titles like "[EP 7.1] [Executable] Do Something Cool".

This system takes effect July 14, 2026. Earlier proposals keep their EP numbers — the proposals directory in this repository is the canonical list of numbers assigned to date.

A few details:

  • A proposal is only numbered once it is posted for a vote. Drafts and temp checks are not.
  • Numbers are never reused. A defeated or cancelled proposal keeps its number, and a resubmission gets the next one.
  • A Snapshot vote and an onchain vote are always separate proposals with separate numbers, even when they concern the same matter (e.g. a social vote followed by an executable vote implementing it).
  • Related proposals voted on separately (e.g. a funding request split into multiple votes) are just separate proposals with sequential numbers. Never construct sub-numbers like 6.6.1 — those only exist in older proposals.

Formatting

Proposals are written in markdown, and heading structure matters: multiple H1s render weirdly on governance apps and hurt SEO and accessibility. A document should have at most one H1 — the title — followed by H2 sections:

# Title
 
## Abstract
 
## Motivation
 
## Specification

When a platform provides a separate title field, that field is the H1. Snapshot proposals and forum posts both work this way, so their bodies should start at H2.

Two more common mistakes to avoid:

  • Don't skip heading levels (e.g. an H4 directly under an H2) — go one level deeper at a time.
  • Don't use bold text as a heading. If a line introduces a section, make it a real heading; bold is for emphasis within text.

Paste your proposal below to check it against these conventions:

Phase 1: Temperature Check — Discourse

A Temperature Check gauges whether there is sufficient will to change the status quo.

Ask a general, non-biased question on discuss.ens.domains about a potential change (e.g. "Should ENS decrease registration costs for 3-letter domains?"). Post in the "DAO-wide -> Temperature Check" category with the [Temp Check] title prefix described above.

Temperature checks are informal and optional — use the feedback to decide whether to proceed.

Phase 2: Draft Proposal — Discourse

A Draft Proposal establishes formal discussion around a concrete proposal.

Copy the template for an executable proposal, social proposal, or constitutional amendment, write your proposal, and post it in the "DAO-wide -> Draft Proposals" category on discuss.ens.domains. Keep the [Temp Check] prefix on the title while it remains a draft.

Build support: reach out to your network, solicit feedback from delegates, and respond to questions on the topic — while staying as impartial as you can.

Executable proposals must specify the onchain actions they will take before going to a vote; the template explains how. You may want to wait until the proposal is stable to do this.

Constitutional amendments must include a diff showing the exact changes to the constitution.

Once the proposal is stable, proceed to phase 3.

Phase 3: Active Proposal — Snapshot / Governance Portal

Once discussion has settled, the proposal is posted for a vote. Title the vote with the plain proposal title — no [Temp Check] prefix, no EP number, no type tag. The canonical EP number is assigned automatically at this point, as described in Titles and Proposal Numbers.

Social Proposals and Constitutional Amendments are posted to Snapshot for an offchain vote. That's it — if the vote passes, you're done.

Executable Proposals are instead submitted to the governor contract for an onchain vote:

  1. Ensure at least 100k ENS is delegated to your address, or find a delegate who meets the proposal threshold to propose on your behalf.
  2. Call the propose() function on the ENS governor at governor.ensdao.eth.

This starts a seven-day voting period, during which discussion can continue on the forum topic. If the proposal passes, a two-day timelock follows before the proposed code is executed.