IWillVote.com PAD Integration

Created by Bianca Mounce, Modified on Tue, 22 Oct at 3:59 PM by Ben Deverman

IWillVote.com polling place data is now available in PAD for Community Tech Alliance’s partners through a partnership with the Democratic National Committee (DNC). 


IWillVote.com is the Democratic Party’s one-stop shop for voter education and information. Voters can check if they are registered to vote, learn how to register, register online if their state allows it, find their polling location, check voting requirements, and learn how to cast a mail-in or early ballot. Read more about IWillVote.com and the data behind it in this Medium Article by the DNC


This data is available to any CTA partner at no extra charge and does not count against your CTA sync allotment. To access this data, send a request to help@techallies.org.


Getting Started

Once you have submitted a request and CTA has permissioned your organization, the DNC’s IWillVote.com polling place data can be accessed in your PAD project in a dataset called dnc_voting_locations


CTA refreshes this dataset four times a day at 6AM, 10AM, 2PM, and 6PM EST, pulling in the most recent data provided by the DNC. The DNC refresh on their polling data occurs on a per-state basis, updating once or several times during the day.


As of this writing, the dnc_voting_locations dataset contains the following 9 tables:

  • Voting locations

    • dropbox_locations

    • early_vote_locations

    • polling_locations

  • Mappings

    • precinct_to_dropbox_location

    • precinct_to_ev_location

    • precinct_to_polling_location

    • zip9_to_precinct

  • Schedules

    • dropbox_structured_schedules

    • early_vote_structured_schedules

The schema details of each table can be found in CTA’s data dictionary for dnc_voting_locations.

Note

The column features is a string with a comma-separated list of tags that are being used by the Democratic National Committee to identify locations that require unique support. 

When using this data, please exclude the data as necessary based on the information below on the following tags:

  • same_day_reg — This location is in a state (MI specifically) that does not have universal same-day reg at polling locations during early vote, but it is supported at this specific location.

Have questions or can’t access the data? Send a message to help@techallies.org for assistance.

Sample Queries

To get you started with this data, use the following sample queries created by CTA in PAD. Please replace the dataset and table paths with the correct names in your project.

Important notes on query size and cost:

IWillVote data is a robust nationwide dataset, and querying large datasets can be expensive. 

Here are some steps you can take to ensure that you are not generating unnecessary expensive queries that could lead to overage charges:

  • Be sure to check the upper right corner of the BigQuery console for a query processing estimate before executing a query. 

  • Limit your queries to just the states you are interested in

  • Use the data dictionary to explore the data, column names and types, etc (rather than running a SELECT *)

  • Reach out to help@techallies.org if you have specific questions on IWillVote queries

Joining the schedules of dropbox and early vote locations

These sample queries each result in a table containing the dropbox or early vote location information and its respective schedules.

For Dropbox Locations

SELECT * FROM `dnc_voting_locations.dropbox_locations`

LEFT JOIN `dnc_voting_locations.dropbox_structured_schedules` 

USING (schedule_key, state_code)


For Early Vote Locations

SELECT * FROM `dnc_voting_locations.early_vote_locations`

LEFT JOIN `dnc_voting_locations.early_vote_structured_schedules`

USING (schedule_key, state_code)


Joining zip codes and precincts of a polling location

This sample query results in a table containing the DNC polling location and VAN precinct ID of zip9s across the United States.

SELECT zipcodes.zip9

, LEFT(zipcodes.zip9, 5) AS zip5

, zipcodes.confidence_score AS zip9_confidence_score

, precincts.van_precinct_id

, locations.*

FROM `dnc_voting_locations.polling_locations` AS locations

LEFT JOIN `dnc_voting_locations.precinct_to_polling_location` precincts

USING (polling_location_id, state_code)

LEFT JOIN `dnc_voting_locations.zip9_to_precinct` AS zipcodes

ON zipcodes.van_precinct_id = precincts.van_precinct_id 

AND zipcodes.state_code = precincts.state_code

WHERE zipcodes.state_code = 'AK'


Using the columns van_precinct_idzip9, or zip5, this sample table can be used to JOIN on tables outside the dnc_voting_location dataset, such as tables in VAN, Mobilize, Blocks, and the voter files datasets.

Example JOIN on VAN ContactsAddresses table

WITH iwillvote AS (

SELECT zipcodes.zip9

, LEFT(zipcodes.zip9, 5) AS zip5

, zipcodes.confidence_score AS zip9_confidence_score

, precincts.van_precinct_id

, locations.*

FROM `dnc_voting_locations.polling_locations` AS locations

LEFT JOIN `dnc_voting_locations.precinct_to_polling_location` precincts

USING (polling_location_id, state_code)

LEFT JOIN `dnc_voting_locations.zip9_to_precinct` AS zipcodes

ON zipcodes.van_precinct_id = precincts.van_precinct_id 

AND zipcodes.state_code = precincts.state_code

)


SELECT *

FROM ngpvan.contactsaddresses van

LEFT JOIN iwillvote dnc

ON van.statecode = dnc.state_code

AND van.zip5||van.zip4 = dnc.zip9



Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article