In Salesforce Non-Profit Success Pack (NPSP), the Contact is the object around which everything is centered. A Contact is an individual person. A Salesforce Contact can integrate with an ACME Customer, an ACME Contact, or both. To see whether a Salesforce Contact is synced to ACME, check for a value in the ACME Customer ID and/or ACME Contact ID fields. The Contact belongs to either a Household or an Organization Account.


In Salesforce, all Contact records must belong to an Account. There are two record types of Accounts: Household and Organization. The Contact can only have one primary Account, which is linked in the lookup field on the Contact. Most NPSP users treat the Household as the primary Account relationship.

Accounts will integrate with either an ACME Organization, or an ACME Household, but not both. Organizations can be schools, resellers, companies, other museums, or any kind of organization you do business with. Households in ACME are merely a placeholder to link Customers together, they do not have their own Orders, Addresses, or other information. 

Most objects in Salesforce look up to the Account as their parent.


Opportunities are the financial backbone of Salesforce. They are integrated with ACME Orders, but data is only sent one-way. Any edits made manually to Opportunities do not write back to ACME. Opportunities created by ACME all have a record type of “ACME Order”, and just one Stage in their sales process: “Complete”. Opportunities lookup to the Account as their parent record, but can also relate to Contacts via the Primary Contact lookup field or Salesforce Contact Roles.

Opportunity Products/Opportunity Line Items

Opportunity Line Items integrate one-way with ACME Order Items. An ACME Opportunity will always contain at least one Line Item but can contain many. Since memberships, ticketing, add-ons, and other products, as well as all pricing, are controlled through ACME, we have created placeholder Products in Salesforce: ACME Membership, ACME Event, ACME Inventory, ACME Donation, and ACME Combo. The specific details of what was purchased, including event name, membership level, quantity, pricing, discounts, and more, are set via integration. Opportunity Line Items have a master-detail relationship with Opportunity.


This custom object integrates one-way with the Transaction in ACME. Each Opportunity contains at least two Transaction records, one for sale, and one for payment. There may be additional Transactions in case of deposits or split or partial payment. Transaction contains the payment details such as sales channel, payment method, discounted amount, and payment status. Transactions look up to the Opportunity as their parent.

Transaction Item

This custom object integrates one-way with the Transaction Item in ACME. Each Transaction contains at least one Transaction Item, one for each product that was purchased. Transaction Item contains the payment details specific to that item, such as event name, coupon code, and price point ID. Transaction Items have a master-detail relationship with Transactions.


This custom object integrates both ways with the Membership in ACME. Membership transactions are performed through the VisualForce flows initiated from the buttons on the Contact record. To preserve the full historical record, every Membership transaction (renew, upgrade, downgrade) creates a new Membership record, and marks the previous record as “Dropped”. Memberships are linked to the Account and the primary Contact through lookup fields, and also contain a lookup to the originating Opportunity. Certain Membership fields are editable manually in Salesforce outside of the transaction flows.

Membership Card

This custom object has a master-detail relationship with the Membership. One Membership may have multiple Membership Cards. A card may be assigned to either a named Contact in Salesforce, or simply have a name printed on the card. Certain Membership Card fields are editable manually in Salesforce outside of the transaction flows.


This custom object is a link between a Contact and their primary organization Account, created when an Org Contact is created in ACME Back Office.  


Changes made to the address in POS or B2C (website) create a new ACME Address record in Salesforce. New ACME Address records will create a new NPSP Address record, which are then linked together. Changes made to an address in the VisualForce membership management flows will also create a new Address. ACME has two addresses in Back Office: Billing Address and Primary Member Address. They are stored separately and write to separate Address records in Salesforce.