Table of Contents
You are here:
Print

Export Data Formats

The following export data schemas are available via the Export Admin Screen or via our Automated Scheduled Exports, or automated sync with external databases like Phoenix.

A note about contact info: In the exports which include people with their Contact Information (People, Relationships, and Tags), we include the most recent piece of contact info of a given category (phone or email) that is either campaign-provided or user-provided and shared with the campaign and which has not been opted-out by a user. We may have additional contact information in Reach which you can see in the Contact Info export. If you specifically want to see contact info which has been opted out, pull a Contact Actions export and filter it for Action Type = Opt Out

People

The “People” export is designed to help you get a big-picture view of all the people your campaign has reached and added. It includes one row per person you have reached. It will tell you all the basic info about the person (their name, address, Reach ID, external IDs), who was the last user to reach them, when they were added, when they were last reached, which auto-applied tag they have, which campaign tags they have, their contact info if you have it, and all their survey question responses. Survey questions will appear each in their own column, with the column header as the first 50 characters of your question’s name and then the question’s ID in brackets. These survey question columns will be sorted in the order you created them.

If you set a date range on this export, it will include all people who were “Reached” between the dates you have selected. That includes people who were added, contacted, had a survey response saved, or had a tag applied.

Check the detailed data schema here (each row below represents a column in the CSV export):

"Reach ID" : text --+ (i.e. '4928943115')
"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Added Timestamp" : datetime --+ will only be filled for Reach Adds (i.e. '2020-08-01 13:45:47')
"Added by User ID" : text --+ will only be filled for Reach Adds (i.e. 'R827JVDX')
"Last Reached Timestamp" : datetime
"Last Reached by User ID" : text 
"Last Reached by User Name" : text
"Source Tag" : text --+ indicates the source of the person based on the name. of your source tag (i.e. 'Voter', 'Reach Add', etc)
"Campaign Tags" : text --+ semicolon-separated list (i.e. 'Volunteer; Petition Signer; Union Member')
"Prefix" : text
"First Name" : text
"Preferred Name" : text
"Middle Name" : text
"Last Name" : text
"Suffix" : text
"Phone Country Code" : integer --+ For now, always '1'
"Phone" : text
"Email" : text
"Address Line 1" : text
"Address Line 2" : text
"City" : text
"State" : text
"Zip" : text
"Phone Source" : text --+ tells you which data source the phone number came from, or whether it was user-provided. 
"Email Source" : text --+ tells you which data source the email address came from, or whether it was user-provided. 
"Phone Opt-Out" : boolean --+ this column can be ignored. Reach will never include an opted-out phone number in this export
"Email Opt-Out" : boolean --+ this column can be ignored. Reach will never include an opted-out email address in this export
"{QuestionName1}" : text --+ dynamically-filled and named based on campaign's questions
"{QuestionName2}" : text
"{QuestionName3}" : text

Responses

The “Responses” Export type is designed for uploading responses into a VoteBuilder, EveryAction, NationBuilder, or any other third-party CRM and merging them with existing people records by a unique ID. The CSV file will contain one row per response gathered in Reach. The first column will be a unique ID of the person in Reach (based on whichever you have selected on the Campaign Details screen). Then you will always have columns for Person Reach ID, Canvass Date, Canvass Timestamp, User ID, User Name, and Response ID. Then, you’ll have an additional column for every survey question in your campaign. Survey questions will appear each in their own column, with the column header as the first 50 characters of your question’s name and then the question’s ID in brackets. These survey question columns will be sorted in the order you created them.

It is important to remember that in this type, if a Reach user gathers responses to four questions from the same voter and taps save, that will appear as four rows in this file.

If you set a date range on this export, it will include all responses which were added between the dates you selected. Keep in mind that old responses are not editable so past responses will never be updated. Newer ones will just override them.

Check the detailed data schema here (each row below represents a column in the CSV export:

"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Reach ID" : text --+ (i.e. '4928943115')
"Canvass Date" : date --+ simple date without time for VAN upload (i.e. '2020-01-07')
"Canvass Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"User ID" : text --+ (i.e. 'R827JVDX')
"User Name" : text
"Response ID" : text --+ This is the unique of ID of this response event where a user saved a response to a question for a person (i.e. 'R827JVDX')
"{QuestionName1}" : text --+ dynamically-filled and named based on campaign's questions. Includes the question's name and ID in brackets.
"{QuestionName2}"
"{QuestionName3}"

Response List

The “Response List” Export type has the same data as the “Responses” Export type, but with some key formatting differences and one more useful field. The “Responses” Export type is specifically designed for uploading responses into VAN, and therefore has a separate column for each Survey Question. The “Response List” Export has the Survey Questions in a list instead, so there is one column for “Question Name”, and one column for “Response Value”.

Like the “Response” Export type, if a Reach user gathers responses to four questions from the same voter and taps save, that will appear as four rows in this file type as well.

If you set a date range on this export, it will include all responses which were added between the dates you selected. Keep in mind that old responses are not editable so past responses will never be updated. Newer ones will just override them.

Check the detailed data schema here (each row below represents a column in the CSV export):

"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Reach ID" : text --+ (i.e. '4928943115')
"Canvass Date" : date --+ simple date without time for VAN upload (i.e. '2020-01-07')
"Canvass Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"User ID" : text --+ (i.e. 'R827JVDX')
"User Name" : text
"Response ID" : text --+ This is the unique of ID of this response event where a user saved a response to a question for a person (i.e. 'R827JVDX')
"Question ID" : text --+ (i.e. 'R827JVDX')
"Question Name" : text
"Response Value" : text --+ string or an array of strings for multiple choice questions (i.e. 'Red' or '["Red", "Green", "Blue", "Yellow"]')
"Choice ID" : text --+ uuid or an array of UUIDs for multiple choice questions (i.e. 'e0774b35-767b-4ff3-96df-24942b52f9f9' OR '["346637e2-622a-4fd8-b4ec-5277de7cd3f4", "f35a9d16-ebc4-469c-a775-ef30b2b8bcb9"]')

Tag History

This export will give you one row per tag-to-person pair. So, if your users have assigned five tags to the same person, that will be represented as five different rows. This allows us to show you what date and time each tag was applied, and by which user. We also include the persons’ name and most recent contact info for good measure. If you need street addresses, we suggest the “People” export type.

If you set a date range on this export, it will include all Tags which were added or removed between the dates you selected. Keep in mind that old tag history rows are not editable so past rows will never be updated. Newer ones will just override them.

Check the detailed data schema here (each row below represents a column in the CSV export):

"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Reach ID" : text --+ (i.e. '4928943115')
"Person First Name" : text
"Person Last Name" : text
"Phone Country Code" : integer --+ at this time, always '1'
"Person Phone Number" : text
"Person Email Address" : text
"User ID" : text --+ (i.e. 'R827JVDX')
"User Name" : text
"Tag ID" : text --+ (i.e. 'R827JVDX')
"Tag Name" : text
"Tag Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"Tag Date" : date --+ simple date without time for VAN upload (i.e. '2020-01-07')
"Tag Action" : text --+ 'Added' or 'Removed'

Relationships

The “Relationships” export is designed to give you insight into how your volunteers are using the Network feature. You can see who your volunteers are adding to/removing from their Network, as well as when they’re making these changes. You’ll see the person’s name, the User that added them to their Network, the Relationship Status (whether it’s Active, or Archived for relationships a user has removed), when the relationship was created, as well as when the relationship was modified.

There is a separate row for each individual User that adds a person to their Network. For example, if three different users added Jon Snow to their Network, there would be 3 rows for Jon Snow, with a separate row for each of these relationships.

If you set a date range on this export, it will include all relationships which were added or updated between the dates you selected. Keep in mind that old relationships MAY be updated if a user removes someone from their Network and in this case, the relationship will appear in the export with a status of Archived

Check the detailed data schema here (each row below represents a column in the CSV export):

"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Reach ID" : text --+ (i.e. '4928943115')
"Source Tag" : text --+ indicates the source of the person based on the name. ofyour source tag (i.e. 'Voter)
"Campaign Tags" : text --+ semicolon-separated list (i.e. 'Volunteer; Petition Signer; Union Member')
"Person First Name" : text
"Person Last Name" : text
"Email Address" : text
"Phone Country Code" : integer --+ For now, always '1'
"Phone Number" : text
"User Name" : text
"User ID" : text --+ (i.e. 'R827JVDX')
"Relationship ID" : text --+ uuid
"Relationship Status" : text --+ 'Active' or 'Archived'
"Relationship Type" : text
"Relationship Type ID" : text --+ uuid
"Relationship Created Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"Relationship Created Date" : date --+ simple date without time for VAN upload (i.e. '2020-01-07')
"Relationship Modified Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"Relationship Modified Date" : date --+ simple date without time for VAN upload (i.e. '2020-01-07')

Contact Actions

Every time your users tap the Message, Email, or Call button on a person’s profile screen, or tap “Mark as Contacted” from the person’s action menu, we are keeping track of those button taps. This export details all those button tap events triggering contact actions. We give you information about the person, the user, the action, and the Contact Script selected for Message or Email actions (to learn more about setting up Contact Scripts, check out our Knowledge Base article here).

Note that depending on the user’s device, we may have more or less information in this export. For users on iOS, we only record the action if the user actually *sends* the message or email. For external messages, we are also able to include a column with iOS’s app identifier string. On Android and Web, we cannot tell when they’ve actually sent the message, so the action is recorded as soon as the user taps a button indicating that they at least intended to send a message or an email to that person.

These exports also include actions for any time a user updated an added persons’s name or address. Note that users can only update the name or address of a person who they themselves added to Reach, but we want to make sure you know when this happens, so the Contact Actions export is the place to look.

If you set a date range on this export, it will include all contact actions which were added between the dates you selected. Keep in mind that old actions are not editable so past actions will never be updated.

Check the detailed data schema here (each row below represents a column in the CSV export):

"Reach ID" : text --+ (i.e. '4928943115')
"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Person Prefix" : text
"Person Preferred Name" : text
"Person First Name" : text
"Person Middle Name" : text
"Person Last Name" : text
"Person Suffix" : text
"Person Address Line 1" : text
"Person Address Line 2" : text
"Person City" : text
"Person State" : text
"Person Zip Code" : text
"User ID" : text --+ (i.e. 'R827JVDX')
"User First Name" : text
"User Last Name" : text
"Action ID" : text --+ uuid
"Action Date" : date --+ simple date without time for VAN upload (i.e. '2020-01-07')
"Action Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"Action Type" : text --+ (i.e 'Marked as Contacted', 'External Message', 'SMS', 'Phone Call, ''Updated Address', 'Updated Name', 'Email', 'Opt Out', 'Up Vote', 'Mark as Wrong')
"Action Source" : text --+ Usually 'Reach'
"Contact Script ID" : text --+ uuid
"Contact Script Name" : text
"External App" : text --+ Only for actions triggered on iOS devices. iOS extension ID (i.e. 'com.facebook.Messenger.ShareExtension')
"Action Card ID" : text --+ uuid of an Action Card. Only filled for contact actions which originated from 'Network Share` Action Cards
"Contact Info ID" : text --+ uuid
"Contact Info Category" : text --+ 'phone' or 'email'
"Contact Info Label" : text --+ user-provided string like 'Home' or 'Mobile'
"Phone Country Code" : integer --+ at this time, always '1'
"Contact Info Value" : text --+ the actual phone number or email address, like '[email protected]' or '9178675309'

Action Card Interactions

Your home screen is full of action cards and those cards have become more and more interactive over time. Users can tap on a customizable Call to Action button to “act” on a card and they can check off a check box on a Task=type card to “complete” that card. More interactions will be coming soon too.

This export will give you all the data about how your users are interacting with your action cards. It includes a row for each interaction event that provides the user, the card, and when/how they interacted with it. Note that the columns about “Points” are not supported yet but are there in preparation for soon-to-come features!

If you set a date range on this export, it will include all interactions which were added between the dates you selected. Keep in mind that old interactions are not editable so past actions will never be updated.

To learn more about setting up Action Cards for your home screen, check out our Knowledge Base article here.

Check out the detailed data schema here (each row below represents a column in the CSV export):

"Interaction ID" : text --+ uuid
"User ID" : text --+ (i.e. 'R827JVDX')
"User Name" : text
"Action Card ID" : text --+ uuid
"Action Card Title" : text
"Action Card Type" : text --+ 'post', 'task'
"Action Card Points" : int --+ total points available via action card
"Interaction Type" : text --+ 'act', 'complete'
"Interaction Timestamp" : datetime --+ (i.e. '2020-01-07 21:34:35')
"Interaction Points Earned" : int

Users

The users export is your route to understanding your Reach users. It includes everything from the Users admin table: our unique User ID, the user’s name, the date they were added to your campaign, their email address, their phone country code, their phone number, their zip code, their state, the user groups they are a part of, their Role (permissions) on the campaign, and all their top-line Reach stats.

The first column of the user export is the unique User ID in Reach which will let you match users to their rows in the other export types. User IDs are consistent across campaigns.

If you set a date range on this export, it will include all user who joined your campaign between the dates you selected. We will not include a row if group membership has changed or their stats have changed, or in fact, even if their core user info has changed.

Check out the detailed data schema here (each row below represents a column in the CSV export):

"User ID" : text --+ (i.e. 'R827JVDX')
"First Name" : text
"Last Name" : text
"Email Address" : text
"Zip Code": integer
"State": text --+ 2-char US State Code like'NY'
"Phone Number" : text
"Role" : text --+ 'User', 'Verified User', 'Admin', 'Owner'
"Date Joined" : text
"Added Method" : text --+ 'Direct' or 'Invite Code'
"Invite Code" : text --+ '7J5VM2J8'
"Invite Code Name" : text
"Added by User ID" : text --+ Only for 'Direct' Added Method (i.e. 'R827JVDX')
"User Group IDs" :  text --+ array of UUIDs (i.e. ['e5422f32-4269-45a8-acc7-d84c14b008fc', 'e59a9ade-5c96-4a67-b58c-a02db72075ff'])
"User Groups" :  test --+ array of Group Names (i.e. ["Sunnyside Crew", 'Staff']
"People Surveyed" :  integer
"Relationships" :  integer
"People Contacted" :  integer
"Contacted - SMS" :  integer
"Contacted - Email" :  integer
"Contacted - Phone" :  integer
"Contacted - Another App" :  integer
"Contacted - Marked as Contacted" :  integer

Contact Info

The contact info export will give you all the phone numbers and email addresses which your users have added to people in Reach and chosen to share with you. This export will contain one row per piece of contact info, with the same people often appearing more than once.

If you set a date range on this export, it will include all contact info which was shared with your campaign between those times, even it was was created outside those times. Values of contact info cannot be edited, but labels and opt-out status can. Any updates to labels or opt-out status will not make a contact info appear in a time-bounded export. To get time-bounded opt-out data, use the Contact Actions export.

Check the detailed data schema here (each row below represents a column in the CSV export):

"{Export Unique ID}" : text --+ dynamically-filled and named based on External ID selected for this export
"Reach ID" : text --+ (i.e. '4928943115')
"Created Timestamp" : datetime
"Updated Timestamp" : datetime
"Added by User ID" : text --+ (i.e. 'R827JVDX')
"Added by User Name" : text
"Person First Name" : text
"Person Last Name" : text
"Contact Info ID" : text --+ uuid
"Category" : text --+ 'phone' or 'email'
"Label" : text --+ user-provided string like 'Home' or 'Mobile'
"Phone Country Code" : integer --+ at this time, always '1'
"Value" : text --+ the actual phone number or email address, like '[email protected]' or '9178675309'
"Opt-Out" : boolean --+ will be 'true' if the user has specifically opted-out this piece of contact info from your campaign after sharing it with you

Pipeline Instances

This export includes one row for each of your users’ voter registration pipeline instances. Each time they begin the registration of a new voter, that is considered an “instance” of a pre-defined “pipeline”. The pipelines themselves are maintained by Reach but the instances are created and updated by your users as they use the app. Instances give you a good overview of your voter registration work as a snapshot in time. For more detailed reporting, you’ll want to combine this export with the Pipeline Transitions export as well.

If you set a date range on this export, it will include all instances which were added or updated between the dates you selected. Keep in mind that old instances will be updated as they move through the pipeline and may appear in several exports.

This export is only available for campaigns which have the Voter Registration features enabled.

Check the detailed data schema here (each row below represents a column in the CSV export):

"Instance ID" : text --+ uuid
"Created Timestamp" : datetime --+ the time that the row was actually added to the Reach database
"Updated Timestamp" : datetime
"Recorded Timestamp" : datetime --+ the time that the user added the instance to the app. This may be earlier than Created Timestamp in cases where the instance was added while offline and synced later
"User ID" : text --+ (i.e. 'R827JVDX')
"User Name" : text
"Pipeline ID" : text --+ uuid identifies a unique pipeline in Reach
"Pipeline Name" : text --+ the internal name Reach uses to refer to the pipeline in question. Will usually include a state abbreviation, method, and version numbers like 'ny_paper_v1`
"Status" : text --+ the current status of the instance at the time of export. 'waiting_for_you', 'waiting_for_voter', 'pending', 'submitted', 'completed', 'canceled'
"Step" : text --+ the current step of the instance at the time of export. Available steps vary by pipeline but will be things like 'form_return_mailed' or 'web_form_submitted'
"Next Chase" : date --+ the date when Reach will next prompt the user to send a chaser to the voter
"Previous Chase" : date --+ the most recent date when the user sent a chaser to the voter
"Reach ID" : text --+ the Reach ID of the Reach Add who is being registered to vote
"Reconciled Reach ID" : text --+ the Reach ID of the voter who was found in the voter file and matched the new registrant. Only filled once a pipeline instance has been reconciled.

Pipeline Transitions

This export will give you a detailed look at the granular user activity on your voter registration pipelines. A pipeline “transition” is the user action that moved a pipeline from one state to the next. If a user indicates in Reach that they handed someone a voter registration, collected that form, and then submitted it at the county office, that was three separate pipeline transitions. This export lets you see all of them.

If you set a date range on this export, it will include all transitions which occurred between the dates you selected. Keep in mind that old transitions are not editable so past rows will never be updated.

This export is only available for campaigns which have the Voter Registration features enabled.

Check the detailed data schema here (each row below represents a column in the CSV export):

"Transition ID" : text --+ uuid
"Created Timestamp" : datetime --+ the time that the row was actually added to the Reach database
"Recorded Timestamp" : datetime --+ the time that the user added the transition to the app. This may be earlier than Created Timestamp in cases where the transition was made while offline and synced later
"User ID" : text --+ (i.e. 'R827JVDX')
"User Name" : text
"Pipeline Instance ID" : text --+ uuid
"Step" : text --+ the name of the pipeline step that was transitioned into
"Notes" : text --+ not yet supported

Was this article helpful?
How can we improve this article?
Please submit the reason for your vote so that we can improve the article.
Need help?