See our Salesforce integration logic and fields, app versions older than 1.3

An overview of how our Salesforce integration was built, specifically designed for the Nonprofit Success Pack.

No items found.

Before You Get Started

Are you fully prepared for salesforce integration set-up? Check the required permissions and other essential considerations before you begin!

Video Overview

Text Walkthrough

Sync donations

  1. Get a list of all donations generated in the GL platform for Nonprofit.
  2. Check to see whether sf_opportunity_id already exists on the GL platform for given donation. If so, skip. If not, do the following:
  3. Query SF API to get a list of all SF “Opportunity” object fields for given Nonprofit SF Instance.
  4. Check for the presence of the Opportunity-level npsp__Acknowledgment_Date__c field, to determine whether the org has NPSP installed.
  5. Parse out donor email address.
  6. Query Nonprofit SF Instance to check whether email is already in Nonprofit SF Instance.
    1. If so, get SF Contact ID.
    2. If not, create a new Contact with the following fields:
      1. Email
      2. FirstName
      3. LastName
      4. Phone (if donation was made via Text-to-Donate)
      5. LeadSource: "Give Lively"
      6. MailingPostalCode
      7. MailingCountry
      8. MailingAddress (if provided by donor)
  7. Assumes “Account” is automatically created, regardless of whether NPSP installed
  8. Create Opportunity record with the following fields:
    1. AccountId
    2. Account
    3. Name: <donor_name> - $<donation_amount> - <recurring_or_one_time> <product_type>
    4. CloseDate
    5. StageName:"Posted"
    6. Probability: 100
    7. LeadSource: "Give Lively"
    8. Type: <"Recurring" or "One-Time">
      1. this data can be mapped to a picklist field of your choosing
    9. If NPSP is installed, also sync:
      1. npsp__Acknowledgment_Date__c
      2. npsp__Acknowledgment_Status__c: "Acknowledged"
    10. CampaignId: sf_campaign_id or null
      1. If Donation was made through a GL Campaign, and the GL Campaign was already synced to Salesforce, then we retrieve the SF Campaign Id of the synced Campaign and insert it here.
  9. If there is a sf_campaign_id and a sf_contact_id, then create CampaignMember with the following fields:
    1. ContactID
    2. CampaignID
  10. If NPSP is installed, check to see whether Payment record was automatically created by querying Nonprofit SF Instance (using "npe01__OppPayment__c") and npe01__opportunity__c = sf_opportunity_id
    1. Find the first payment, ignore any others
    2. Update the payment (npe01__OppPayment__c) with the following fields:
      1. Id: sf_payment_id
      2. npe01__Paid__c:1
      3. npe01__Payment_Date__c
      4. npsp__Payment_Acknowledged_Date__
      5. npsp__Payment_Acknowledgment_Status__c:'Acknowledged'
      6. npe01__Check_Reference_Number__c
  11. If NPSP is installed, skip creation of OpportunityContactRole. If not, create OpportunityContactRole with the following fields:
    1. ContactID
    2. OpportunityID
  12. Save SF record using REST API and save sf_opportunity_id in GL Platform record.

Sync campaigns 

  1. Find all campaigns for given Nonprofit on the GL platform.
  2. Check if sf_campaign_id already exists on the GL platform for the campaign record. If so, skip. If not, do the following:
  3. Create Campaign object in SF with the following fields:
    1. Name: (truncated to 80 characters)
    2. IsActive:1
    3. Type: "Give Lively"
    4. Status: "In Progress"
    5. ExpectedRevenue:
      1. If Campaign has a Goal in the GL Platform, insert goal amount here.
    6. Description
      1. Inserts JSON representation of key value pairs we pass to Campaign.
      2. Includes page_url and text_code key value pairs, which are otherwise not represented in standard SF Campaign objects.
  4. Save SF record using REST API and save sf_campaign_id in GL Platform record.

* At this time, our integration maps donations to a unique Salesforce campaign generated by our integration. We don't currently allow changing this mapping (for example, to another campaign in your Salesforce instance), but we plan on this for a future release.

Sync events

Event ticket tiers currently do not flow into Salesforce.

  1. Find all events for given Nonprofit on the GL platform.
  2. Check if sf_campaign_id already exists on the GL platform for the event. If so, skip. If not, do the following:
  3. Create Campaign object in SF with the following fields:
    1. Name: <Event - event_name>
    2. IsActive:1
    3. ParentId: <sf_campaign_id for campaign this event rolls up to in the GL Platform>
    4. Type: "Give Lively"
    5. Status:"In Progress"
    6. Description
      1. Inserts JSON representation of key value pairs we pass to Campaign.
      2. Includes page_url key value pair, which is otherwise not represented in standard SF Campaign objects.
  4. Save SF record using REST API and save sf_campaign_id in GL Platform record.

Sync peer-to-peer donations

At this time, fundraiser details do not sync to Salesforce. P2P donations will roll up to the parent campaign (primary campaign source field). At this time, P2P donations will not soft credit the fundraiser.

Within the Nonprofit Admin Portal

Once the integration is live, members will have the opportunity to update a few settings. Follow Organization Settings > Integrations > “Go to Salesforce Settings and Logs”, to customize the following:

  1. Control Data Mapping Settings for the Core Profile
    1. Allow members to select a default campaign for all general fund (Core Profile) donations.
      Screenshot of Data Mapping (Core Profile Donation/Opportunity Settings)
  2. Control Data Mapping Settings for Donations
    1. Select an Opportunity Stage Name. By default, we set Opportunity records to "Posted". Some nonprofits may prefer "Closed Won" or even a different custom value.
    2. Select a record type for Opportunity and Account records.
    3. Select the Salesforce Opportunity Type field to store the “One Time”/“Monthly Recurring” designation. (We recommend the stock Opportunity Type field.)
      Screenshot of Data Mapping (Donation/Opportunity Record Settings)

* At this time, our integration maps donations to a unique Salesforce campaign generated by our integration. We don't currently allow changing this mapping (for example, to another campaign in your SF instance), but we plan on this for a future release.

Downloads

Get Inspired

No items found.

Related Articles