Skip to main content
Proposals are the primary mechanism for decision-making in your DAO. Agora supports multiple proposal types including standard, optimistic, approval-based, and offchain proposals.

Overview

The proposal system allows token holders and delegates to:
  • Create proposals through a guided workflow
  • Vote on active proposals with their voting power
  • Track proposal status through the governance lifecycle
  • Execute approved proposals on-chain
  • View voting history and results

Proposal Types

Standard Proposals

Traditional on-chain proposals with voting period and quorum requirements

Optimistic Proposals

Pass unless vetoed, ideal for routine operations

Approval Voting

Vote on multiple options simultaneously

Offchain Proposals

Snapshot-based voting for signaling and temperature checks

Viewing Proposals

Proposals List

Access all proposals at /proposals. The list shows:
  • Proposal title and description
  • Current status (Active, Pending, Succeeded, Defeated, etc.)
  • Vote counts and participation
  • Time remaining for active proposals
export async function getProposals({
  filter,
  pagination,
  type,
}: {
  filter: string;
  pagination: PaginationParams;
  type?: string;
}): Promise<PaginatedResult<Proposal[]>> {
  const { namespace, contracts } = Tenant.current();
  
  // Fetch proposals with pagination
  const proposals = await fetchInitialProposals(
    pagination,
    filter,
    type,
    namespace,
    contracts
  );
  
  return proposals;
}

Filtering Proposals

Use the filter dropdown to view:
1

Relevant Proposals

Shows active and recent proposals (excludes cancelled)
2

All Proposals

Complete proposal history including cancelled proposals

Creating Proposals

Proposal creation requires sufficient voting power and may require sponsorship from a delegate.

Draft Proposals

Agora provides a draft system for creating proposals:
1

Create Draft

Start a new proposal draft from the Proposals page
2

Add Details

Fill in title, description, and transaction details
3

Request Sponsorship

If needed, request a delegate to sponsor your proposal
4

Submit On-Chain

Once ready, submit the proposal to the blockchain

Proposal Stages

The proposal lifecycle typically follows these stages:
  1. Drafting - Create and refine proposal text
  2. Temp Check - Optional community temperature check
  3. GitHub PR - Link to implementation (if applicable)
  4. Awaiting Submission - Ready for on-chain submission
  5. Active - Voting is open
  6. Succeeded/Defeated - Vote completed
  7. Queued - Approved and waiting for execution
  8. Executed - Changes applied on-chain
type Proposal = {
  id: string;
  proposer: string;
  markdowntitle: string;
  description: string;
  status: ProposalStatus;
  startTime: Date;
  endTime: Date;
  quorum: bigint;
  proposalResults: {
    for: bigint;
    against: bigint;
    abstain: bigint;
  };
};

Voting on Proposals

Casting a Vote

1

Connect Wallet

Ensure your wallet is connected to the platform
2

Navigate to Proposal

Open the proposal details page
3

Select Vote Choice

Choose For, Against, or Abstain
4

Add Reason (Optional)

Explain your voting decision to the community
5

Sign Transaction

Confirm the vote in your wallet
Votes are final and cannot be changed once submitted. Your voting power is determined at the proposal’s snapshot block.

Vote Weight

Your vote weight is determined by:
  • Direct tokens - Tokens you hold in your wallet
  • Delegated tokens - Tokens delegated to you by others
  • Advanced delegations - Partial or conditional delegations

Proposal Details Page

Each proposal has a dedicated page showing:

Overview Section

  • Proposal title and description
  • Proposer information
  • Current status and timeline
  • Transaction details (for on-chain actions)

Voting Results

  • Real-time vote counts
  • Percentage breakdown
  • Progress toward quorum
  • Individual votes list

Execution

For approved proposals:
  • Transaction queue status
  • Execution timeline
  • Transaction details and verification
import { fetchProposal } from '@/app/api/common/proposals/getProposals';

const proposal = await fetchProposal(proposalId);

console.log(proposal.status); // "ACTIVE", "SUCCEEDED", etc.
console.log(proposal.quorum); // Minimum votes needed

API Integration

Fetching Proposals

import { fetchProposals } from '@/app/api/common/proposals/getProposals';

const result = await fetchProposals({
  filter: 'relevant',
  pagination: { limit: 10, offset: 0 }
});

console.log(result.data); // Array of proposals
console.log(result.meta); // Pagination metadata

Getting Proposal Types

import { fetchProposalTypes } from '@/app/api/common/proposals/getProposals';

const types = await fetchProposalTypes();
// Returns configured proposal types with quorum and approval thresholds

Best Practices

  • Use clear, concise titles
  • Provide detailed rationale and context
  • Include expected outcomes and success metrics
  • Link to relevant discussions and research
  • Specify exact transaction details
  • Consider governance calendar and review periods
  • Allow sufficient time for community discussion
  • Avoid submitting during holidays or major events
  • Coordinate with related proposals
  • Participate in discussion threads
  • Address community feedback
  • Update proposal based on input
  • Provide voting rationale when casting votes

Advanced Features

Hybrid Proposals

Combine on-chain and off-chain voting:
  • Off-chain signaling through Snapshot
  • On-chain execution of approved proposals
  • Linked proposal metadata

Proposal Archival

Access historical proposals through the archive system:
  • Full text search across past proposals
  • Filter by date, status, and proposer
  • View voting history and outcomes

Tax Forms

For DAOs requiring tax documentation:
  • Automated tax form generation
  • Delegate voting activity reports
  • Compensation tracking

Voting

Learn about the voting system and mechanics

Delegation

Understand how to delegate your voting power

Forums

Discuss proposals with the community

Troubleshooting

  • Check if you meet minimum voting power requirements
  • Verify wallet connection and network
  • Request sponsorship from an eligible delegate
  • Confirm transaction was successful on block explorer
  • Wait for block confirmations (usually 1-2 minutes)
  • Check that proposal was active during your vote
  • Voting power is snapshot at proposal creation time
  • Recent token transfers won’t affect existing proposals
  • Check delegation status at the snapshot block

Build docs developers (and LLMs) love