Registry entry
California Voter Registration
Register to vote, update an existing voter registration record, or pre-register (ages 16-17) in California, administered by the California Secretary of State through the state's online voter registration system (covr.sos.ca.gov, publicly linked from registertovote.ca.gov). Unlike au/aec/voter-enrolment, which models a single national electoral roll, voter registration in the United States is state-administered — this document models California's own state-run process specifically, not a national US process. Models the wizard's classification/eligibility step, personal information (name, date and place of birth, identity-proofing via a California driver license/ID number or the last four digits of a Social Security number, ethnicity, and language preference), home and mailing address (including a no-street-address branch for applicants without a conventional street address), a previous-registration/name-change recall section, political party preference, election-materials mailing preferences, poll-worker volunteering, accessibility, and third-party-assistance disclosure, ending with a penalty-of-perjury affirmation. Does not model the confirmation/electronic-signature step that follows the application review page, and does not submit an application; the live covr.sos.ca.gov source is always authoritative (see VERIFICATION.md).
Registry entry
us/ca/sos/voter-registration
GovSchema spec v0.3
Machine access
- Schema document
registry/us/ca/sos/voter-registration/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/us/ca/sos/voter-registration/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
64 fields across 11 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.
Classification
-
classificationenum requiredWhich of seven eligibility categories the applicant registers under. This schema models the domestic in-state civilian path (us_citizen_ca_resident) in full; the six UOCAVA/military/overseas categories share this same classification field and wizard, but were not walked in this verification pass and may surface additional fields (e.g. an overseas mailing address, unit/rank) not modeled here — see VERIFICATION.md 'Out of scope'.
enum: 7 values
Qualifications
-
isUSCitizenboolean requiredEligibility attestation checkbox; must be checked to proceed.
-
registrationChoiceenum requiredWhether the applicant is registering as an adult or pre-registering as a 16- or 17-year-old (California allows pre-registration from age 16, with automatic activation to a registered voter at 18). The wizard's own date-of-birth validator enforces a minimum age of 16 regardless of this choice.
enum: adult_18_or_older | pre_register_16_or_17
Personal information
-
prefixenum optionalOptional name prefix.
enum: mr | mrs | miss | ms -
firstNamestring requiredApplicant's legal first name.
patternlength: 1–32classification: sensitive-pii -
middleNamestring optionalApplicant's legal middle name.
patternlength: 0–32classification: sensitive-pii -
lastNamestring requiredApplicant's legal last name.
patternlength: 1–32classification: sensitive-pii -
suffixenum optionalOptional name suffix.
enum: 11 values -
emailAddressstring optionalOptional contact email address. The wizard's own client-side script compares this against confirmEmailAddress for a match, but this is not enforced by the server model unconditionally; a consumer SHOULD still ensure the two match when both are supplied.
patternlength: 0–100 -
confirmEmailAddressstring optionalRepeat of emailAddress for confirmation; see emailAddress's description.
patternlength: 0–100 -
phoneNumberstring optionalOptional daytime phone number, digits only. The form notes phone numbers are posted at polling places on election day.
patternlength: 0–10 -
dateOfBirthdate requiredFull date of birth. The source form renders this as three separate month/day/year dropdowns/box (fields MonthOfBirth, DayOfBirth, YearOfBirth), collapsed here to one field per this registry's comb-field convention. The wizard's own validator enforces a minimum age of 16 as of the submission date (observed acceptable birth-year range: 1901-2010 against a 2026-07-02 access date).
classification: sensitive-pii -
placeOfBirthTypeenum optionalWhether the applicant's place of birth is a U.S. state/territory or a foreign country/region. Presented on the form with a conditional-required visual indicator, but no server-side required validation was observed when this field and its dependents (statePlaceOfBirth, countryPlaceOfBirth) were left entirely blank.
enum: us_state_or_territory | foreign_country -
statePlaceOfBirthstring optionalU.S. state or territory of birth. The source presents a fixed 59-item dropdown (50 states, D.C., and 8 territories); modelled as free text per this registry's convention for large geographic dropdowns (e.g. us/dos/immigrant-visa-ds260's state/country fields) rather than embedding the full option list as an enum.
length: 0–100 -
countryPlaceOfBirthstring optionalForeign country or region of birth. The source presents a fixed ~200-item country dropdown; modelled as free text per this registry's large-geographic-dropdown convention.
length: 0–100
Identification and demographics
-
californiaIdstring optionalOne letter followed by seven numeric digits. Required unless hasNoCaliforniaId is checked. New voters who supply neither this nor a Social Security number may have to show identification or proof of residency the first time they vote.
patternclassification: sensitive-pii -
hasNoCaliforniaIdboolean optionalGates californiaId's requiredness. Checking this and hasNoSsn together is accepted by the wizard (the source site states such applicants 'may still apply but must take additional steps to complete your voter registration').
-
ssnLast4string optionalLast four digits only. Required unless hasNoSsn is checked.
patternclassification: sensitive-pii -
hasNoSsnboolean optionalGates ssnLast4's requiredness. See californiaId/hasNoCaliforniaId's description for the combined no-ID, no-SSN case.
-
ethnicityenum optionalOptional self-reported ethnicity/race, collected for federal Voting Rights Act compliance reporting (not printed on this page, but standard practice for this data element).
enum: 7 values -
languagePreferenceenum optionalPreferred language for election materials.
enum: 11 values -
otherLanguagestring optionalFree-text language name, collected when languagePreference is 'other'. Modelled here per the field's evident intent; the live server was observed to reject a submission that left this field blank even when languagePreference was 'english', which this schema treats as a form implementation quirk rather than the field's real requiredness rule — see VERIFICATION.md.
patternlength: 0–50
Home and mailing address
-
homeAddressChoiceenum requiredWhether the applicant has a conventional street address or must instead describe their residence (e.g. an unhoused applicant using cross-streets).
enum: has_street_address | no_street_address -
homeStreetAddressstring optionalResidential street address; not a P.O. Box or business address. Must clearly identify the residence, per the form.
patternlength: 0–64classification: sensitive-pii -
homeApartmentOrUnitNumberstring optionalOptional apartment or unit number for the home street address.
patternlength: 0–12 -
homeCitystring optionalCity of the home street address. The home address state is fixed to California by the source form and is not itself a collected field.
patternlength: 0–40 -
homeZipstring optional5-digit ZIP code of the home street address; the source form range-validates it between 90001 and 96162 (California's ZIP code range).
pattern -
homeNoStreetAddressDescriptionstring optionalFree-text description of the applicant's residence location, used instead of a conventional street address.
patternlength: 0–64 -
homeNoStreetAddressCitystring optionalCity corresponding to the no-street-address description.
patternlength: 0–40 -
homeCountystring requiredCounty of residence. The source presents a fixed 58-item dropdown (California's own counties); modelled as free text per this registry's large-geographic-dropdown convention rather than embedding the full option list as an enum.
length: 0–20 -
isMailingAddressDifferentboolean optionalGates the mailing-address fields; leave unchecked if mail should go to the home address.
-
mailingStreetAddressstring optionalMailing street address or P.O. Box, if different from the home address. Unlike the home address, a P.O. Box is accepted here.
patternlength: 0–64classification: sensitive-pii -
mailingApartmentOrUnitNumberstring optionalOptional apartment or unit number for the mailing address.
patternlength: 0–12 -
mailingCitystring optionalCity of the mailing address.
patternlength: 0–40 -
mailingStatestring optionalState of the mailing address (not fixed to California, unlike the home address). The source presents the same fixed 59-item state/territory dropdown as statePlaceOfBirth; modelled as free text for the same reason.
length: 0–100 -
mailingZipstring optionalZIP code of the mailing address; unlike homeZip, not range-restricted to California.
patternlength: 0–10
Previous registration
-
isPreviouslyRegisteredboolean optionalGates the previous-registration recall fields below, used to help election officials locate an existing record (e.g. after a name or address change). None of the previous-registration fields are themselves server-enforced as required even when this is checked — they help officials find a prior record but are not a hard prerequisite.
-
previousFirstNamestring optionalFirst name the applicant was previously registered under, if known.
patternlength: 0–32classification: sensitive-pii -
previousMiddleNamestring optionalMiddle name the applicant was previously registered under, if known.
patternlength: 0–32classification: sensitive-pii -
previousLastNamestring optionalLast name the applicant was previously registered under, if known.
patternlength: 0–32classification: sensitive-pii -
previousStreetAddressstring optionalStreet address the applicant was previously registered at, if known.
patternlength: 0–28classification: sensitive-pii -
previousApartmentOrUnitNumberstring optionalApartment or unit number of the previous address, if known.
patternlength: 0–12 -
previousCitystring optionalCity of the previous address, if known.
patternlength: 0–40 -
previousStatestring optionalState of the previous address, if known. Presents the same fixed 59-item dropdown as statePlaceOfBirth/mailingState; modelled as free text for the same reason.
length: 0–100 -
previousZipstring optionalZIP code of the previous address, if known.
patternlength: 0–10 -
previousPoliticalPartystring optionalFree-text previous political party preference, if known — distinct from the current politicalParty field below, which uses a fixed, closed list.
patternlength: 0–32
Political party preference
-
politicalPartyPreferenceChoiceenum requiredWhether the applicant registers with a party preference or as No Party/None. Choosing No Party/None may restrict which parties' candidates the voter can select in a primary election for U.S. President, or for a party's central committee.
enum: has_preference | no_party_or_none -
politicalPartyenum optionalSelected political party, when politicalPartyPreferenceChoice is has_preference.
enum: 7 values -
otherPoliticalPartystring optionalFree-text party name, when politicalParty is other_party.
patternlength: 0–50
Election materials
-
wantsStateVoterGuideByMailboolean requiredIf everyone in the applicant's household opts out, no state voter information guide is mailed to that address; the guide remains available online, and any other household member's opt-in still results in a mailed copy for the address.
-
wantsCountyVoterGuideByMailboolean requiredOpting out results in electronic notification instead, where the applicant's county supports it; otherwise the county voter information guide is mailed regardless.
-
electronicNotificationEmailstring optionalOptional email address for electronic notification when a county voter information guide is available online instead of by mail.
patternlength: 0–100 -
confirmElectronicNotificationEmailstring optionalRepeat of electronicNotificationEmail for confirmation.
patternlength: 0–100
Volunteer on election day and accessibility
-
wantsToBePollWorkerboolean optionalGates spokenLanguages and canProvidePollingPlace.
-
spokenLanguagesstring optionalSelect-all-that-apply. Modelled as a comma-separated list of: english, chinese, japanese, korean, spanish, tagalog, vietnamese, hindi, khmer, thai, other — the same multi-select-as-string treatment as us/uscis/travel-document-i131's race field, pending the GSP-0009 repeating/multi-select gap.
length: 0–100 -
otherSpokenLanguagestring optionalFree-text language name, meaningful only when spokenLanguages includes 'other' — a sub-condition on a comma-joined field the shared Condition grammar cannot express directly, so it is documented here in prose rather than encoded (the same class of gap as au/aec/voter-enrolment's citizenshipCertificateNumber exemption).
length: 0–25 -
canProvidePollingPlaceboolean optionalOffer of a physical location to serve as a polling place.
-
wantsAccessibleMaterialFormatboolean optionalRequest for voting materials in an accessible format.
Help filling out this form
-
receivedThirdPartyHelpboolean optionalGates the third-party helper fields. The form's own instructions state the helper 'must fill out the questions below' if yes, but no server-side required validation was observed on the helper fields themselves.
-
thirdPartyHelperNamestring optionalName of the person who helped complete the form. Personal information of a third party; handle as sensitive data.
length: 0–96classification: sensitive-pii -
thirdPartyHelperAddressstring optionalAddress of the person who helped complete the form. Personal information of a third party; handle as sensitive data.
length: 0–200classification: sensitive-pii -
thirdPartyHelperPhonestring optionalPhone number of the person who helped complete the form.
length: 0–14 -
thirdPartyHelperOrganizationstring optionalOrganization the helper is affiliated with, if any, and its telephone number.
length: 0–200
Affirmation
-
affirmationboolean requiredFinal penalty-of-perjury affirmation and eligibility declaration; must be checked to submit. Applicants pre-registering at 16-17 are not yet held to the 'at least 18 years old' clause in practice, though the form presents one combined affirmation checkbox for both registrant and pre-registrant paths.
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-02
draft, not verified, because the walkthrough stopped at the Review page (Step 4 of 5) without pressing the final Submit action — no real application was filed, and the confirmation/electronic-signature step that would follow was never observed. See "What was not done" below.
Sources examined
- Document
(id, version):us/ca/sos/voter-registration/1.0.0 - Spec version: GovSchema
0.3.0 - Authority: California Secretary of State (SOS), the office that administers California's online voter registration system under state election law.
https://registertovote.ca.gov/— the SOS's public voter-registration landing page. Fetched live viaWebFetch, 2026-07-02 (HTTP 200). Static informational page (confirmed by a directcurlfetch, not a JS SPA-shell): identifies the driver-license/ID-or-SSN identity-proofing model, the 16-17 pre-registration pathway, the 9 supported election-material languages, and links to the live application.https://covr.sos.ca.gov/— the live online voter registration application itself, reached viaregistertovote.ca.gov's "Register to Vote Now" link. This is a server-rendered ASP.NET MVC application (not a client-side SPA), confirmed by directly fetching it withcurland reading literal<form>/<input>/<select>HTML — the same technique that failed to reach content at FL'sregistertovoteflorida.gov(an Angular SPA requiring a real browser) and at AU'senrol.aec.gov.au(network-blocked entirely). This document is sourced by directly operating this live server: fetching each wizard page's own anti-forgery token (__RequestVerificationToken) and session cookies, thenPOSTing well-formed field data to/en/OnlineVoterRegistration/PostFormand reading the server's own re-rendered next-step HTML — not a headless browser, but the same practical effect of exercising the real, live, server-validated wizard end-to-end, with mock/placeholder applicant data throughout (Jane Doe, DOB1990-06-15, address123 Main St, Sacramento, CA 95814) and no real submission.- Step 1 — Classification. Fetched live, 2026-07-02. One field,
ClassificationType, a 7-option radio group. Supplied option1("A U.S. citizen and resident of California"). - Step 2 — Personal Information. The single largest page in the wizard, combining four field groups: Qualifications, Personal Information (name, contact, date/place of birth, California driver-license-or-ID/last-4-SSN identity proofing, ethnicity, language preference), Home and Mailing Address (including a no-street-address branch and a previous-registration recall section), and Political Party Preference. Posted a complete, valid submission and received Step 3 back (HTTP 200), confirming server-side acceptance of every field modelled in this step.
- Step 3 — Additional Information/Consent. Vote-by-Mail informational text (no field), State/County Voter Information Guide mail preferences, electronic notification email, poll-worker volunteering (with a spoken-languages sub-list), accessibility, third-party-assistance disclosure, and the final penalty-of-perjury Affirmation checkbox. Posted a complete, valid submission and received Step 4 (Review) back (HTTP 200).
- Step 4 — Review. A read-only
<dl>summary of every value submitted in Steps 1-3, confirming the server's own model of the data (echoed back correctly, including the county resolved from the numericCountyIdto its name,SACRAMENTO). Its own form has onlyEditandSubmitbuttons;Submitwas never pressed.
- Step 1 — Classification. Fetched live, 2026-07-02. One field,
What was not done — the one honest gap
The final Submit action on the Review page, and whatever confirmation or electronic-signature step follows it (the wizard's Step 5 of 5), were never exercised, to avoid filing a real voter registration application. This schema's field inventory is therefore complete through the Review page but does not model whatever Step 5 itself collects (if anything beyond a final confirmation — the Review page's own Submit button suggests the application may be filed directly from Step 4, with Step 5 being a confirmation/receipt screen rather than a further data-collection step, but this was not observed directly).
Additionally, only the us_citizen_ca_resident classification branch (ClassificationType=1) was walked. The other six classification values (active-duty military/Merchant Marine, eligible spouse/dependent, activated National Guard, and the three overseas-citizen categories) share the same wizard and the same ClassificationType field, but were not independently exercised; they plausibly surface additional fields (an overseas mailing address, military unit information, or a UOCAVA-specific declaration) not captured in this schema. This mirrors au/aec/voter-enrolment's decision not to model AEC's special-category enrolment forms.
Modelling decisions
- Date of birth collapsed to one field. The source renders
dateOfBirthas three separate controls (MonthOfBirth,DayOfBirth,YearOfBirth), collapsed here to one field per this registry's comb-field convention (e.g.au/aec/voter-enrolment's owndateOfBirth). - Large geographic dropdowns (state, country, county) modelled as free text, not enums. The source presents fixed dropdowns for U.S. state/territory (59 options), foreign country/region (~200 options), and California county (58 options). Rather than embed these as
enumvocabularies, they are modelled asstringfields with amaxLength, per this registry's existing convention for large geographic value sets (e.g.us/dos/immigrant-visa-ds260'sstateProvinceOfBirth/countryOfBirthfields, andau/aec/voter-enrolment's own state-abbreviation fields, which used a short string rather than the full option list). spokenLanguagesmodelled as a comma-separated string, not an array. GovSchema v0.3's fieldtypeenum has noarray/multi-select type (a known gap tracked as GSP-0009). Modelled as a comma-joined string with the vocabulary spelled out in the field's owndescription, matching the precedent set byus/uscis/travel-document-i131'sracefield.otherSpokenLanguage's true condition (spokenLanguagescontainsother) is documented in prose, not encoded. The sharedConditiongrammar (GSP-0013) compares a field's whole value against a literal (equals/notEquals/in), with no substring/contains operator over a comma-joined string.visibleWhenis set to the broaderwantsToBePollWorker == truecondition instead, with the finer condition named in the field'sdescription— the same treatmentau/aec/voter-enrolmentgave itscitizenshipCertificateNumberexemption rule.otherLanguage's server-observed requiredness does NOT match its intended semantic — flagged, not encoded. The live server rejected a Step 2 submission withlanguagePreferenceset toenglish(value1) andotherLanguageleft blank, with the error "Enter your other language preference." Supplying any non-empty value forotherLanguage(regardless of the selectedlanguagePreference) satisfied the server. This schema modelsotherLanguagewithrequiredWhen/visibleWhenconditioned onlanguagePreference == "other"— its evident, intended meaning, and the behavior a compliant client (e.g. a browser running the page's own client-side JavaScript, which toggles the field's visibility and required state) would present to a real applicant — rather than baking in what looks like a raw-endpoint validation quirk of the server's own model binder. Worth re-checking on next review in case this is intentional (e.g. a defensive default) rather than a bug.politicalParty'srequiredWhenwas confirmed, not assumed. The underlying<select id="PoliticalPartyId">carries a static HTMLrequired="required"attribute unconditionally, matching the same pattern asotherLanguageabove — but unlikeotherLanguage, submittingpoliticalPartyPreferenceChoice=no_party_or_nonewithpoliticalPartyentirely omitted was accepted by the server without error (confirmed by the live walkthrough), so this field'srequiredWhencondition reflects directly observed, not inferred, server behavior.otherPoliticalParty's analogous condition (politicalParty == "other_party") was not independently tested and is modelled by the same reasoning pattern rather than direct observation.- Previous-registration and third-party-helper fields modelled as optional even when their gating boolean is true. Neither
Previous.FirstName(etc.) norReceivedThirdPartyHelp.ThirdPartyPersonName(etc.) carry arequiredattribute ordata-val-requiredrule in the source HTML, despite the form's own instructional text implying they should be filled in ("the person who helped you must fill out the questions below"). This schema follows the literal, observed server behavior —required: falsethroughout — rather than the instructional text's implication, consistent with this registry's practice of matching what the server actually enforces. placeOfBirthTypeand its dependents modelled as optional. Norequiredattribute ordata-val-requiredrule was present onPlaceOfBirthType,StatePlaceOfBirthId, orCountryPlaceOfBirthIdin the source HTML, and a submission leaving all three blank was accepted by the server during the live walkthrough.- No
documents[]member. No file-upload field (type="file") appears anywhere in Steps 1-4; California's online system verifies identity against DMV/SSA records by reference number, not by uploaded scans, matching how this registry omitsdocuments[]when a process only asks for reference numbers. classificationandaffirmationgivenfieldRole: eligibility, consistent with howau/aec/voter-enrolmentusedfieldRoleon its ownevidenceOfIdentityand general eligibility-gating fields.isUSCitizenandregistrationChoiceare also eligibility-adjacent but are kept as ordinary gating booleans/enum per the same reasoning already applied toau/aec/voter-enrolment'scitizenshipStatus.
Out of scope
- The six non-
us_citizen_ca_residentclassification branches (active duty military/Merchant Marine, eligible spouse/dependent, activated National Guard, and the three overseas-citizen categories) — see "What was not done" above. - Whatever Step 5 of 5 (post-Review) collects, if anything, beyond a final submit/confirmation action.
- Ballot-request and vote-by-mail-specific processes beyond the
wantsStateVoterGuideByMail/wantsCountyVoterGuideByMailmail preferences already modelled — distinct SOS/county processes, not modelled here. - Registration status lookup / "Check Your Registration Status" — a distinct, read-only SOS tool, not modelled here.
Re-verification
Per the practice's cadence, nextReviewBy is set to 2027-01-02 (6 months). Re-walk the wizard through Step 5 (or as far as ethically possible without filing a real application) to resolve the one open gap, re-check whether the otherLanguage requiredness quirk still reproduces, and promote status to verified if the full flow through submission confirmation is observed, per us/fl/doe/online-voter-registration's and de/finanzamt/tax-identification-number's precedent.
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 California Secretary of State or any government. The authoritative source is always the live government form and its official instructions.