Online Elections

An OpaVote Election provides high security by ensuring that only specific people can vote and ensuring that they only vote once. If you want to allow anyone to vote, then you should use an OpaVote Poll instead.

An Election proceeds as follows:

  • the manager provides the details of the election (title, candidates, etc.),
  • the manager specifies the list of voters (by email addresses or a list of codes),
  • the manager starts the election,
  • OpaVote sends an email to each voter (or the manager distributes codes to voters),
  • voters cast their votes,
  • the manager stops the election and sees the election results, and
  • the manager can optionally publish results to allow voters to see the results.

Elections have three stages: EDITING, VOTING, and END. Please see below for the details of each stage.


During the EDITING stage, you provide all the details for the election. This includes all the information that will appear on the election web page, the information in emails sent to voters, and the email addresses of all voters.

Below is an explanation of the information that you can provide. Some information is optional. By default, one contest is included. You can use the Add Contest button to add more contests (up to 23 contests allowed).

Many of the options below are hidden by default to make it easier for new users of OpaVote. To see all of the options, you can enable "Expert Mode" using a button on the management console.

  • Title of election — This title appears at the top of the voting page and also in emails to voters. Make sure to preview the voter email to make sure it is inserted in a grammatically correct way.
  • Language — OpaVote allows you to run elections in English, French, Spanish, or Portuguese. Voters will see only their own language on both the voting page and the voting email.
  • Notes (optional) — Write any notes you like here. These are not visible to voters. Notes are expecially useful if you have multiple elections with the same title.
  • Description of election — This description appears on the voting page. If you do not specify the email text (see below), then the description is also used in emails to voters. The HTML editor is very powerful. Try right clicking on HTML elements (e.g., table cells) to see even more options.
  • Email text (optional) — The emails sent to voters follow a specific format, but you can specify the first paragraph of the email message with any special instructions you would like to include. This field is optional, and if you leave it blank, then the Description will be used.
  • Show results during voting — Whether to allow voters to see preliminary results while voting is ongoing. Note that the manager can only see preliminary results if the voters can also see preliminary results. At the end of the election, you have the option to publish results and send an email to voters to let them know.
  • Start date (optional) — If you do not specify a start date, voting will start (and voting emails sent) as soon as you click the Start Voting button. If you do specify a start date, voting emails will be sent out at 12:01 am on the start date. You must set your time zone before starting the election. Otherwise, the election will start at 12:01 in Boston, USA.
  • Stop date (optional) — If you do not specify a stop date, voting will stop only when you click the Stop Voting button on the management console. If you do specify a stop date, voters will not be able to vote after 11:59 pm on the stop date.
  • Automatic reminders— If you set this to "yes", we will automatically send a reminder email to all voters who haven't voted every three days until the end of your election.
  • Anonymous voting— Most elections will have this set to "yes" so that no one (not even us!) can determine how a voter voted. For some elections, votes are not anonymous and the election manager may need to report how people voted (e.g., board elections). If you set this to "no", then we record how each voter voted, and provide this information to the election manager at the end of the election in the "All voter statistics" spreadsheet. (If you load this spreadsheet in Excel, it may look like the votes are missing at first, but if you resize the cells, you will be able to see them.) You can also see how each voter voted on the ballots page that is available from the results page.
  • Title of contest — Each contest has a title, and the contest title appears on the voting page.
  • Description of contest (optional) — If provided, the contest description appears on the voting page just below the contest title.
  • Method — The method used to count the votes for the contest. For more information about the available counting methods, see our methods documentation.
  • Ballot type — Choose from two different ballot formats for ranked methods. You can see an example of each ballot format on our demo election.
    • ranked simple — A ranked ballot where the voter must rank all candidates.
    • ranked enhanced — A ranked ballot where the voter can rank any number of candidates (but see the "Require full vote" option below).
  • Require full vote — Whether to require voters to rank a minimum number of candidates. For Plurality/FPTP/SNTV, the voter is required to select one candidate. For Plurality at Large/Block Voting/MNTV, the voter is required to select as many candidates as there are winners in the contest. For the ranked methods with a "ranked enhanced" ballot, the voter is required to rank all of the candidates. This option is not available for approval voting and for the ranked simple ballot (which already requires voters to rank all candidates). If this is not set, voters can cast an empty ballot.
  • Number of winners — The number of winners for the contest. When electing a president, there is typically one winner, but when electing a committee or council, there may be more than one winner.
  • Candidate names — The candidates competing in the contest. Only text is allowed (no images or HTML).
  • Shuffle candidate order — The default is to randomly shuffle the order of candidates on the ballot to prevent bias. You can change this if you prefer the candidates to always appear in the same order.

At any time, you can click the Save Information button. This allows you come back another day to finish. OpaVote limits certain aspects of the data you provide, such as limiting the election title to 100 characters. If you have not complied with any of these limits, you will see an error message. Use the preview tabs to see a preview of the election page and the email that gets sent to voters to make sure all information looks correct.

During the EDITING stage, you also specify the voters. There are two types of voters: email voters and code voters. More information about email voters and code voters is provided below.

Once you are satisfied that all information is correct, click on Start Voting. Note that once you start voting, you can no longer edit any of the information on this page, so review carefully before proceeding.

If you have not set a start date, OpaVote will start sending the voting emails to the voters immediately after you click the button. If you have set a start date, the voting emails will be sent out at 12:01 am on the start date.

Email Voters

For email voters, you provide the email addresses and OpaVote sends an email to each voter. The emails are sent from the address Note that the voters' email addresses are used only for the purpose of running the election and are not shared with anyone. For more information, see our privacy policy.

You have two options for providing the email addresses of the voters:

  • Upload file — You can upload a a plain text file (i.e., ASCII) with a list of voters. Be careful when using a program like Microsoft Word or Excel to make sure that you are saving as plain text. The file must have one email address per line.
  • Enter voters — You can also copy and paste the email addresses from another source. One email address per line.

You must use best efforts to ensure that voter lists have valid email addresses and are limited to people who are genuinely interested in the election. Elections with too many invalid email addresses or voter complaints may be terminated. See our Terms for more details.

You will be immediately informed if your list has improperly formatted emails (e.g., just "john" instead of "") or duplicate email addresses. You can click on the View Voter List button to make sure that you have set the voter list correctly and to see errors. Improperly formatted emails will have a prefix of "INVALID:" and duplicate emails will have a prefix of "DUPLICATE:". If you have invalid or duplicate email addresses, then you can use the "Clean Emails" button to remove them. You can't start the election if there are invalid or duplicate email addresses.

You can also specify weights for voters like this:, 3

The above voter, would have his or her vote count 3 times. The weights can range from 1 to 1000000. A voter without a specified weight gets a weight of 1.

Code Voters

For code voters, you just specify the number of code voters, and OpaVote provides a list of unique, secret codes. You must provide these codes to voters on your own. OpaVote allows you to view the codes before you start voting, in case you need time to process them.

Code voters may be useful if you have two people who share the same email address. You can create an email voter and a code voter to allow both to vote.

You can also specify weights for code voters by uploading a file with a list of weights (either separated by spaces or one weight per line). If the number of weights is less than the current number of code voters, then the weights will apply in order and remaining code voters will not receive a weight (which gives them the default weight of 1). If the number of weights is larger than the number of current code voters, then new code voters will be created.

To allow code voters to vote, you provide them with a code and the link to the code entry page. The link is available from the management console and looks like this but with a different election ID:

You can also create links to allow code voters to go directly to the voting page so they don't have to enter their codes. This is especially helpful if you are sending your own voting emails to voters. The one-click code voting links look like this:

where you replace the election ID and replace ABCDEFGH with the voter's code.


During the VOTING stage, you can monitor the status of the election, send reminders to voters, disable voters, and end the election.

The management console shows you the number of email voters and the number of code voters. You can click on these to see the corresponding lists of voters in a new tab of your browser. In the lists of voters, you can further click on a voter to see information about that voter and you can also take two actions:

  • Send Reminder — This resends the voting email to only this voter.
  • Disable Voter — This prevents the voter from voting. You can only disable a voter if they haven't voted yet. If you change your mind, you can later enable the voter.

OpaVote allows you to track email delivery. Each voter has an email delivery status that is one of the following:

  • Pending — OpaVote hasn't yet sent an email to the voter. OpaVote sends emails at a rate of 2 per second (takes about 8 minutes to send 1000 emails). For larger elections, you will see this number decrease as emails are sent.
  • In Transit — OpaVote sent the email, but it hasn't yet been delivered (it has been "deferred" by the receiving email server). Email servers can be finicky about accepting emails, and sometimes will only accept an email after you have tried to deliver it a few times.
  • Rejected — The email bounced or the voter indicated that he or she didn't want to receive the email by marking it as spam or opting out. Note that voters have the option to opt out of only your election or to opt out of all OpaVote emails.
  • Delivered — The email has been delivered to the voter.

The management console tells you the number of each category and you can click on each category to see a list of voters corresponding to the category. Note that these numbers only apply to the initial sending of emails to voters and are not reset if you send out reminder emails to voters.

OpaVote also allows you to track voter activity. For email voters, you can track opens of voting emails, and for all voters, you can track visits to the voting page and whether they voted.

  • Opens — The total number of times a voting email was opened. If a single voter opens the email twice, then both of those are counted. Email opens are counted by use of a "tracking pixel" in the email. Many people set up their email to block tracking pixels so this number is generally under reported.
  • Unique Opens — The number of voters who have opened the voting email. If a single voter opens the email many times, this counts as only one unique open.
  • Visits — The total number of visits to a voting page (after clicking the voting link in the voting email).
  • Unique Visits — The number of voters who have visited the voting page.
  • Voted — The number of voters who have voted. There is no need for unique voted since a voter can only vote once!
  • Not Voted — The number of voters who have not voted.
  • Disabled — As noted above, you can disable individual voters, and this is the number of disabled voters.

Clicking on any of the above will give you a list of corresponding voters. The list of "Rejected" voters will also tell you the type of rejection (bounce, spam, or opt out) and may tell you why the voter bounced.

You can add more voters to the election by clicking the Add Voters button after entering the list of email addresses in the corresponding box. You can only do this in batches of 100 voters or less so you should provide most voters during the EDITING stage. You can also add more code voters using the Add Codes button.

You can use the Remind All button to remind all voters to vote once every 3 days. This will resend the voting email to all voters who have not yet voted (excluding disabled voters and rejected voters). You can also change the text of the reminder email before using the Remind All button.

When you would like to stop the election and see the final results, click on the Stop Voting button. If you have not set a stop date, then click the Stop Voting button whenever you want to end the election and it will be ended immediately. If you have set a stop date, clicking the Stop Voting button before the stop date will immediately end the election.

Kiosk Mode

If you are doing an onsite election (people voting in person at a meeting) with code voters, then you may find our kiosk mode of voting useful.

In the normal mode of voting (not kiosk mode), after voting, a voter is directed to a page that thanks them for voting. For another voter to vote, you would have to go back to the code entry page by clicking the back button a couple times or reentering the voting page address.

In kiosk mode, after a voter votes, a pop up is shown that thanks them for voting and the popup automatically disappears after 5 seconds. When the popup disappears, the code entry page is shown to make it easy for the next voter to vote. In this manner, you can set up one or more voting stations, and voters can easily vote one after the other.

To enable kiosk mode, simply add ?kiosk=1 to the end of the voting page address. For example, the voting pages address would look something like this:

For all subsequent pages (even when a voter inputs an incorrect code or tries to vote twice), OpaVote will remember that it is in kiosk mode and append ?kiosk=1 to all page addresses.


At the end of an election, you can see the results (using bar charts) and download the ballots so you can count them independently.

You have the option to publish the results so the voters (and anyone else) can see them. You do this by clicking the "Publish Results" button. The first time you click this button, an email will be sent to all voters who voted to let them know that results are available.

After publishing the results, you have the option to withdraw them by clicking on the button that says "Withdraw Results". Clicking this button will prevent voters from seeing results. You can publish and withdraw as many times as you like, but an email will only be sent to voters once.

The election manager can also view an updated voter list that includes additional information. For each voter, the voting list indicates whether the voter voted, opted out, bounced, or complained (marked an OpaVote email as spam). You can use this information to tailor your voting list for future elections.