skip to content

Welcome to the new-look Every Election



A somewhat technical blog today, as we review some changes made to our elections database. These include:

  • A comprehensive design update to match our other websites.
  • Maps!
  • A tweak to the system of election IDs to take account of boundary reviews.
  • Voting system updates following the Election Act and developments in Wales.

What is Every Election?

Every Election (EE) is Democracy Club’s elections database. Created in 2016, EE is the foundation layer for all our elections services, from candidates to polling stations.

What EE does is provide a unique identifier for every election in the UK. During a scheduled election, each council ward/division is provided with its own ID, which features the election type, the organisation, the electoral geography and the date, as well as whether or not the election is a by-election. For example, next month’s parliamentary by-election in Lancashire is assigned the ID, while May’s scheduled election for councillors to Rumworth ward in Bolton is local.bolton.rumworth.2023-05-04. Simple, right?

Why do we do this? Democracy Club needs identifiers for each election because this allows us to easily attach information to them - including boundaries, candidates, hustings, and so forth. Although most elections are added by the Democracy Club team or one of our core volunteers, anyone can use EE to browse upcoming elections and use the ID creator to suggest a new election if we’re missing one.

Updating Every Election - with Maps!

Despite its importance, EE has been a little neglected of late, not having received any serious updates since its creation. But not anymore!

In the first case, we’ve applied our new design system to EE, updating all sorts of things under the bonnet along the way. This improves the site’s navigability, readability and all-round accessibility.

Excitingly, we’ve also added maps! All election pages on EE now provide an interactive Leaflet map of the relevant area or division. Select an election date from the front page and then a council from the list to view a map. You can also download a GeoJSON file of the area, if you so choose. This includes wards which have new boundaries electing this year, which we’ve created ourselves from the legislation (because Ordnance Survey refuses to publish the new boundaries until after the election, for vague commercial reasons).

New boundaries, you say?

Talking of new boundaries, we also bring news of a radical innovation in the field of election IDs - council IDs without wards attached.

In short, when the Local Government Boundary Commission for England proposes that a council’s ward boundaries should be changed, an Act of Parliament known as an Electoral Change Order (ECO) is passed to put these into effect. Once the ECO is ‘made’ into law, we go about implementing it in EE.

The problem is that ECOs are a slow process, and each year a handful are always delayed and don’t become law until February. In past years we’ve not done anything about this, and simply waited until they are ‘made’ before adding them to our system. But with increasing popularity comes increased scrutiny, and this year we’ve had questions about why some councils don’t yet appear on the lookup.

So, we’ve finally grabbed the problem by the Statutory Instruments and produced a stopgap: councils with elections in May, but without completed ECOs, can now be assigned election IDs without the wards attached. Consequently, postcodes in Southampton, Derby and Slough currently do not return a ward, but do tell the user about elections in May - in practise, to the average user, this looks little different to other areas in the system. We’ll update these when the ECOs are completed, sometime after 21 February.

Voting systems

The UK uses a variety of voting systems for elections. When we create an election in Every Election we store the type of electoral system, information which is used when explaining how people can cast their vote.

However, there was one problem with the way we’d set this up back in 2016: we’d assumed that voting systems did not change over time, and that different organisations of the same type would all use the same system.

Two things have now arrived to challenge this assumption. First, the Elections Act has changed the voting system used for Mayoral and Police and Crime Commissioner elections. That means that before 2023, these elections used the Supplementary Vote system, and from 2023 onwards they use First Past the Post. Secondly, that local authorities in Wales are allowed to change the voting system they use - either FPTP or Single Transferable Vote.

These changes mean we have to take a more sophisticated approach to voting systems. We have done this in the 0.6.0 release of our uk-election-ids library. This library contains a load of logic for making IDs and attaching information to them, and now we have a file that specified the voting system used for each election ID. This information is now available in our API.

Here’s an example of how we use it, showing how the voting system can change over time on a specific organisation/ID:

>>> from uk_election_ids.metadata_tools import VotingSystemMatcher
>>> VotingSystemMatcher("mayor.liverpool.2021-05-06").get_voting_system()
>>> VotingSystemMatcher("mayor.liverpool.2024-05-02").get_voting_system()

Simply put, this means that we can now change electoral systems over time and across different organisations without breaking anything!


Get in touch:

Jump into the online chat in Slack, tweet us, or email