MobilizeAmerica provides two configuration options for the ActionKit integration:
The first is the “CRM”-style integration, which syncs your owned events and signups, as well as the signups you have recruited to events that you promote
The second is the “distributed send”-style integration, which syncs all owned and promoted events from Mobilize to ActionKit, but no signup data. Use this if you primarily use ActionKit for event recruitment and marketing campaigns.
Each configuration makes use of a single ActionKit event campaign, and uses one or more ActionKit pages within the event campaign to create the relevant data. You can set up your ActionKit integration with one or both configurations, but each configuration must use its own separate event campaign.
----
To set up the integration, we will need:
The base url of your ActionKit instance, e.g. https://roboticdogs.actionkit.com/
An ActionKit username and password to authenticate API requests
Additionally, for a CRM-style event campaign, we'll need:
The event create page short name. (You can find this by going to the campaign page in ActionKit -> click edit under event creation -> short name; see screenshot below)
The signup create page short name. (You can find this by going to the campaign page in ActionKit -> click edit under event signup -> short name; see screenshot below.)
Additionally, for a "Distributed Send"-style event campaign, we'll need:
The event create page short name. (You can find this by going to the campaign page in ActionKit -> click edit under event creation -> short name; see screenshot below)
The short names can be found in the Event Campaign Dashboard in ActionKit, shown below:
=============
"CRM"-style Integration details
The "CRM"-style integration option syncs all event and signup data for all your events, as well as any signups that you recruit to events that your organization promotes.
Data synced
Mobilize signup → ActionKit EventSignup. For promoted events, you will only see the signups that you have recruited to the event.
Mobilize person/volunteer → ActionKit User
Volunteer phone numbers: The phone number associated with the Mobilize person/volunteer will sync with a "source" name of
mobilizeamerica_sync
and a "type" of "Home". If there are no phones with our source name, we will try to match an existing phone on the ActionKit User with the same number, otherwise we will create a new phone record or update an existingmobilizeamerica_sync
phone record.Mobilize dashboard user → ActionKit User. This includes organizers, hosts, and trusted hosts.
Mobilize event timeslots → ActionKit Event, for owned events and promoted events to which you’ve driven at least one signup. If a Mobilize event has 2+ timeslots (a.k.a. shifts), we create a new ActionKit event per shift time.
Masking
Some event and shift-level data can be hidden because of the Independent Expenditure/Coordinated firewall.
Masking is applied when you promote an organization across the firewall in Mobilize, and it works in the following way:
For signups that you recruit to a promoted event, we will create a masked representation of that promoted event in your ActionKit and sync masked representations of the signups to that event. Details that remain preserved on the event model are date/time and event type. Details that remain preserved on the signup model are first name, last name, phone number, email, and zip code.
Masking is also applied when an organization across the firewall promotes your events, and it works in the following way:
Signups that are recruited to your event by a promoting organization will include all details, except we will mask which organization recruited the signup (by masking the
mobilize_signup_source
field)
=============
"Distributed send"-style Integration details
Syncs event details for events that you own and events that you promote, but no signup details. Intended for digital teams recruiting to owned and promoted events to supporters.
Data synced
Mobilize event timeslots → ActionKit Event
All owned and promoted events
If a Mobilize event has 2+ timeslots (a.k.a. shifts), we create a new ActionKit event per shift time
Masking
We don’t apply any IE/Coordinated firewall masking in this case, since no signup-level data is synced.
=============
Mobilize-specific features in ActionKit
To account for behavior around syncing certain Mobilize data that don’t have first-class representations in ActionKit, we will be syncing them with the following behavior:
Mobilize Virtual Events:
Since ActionKit doesn't support virtual events first-class and requires a location, we will use Puerto Natales, Chile when syncing the location of any virtual events that do not have a location in Mobilize. This location was selected because it is far away from any locations where events can be created in Mobilize.
Virtual events with locations will be synced to ActionKit with the same location fields as an in-person event, and the custom event field "is_virtual_event" will be set to 'Yes'
Masked events and signups:
For firewall-ed data, certain fields will be given the value ‘Masked’, to prevent coordination
Location fields will be set to Puerto Natales, Chile (same as virtual events)
Accessibility information:
This is currently only recorded for in-person events. If the accessibility_status is set on the Event, we will sync it in human-readable format to the note_to_attendees field along with the accessibility_notes if present.
Private events & addresses:
If an event's address is marked as private by an organizer or volunteer host, Address Line 1 will read 'Address provided upon RSVP'
=============
Mobilize-to-ActionKit Field Mapping
The data synced in each integration is largely similar to what we provide in our API, except mapped to the relevant ActionKit fields. Where data exists in Mobilize but doesn't have a clear equivalent in ActionKit, we use Custom Fields.
Since ActionKit requires that the type of these custom field values be string, where a field holds boolean data, a true boolean value will be written as "Yes" and a false boolean value will be written as "No".
--------------------
ActionKit Events
--------------------
ActionKit Events: Native Fields
--------------------
actionkit_email: For signups, the email the user provided at signup. For events, a placeholder of [email protected].
page: The value stored in the ActionkitConfig for event_create_page_name
address1: For in-person events, line 1 of the Mobilize event location address. If the address is marked as private, this will be 'Address provided upon RSVP'
address2: For in-person events, line 2 of the Mobilize event location address
is_private: True if the Mobilize event is private
city: For in-person events and virtual events with a location, the city of the Mobilize event location. For virtual events without locations, 'Puerto Natales'
state: For in-person events, the state of the Mobilize event location.
zip: For in-person events, the zip code of the Mobilize event location.
country: For in-person events and virtual events with a location, the country of the Mobilize event location. For U.S. territories, this will be display name of the territory (e.g., “Puerto Rico”). For virtual events without a location, this will be 'Chile'.
public_description: The Mobilize public event description
starts_at_ampm: am/pm portion of the start time of the event or timeslot
starts_at_date: formatted start date of the event or timeslot
starts_at_time: formatted start time of the event or timeslot
status: 'active' or 'deleted' if the timeslot was deleted
title: The title of the Mobilize event
venue: The name of the venue if specified for the Mobilize event location
max_attendees: The maximum capacity for the Mobilize event or timeslot.
note_to_attendees: Private details for the Mobilize event, if present. For in-person events, if the accessibility status is set on the Event, we append it to this field in human-readable format along with any accessibility notes.
Additional fields we set for ActionKit validation purposes:
'host_ground_rules': 1,
'host_requirements': 1,
'host_is_confirmed': 1,
--------------------
ActionKit Events: Custom fields
--------------------
link_to_event_information (string): link to mobilize signup page
event_type (string): One of the following values:
Canvass
Phone Bank
Text Bank
Meeting
Community Event
Fundraiser
Meet-and-Greet
House Party
Voter Registration
Training
Friend-to-Friend Outreach
Contact Your Representative
Debate Watch Party
Other
shift_times (string): newline-separated list of times, for example:
[start, end]
[start, end]
e.g. [2018-07-29T22:00:00-04:00, 2018-07-29T23:00:00-04:00]
[2018-07-29T22:00:00-04:00, 2018-07-29T23:00:00-04:00]
Note: this is only available for the "distributed send" style integration
is_virtual_event (string): 'Yes' if the event is virtual, otherwise, 'No'
mobilize_timeslot (string): shift time in the format [start, end] e.g.[2018-07-29T22:00:00-04:00, 2018-07-29T23:00:00-04:00]
mobilize_id (string): The Mobilize Event ID, applied across ActionKit events in the same recurring series
[deprecated] host_name (string): Name of the organization hosting the event (note: use the event_owning_organization field moving forward)
event_owning_organization (string): Name of the organization hosting the event
host_first_name (string): First name of the event host
host_last_name (string): Last name of the event host
event_contact_email (string): Email of the event host
event_contact_number (string): Phone number of the event host
shift_is_full (string): ‘Yes’ if the number of signups have reached full capacity, ‘No’ if not
created_by_volunteer_host (string): ‘Yes’ if the event was created by a volunteer host or trusted host; 'No’ if the event was created by an admin or an organizer
accessibility_notes (string): The event creator’s additional details about the event venue’s accommodations for participants who may require them under Americans with Disabilities Act (ADA).
accessibility_status (string): The event creator’s reporting of whether or not the event’s venue meets the standards of compliance for the Americans With Disabilities Act (ADA). This is currently only recorded for in-person events: 'Yes’, ‘No’, ‘Unknown’, or null
mobilize_event_campaign_id: The id of the Mobilize event campaign the event was created from, if it was created as part of a Mobilize event campaign. If the event was not created as part of a Mobilize event campaign, the field is null.
mobilize_event_campaign_slug: The slug of the Mobilize event campaign the event was created from, if it was created as part of a Mobilize event campaign. If the event was not created as part of a Mobilize event campaign, the field is null.
--------------------
ActionKit Event Signups
--------------------
ActionKit Signups: Native fields
--------------------
page: The value stored in the ActionkitConfig for event_signup_page_name
email: The email used at signup on Mobilize
event_id: The ActionKit event ID associated with the event/timeslot the user signed up for
attended: True if the participation has been marked as completed in Mobilize. False if the volunteer was marked as having missed the shift or if their attendance is unknown. If the signup is masked for firewall reasons, attended
will always be false, even if the volunteer attended the shift.
source: If a ?source=
parameter was included in the Mobilize event page URL at the time of signup, this will be set to the source value provided.
akid: If an ?akid=
parameter (the unique ID appended to links in ActionKit mailings) is available in the Mobilize event page URL at the time of signup, we will send this back to ActionKit with the signup, so you can associate the signup with a specific ActionKit mailing.
Additional fields we set for ActionKit validation purposes:
'event_signup_ground_rules': '1'
--------------------
ActionKit signups: Custom fields
--------------------
mobilize_attendance_status (string): One of: “REGISTERED”, “CONFIRMED”, “CANCELLED”, “NO_SHOW”, or “ATTENDED” based on what an organizer in Mobilize or VAN marked the attendance status as or the self reported attendance from a volunteer who responded to the post-shift email/sms. Status remains “REGISTERED”, “CONFIRMED” if attendance is unknown.
[deprecated] van_attendance_status (string): One of: 'None', ‘True’, or ‘False’ based on only what an organizer in VAN marked the attendance status as. (Note: Use the mobilize_attendance_status field or attended field moving forward)
mobilize_participation_status (string): One of: 'REGISTERED', ‘CANCELLED’, or ‘CONFIRMED’ Based on the status for the volunteer before the event started
mobilize_signup_source (string): Name of the organization that recruited the signup. Will be masked for signups recruited by promoters across the firewall.
created_by_volunteer_host (string): ‘Yes’ if the event was created by a volunteer host or trusted host; ‘No’ if the event was created by an admin or an organizer
utm_[content|term|campaign|medium|source] (string): The value of each utm parameter available at the time of signup on Mobilize. Signups that result from users being linked to a feed or a signup page with utm params in the url will reflect these params in the corresponding actionkit custom fields. Limited to 100 chars each.
referrer (string): If the user follows a link to a feed or a signup page (and the link allows referrers - not all do), and then proceeds to sign up for a shift, this will contain the URL of the page they were previously on. Limited to 1000 chars.
mobilize_rating (string): One of: 'Positive' or 'Negative', the overall rating that the volunteer provided for the shift.
mobilize_feedback (string): Feedback that the volunteer wrote about the shift.
mobilize_timeslot (string): shift time in the format [start, end] e.g.[2018-07-29T22:00:00-04:00, 2018-07-29T23:00:00-04:00]
mobilize_timeslot_start (string): shift start time in the format 2018-07-29T22:00:00-04:00
mobilize_timeslot_end (string): shift end time in the format: 2018-07-29T23:00:00-04:00
mobilize_override_start (string): For virtual events where the volunteer can specify a time to take the action, the start time in the format: 2018-07-29T22:00:00-04:00
mobilize_override_end (string): For virtual events where the volunteer can specify a time to take the action, the end time in the format: 2018-07-29T23:00:00-04:00
[deprecated] event host type