Two campaign staffers review a printed voter list and a laptop data table at a sunlit office desk.
Back to articlesoperations

Bring Your Own List: Make a Voter File Import-Ready Before You Upload

A pre-upload readiness pass for a bring-your-own voter list: what a usable file looks like, where to get one when there is none, and the checks for provenance, minimization, normalization, deduplication, suppression, access, validation, and retention that decide whether the canvass built on it holds up.

The upload drawer is open, a spreadsheet is sitting in the downloads folder, and the honest question is whether that spreadsheet is the right thing to send. It is a good place to pause. A voter list is not field-ready because it opens.

This is the check to run before the file goes anywhere: what a usable list looks like, what to do when there is no list yet, and the checks that decide whether a canvass built on it holds up. The checklist below is the short version; every check is expanded in a section below. This is operational guidance, not legal advice: availability, contents, price, and permitted uses of voter data vary by state, and the terms attached to your file govern.

The readiness checklist: 14 checks in 3 stages

Getting the file, when there is none yet

  • Office that keeps the list identified, with its eligibility rule and request pattern known
  • Request scoped to the ground you will actually knock

Preparing the working copy, once a file arrives

  • Source, authorized purpose, and use restrictions documented
  • Original preserved unchanged and access-restricted
  • Row count, identifier, address, and geography columns confirmed
  • Format kept honest: values still text, leading zeros intact, archives extracted
  • Unnecessary sensitive fields removed before import
  • Transformations documented and reproducible
  • Deduplication applied to people, not rows, and reviewed
  • Suppression reasons recorded with source and date
  • Roles and export permissions decided and assigned

Validating, before the team goes out

  • Import preview reconciled: source rows, imported count, and skipped rows written down
  • 1 sample turf validated against the source
  • Retention and offboarding written down

Start by deciding which of 2 situations you are in

graph TD A[Open the upload step] --> B{Do you have a file at all?} B -->|No file yet| C[Request one from the office that keeps the list] B -->|You already have a file| D[Confirm provenance and permitted use] C --> E[Check the file is usable: identifiers, addresses, format] D --> E E --> F[Minimize, normalize, deduplicate, suppress on a working copy] F --> G[Upload, map, preview, reconcile the counts] G --> H[Validate 1 small turf, then assign]

Both branches converge on the same readiness work. Only the first step differs, and the first step is where most campaigns stall.

No file yet: find the office that keeps the list

If nothing has arrived, the answer is usually the election office, not a data vendor. Nearly every state maintains a statewide list of registered voters and publishes it to a defined set of requestors. What varies is everything operational: some states sell online to any registered voter in the state; some restrict the file to registered political committees; some keep the statewide file closed and handle lists at the city or county instead — in Massachusetts, the practical path for many local races runs through each city and town clerk, so one race can mean several offices rather than one.

Activate keeps a page per state with the current eligibility rule, the fee, and a link to the office that keeps the list, and How to Get Your State's Voter File walks through the 3 request patterns that cover most of the country.

Start at the official source even when a resold copy is easier to buy. The official office is where eligibility, fee, and permitted use are defined, and its copy arrives with the current terms attached. A resold copy inherits every one of those restrictions and adds a provenance question of its own: which version, pulled when. Cheaper or fresher is something a seller has to show you, in either direction.

Scope the request to the ground you will actually knock. A school-board or city-council campaign rarely needs a statewide export, and a district or county subset is easier to handle after it arrives.

A usable file has 1 identifier and 1 findable address per row

Before any cleaning, open the file and confirm 4 things. This takes 5 minutes and it is the difference between an import that works and an evening of guessing.

RowsReal data rows below the header, and a count close to what the geography should hold
IdentityA name column, or at minimum something that identifies the person
LocationA street address — either 1 column, or several that can be joined
GeographyPrecinct, ward, or district columns, so turf can be cut without guesswork

A row needs at least 1 of name, address, phone, or email to be importable at all; rows with none of those are skipped and flagged in the preview. In practice a canvassing list needs the address, because the address is what routing runs on.

The address check is the one worth doing carefully. Files from commercial data vendors routinely split the street address across up to 5 columns — house number, pre-direction, street name, street type, post-direction — and a spreadsheet will not reassemble them on its own. That is a normal shape, not a broken file: the import's mapping step detects the parts and merges them back into a single address.

Formats: delimited text first, and values kept as text

Election offices default to delimited text. Comma-separated, tab-separated, semicolon-separated, and pipe-delimited exports are all common, and Activate's importer detects the delimiter rather than assuming commas. A .txt extension usually just means delimited text — if your office delivers one, rename it to .csv before uploading so the file picker accepts it; the contents are untouched and the importer reads them the same way. Excel workbooks (.xlsx and .xls) open directly too.

3 details are worth knowing in advance

  • Numbers stay text. The importer keeps every value as a string, so a ZIP of 02134 stays 02134. A long voter ID never turns into a float, either. One exception is born earlier: if a ZIP or ID column was typed into Excel as numbers, the leading zeros are already gone inside the workbook. Check, and prefer the delimited file the office provided.
  • Windows artifacts are handled. The importer strips the byte-order mark that Windows and Excel tools add before the first header, and reads the UTF-16 exports some state systems still produce.
  • An archive is not a data file. If the download arrives as a .zip, extract it first and upload the data file inside.

Phone coverage: count it before planning calls or texts

Phone coverage varies enormously by source, and it is the ceiling on any calling or texting program — you can only reach the voters in your list who have a phone number on file. Some state files carry no phone column at all, and others carry one for fewer than half the records. Your file's coverage is whatever your source put in it.

Count the populated phone cells before committing to a calling or texting program. The import's cost step helps — it shows exactly how many records in your file have a phone and how many have an email, as a percentage, before anything commits.

Record where the file came from before you change anything

For every source file, write down who provided it, which office or vendor produced it, when it was obtained, the original file name and date, the authorized purpose, any restrictions on use or transfer, the fees or agreement terms, and who on the campaign answers compliance questions about it.

Preserve the original unchanged in a restricted location and do all cleaning on a working copy. If nobody can explain where the data came from, stop there. "Someone emailed it to us" is not provenance, and the terms attached to a state file do not disappear when it changes hands.

Carry fewer fields than the source offers

More columns do not make a better canvass. Decide what a volunteer standing at a door actually needs: a record ID, a name, the service address, the unit, precinct or turf, authorized contact fields, a language preference where one was legitimately collected, suppression status, and prior contact history.

State files often carry more than that. Date of birth, race, gender, and government-issued identifiers appear in several state exports because the state records them, and none of them belongs on a volunteer's screen merely because it was in the download. Dropping those fields before import is a privacy practice and an interface improvement at the same time.

Normalize without inventing

Normalization makes equivalent values consistent while preserving the underlying truth: trim stray spaces, use consistent state abbreviations, separate street from unit where that is reliable, standardize phone formatting without changing digits, convert dates to 1 documented format, preserve leading zeros, and map source labels to campaign labels through an explicit crosswalk.

Do not silently correct an address, name, party, phone, or email because it looks unusual. Flag it and keep the source value. Every transformation should be reproducible — if nobody can explain how a value changed, the cleaned file is no longer auditable.

Deduplicate people, not rows — before the upload

Shared addresses and shared phones are normal, and the goal is not the smallest row count. It is 1 defensible record per intended contact.

Work down a documented hierarchy: a stable source identifier first, then an exact authorized contact identifier, then name plus full address and unit, then carefully reviewed combinations. Do not merge 2 people because they share a household, a phone, or a surname, and do not delete a conflicting record without preserving the conflict for someone to review.

This is working-copy work. The importer stores each row you give it, and its only automatic duplicate check is refusing the identical file uploaded twice to the same campaign. It does not merge people on its own — 2 rows for the same person become 2 doors unless you resolve them first.

Suppress with a reason attached

Some records should not enter the active canvass: a protected or confidential address, a deceased or moved status from an authorized source, a prior request not to be contacted, an unsafe location, a record outside your district, a duplicate under review, or a use the source terms prohibit.

Suppression happens in the working copy: those records stay out of the upload, and the reason stays in your records. Keep the reason, the source, the date, and the reviewer against every one. A flag without provenance becomes permanent folklore that nobody can undo. And keep the distinction clear: a campaign suppressing a record is shaping its own outreach universe, not changing anything in the official registration record.

Decide who can see and export before the upload, not after

Name the roles: who owns the data and its retention, who prepares and validates the working file, who administers campaign access, who sees operational progress, who sees only their own assignment, and who handles follow-up requests.

Then answer 5 questions. Who can export. Who can see the full universe. What leaves the campaign when a volunteer departs. How fast access is removed. Where temporary files live and when they are deleted.

Activate's own handling covers part of this: imported records are encrypted at rest with AES-256-GCM, a canvasser's app sees one decrypted record at a time — the door in front of them — list views return no bulk decrypted records, and a manager's export gives back your original source columns with Activate's canvassing activity appended. Encryption is a strong control and it is not the whole answer: credentials, limited access, and offboarding are still the campaign's to run.

The upload itself: map, preview, reconcile, confirm

When the working copy is ready, the import lives in the campaign's settings: upload the file, review the prepared mapping, preview, then confirm. 4 things happen in order:

  1. Mapping is prepared for you. Columns are matched to the fields a canvass needs, and split address parts are merged into one address, shown as a formula you can remove. A vendor-shaped header like house_number, pre_direction, street_name, street_type becomes address = {house_number} {pre_direction} {street_name} {street_type} — with the unit carried separately, in its own column.
  2. The preview shows the first 5 rows. They appear after mapping and merging, and rows that will be skipped — none of name, address, phone, or email — are flagged before anything commits.
  3. The cost step quotes the totals. Record count, phone and email reach, and the total in Credits are shown together before confirm. The first 5,000 records in an import are stored free. Larger files are quoted there, and preparing a new file shape carries a small processing charge — the same shape is reused free for 7 days.
  4. Confirm imports once. The count lands in the campaign, and re-uploading the identical file to the same campaign is refused.

Write the numbers down while you can see them: source rows in the file, the record count at the cost step, skipped rows, and the count in the completion message. A 9-row test file with 1 identifier-less row reconciles as 9 source rows → 8 quoted at the cost step → 8 imported → 8 records in the campaign. There is no import-history screen afterwards — the campaign's running total is the count to watch — so the cost step is the moment to record what you accepted.

Validate 1 small turf before the whole team goes out

Pick a small, representative area and confirm that records land in the right geography, unit numbers survived, names and addresses render correctly, suppressed records are absent, response options match your definitions, assignments do not overlap, and 1 completed practice record reaches the dashboard.

Compare several imported records against the preserved original. Then test the awkward cases on purpose: an apartment, a hyphenated name, a leading-zero identifier, an accented character, an incomplete phone. The pilot is a data test and nothing more — it says whether the file is right, not what the electorate thinks.

Write down what happens to the file afterwards

Decide now how long source and working copies live, which contractual or legal terms govern deletion, who approves exports, how downloads on personal devices are handled, when volunteer access ends, how corrections propagate, and what happens to every copy when the campaign closes.

The morning after Election Day is the wrong time to start working out where the voter file ended up.

Clean data starts with authorization, not formatting. Once the list is field-ready, When One Canvasser Taps "Yes," the Whole Campaign Should Know covers how accurate records turn into operational knowledge without pretending to be a poll.

Sources and further reading

Ready to start canvassing?

Set up your campaign and start canvassing in minutes. No credit card required. Activate. Toward Victory!

Start Free Campaign

Keep reading

See all articles
A volunteer with a clipboard counts a box of pens and buttons beside a stack of blank yard signs

Count What You Can Count: What Yard Signs, Billboards, and Campaign Goodies Are Really Worth

Read more
A campaign manager checks a printed voter-file page against a laptop beside a thick data stack and an opened envelope

How to Get Your State's Voter File and Put It to Work in the Field

Read more
A multilingual group of community volunteers prepares neighborhood outreach together around a map.

Multilingual Canvassing That Listens: A Mixed-Language Volunteer Team on 1 Campaign

Read more