Peer to Peer Actions (for Admins)

  • Updated


  1. Overview
  2. Creating a P2P Action
    1. Check Your Campaign Texting Settings
    2. Upload a Contact List
    3. Creating the Action
    4. Basic Information Section
    5. Manage Scripts Section
    6. Auto Tagging Responses
    7. Opt Out List and Opt Out Tag
    8. Dynamic Variables
    9. Report Settings Section
    10. Publishing Your Action
  3. Results and Reporting
    1. Overview Section
    2. Messages Performance Section
    3. Filters
    4. Tags and Custom Fields
    5. Response Scripts
    6. Exporting
  4. Managing Messages
    1. About Automatic Assignment
    2. Reassign Contacts to a Specific Volunteer
    3. Reassign Contacts to a User List
    4. Monitoring Contacts that "Need Attention"
  5. Frequently Asked Questions


Peer to peer (P2P) texting has revolutionized campaign outreach programs because it allows organizations to send individual messages to large numbers of people quickly and efficiently. P2P texting allows you and your staff or volunteers to send one-on-one messages to thousands of campaign contacts and manage replies in real-time. It’s perfect for high-volume outreach programs, like turning voters out to the polls on election day. P2P texting is an effective tool for a wide range of initiatives. P2P texting works to:

  • encourage sign-ups for an event or a list
  • gather more data on issues community members care about
  • engage constituents in persuasion conversations
  • support GOTV efforts

This article will review:

  • Campaign texting settings
  • Creating actions
  • Scripts
  • Applying tags and custom fields
  • Publishing P2P actions
  • Viewing results and exporting reports
  • Managing messages and contact reassignment

Creating a Peer to Peer Action

In this section we will review:

  • Checking your texting settings
  • Uploading a contact list
  • Creating a P2P action

Check Your Campaign Texting Settings

Before creating your first P2P action, you'll want to make sure your campaign texting settings are configured properly. Here's how to do it:

  1. Navigate to the CAMPAIGN > Settings section in the left-hand dashboard menu. This will bring you to the “Texting” tab.
  2. Select the Start and End Times that you'd like your volunteers to be able to text. This prevents your volunteers from accidentally texting someone too early or too late. We encourage a 9am - 9pm texting window for voter contact. Note: It is an FCC violation to text outside of those hours in local time.
  3. Select the correct time zone for your campaign or organization.
  4. Select the number of contacts to automatically assign to each volunteer at a time.
  5. Choose your Preferred local Area Codes for your assigned texting numbers. If a local number is available for use, your volunteers' texts will come from that number.
  6. Select Fallback values for the first names of both your senders (users) and your recipients (contacts). A fallback value is a replacement for a recipient {{first_name} or sender {{user.first_name}}, if no name is found. For example, you could set the message to say "Hi friend" if there isn't a known name of the person being texted.
  7. Choose to toggle on or off Outbound Message Lock Protection. We highly recommend you keep this toggled on. This setting prevents contacts from accidentally being texted more than once in a 6 hour period.
  8. Choose to toggle on or off Disable Custom Responses. If you toggle this on, your volunteers will be prevented from writing any custom response to a contact, and will have to choose a response from the scripts that you've written.
  9. Don't forget to click “Save Settings” when you're done!

Upload a Contact List

Before you can set up your P2P action, make sure you have uploaded a contact list to text. To learn what your options are and how to do it, visit our help page How To Create and Manage Contacts.

Creating the Action

In the admin dashboard menu, click on ACTIONS > Peer to Peer. Click on the “+ Create Action” button to begin.

Basic Information Section

In the BASIC INFORMATION section, you will need to:

  1. Upload a photo to accompany your action (optional but recommended). This image will display to volunteers in the app only.
  2. Choose the Folder (optional) you'd like to save your action inside of. This is highly recommended so that you can easily find your action later.
  3. Select a pre-uploaded list to target from the drop-down menu.
  4. Give your action a Title and Description so your volunteers have context on the purpose of the action.
  5. Disclaimer (optional): This adds a disclaimer to the bottom of the action page within the app. It’s often used in specific contest-type actions to mention rules or regulations.
  6. Choose a Start Button Label that corresponds to your action using the drop-down menu. In this case, we recommended the label “Start Texting”.
  7. Choose your Preferred Area Codes that you'd like your users to send and contacts to receive messages from.
  8. Toggle "Keep Assignments" to ensure that peer-to-peer contacts can only receive messages from users assigned to them. In this case, if was assigned to the contact, he will be the only contact allowed to message the contact. Similarly, if Abe tries to perform the peer-to-peer action, he'll only be able to text the people assigned to him. On the other hand, if other volunteers try to perform the action but are not assigned to those contacts, they won't be able to access those messages, and instead they will receive a "no remaining contacts" screen.


Manage Scripts Section

Initial Scripts

There are two types of scripts in the “MANAGE SCRIPTS” section- Initial and Response. The initial script is the script that shows up when your supporters are sending their first messages for the action. All your volunteers have to do is click send. You can have as many scripts as you would like. We recommended utilizing a couple different ones to see what works best for your campaign, union, or cause. You want it to be succinct, compelling, and to have a clear ask to get involved.

  • Impactive's scripting functionality allows you to write multiple initial messages. By having multiple initial scripts, you will automatically be running an A/B test with one script selected at random to be used by your volunteers when texting.
  • You can insert personal contact info (i.e. the recipient) and user info (i.e. the sender) such as First Name, Last Name or State into the message. For example: “Hi [Lisa], this is [Jose]. Can you join on Sunday?” This makes the message more familiar to the recipient and will yield your campaign higher open rates. Read more about dynamic variables here.
  • You can choose to add an image directly to your initial message by clicking "Add image to Script." Important Note: all images must be under 0.6mb. Additional fees may be included to send MMS (Multimedia Service) messages.
  • You can include a link in your initial message. Important Note: that some carriers increase filtering, resulting in poorer deliverability if you include a link in your initial message.


Peer-to-Peer Regulatory Changes

Impactive partners with Twilio to deliver all of our peer to peer messages. Twilio has recently implemented new protocols that require any consumer who receives a P2P message to have a clear opt out option.

There is more information about this recent Twilio update here. If there is no explicit option to opt out of a communication in the first P2P message, it may be filtered by the carriers and prevented from being sent. Additionally, campaigns should ensure that they are not utilizing link shorteners in message text, as this will lead to decreased deliverability. For example, use this: as opposed to this:

Importantly, this change will affect all major P2P texting providers and is not unique to Impactive. 2020 was a record breaking year in terms of political SMS messages sent. This decision by carriers aims to enforce additional regulations to prevent consumer complaints. The changes Impactive is making in response are to protect your campaign both from a legal perspective and to ensure texting program effectiveness for voter contact.

IMPORTANT NOTE: Scripts without emojis are counted in 160 character segments; if your script is longer than 160 characters it will count as sending an additional message. Scripts with emojis are counted in 67 character segments.


Response Scripts

Response scripts show up when people begin to respond, and your supporters are chatting with them in the app. They are designed to handle the different kinds of conversations you anticipate volunteers having. For example, it's helpful to have a response script that explains what your campaign or organization is about in case your volunteers get asked!

You can easily create response scripts that will make following up to messages easy and efficient. By creating a response script, your volunteers won't have to write a reply to a common question on their own: instead, they can just choose a reply you've already written and click send!


Like initial scripts, you can create as many replies as needed. In addition, you can tag and sort responses to your messages easily by integrating tags and custom fields into your script. In “Advanced Options,” You can set up a tag to be automatically applied when a volunteer sends a specific response message, or you can ask volunteers to fill out a report after each conversation. Learn more below.



Admins can now preview activity scripts for their Peer-to-Peer Texting activities with the new ‘Preview’ function for initial and response scripts. After crafting their script, admins can view the messages their contacts will receive before sending them out. Preview allows admins to see an estimate segmented breakdown of their texts and ensures that any dynamic variables are formatted correctly.



Auto-Tagging Responses

If you'd like a voter to be automatically tagged with an activist code or result code, you can set up an auto tag such that any contact who receives a specific script will automatically be tagged. Impactive has auto-tagging functionality built into response scripts so that your volunteers don't have to manually file a report after every response message they send.

Here's how to set it up:

  1. Click on “Add another response script”.
  2. Enter a Name for the response, and a Script Message. For example, for an affirmative response to an initial text recruiting for an event, you might write: "Attending: Yes" as the Script Name and "Great - so glad you can attend! The event starts at at 7:30pm on Saturday" as the Script Message.
  3. To include a tag or custom field that will automatically be applied when your volunteer send this response, click the “Advanced Options” drop-down menu.
  4. Check either “Tag the contact” and/or “Update custom field of the contact” depending on which you'd like to use.
  5. Within the box that appears, select the appropriate tag(s) and/or custom field(s) you'd like to be automatically applied.

Once you've applied these settings to your action, your contacts will automatically have a tag or custom field value applied to them each time the corresponding response is sent. If the VAN Integration is set up, that data will be sent to VAN. This will save you and your volunteers a ton of time - no need to fill out manual reports!


Opt Out List and Opt Out Tag

For P2P actions, if a person replies with Stop, Unsubscribe, Remove, Quit, StopAll, Cancel, or End, Impactive automatically tags their number with a special tag named "Opt Out". When a contact is marked with Opt Out on Impactive, your campaign will never be able to send P2P texts to that contact again via Impactive, even if the same contact is part of future contact list. This logic cannot be bypassed.

If a contact uses other language requesting to be removed from the list, you can also manually tag them with the "Opt Out" tag to add them to the Opt Out List to be removed from future texting. Once added to the Opt Out List, contacts cannot be removed.

If your campaign creates an additional tag, such as Do Not Text, the backend of Impactive doesn't function the same way. That is a separate tag you can track on your own if you choose. However, Impactive will not add people with a Do Not Text tag or any other tag to the special Opt Out list. If they use for example a Wrong Number tag or use language to indicate that, the system will not mark that contact as Opted Out.

We recommend training volunteers to use the Opt Out tag, as it adds additional safeguards to protect your campaign and comply with federal communication law.

Dynamic Variables

When writing texting scripts, you can incorporate "dynamic variables", or {{dynamic_variables}}, into the script, such as {{first_name}} to reference the name of the contact, or {{user.first_name}} to reference the name of the volunteer. Most peer to peer texts begin by using a contact’s first name.

The following variables can be added to a script by selecting them from both the “Contact Info” and “User Info” drop-down menus:

  • First Name
  • Last Name
  • Full Name
  • Email
  • Phone
  • State

From the “Campaign Info” drop-down menu, you can select:

  • Campaign Name
  • Description
  • Join Code

Custom Variables

There are a number of dynamic variables that exist as a default within Impactive's system, listed below. Additionally, you can create your own dynamic variables by creating a custom field and then utilizing any of the custom field "slugs" as a column in a CSV header. When you upload a contact list with those column headers, the custom fields will populate when you include the dynamic variable in your texting script. For example:

  1. Create a Custom Field for "Issue ID" as a SelectionField, with response options of "Immigration" "Healthcare" "Education". If you are looking to create a dynamic variable with many results, you can do this by creating a Custom Field as a TextField.
  2. Upload a CSV with columns of phone, first_name, last_name, VAN_ID, AND with a column with the slug issue_ID for all contacts for whom you know their issue ID. This will allow you to utilize the slug {{issue_ID}} within a script, and have it populate with "healthcare, immigration or education".
    • For example, "Hello {{first_name}}, this is {{user.first_name}} from Selina Meyer's campaign. I know that {{issue_ID}} is really important to you, and it's vital to Selina as well.
    • For example, you might create a custom field named, “Donation Amount.” When you make your CSV to import, you also can use the “slug or custom field title” as a column header in your CSV. In this example, the header would be “custom_field_donation_amount”. Once uploaded, you can click on the Custom List and view the donation amounts in the table to make sure they have been properly imported. Then, you will be able to include {{custom_field_donation_amount}} in your scripts.
  3. You can also use the {{custom_field_remind_a_friend}} dynamic variable to insert the names of friends that voters have shared they'll remind to vote.

Here is a comprehensive list of all available dynamic variables:


  • {{first_name}}
  • {{last_name}}
  • {{full_name}} (or {{fullname}})
  • {{email}}
  • {{phone}}
  • {{state_abbrev}}


  • {{}}
  • {{campaign.description}}
  • {{campaign.join_code}}
  • {{broadcast_phone_number}}


This is for the user sending the message, and won’t be available in Broadcast Messages, for example.

  • {{user.first_name}}
  • {{user.last_name}}
  • {{user.full_name}} (and {{user.fullname}})
  • {{}}
  • {{}}
  • {{user.team_code}}

Custom Links

These are a little different and you can copy the correct string from the Custom Links section of the admin area, from the Campaign info page or an Opt-In’s Share tab

  • {{‘SLUG’|trackable}} - Replace SLUG with the slug of the Custom Link. This will create a trackable version of the link and allow us to tie clicks back to the activity, user, message, opt-in or contact.

Custom Fields

  • All of your custom field values are available as tags that will be replaced with either the value assigned to the user or the default value. You just put the slug between {{ and }} and it should replace it.


  • {{opt_in_form.title}}
  • {{opt_in_form.subtitle}}
  • {{contact_referral_link}} - This will only work in the initial response script or follow-up response scripts related to an opt-in form. It gives each contact that’s opted into an opt-in a unique URL that allows you to track opt-ins by the contact that shared the link.

Report Settings Section

In order to gather the best data possible for your campaign, union or organization, we recommend setting up tags and custom fields on a per-action basis. This will allow your volunteers to have conversations with friends and contacts, and then easily report back relevant information to your campaign on volunteer prospects, supporters, and more.

Volunteers will be able to fill a report on their friends and contacts if they have sent an SMS message to a friend or cold contact. They can also fill a report on someone they have looked up in the voter file.


Once you have created all of your preferred tags and custom fields in the CAMPAIGN > Settings page, you can select which you'd like to show up in the report page on the app for volunteers to manually file during a conversation with a contact in the “REPORT SETTINGS” section of your action. If you choose none, then the default tags will show up for your volunteers. Keep in mind that if you create a brand new tag or custom field in Settings, sometimes it will take a few minutes before that new tag is displayed as an option under a specific action.


Publishing Your Action

Campaigns can choose whether they want actions to be public or private. There are three action status types: published (public), published (private), and draft. Private actions allow you to invite a specific set of volunteers to complete the action and ensure the action is visible only to those invited by you. This is helpful if you or admins on your campaign want to test an action before sending it out.


In the “READY TO PUBLISH?” section of your action settings, if a date and time to "Publish this action at" is selected, it will become a published AND public action, visible for any of your volunteers to see.

IMPORTANT NOTE: Once you've scheduled an action to be published at a certain time in the future, you can edit that time as long as it hasn’t gone live yet. Any scheduled posts will become published and public for any user in your following to see.


To make sure your actions are sent only to a private group of users, either:

  • Save the action as a draft, and then click the “Send To User List” button
  • Save the action as a draft, and then go to the USERS > All Users tab to hand-select (checkbox) the volunteers and send the action to them.


In this section, you can choose to limit publishing to specific districts. This means that only volunteers in a chosen geographical area will be able to send texts. This is based on the zip code they inputted when they first signed up with Impactive.

You can also choose to limit publishing to specific language: English or Spanish. With this feature, you have the option to make the action only available to volunteers who speak that language. This comes in handy when, for example, you want only your Spanish-language volunteers to be sending and replying to text messages. Like districts, this is based on the language your users selected when they first signed up with Impactive.

IMPORTANT NOTE: Be aware that when you set a language or location for an action, you will not be able to change it after it’s been published.


Results and Reporting

After completing a P2P action, you can view results, track and manage your volunteers' work, and see how your messages performed with contacts. To access this information, click on Actions in the admin sidebar, then Peer to Peer. Find the action you are looking for, then click on 'View Results' next to the action.

Overview Section

At the top of the results page is the Overview Section. This section is a summary of user actions taken, not conversation metrics. Here's what each box means:

  • Sent to: The number of volunteers the action was sent to.
  • Seen: The number of users that have seen the action
  • Started: The number of users that started the action
  • Completed: Users that completed the action
  • Performs: Number of times that a user completed an action
  • Reports: How many reports were filed.

To view the reports that were filed, click on "View Reports" link in the Reports box. Here you can see summary statistics for the action's tags, custom fields, and response scripts.


Messages Performance Section

Just below the Overview section is “Messages Performance.” This section provides more in-depth information for you on the deliverability of your messages. Here's what each box means:

  • Available Reports Filled: Total number of reports filled out for this activity based on the unique number of responses received.
  • Initial Messages: The number of initial messages that were sent
  • Responses: The number of times contacts responded to messages sent
  • Follow-Ups: The number of replies users have sent after initial messages
  • Opt-Outs: The number of contacts that opted out of receiving future texts. This metric does not include people who have manually been opted out.
  • Messages Remaining: The number of initial messages left to be sent
  • Needs Attention: Replies from contacts that need a response
  • **Twilio Errors:** Messages that Twilio flagged with an error
  • Carrier Filtering: Messages that cell carriers filtered
  • Impactive Safeguards: Messages that were prevented from being sent by Impactive to protect your texting reputation and save you money; examples of these include landlines that were scrubbed from your list of phone numbers, and removing contacts who have previously opted out from receiving text messages.
  • Link Clicks: Link clicks by contacts

Use the User Tab, to track your volunteers’ work in sending initial messages, filing reports, and following up with contacts' replies. 


Tags & Custom Fields

Use the tags and custom fields sections to monitor overall results from your campaign. Here you can view the total number of tags and custom field responses applied by users taking part in your action.


Response Scripts

Here you can see how many times each response script was sent to contacts. You can use this to monitor which responses your users are using most frequently.


To better understand the errors encountered in your texting action, you can view this Errors tab which displays the message error code, the error type, and the number of times the error was encountered during your action. To learn more about Message Error Codes check out our Help Center article, What do Message Error Codes mean?




Use filtering to narrow your campaign's users down to a custom list. You can use this feature to track users' work based on whatever filters you've chosen.

  1. Click on "Filters" dropdown. Note: "Activities Received" filter will automatically have the P2P action filtered
  2. Click on any of the toggle filters to turn those fields "on".
  3. Click on any of the dropdown or text filters.
  4. Select the "Apply Filters" button to see the users who match the selected filters in the table below. The number of users matching the filters is displayed at top of the filter menu.


You can contact your filtered user list in the following ways:

  • Send Push Notification: You can send a push notification to anyone on the filtered list.
  • Send Email: You can send an email to anyone on the filtered list. NOTE: The reply-to address is This means that you will not be able to see any responses that users are attempting to email you in response.
  • Send Message: You can send a Direct Message to your users' Impactive inbox.
  • Send Action: You can send a new action to your users.

Tags & Custom Fields

Use the tags and custom fields sections to monitor overall results from your campaign. Here you can view the total number of tags and custom field responses that were applied by users taking part in your action.


Response Scripts

Here you can see how many times each response script was sent to personal contacts. You can use this to monitor which responses your users are using most frequently.



After your action has been completed, you can export all of the data into a spreadsheet. At the bottom of the View Results page is a list of export formats that you can choose from.


Managing Messages

During your P2P texting campaign, contacts are automatically assigned to volunteers. If you decide that a different staff member or volunteer would be better suited to reply to certain contacts, you can reassign them. You may also want to reassign contacts to a volunteer when a shift ends, when some volunteers stop texting, or if the conversation requires someone with more specific knowledge.

You can assign texts to specific users, user lists, or teams. Your users manage replies in their Impactive inbox, filtered by “Needs Attention” and “Unread”. Within the app, your volunteers can send scripted replies and file reports back to your campaign with information about what happened during the conversation. You can give users access to send and reply to texts by sending them an action link.

About Automatic Assignment

After you publish a P2P texting action, your contacts will automatically start as "unassigned":

  • When a volunteer clicks "Start" within the action, they will immediately be assigned 100 contacts to text from the list.
  • Once they have finished texting those 100 recipients, they will be assigned another batch of 100 contacts to text.
  • This will repeat with all your volunteers until the entire list has been texted.
  • If the list has less than 100 contacts, they will all be assigned to one user unless you change the automatic assignment bucket size

PRO TIP: If you'd like to change the number of contacts that are automatically assigned to each volunteer, go to the CAMPAIGN > Settings tab in the left-hand navigation menu and there you will see “Texting”. Use the drop-down menu under “Contact assignment bucket size” to select between 10, 25, 100, and 200 contacts per user.

When a contact is assigned to a volunteer, the volunteer can see the message thread history with that contact in the Impactive app. They will be able to see all previous messages sent to this contact, and their previous responses with other volunteers. They will also be able to respond and fill out reports on the conversation directly from the app, including tagging the contact with options like "Opt Out" or "Will Vote".

Reassign Contacts to a Specific Volunteer

This is useful in the event that your volunteer has not followed up with their contacts and/or has outstanding "Needs attention" messages.

  1. Scroll down to the “User Engagement” section in “View Results
  2. Find your volunteer and click on the “...” at the far right end of the row.
  3. Select "Reassign Contacts" and a pop-up box will appear.
  4. Select a new volunteer from the drop-down menu and click the “Assign contacts” button.

Reassign Contacts to a User List

Administrators may also reassign contacts to a list of users/volunteers. For example, after a text bank is finished, you may decide to reassign the contact list from the text bank to internal staff only.

To reassign all contacts from an individual volunteer, or using a filter:

  1. Go to the CONTACTS tab and click on “All Contacts.”
  2. Search or filter the individual contact(s) whom you’d like to reassign.
  3. Click on the checkbox next to the contact’s name, or use the top checkbox to “select all” if using a filter, and select the “Assign Contacts” button.
  4. Select a User List in the drown-down menu and click “Assign contacts”.

To reassign the contacts from one list to a different list:

  1. Go to the CONTACTS tab and click on “Lists.”
  2. Click on the list and scroll down to the “Manage Contacts” section.
  3. Select the top check box to “select all” users in the list.
  4. All the contacts on the page will be selected. Click on “Select all [number] contacts on the other pages” to select ALL users, not just the ones visible on the current page.
  5. Click on the “Assign Contacts” button and “Select a User List” in the drop-down menu.

All the contacts from the selected users will now be randomly assigned to the volunteers on the chosen list. Only those volunteers will be able to see the message threads with those contacts, follow up, and fill out reports for them in the app.

Monitoring Contacts that "Need Attention"

If you need to keep track of how your volunteers are doing on their follow up and reporting, the easiest way is to use the "Needs Attention" filter in the CONTACTS > All Contacts tab.

This filter will tell you which of your contacts have received a message and then responded to that message (without unsubscribing), but have not yet had a volunteer reply or fill out a report on the interaction. Using this filter, you can easily reassign contacts that need a quick response from more active volunteers.

To learn more about contact management, visit our help page How to Create and Manage Contacts.

Was this article helpful?