Project

General

Profile

Actions

Exporting Nationbuilder for CiviCRM » History » Revision 1

Revision 1/4 | Next »
Jon Goldberg, 11/29/2017 07:03 AM


Exporting Nationbuilder for CiviCRM

Nationbuilder notes:
Nationbuilder lets you download your data in Postgres 9 format.
Settings menu » Database
Click Create Database Snapshot, wait several minutes

Configuring Postgres on Ubuntu

sudo apt install postgresql postgresql-contrib
# Optional: Postres GUI
sudo apt install pgadmin3

sudo -iu postgres
createuser --interactive nbuild
# superuser is "yes"
createdb nbuild
psql nbuild
ALTER USER nbuild WITH PASSWORD '1234';
\q
psql -d nbuild -U nbuild -h 127.0.0.1 --password -c "CREATE SCHEMA nbuild_africans; CREATE SCHEMA shared_extensions; CREATE EXTENSION hstore WITH schema shared_extensions; CREATE EXTENSION dblink WITH schema shared_extensions; CREATE EXTENSION citext WITH schema shared_extensions; CREATE EXTENSION pg_trgm WITH schema shared_extensions;"
psql -c "CREATE SCHEMA nbuild_africans; CREATE SCHEMA shared_extensions; CREATE EXTENSION hstore WITH schema shared_extensions; CREATE EXTENSION dblink WITH schema shared_extensions; CREATE EXTENSION citext WITH schema shared_extensions; CREATE EXTENSION pg_trgm WITH schema shared_extensions;"

Contacts

signups table is the "civicrm_contact" equivalent
signups.signup_type is equivalent to Civi contact_type. 0 for Individual, 1 for Organization.
Households aren't a type of signup; they're in households and are connected to signups via household_signups.

Email

Email is stored in both signups and email_addresses. They appear to have the same data, though if it's possible to how more than 4 emails, you'll only find them in signups.
is_bad and is_invalid are both variations on "on hold" - is_bad is a manually set option to mark an email bad on a per-email basis. is_invalid is based on bounce processing.
Email location types just aren't a thing in NB.

Addresses

Postal addresses are in signups, but they're already normalized in addresses. While addresses.signup_id exists, it's a red herring. You use the following fields from signups to connect them: address_id, mailing_address_id, registered_address_id, work_address_id, billing_address_id, twitter_address_id(?), facebook_address_id, meetup_address_id, user_submitted_address_id, primary_address_id.

It would seem like this means that an address can have multiple location types, but that seems not to be the case. This makes mapping relatively easy.
As far as I can tell, there are addresses not attached to any record. This is an artifact of not being able to use foreign keys with their db structure.

Cool features of Nationbuilder:

  • "User submitted" as a location type - better as a custom field IMO, but still cool
  • Getting address data from Twitter etc.
  • A field called "geocode accuracy" to indicate that an address isn't accurate enough

Sources: http://nationbuilder.com/edit_primary_address

Contribution pages

The equivalent table is donation_pages. Note that donation pages are embedded in regular pages, so you'll need to join to the pages table on page_id (and next_page_id, if you want thank-you values).
donation_tracking_codes maps to civicrm_financial_type. See the "migrating website" section.

Basic pages

Page info in pages, content in basic_pages.

Social Capital

I haven't tested, but it seems very similar to the CiviPoints extension.

Events

Events are found in the event_pages table - there's also an events table, so maybe there's another type of event I'm not familiar with.
Times are in UTC; there's a time_zone field to indicate the offset. When Civi implements CRM-17618, the data structure will be comparable; until then, you must manually offset the date based on timezone.
In Nationbuilder, find events from the "Website" top nav, then find the "Calendar" page. Events will be a subpage of that.

Participants

Found in event_rsvps.
When in Nationbuilder viewing an event, you'll find the data on the "RSVPs" subtab.

Updated by Jon Goldberg about 7 years ago · 1 revisions