Voter Registration
Overview
We partner with Rock The Vote to register young people to vote on behalf of DoSomething.org, by redirecting to them to the Rock The Vote (RTV) registration website and appending our partner ID:
register.rockthevote.com/registrants/new?partner=37187
We can pre-populate the voter registration email address and zip via email_address and home_zip_code query parameters, which we often include when redirecting an authenticated user on the web:
rockthevote.com/registrants/new?partner=37187&source=user:58e68d5da0bfad4c3b4cd722,source:web,source_details:onlinedrivereferral,referral=true&email_address=puppet.sloth@dosomething.org&home_zip_code=94116
Import
Our importer app, Chompy downloads all voter registrations created with our partner ID, and imports them as voter-reg posts by posting to the Rogue API. See import docs for details.
Tracking Source
When we redirect to the RTV registration form, we include a source query parameter. Per the RTV docs, a source parameter is used to:
track the success of various campaigns, affiliates, social media posts, and more using just one tool.
When we download the RTV reports, each registration contains the source query parameter that was present when the user began their registration. The expected values to pass for the source are comma-separated key:value substrings:
user:5547be89469c64ec7d8b518d,source:web,source_details:VoterRegQuiz_completed_notsure
This tracking source value is saved within the serialized details field of the voter-reg post, and is utilized by both the Chompy import and Looker:
user- This is the Northstar user ID of either the authenticated user registering to vote, or the referring alpha user for a beta registration, when thereferralkey is present.source- This is similar to autm_source.Examples:
web,sms,email
source_detail- This is similar to autm_campaign.Examples: [
hellobar](<(development/features/sitewide-banner.md)>),broadcastID_4YOiqwTVOOVklZFARAFd4h,VoterRegQuiz_completed_votebymail,onlinedrivereferral
referral- If this is set, theuserparameter should be used as thereferrer_user_idon thevoter-regpost.
Notes
Some older voter registration URLs may contain
campaignIDandcampaignRunIDkeys within their tracking source. These have long been deprecated by the import: when we first started on voter registration, we used multiple campaigns. The import would update thecampaignIDandcampaignRunIDvalues on thevoter-regpost if present within the tracking source. See #171090116 for details.
Voting Portal
We host our voting portal, vote.dosomething.org on Instapage. It displays a form that prompts for email and zip, and redirects them to the Rock The Vote registration URL with our partner ID, pre-populating the email and zip submitted from the form.
When constructing a URL for the voting portal, we include the tracking source via a r query parameter, which is then added as a source parameter when redirecting the user to the RTV registration site after they enter their email and zip (handled via JS on Instapage).
Example:
vote.dosomething.org/covid19?r=campaignID:8017,campaignRunID:8022,source:web,source_details:VoterRegQuiz_completed_notsure
Influencers
We host customized voter registration drives for influencers on our Instapage, by creating pages like https://vote.dosomething.org/NoorAldayeh on Instapage and passing a relevant tracking source when redirecting to the RTV registration site:
source:influencer,source_details:noor_aldayeh
Voter Registration Action
The VoterRegistrationAction content type can be used to display a call to action button that redirects a user to our vote.dosomething.org portal.
A clicked_voter_registration_action analytics event is fired when the user clicks on the CTA to visit the voter registration portal.
Start Voter Registration Form
The StartVoterRegistrationForm component displays form fields for email and zip, and redirects a user directly to the RTV registration site upon submitting. It's currently hardcoded on the OVRD alpha page and Quiz Result page.
A clicked_voter_registration_action analytics event is fired when the user submits the form to continue their voter registration on the RTV registration site.
Online Drives
The call to action in the Ready, Set, Vote campaign asks a member (the alpha) to get their friends to register to vote, by providing them with a custom URL to their own Online Voter Registration Drive (OVRD) that they can share with their friends (the betas).
Alpha page
The OVRD (Ready Set Vote) campaign action page renders a hardcoded component instead of its Contentful blocks field. This is hardcoded because it displays one-off features:
A list of voter registration referrals (beta's that the alpha has gotten to register to vote via their OVRD)
A custom
SocialDriveAction:Allows the alpha to customize their voting reasons on their beta page
Displays the total accepted post count for the related photo action for sharing your link and submitting a screenshot
We hardcode specific configuration ContentBlock ID's and Action ID's:
Production:
Content:
How To Share ContentBlock - 3fj7mXlyrcJZ3mUKXqco1R
FAQ ContentBlock - 1nLV3YUhLzJdlcGrd2Mq9N
Total scholarship entries:
Share Photo Post Action - 1025
Dev:
Content:
How To Share ContentBlock - 1xcG1CTinKwn3Iyxtcc0f4
FAQ ContentBlock - 6H22Y1wmICy05pM9twIGGR
Total scholarship entries:
Beta page
The beta page is also a hardcoded component, displayed on path /us/my-voter-registration-drive?referrer_user_id=58e68d5da0bfad4c3b4cd722 (where the referrer_user_id is our alpha's user ID).
This beta page component shares some components with the OVRD campaign template, like its CoverImage and scholarship information. The OVRD campaign's contentful ID, 3pwxnRZxociqMaQCMcGOyc, is the same in all of our dev, qa and production spaces. Usually this isn't the case -- our Contentful ID's don't match between our dev and production spaces -- but this entry was created before we introduced different Contentful environments to our Phoenix space. Because of this, we're able to hardcode this Contentful ID to use in both dev and production environments.
We hardcode specific configuration ContentBlock ID's:
Production:
Register To Vote ContentBlock - 2d2i2M3yn4RB9pZYVzQxGm
FAQ ContentBlock - 4yP8BdIdiGU0qwZaFyzmsm
OVRD Campaign Link ContentBlock - 30rCn63G1rnpzojCXC9PmF
Dev:
Content:
Register To Vote ContentBlock - bt0jUBYJaKoi1oab25Wmx
FAQ ContentBlock - 3cXc0RPMVNeE4surEqFujL
OVRD Campaign Link ContentBlock - 3p2qz2JPCvgVitgRVBoMFz
Notes:
The initial version of OVRD beta page was hosted on Instapage - https://vote.dosomething.org/member-drives. Example URL:
vote.dosomething.org/member-drive?userId=${referrerUserId}&r=user:${referrerUserId},source:web,source_details:onlinedrivereferral,referral=true
This page had inline JS that would query Northstar to find a user's first name based on the userId query parameter passed.
Quiz
Voting Quiz Campaign
Our Voting Quiz campaign (/us/campaigns/ready-vote) uses the legacy Quiz content type, which has been deprecated for Typeform except for this one warrior entry. It has two entry points:
Gated:
/us/campaigns/ready-vote- user must signup to take the quiz from the action pageUngated:
/us/campaigns/ready-vote/quiz/ready- user can take quiz but must signup to see their result
Quiz Result Page
We're working on a new release to redirect users to /us/quiz-results/:id to view their quiz result if the DS_ENABLE_QUIZ_RESULT_PAGE configuration variable is set to true.
The page displays a new QuizResultPage component, and expects the :id route parameter to be the ID of one of the Link Action entries referenced by the Quiz's resultBlocks multi-value reference field.
The QuizResultPage displays a static GalleryBlock for all of the different result ID's.
Production:
Gallery Block: 78WaGsvDEzAxnreEvNx3Za
Quiz Results:
id
title
internalTitle
assetId
Dev:
Gallery Block: 2VGFq3XBcqCfKOA8mC5mP4
Quiz Results:
id
title
internalTitle
assetId
Related links:
Quiz documentation - This was removed in #1369 when we moved editorial guides into the Campaign Playbook.
Notes:
While we're still developing this component, we're displaying placeholder copy for the Link Action content unless a
preview=truequery parameter is present. Examples:Placeholder content = https://qa.dosomething.org/us/quiz-results/p7hqjSP4Y1U6ad0UDz4iS
This is because the current content in Contentful for our result entries contains the banner image inline (so they are displayed twice, once within the header and a second time within the copy). When we're ready to go live, we'll have the campaigns team edit the content and remove the requirement to include the preview query.
Please avoid editing the Quiz entries if possible, as they are delicately configured (deleting one of the
LinkActionentries referenced by theresultBlocksfield would not be pretty).
Last updated