Commerce pipeline
The commerce pipeline processes non-donation transactions — ticket sales, merchandise purchases, raffle entries, and event registrations — into your Salesforce org. It extends the standard donation pipeline with additional phases for product catalogue management and order line items.
Commerce-capable extension required
The commerce pipeline requires a commerce-capable extension. NPSP organisations need both the NPSP Fundraising & Donations Extension and the Commerce Extension. Nonprofit Cloud organisations need only the Nonprofit Cloud Extension, which handles commerce natively. See Understanding extensions for installation details.
How the commerce pipeline works#
The commerce pipeline follows the same phase-based processing model as the donation pipeline, but adds phases for products and order line items.
Each notification passes through a series of ordered phases. At each phase, MoveData runs one or more Lightning Flows provided by your extension. These flows find or create Salesforce records using the standardised data in the notification.
The commerce pipeline implements the commerce schema, which extends the donation schema with catalogue, order, and order item entities.
Pipeline phases#
The commerce pipeline processes notifications through six phases in the following order:
| Phase | Purpose | Salesforce records |
|---|---|---|
| Account | Find or create the organisation account (if the buyer is purchasing on behalf of an organisation) | Account |
| Contact | Find or create the buyer's record | Contact (NPSP) or Person Account (Nonprofit Cloud) |
| Campaign | Find or create the related campaign(s) | Campaign + CampaignMember |
| Catalogue | Find or create the product or ticket type | Product2 + PricebookEntry |
| Order | Create the transaction record | Opportunity |
| Order Item | Create one line item per product in the order | OpportunityLineItem |
Shared phases#
The Account, Contact, and Campaign phases work identically to the donation pipeline. They use the same duplicate matching logic, the same record creation flows, and the same customisation points.
For details on how these phases work, see the donation pipeline.
Catalogue phase#
Purpose: Find or create Product2 records for each unique product or ticket type, and create PricebookEntry records to link each product to the standard pricebook.
Default SObject: Product2
| Configuration phase | Metadata key | Description |
|---|---|---|
| Disable | PIPELINE_COMMERCE_CATALOG_DISABLE |
Disable catalogue processing entirely |
| SObject Type | PIPELINE_COMMERCE_CATALOG_SOBJECT |
Override the default Product2 SObject type |
| Field Set | PIPELINE_COMMERCE_CATALOG_FIELDSET |
Define fields to load for existing records |
| Platform Key | PIPELINE_COMMERCE_CATALOG_PLATFORM_KEY |
Generate a unique platform identifier |
| Catalogue Name | PIPELINE_COMMERCE_CATALOG_NAME |
Custom product name generation logic |
| Record Matching | PIPELINE_COMMERCE_CATALOG_DUPLICATE |
Locate existing product records |
| Field Mapping | PIPELINE_COMMERCE_CATALOG_MAPPING |
Primary field mapping logic |
| Post-Processing | PIPELINE_COMMERCE_CATALOG_POST |
Post-upsert processing logic |
If a matching product already exists (matched by platform key), MoveData updates the existing record rather than creating a duplicate.
Order phase#
Purpose: Create or update an Opportunity record representing the complete purchase transaction.
Default SObject: Opportunity
| Configuration phase | Metadata key | Description |
|---|---|---|
| Disable | PIPELINE_COMMERCE_ORDER_DISABLE |
Disable order processing entirely |
| SObject Type | PIPELINE_COMMERCE_ORDER_SOBJECT |
Override the default Opportunity SObject type |
| Field Set | PIPELINE_COMMERCE_ORDER_FIELDSET |
Define fields to load for existing records |
| Platform Key | PIPELINE_COMMERCE_ORDER_PLATFORM_KEY |
Generate a unique platform identifier |
| Order Name | PIPELINE_COMMERCE_ORDER_NAME |
Custom order name generation logic |
| Record Matching | PIPELINE_COMMERCE_ORDER_DUPLICATE |
Locate existing order records |
| Field Mapping | PIPELINE_COMMERCE_ORDER_MAPPING |
Primary field mapping logic |
| Post-Processing | PIPELINE_COMMERCE_ORDER_POST |
Post-upsert processing logic |
| Finaliser | PIPELINE_COMMERCE_ORDER_FINAL |
Final processing after all order items are created |
Order Item phase#
Purpose: Create one OpportunityLineItem record for each product or ticket in the order.
Default SObject: OpportunityLineItem
| Configuration phase | Metadata key | Description |
|---|---|---|
| Disable | PIPELINE_COMMERCE_ORDERITEM_DISABLE |
Disable order item processing entirely |
| SObject Type | PIPELINE_COMMERCE_ORDERITEM_SOBJECT |
Override the default OpportunityLineItem SObject type |
| Field Set | PIPELINE_COMMERCE_ORDERITEM_FIELDSET |
Define fields to load for existing records |
| Platform Key | PIPELINE_COMMERCE_ORDERITEM_PLATFORM_KEY |
Generate a unique platform identifier |
| Order Item Name | PIPELINE_COMMERCE_ORDERITEM_NAME |
Custom line item name generation logic |
| Record Matching | PIPELINE_COMMERCE_ORDERITEM_DUPLICATE |
Locate existing line item records |
| Field Mapping | PIPELINE_COMMERCE_ORDERITEM_MAPPING |
Primary field mapping logic |
| Post-Processing | PIPELINE_COMMERCE_ORDERITEM_POST |
Post-upsert processing logic |
Each line item links back to both the Opportunity and the Product2 record, recording the quantity and unit price for that item.
Opportunities, not Orders
The commerce pipeline creates Opportunities and OpportunityLineItems. It does not create Salesforce Order or OrderItem objects. The phase names "Order" and "Order Item" refer to the conceptual commerce transaction, not the Salesforce Order object.
NPSP vs Nonprofit Cloud#
Both data models use the same Salesforce objects for commerce records (Opportunity, OpportunityLineItem, Product2). The difference lies in the account model and which extensions you install.
| Data model | Account type | Extensions needed |
|---|---|---|
| NPSP | Household Account | NPSP Fundraising & Donations + Commerce |
| Nonprofit Cloud | Person Account | Nonprofit Cloud (single extension) |
For NPSP organisations, the Commerce Extension works alongside the NPSP Fundraising & Donations Extension. You must install both.
For Nonprofit Cloud organisations, a single extension handles both donation and commerce processing. No additional extension is needed.
Customising the commerce pipeline#
You can customise commerce processing the same way you customise the donation pipeline — by adding your own Lightning Flows before or after the extension's default flows.
Common commerce customisations include:
- Setting record types on opportunities based on the product or event type
- Mapping platform-specific custom fields onto opportunity line items
- Skipping the Catalogue phase if you manage products manually in Salesforce
- Adding business rules that route commerce transactions to specific campaigns
All customisation is done through Lightning Flows. For guidance, see Customising MoveData.
Related articles#
- Pipeline overview — how MoveData processing pipelines work
- Donation pipeline — the standard pipeline for processing donations
- Understanding extensions — which extension to install
- Your data with Commerce — what records commerce creates in Salesforce