Registry entry
Canada Federal Voter Registration (Online Voter Registration Service, National Register of Electors)
Register an eligible Canadian citizen, or update an existing registration, in the National Register of Electors maintained by Elections Canada under the Canada Elections Act, using the live Online Voter Registration Service (ereg.elections.ca). Models the direct-match registration path: date of birth, the three federal eligibility gates (Canadian citizenship, home address in Canada, Canadian Forces elector status), personal information (name, gender), and a civic (street-address) home address, followed by a review screen and CAPTCHA before submission. Two adjacent flows reached from the eligibility screen are out of scope: answering 'No' to Canadian citizenship ends in a hard ineligibility result, and answering 'No' to having a home address in Canada routes to a separate application process for Canadians living abroad (International Register of Electors, a distinct IRCC/Elections Canada service). The three non-civic home-address types the address step itself offers (rural Section/Township/Range/Meridian, rural Lot & Concession, and a free-form 'different address type') are recorded as selectable values but their own sub-field sets were not reached in this cycle and are deferred (see VERIFICATION.md). Likewise, the identity-document-upload path Elections Canada uses when a submitted registration cannot be automatically matched to an elector record (per the service's own 'check the status of your request' reference-number flow) was not reached and is out of scope. Does not submit the registration; the live ereg.elections.ca service is always authoritative, and GovSchema never files a live application on an applicant's behalf — see VERIFICATION.md.
Registry entry
ca/elections-canada/voter-registration
GovSchema spec v0.3
Authoritative source Elections Canada Online Voter Registration Service (ereg.elections.ca), version 2.3.17.0
Machine access
- Schema document
registry/ca/elections-canada/voter-registration/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/ca/elections-canada/voter-registration/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
15 fields across 4 steps, read from the published schema.json — names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.
Date of Birth
-
dateOfBirthdate requiredThe live form collects this as three separate text inputs (Year YYYY, Month MM, Day DD) on their own screen (Step 1 of 6) before any other question, since Elections Canada uses date of birth to determine whether an applicant is routed to the 18+ National Register of Electors or the 14-17 Register of Future Electors flow (the latter is out of scope for this document, which models the adult registration path only).
Eligibility
-
isCanadianCitizenboolean requiredThe Canada Elections Act requires Canadian citizenship to register and vote in a federal election. Answering No leads directly to a Step 6 of 6 ineligibility result screen; this document does not model that terminal outcome as a data field.
-
hasCanadianHomeAddressboolean requiredAnswering No routes to a distinct application process for Canadians living abroad (the International Register of Electors), a separate Elections Canada service out of scope for this document.
-
isCanadianForcesElectorboolean requiredPresented on the same 'Eligibility' screen as the citizenship and home-address questions, but answering Yes or No both continue to Step 3 (Personal Information) — unlike the other two questions on this screen, this one does not itself gate continuation in the portion of the flow walked for this document. Whether a Yes answer changes the later home-address screens (e.g. a military postal/box address format) was not explored and is not modelled.
Personal Information
-
firstNamestring requiredFirst name
length: 0–50classification: pii -
middleNamestring optionalMiddle name
length: 0–50classification: pii -
lastNamestring requiredLast name
length: 0–100classification: pii -
genderenum requiredValues transcribed from the live dropdown: 'Woman', 'Man', 'Another gender'.
enum: woman | man | another_gender
Home Address
-
homeAddressTypeenum requiredThe live form's four address-type options: an ordinary street/civic address ('civic', the common case, fully modelled by this document); a rural legal-description address using Section/Township/Range/Meridian, offered only for Alberta, British Columbia, Saskatchewan and Manitoba rural addresses; a rural Lot & Concession address, offered only for Ontario rural addresses; and 'I have a different address type' for anything else. Only the civic path's own sub-fields (homeAddressPostalCode, homeAddressCity, homeAddressStreetName, homeAddressNumber, homeAddressUnit, homeAddressSuffix) are modelled in this version; the sub-field sets specific to the two rural legal-description types were not reached in this cycle and are deferred to a future revision (see VERIFICATION.md).
enum: civic | section_township_range_meridian | lot_concession | non_conforming -
homeAddressPostalCodestring optionalCanadian postal code (format A1A 1A1), used to look up the applicant's city and street from Elections Canada's own address database on the next two screens.
patternlength: 0–7classification: pii -
homeAddressCitystring optionalThe live service presents this as a dropdown of the one or more cities/towns its address database associates with the entered postal code (e.g. entering K1A 0A6 offers only 'Ottawa, ON'), rather than free text; this document models the underlying value (city name and province) an agent needs to supply, not the lookup mechanic itself.
length: 0–100classification: pii -
homeAddressStreetNamestring optionalThe live service presents this as a dropdown of known street names for the chosen city (optionally narrowed by street-type and direction filters), with an explicit 'My street is not here' option that reveals free-text entry instead; this document models the resulting street-name value rather than the two-stage lookup-then-fallback mechanic.
length: 0–100classification: pii -
homeAddressNumberstring optionalThe live field's own HTML5 validation pattern and error message ('Invalid street number') were captured directly from the page.
patternclassification: pii -
homeAddressUnitstring optionalUnit/Suite/Apt
length: 0–6classification: pii -
homeAddressSuffixenum optionalA civic-address suffix appended to the house/building number (e.g. '123A'), as opposed to a fractional civic number (e.g. '123 1/2'). Full option list transcribed from the live dropdown.
enum: 29 values
Verification record
This file is the source-review record for this document version, per the manual-source-review-v1 practice.
Current claim
status:draftverification.method:manual-source-review-v1verification.lastVerifiedAt:2026-07-04
Why this cycle picked up Canadian federal voter registration
This is the recurring "GovSchema Standard Research" cycle (GOV-960). A per-country x per-vertical coverage audit of the registry found that of the 11 jurisdictions currently covered, only Australia (AEC), the United States (state-level: CA, FL), India (ECI), and the United Kingdom (Cabinet Office) have a National ID & Civic Documents-vertical voter-registration schema; Canada did not, despite ca/cra, ca/esdc, and ca/ircc already establishing Canada as a covered federal jurisdiction. The issue's own notes list "remaining voter registration" as an explicit target for this vertical. Before committing to this candidate, a DMV-vertical vehicle-registration/tag/title gap across seven jurisdictions (AU, SG, CA, IE, NZ, IN, NL — all of which have a driving-licence schema but none have vehicle registration) was also investigated; the two most concrete leads there (Ontario ServiceOntario licence-plate renewal, Ireland VRT) both turned out to be either lookup/session-gated past the first data-entry screen (Ontario requires a real, already-issued plate + permit number to proceed past Step 2) or primarily a business/authorised-trader online-filing flow (Ireland VRT's ROS channel), consistent with this registry's existing preference for document- or directly-observable-flow-sourced schemas over ones requiring credentials this environment cannot supply. Elections Canada's Online Voter Registration Service, by contrast, is a fully public, unauthenticated, directly walkable wizard — the same shape that has worked cleanly for this registry's other voter-registration schemas (AU AEC, GB Register to Vote, IN Form 6).
Sources examined
- Document
(id, version):ca/elections-canada/voter-registration/1.0.0 - Spec version: GovSchema
0.3.0 - Authority: Elections Canada, under the Canada Elections Act.
- Primary source (live walkthrough): the Online Voter Registration Service at https://ereg.elections.ca/en/ereg/index (version
2.3.17.0per its own footer), driven end-to-end with a headless Chromium browser (Playwright) using a real, non-fictional-format Canadian postal code (K1A 0A6, Ottawa/Parliament Hill) and clearly representative mock personal data (Jordan Tremblay, DOB 1990-06-15). Every field name,id/nameattribute,requiredflag,maxlength, and HTML5pattern/data-msgvalidation attribute cited inschema.json'ssourceRefs was read directly from the live page's DOM (via Playwright's$$eval), not paraphrased from visual inspection — includingAddressNumber's own client-side validation regex (^[0-9]{1,6}\s*$) and error message (Invalid street number). - Retrieved / reviewed: 2026-07-04.
- Reviewer: GovSchema Engineering (Standards Engineer — initial authoring source review).
Screen-by-screen walkthrough record
The wizard is exactly six top-level steps (per its own "Step N of 6" progress label), with Step 4 (Home Address) implemented as several sequential sub-screens:
- Privacy and Security (interstitial, no data fields — an acknowledgement-only screen with Previous/Next/Quit).
- Step 1 of 6 — Date of Birth. Three text inputs:
DateYear(maxlength 4),DateMonth(maxlength 2),DateDay(maxlength 2), allrequired. - Step 2 of 6 — Eligibility. Three required Yes/No radio questions:
EligibilityCriteriaCitizenship,SvrCriteriaAddressInCanada,SvrCriteriaCanadianForcesMember. - Step 3 of 6 — Personal Information.
FirstName(required, maxlength 50),MiddleName(optional, maxlength 50),LastName(required, maxlength 100),GenderId(required select: 1=Woman, 2=Man, 3=Another gender). - Step 4 of 6 — Home Address, in sub-screens:
- Address Type: radio
AddressType(CIVICdefault-checked,STRM,LC,NonConforming). - Postal code: text
PostalCode(required, maxlength 7). - Choose your city: select
CityId, populated from the postal code (forK1A 0A6the only option offered wasOttawa, ON, auto-selected since it was the sole match). - Choose your street: selects
StreetTypeId(198 Canada Post-standard street-type abbreviations, e.g.ST,AVE,BLVD),StreetDirectionId(8 compass directions), andStreetId(the actual street-name lookup, city-scoped, with an always-present-11 = "My street is not here"fallback option); plus textAddressNumber(required, maxlength 6,pattern="^[0-9]{1,6}\s*$", disabled until aStreetIdis chosen),Suite(optional, maxlength 6), and selectSuffix(optional: 1/4, 1/2, 3/4, A–Z).
- Address Type: radio
- Step 5 of 6 — Review Information. Read-only summary of every prior answer, plus a required CAPTCHA (
Captchatext input) before Submit. - Step 6 of 6 — Results. Only reached via the two negative-eligibility branches tested (see below); the direct-match success/failure outcome for a
Submit-ted registration was not reached, since Submit requires solving the CAPTCHA.
Eligibility-branch checks performed
Three branches off the Step 2 Eligibility screen were driven independently to confirm routing behaviour (each re-run from a fresh session, changing only the flagged answer):
isCanadianCitizen = false→ jumps straight to Step 6 of 6 — Results: "You're not eligible to vote in a federal election... The Canada Elections Act states that you must have Canadian citizenship to register and vote on election day." A hard, terminal ineligibility outcome — not modelled as a data field, consistent with how this registry's other eligibility-gated documents (e.g.fr/france-visas/schengen-visa-application'srequiresSchengenVisa) express a routing/eligibility question viafieldRole: eligibility+eligibleValuesrather than a validation error.hasCanadianHomeAddress = false→ jumps to Step 6 of 6 — Results: "There's a separate registration process for Canadians living abroad," linking to a distinct International Register of Electors application. Out of scope for this document (a different Elections Canada service, not explored this cycle).isCanadianForcesElector = true→ continues normally to Step 3 of 6 — Personal Information, identical to thefalsecase. This question does not itself gate continuation within the portion of the flow walked for this document, so it is modelled as an ordinary (if thematically eligibility-grouped) required boolean rather than one carryingeligibleValues.
Mock-data test run
Per the issue's phase-4 instruction to test-run the schema with valid mock data, two representative scenarios were authored and checked field-by-field against every type/required/requiredWhen/ visibleWhen/enum/pattern constraint in schema.json, using a one-off Python condition evaluator (not committed to the repo) implementing the same equals/notEquals/in/greaterThan/all/ any/not grammar as GSP-0013's Condition schema (spec v0.3 §8.1) — the same technique used for in/incometax/individual-tax-return-itr1-sahaj (GOV-900).
Scenario 1 — adult civic-address applicant, not a Canadian Forces elector: Jordan Tremblay, DOB 1990-06-15, Man, 111 Wellington Street, Ottawa ON K1A 0A6 (the exact data walked through live above).
Scenario 2 — Canadian Forces elector, apartment suite with civic-number suffix: Marie Claire Bouchard, DOB 1965-11-02, Woman, a Canadian Forces elector, unit 301 at 42A Rue Sainte-Catherine, Montreal QC H2X 1Y6.
Both runs:
`` PASS — Scenario 1 - adult civic-address applicant, not a Canadian Forces elector satisfies every type/required/requiredWhen/visibleWhen/enum/pattern constraint. PASS — Scenario 2 - Canadian Forces elector, apartment suite with suffix satisfies every type/required/requiredWhen/visibleWhen/enum/pattern constraint. ``
A deliberately-broken variant of Scenario 1 (dropping lastName, setting homeAddressNumber to a non-numeric string, and setting gender to a value outside the enum) was also run, to confirm the evaluator itself correctly detects violations rather than passing everything by construction:
`` FAIL — Scenario 1 (deliberately broken) - sanity check: - MISSING required field 'lastName' - 'gender' not in enum ['woman', 'man', 'another_gender']: 'nonbinary' - 'homeAddressNumber' fails pattern ^[0-9]{1,6}\s*$: 'not-a-number' ``
Both registry validators were run against the schema document itself and pass:
``` $ node tools/validate.mjs registry/ca/elections-canada/voter-registration/1.0.0/schema.json ok registry/ca/elections-canada/voter-registration/1.0.0/schema.json
$ node tools/validate-ajv.mjs registry/ca/elections-canada/voter-registration/1.0.0/schema.json ok registry/ca/elections-canada/voter-registration/1.0.0/schema.json [v0.3] ```
Scope decisions (what is modelled vs. deferred)
- Modelled in full: date of birth; the three federal eligibility questions; first/middle/last name and gender; and the civic (street-address) home-address path — postal code, city, street name, house number, unit/suite, and civic-number suffix.
- Deferred (out of scope), and why:
- The 14-17-year-old Register of Future Electors path (the DOB screen's own description suggests date of birth routes between the two registers, but only an 18+ DOB was tested) — matches this registry's existing precedent of modelling the adult registration path only (
au/aec/voter-enrolment,gb/co/register-to-vote). - The International Register of Electors application for Canadians living abroad (reached via
hasCanadianHomeAddress = false) — a distinct service with its own field set, not explored this cycle. - The two rural legal-description address types (
STRM: Section/Township/Range/Meridian for AB/BC/SK/MB;LC: Lot & Concession for Ontario) and the free-form "different address type" (NonConforming) option — all three are recorded as real, directly-observedhomeAddressTypeenum values, but their own sub-field sets were not reached (each appeared to lead to further address-detail screens beyond the postal-code entry point common to all four types, which was not fully explored for the three non-civic types). - The identity-document-upload / manual-verification path — the service's own landing page references checking "the status of your request" via a reference number "if you previously registered by uploading your identification documents," implying a fallback path exists when a submission cannot be automatically matched to an existing elector record. This path was not reached (reaching it would require submitting past the CAPTCHA screen) and is out of scope.
- The CAPTCHA step itself is not modelled as a schema field, consistent with this registry's established treatment of CAPTCHAs as an access artifact rather than domain data (see
in/mha/evisa-etourist's VERIFICATION.md). StreetTypeIdandStreetDirectionId(the street-type/direction filter dropdowns on the "Choose your street" screen) are not modelled as separate fields. They narrow theStreetIdlookup list on the live service but do not themselves carry additional civic-address information beyond whathomeAddressStreetNamealready captures once the street is identified — modelling the underlying civic address value rather than the two-stage lookup-then-filter UI mechanic, consistent with how this registry treats other address/lookup-driven form widgets elsewhere.
- The 14-17-year-old Register of Future Electors path (the DOB screen's own description suggests date of birth routes between the two registers, but only an 18+ DOB was tested) — matches this registry's existing precedent of modelling the adult registration path only (
- No live submission was attempted. GovSchema authors schemas from observed form structure; it does not file live applications with government systems on an applicant's (real or mock) behalf. The walkthrough was deliberately stopped at the Review Information / CAPTCHA screen (Step 5 of 6), one screen before Submit.
Path to a verified claim (next step)
To advance to status: verified, a reviewer applies manual-source-review-v1 Procedure step 2, confirming this document against a fresh live walkthrough of ereg.elections.ca (including, ideally, the previously-deferred rural address-type sub-screens and the 14-17 Register of Future Electors DOB branch), and records the outcome here — shipping a new schema version if discrepancies are found (VERSIONING.md §3, immutability).
Re-verification
Per the practice's Cadence, nextReviewBy is set to 2027-01-04 (6 months).
View the raw record (VERIFICATION.md)
Version history
-
1.0.0draftlatestthis pagehas verification recordschema.json
Independent and non-affiliated
GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Elections Canada or any government. The authoritative source is always the live government form and its official instructions.