The PDI integration syncs data from the Mobilize API to the PDI API for an organization. This document describes how the Mobilize resources and fields are mapped to the PDI resources fields.

For each shift created in Mobilize, a new Location and Event will be created in PDI. Shifts are also known as Timeslots in the Mobilize API.

A Location is created. If the location already exists based on matching Mobilize latitude and longitude, the location is updated in PDI.

  • Location Name is set to the Mobilize venue name. If there is no Venue in Mobilize, it is set to the complete address. If the Event location is private, it is set to "Private Venue". It is set to "Virtual" if the event is a Mobilize virtual event.
  • Location Address is set to a string of the complete Mobilize address including the address_lines, locality , region , and postal_code. It is blank if the address is private.

An Event is created in PDI for each Timeslot (Shift)

The event is created in a PDI Calendar. The Calendar to Event Type mapping is defined in Mobilize as described in this article. Please submit a request to Mobilize support if you need to update these mappings.

The following PDI Event fields and their associated Mobilize API field.

  • Name:  title
  • Description: description
  • Website: browser_url
  • Start Date: timeslot_start_date
  • End Date Time UTC: timeslot_end_date 
  • Phone: contact["phone_number"] 
  • Contact Email: contact["email_address"] 
  • The Event Category Id is set to 0 as a placeholder because creating new categories has been deprecated in the PDI UI, but this field is required.

For each signup to a shift (an Attendance in the Mobilize API), the following is created or updated in PDI:

A Contact is created or updated. We update contacts if the Mobilize email address matches an existing contact email in PDI.

  • First Name person[given_name] 
  • Last Name: person[family_name]

Additional contact information is also created or updated:

Address

  • Zip Code: person["postal_addresses"][0]["postal_code"] from the Mobilize Attendance

Email

  • Email Address: person["email_addresses"][0]["address"]  from the Mobilize Attendance if it is available. If it is masked (such as in a cross-firewall promotion), we set it to masked-email+<internal id number>@mobilize2020.org 
  • Is Primary: Set to true 

Phone

  • Phone Number: person["phone_numbers"][0]["number"]
  • Phone Type: Set to Direct 
  • Is Primary: Set to true 

An Invitation is created or updated

  • Contact ID: The PDI Contact ID associated with the invitation.
  • RSVP Status: 'Yes' unless the Mobilize Attendance status equals CANCELLED . If it is, this is set to 'Cancelled'.
  • Is Confirmed: true if the Mobilize Attendance status  equals CONFIRMED , otherwise this is false.
  • attended: This field's value corresponds with Mobilize attendance statues of "Completed" and "No-Show". Completed is true and No-Show is false. If the Mobilize API returns a null value, this defaults to false in PDI.
Did this answer your question?