.png)

Salesforce Nonprofit Cloud Integration Guide
Salesforce Nonprofit Cloud integrates through Salesforce Platform REST, SOAP, Bulk, GraphQL, composite, and event APIs, with OAuth-secured workflows for constituent, program, fundraising, and file data.
Salesforce Nonprofit Cloud integration options at a glance
Salesforce Nonprofit Cloud runs on the Salesforce Platform and provides REST APIs for SOQL queries, sObjects, metadata, and Composite API operations. GraphQL is available for supported schemas, while SOAP remains useful for WSDL-based integrations. Bulk API 2.0 supports high-volume asynchronous ingest and query. Change Data Capture, Platform Events, Pub/Sub API, and selected Outbound Messaging configurations provide event or callback options, but coverage is object- and org-dependent. Salesforce Files use ContentVersion and related objects. Martini can authenticate through OAuth-configured workflows, map and transform payloads, orchestrate synchronous or asynchronous processing, expose APIs, and implement reconciliation and retry controls.
| Integration point | Supported by Salesforce Nonprofit Cloud? | Common use cases | How Martini supports it |
|---|---|---|---|
| REST APIs | Yes | Use Salesforce REST API for SOQL queries, sObject creation and updates, metadata discovery, Composite API resources, limits, and general Nonprofit Cloud operations. | Martini can consume REST endpoints from workflows, authenticate with configured credentials, transform JSON, and expose APIs that orchestrate Salesforce operations. |
| GraphQL APIs | Limited | Salesforce GraphQL supports selected schemas and data-access scenarios, but coverage is not equivalent to all REST or SOAP resources. | Martini can consume supported GraphQL operations and map responses, while workflows should fall back to REST when the required object or operation is unavailable. |
| SOAP APIs | Yes | Enterprise and Partner WSDL APIs support strongly typed integrations and existing SOAP-standard implementations. | Martini can consume Salesforce SOAP services, manage configured authentication, transform XML responses, and handle SOAP faults. |
| Bulk and asynchronous APIs | Yes | Bulk API 2.0 supports high-volume ingest, query, migrations, backfills, and periodic synchronization of objects such as Gift Transactions. | Martini can create jobs, submit or request data, poll status, retrieve results, process partial failures, and reconcile failed rows. |
| Webhooks and outbound callbacks | Limited | Salesforce provides selected Outbound Messaging callbacks and event mechanisms, but no universal webhook for every Nonprofit Cloud object. | Martini can receive webhook-style or SOAP callback traffic where configured and route notifications into workflows with validation and deduplication. |
| Events and change notifications | Limited | Change Data Capture, Platform Events, Pub/Sub API, and PushTopic streaming support selected near-real-time scenarios subject to object and org configuration. | Martini can consume supported event or callback endpoints, invoke downstream APIs, and combine event processing with replay, retry, and reconciliation workflows. |
| File and attachment APIs | Yes | Salesforce Files use ContentVersion, ContentDocument, and ContentDocumentLink; legacy Attachment may exist in some organizations. | Martini can retrieve or create file metadata and binary content, map record links, and transfer files to supported downstream endpoints. |
| Authentication | Yes | Connected apps support OAuth 2.0 authorization code, JWT bearer, client credentials in supported scenarios, refresh tokens, and bearer access tokens. | Martini can store credentials securely, call Salesforce token endpoints, and use the resulting authorization context in API workflows. |
| Analytics and query access | Yes | SOQL, aggregate queries, Salesforce Analytics REST API, and describe APIs support governed extraction and reporting-related integrations. | Martini can retrieve API-based analytics or query results, transform them, and deliver them to applications, files, or databases without direct database access. |
How Salesforce Nonprofit Cloud exposes data and business events
Salesforce REST APIs
Salesforce REST API is the primary general-purpose interface for SOQL queries, sObjects, Composite API resources, metadata discovery, and ordinary Nonprofit Cloud record operations. It returns JSON and supports both reads and writes subject to the authenticated principal’s permissions.
Martini implementation pattern
Martini implementation pattern: a workflow obtains or refreshes an OAuth access token, calls the required REST resource, validates the response, maps Salesforce fields into a canonical model, and invokes downstream APIs or writes to a target store.
Implementation sequence
Salesforce Bulk APIs
Bulk API 2.0 provides asynchronous ingest and query for large data volumes, including migrations, backfills, and periodic constituent or fundraising synchronization. Jobs must be monitored through completion and failed-result retrieval.
Martini implementation pattern
Martini implementation pattern: a workflow creates a Bulk job, submits or requests data, polls the job lifecycle, retrieves successful and failed results, and records reconciliation state for retry or review.
Implementation sequence
Salesforce GraphQL API
Salesforce GraphQL supports selected schemas and use cases, but its coverage varies by API version and does not replace every REST or SOAP resource. It is best evaluated for queries that benefit from selecting related data in one request.
Martini implementation pattern
Martini implementation pattern: Martini sends a configured GraphQL operation, validates the response and any GraphQL errors, then transforms the selected fields into a canonical structure. REST remains the fallback when coverage is insufficient.
Implementation sequence
Salesforce Events and Change Notifications
Change Data Capture, Platform Events, Pub/Sub API, PushTopic streaming, and selected Outbound Messaging configurations support event-oriented integrations. Availability, retention, replay, ordering, and object coverage depend on the Salesforce organization and event mechanism.
Martini implementation pattern
Martini implementation pattern: Martini receives or consumes a supported Salesforce notification, validates its origin and event type, deduplicates using an event or record key, retrieves the current resource when necessary, and sends the work through a retryable workflow. A scheduled reconciliation process remains the source-of-truth check.
Implementation sequence
Salesforce SOAP APIs
Salesforce Enterprise and Partner WSDL APIs remain available for strongly typed integrations and existing SOAP-based environments. They are generally a secondary choice for new work when REST, Composite, Bulk, or event APIs meet the requirement.
Martini implementation pattern
Martini implementation pattern: Martini calls the required WSDL-based operation, handles XML serialization and SOAP faults, maps the result into the canonical model, and applies explicit retry rules for transient failures.
Implementation sequence
Common Salesforce Nonprofit Cloud integration patterns
Pattern 1: Synchronize constituents to a nonprofit platform
When to use this pattern
Use this pattern when Accounts, Person Accounts, and Contacts must be synchronized with a fundraising, marketing, identity, or data platform. Incremental synchronization should use a selective SystemModstamp, LastModifiedDate, or agreed custom watermark and should account for deactivation, deletion, and duplicate matching.
Integration direction
Example Mapping
| Salesforce Nonprofit Cloud Field | Canonical Field | Target Field |
|---|---|---|
| Account.Id | constituent.organizationId | Organization.ExternalId |
| Contact.Email | constituent.email | Constituent.EmailAddress |
| Contact.LastModifiedDate | constituent.modifiedAt | Constituent.UpdatedAt |
| Contact.MailingAddress | constituent.address | Constituent.Address |
Martini implementation pattern
A scheduled Martini workflow queries changed Salesforce objects, follows pagination, resolves relationships, normalizes consent and address fields, and applies duplicate and deactivation rules. It upserts the target using a deterministic external key, stores the successful watermark, and sends rejected rows to a retry or review path.
Martini capabilities used
- workflows
- API consumption
- scheduling
- SOQL response handling
- data mapping
- business rules
- error handling
Pattern 2: Reconcile gifts with finance
When to use this pattern
Use this pattern to transfer Gift Commitments, Gift Transactions, Funds, and related constituent data to a finance or accounting application. The workflow should distinguish pledges, received transactions, refunds, reversals, pending payments, currencies, and posting status.
Integration direction
Example Mapping
| Salesforce Nonprofit Cloud Field | Canonical Field | Target Field |
|---|---|---|
| GiftTransaction.Id | donation.transactionId | Transaction.ExternalId |
| GiftTransaction.Amount | donation.amount | Transaction.Amount |
| GiftCommitment.Status | donation.commitmentStatus | CustomerDeposit.Status |
| Fund.Name | donation.fundCode | Transaction.Department |
Martini implementation pattern
Martini retrieves or receives eligible Salesforce fundraising data, enriches it with Account or Contact and Fund relationships, validates financial status and currency, and submits an idempotent finance request. It inspects individual Composite or Bulk results, records external references, and retries only safe failures.
Martini capabilities used
- workflows
- REST API consumption
- Bulk API orchestration
- data mapping
- validation
- business rules
- retry and reconciliation
Pattern 3: Process selected Salesforce events
When to use this pattern
Use this pattern when supported Change Data Capture, Platform Events, Pub/Sub API, or Outbound Messaging coverage is sufficient for a near-real-time downstream action. It is appropriate for selected constituent, program, service, or transaction changes, not as a universal webhook assumption.
Integration direction
Example Mapping
| Salesforce Nonprofit Cloud Field | Canonical Field | Target Field |
|---|---|---|
| ChangeEventHeader.recordIds | source.recordIds | Request.ExternalReferences |
| ChangeEventHeader.changeType | source.changeType | Request.Action |
| Case.Priority | service.priority | Incident.Priority |
| Case.Subject | service.summary | Incident.ShortDescription |
Martini implementation pattern
Martini validates and consumes the supported event or callback, deduplicates by event identity, retrieves the current Case or related object when needed, applies routing rules, and calls the downstream API. Checkpoints, replay handling, dead-letter processing, and periodic reconciliation protect against missed or repeated delivery.
Martini capabilities used
- event-driven workflows
- webhook or API consumption
- data mapping
- conditional routing
- idempotency rules
- error handling
Pattern 4: Transfer Salesforce Files with record context
When to use this pattern
Use this pattern when documents associated with constituents, grants, commitments, or service records must be delivered to a document or signature platform. Salesforce Files should be handled as metadata, binary content, versions, and record links rather than as a simple URL.
Integration direction
Example Mapping
| Salesforce Nonprofit Cloud Field | Canonical Field | Target Field |
|---|---|---|
| ContentVersion.VersionData | document.binaryContent | Envelope.DocumentBytes |
| ContentVersion.Title | document.fileName | Envelope.DocumentName |
| ContentDocumentLink.LinkedEntityId | document.relatedRecordId | Envelope.RelatedSalesforceId |
| ContentVersion.CreatedDate | document.createdAt | Envelope.Metadata.CreatedAt |
Martini implementation pattern
A Martini workflow retrieves ContentVersion metadata and binary content, resolves ContentDocumentLink relationships, validates file size and document type, and creates the downstream envelope or document request. It stores the external envelope identifier and processes returned status changes without duplicating files.
Martini capabilities used
- workflows
- REST API consumption
- file handling
- binary transformation
- data mapping
- validation
- idempotent updates
Applications commonly integrated with Salesforce Nonprofit Cloud
Salesforce Nonprofit Cloud can exchange constituent, fundraising, program, financial, document, and analytics data with adjacent enterprise applications. The exact direction and object scope depend on the organization’s system-of-record decisions, enabled Salesforce capabilities, and the APIs exposed by each application.
| Application | Scenario | Direction | Martini Pattern |
|---|---|---|---|
| Blackbaud Raiser’s Edge NXT | Synchronize constituents, donors, gifts, and fundraising information across nonprofit CRM and fundraising operations. | Salesforce Nonprofit Cloud → Martini → Blackbaud Raiser’s Edge NXT | Use scheduled or event-assisted Salesforce queries, map Accounts, Contacts, Gift Commitments, and Gift Transactions to the target fundraising model, and apply external-key matching, reconciliation, and retry handling. |
| Mailchimp | Publish constituent or donor segments to email marketing and return selected campaign engagement data. | Salesforce Nonprofit Cloud → Martini → Mailchimp | Query eligible Contacts or Person Accounts, transform consent and segmentation fields, call Mailchimp APIs, and process returned engagement data through an idempotent update workflow. |
| Stripe | Coordinate online donation processing, payment status, refunds, and transaction reconciliation. | Stripe → Martini → Salesforce Nonprofit Cloud | Receive supported Stripe payment events or retrieve payment status, match a deterministic external transaction reference, and upsert Salesforce Gift Transactions while routing failures for reconciliation. |
| NetSuite | Transfer donation, commitment, fund, and accounting information for financial reconciliation and general-ledger processing. | Salesforce Nonprofit Cloud → Martini → NetSuite | Retrieve Gift Commitments, Gift Transactions, Funds, and accounting dimensions, apply posting and currency rules, and submit controlled NetSuite batches with status feedback. |
| Workday | Synchronize workforce, organizational, finance, or grant-related information where Workday supports nonprofit operations. | Workday → Martini → Salesforce Nonprofit Cloud | Consume Workday API responses, normalize organizational or finance identifiers, validate Salesforce permissions and relationships, and upsert only approved fields. |
| ServiceNow | Coordinate internal service requests, facilities, technology support, or operational case processes with Salesforce service information. | Salesforce Nonprofit Cloud → Martini → ServiceNow | Route selected Cases or service-related data through a Martini workflow, map priority and ownership rules, call ServiceNow APIs, and return the external ticket reference. |
| DocuSign | Generate and track signatures for grants, agreements, waivers, gift commitments, and related documents. | Salesforce Nonprofit Cloud → Martini → DocuSign | Transform Salesforce agreement or commitment data into an envelope request, persist the envelope identifier, and process signature status callbacks into Salesforce. |
| Tableau | Provide governed analytics over fundraising, constituent, program, and service-delivery data. | Salesforce Nonprofit Cloud → Martini → Tableau | Extract governed Salesforce datasets through REST, Bulk, or Analytics APIs, normalize fields and watermarks, and deliver curated data to the analytics environment according to its ingestion contract. |
How to build a Salesforce Nonprofit Cloud integration in Martini
Objective
Establish Salesforce access using a connected app, an appropriately scoped integration principal, and an OAuth flow suitable for the deployment model.
Instructions in Martini
- Configure the Salesforce connected app and required OAuth scopes
- Use JWT bearer, authorization code, or another confirmed OAuth pattern as appropriate
- Store client secrets, certificates, and environment values through Martini secrets and secure configuration
- Confirm API Enabled, object, field, and record-sharing permissions
Objective
Select a real-time, scheduled, or API-led trigger based on object coverage, volume, and the business latency requirement.
Instructions in Martini
- Use supported Salesforce event or callback mechanisms only for objects and events confirmed in the target org
- Use a scheduler for incremental REST or SOQL synchronization where event coverage is incomplete
- Use an API trigger when Salesforce or another system needs to invoke controlled Martini logic
- Define a reconciliation schedule for event-driven flows
Objective
Retrieve Salesforce resources using the API that best matches the operation, volume, and response requirements.
Instructions in Martini
- Use REST and SOQL for ordinary record operations and queries
- Use GraphQL only for supported schemas and operations
- Use Bulk API 2.0 for high-volume ingest, query, migration, or backfill jobs
- Follow pagination, nextRecordsUrl, cursors, or asynchronous job states
Objective
Build a maintainable Martini workflow that coordinates Salesforce calls, enrichment, target operations, checkpoints, and exception paths.
Instructions in Martini
- Separate authentication, retrieval, transformation, and target-write concerns
- Reuse Salesforce IDs, metadata, and retrieved relationships instead of repeating queries
- Control concurrency to respect Salesforce limits
- Persist watermarks, job identifiers, event checkpoints, and external references
Objective
Convert Salesforce objects and relationships into a canonical or target-specific model while preserving identifiers and relevant provenance.
Instructions in Martini
- Map Accounts, Contacts, Programs, Program Engagements, Gift Commitments, and Gift Transactions explicitly
- Handle Person Accounts, custom fields, record types, currencies, dates, and null values
- Transform JSON, XML, file metadata, or binary content as required by the target
- Use validation and mapping rules to identify incomplete or unauthorized data
Objective
Apply nonprofit-specific rules before writing data, including eligibility, consent, financial status, deduplication, and routing decisions.
Instructions in Martini
- Use external identifiers or deterministic keys for idempotent upserts
- Distinguish commitments, transactions, refunds, reversals, and posting statuses
- Check record ownership, field access, and target-system acceptance rules
- Route invalid or ambiguous records to a review or exception process
Common Salesforce Nonprofit Cloud data objects used in integrations
| Object | Typical Use | Common target systems | Martini handling |
|---|---|---|---|
| Account | Represents organizations, households, institutions, and other account-level constituents; Person Accounts may represent individuals. | Blackbaud Raiser’s Edge NXT, Mailchimp, NetSuite, data platforms | Use metadata discovery and organization-specific permissions, apply deterministic matching or External IDs, and map account relationships explicitly. |
| Contact | Represents individual constituents and people associated with Accounts, Programs, Cases, and fundraising activity. | Mailchimp, Blackbaud Raiser’s Edge NXT, Workday, analytics platforms | Query incrementally with selective SOQL, apply consent and field-level-security rules, and upsert using a stable external key. |
| Program | Represents services, initiatives, or programs delivered by a nonprofit organization. | ServiceNow, data platforms, reporting systems | Retrieve enabled fields and relationships from target-org metadata, then map program status, ownership, and identifiers into the downstream model. |
| Program Engagement | Represents a constituent’s participation or relationship with a Program. | Service coordination platforms, data warehouses, reporting systems | Resolve Account or Contact and Program relationships, validate participation rules, and preserve Salesforce identifiers for idempotent updates. |
| Gift Commitment | Represents a pledge, recurring commitment, or other fundraising commitment. | NetSuite, Blackbaud Raiser’s Edge NXT, DocuSign, payment platforms | Distinguish commitment status, schedule, currency, and donor references before applying financial and document workflow rules. |
| Gift Transaction | Represents a received or processed donation transaction associated with a donor or commitment. | Stripe, NetSuite, Blackbaud Raiser’s Edge NXT, analytics platforms | Use external transaction identifiers, process payment and posting status, and reconcile partial, duplicate, reversed, or failed operations. |
Authentication and security considerations
OAuth and connected apps
Salesforce integrations generally use OAuth 2.0 through a connected app. Authorization code is suitable for user-authorized access, while JWT bearer authentication is commonly used for server-to-server deployments. Client credentials and refresh tokens are available only where the Salesforce organization and connected-app policies support them.
Least-privilege access
Access is evaluated using the authenticated user or integration principal. Configure only the required OAuth scopes, API permissions, object permissions, field-level security, record visibility, profiles, permission sets, IP restrictions, and session policies.
Martini security
Martini can store OAuth credentials, certificates, and environment-specific values in secure configuration and secrets. Workflows should avoid logging access tokens or sensitive constituent, case, donation, and payment data.
Operational considerations for Salesforce Nonprofit Cloud integrations
Limits and pagination
Design around Salesforce org, user, concurrency, and API limits. Reuse identifiers and metadata, control concurrency, handle 429 responses and limit errors, and follow nextRecordsUrl or Bulk job result lifecycles.
Idempotency and partial results
Use External ID fields or deterministic keys for upserts. Composite and Bulk operations can partially succeed, so inspect row-level results, persist successful identifiers, and retry only safe failures.
Events and reconciliation
Event coverage is selective and delivery behavior varies by mechanism. Use replay or checkpoint handling, duplicate protection, and a scheduled reconciliation workflow to identify missed, delayed, or rejected changes.
Schema and testing
Confirm object metadata, fields, record types, managed-package dependencies, validation rules, flows, and Apex behavior in each environment. Test files, permissions, pagination, rate limits, schema changes, and partial failures before production deployment.
Why use Martini instead of scripts or point-to-point integrations?
Orchestration beyond a script
Martini provides a governed workflow layer for authentication, Salesforce API calls, transformations, business rules, target writes, checkpoints, and exception paths. This avoids embedding the entire integration lifecycle in a single custom script.
Reusable integration assets
Teams can expose controlled APIs, reuse workflow logic, and generate reusable integration assets from external API definitions while keeping Salesforce-specific configuration separate from deployment environments.
Operational reliability
Martini supports scheduled, API-led, asynchronous, and event-assisted designs with mapping, validation, error handling, logging, and reconciliation patterns. These capabilities make it easier to maintain integrations as Nonprofit Cloud objects, permissions, and downstream systems evolve.
Frequently asked questions
Salesforce Nonprofit Cloud can be integrated through Salesforce Platform REST, SOAP, Bulk, Composite, GraphQL, analytics, and event APIs. Change Data Capture, Platform Events, Pub/Sub API, and selected Outbound Messaging configurations support event or callback scenarios, while scheduled API synchronization supports objects without suitable event coverage.
Yes. Martini can consume Salesforce REST, SOAP, Bulk, GraphQL, and supported event or callback endpoints, then orchestrate workflows, transform data, expose APIs, and write to downstream applications. A native Martini Salesforce Nonprofit Cloud connector was not verified in the supplied documentation.
No. A dedicated Salesforce Nonprofit Cloud connector is not required. Martini can use Salesforce’s confirmed native APIs, OAuth authentication, event streams, selected callbacks, and file endpoints through workflows and APIs.
Lonti does not charge an additional per-connector or per-vendor fee to integrate Salesforce Nonprofit Cloud. Integrations are subject to the provisioned capacity of the Martini environment. Separate costs may apply from Salesforce, infrastructure providers, or other third-party systems based on subscription, usage, and deployment model.
Use REST for general record and SOQL operations, Composite for grouped synchronous operations, Bulk API 2.0 for high-volume asynchronous processing, and Pub/Sub API or Change Data Capture for supported event scenarios. GraphQL is a selective option, while SOAP is generally reserved for existing WSDL-based requirements.
Salesforce does not provide a universal webhook for every Nonprofit Cloud object. Supported options may include Change Data Capture, Platform Events, Pub/Sub API, PushTopic streaming, and selected SOAP Outbound Messaging, with availability and retention dependent on the object, event type, edition, and organization configuration.
Martini can run scheduled or event-assisted workflows, query changed data using fields such as SystemModstamp or LastModifiedDate, follow pagination or Bulk job lifecycles, and map Salesforce objects into canonical and target models. External IDs, watermarks, validation, and relationship resolution support reliable synchronization.
Martini workflows can inspect HTTP, Salesforce, SOAP, Composite, and Bulk result errors, apply controlled backoff and retry policies, and route non-retryable failures for review. Idempotent keys, stored Salesforce IDs, event checkpoints, partial-result handling, and reconciliation workflows help prevent duplicates and recover from missed or incomplete processing.
Related Martini documentation
APIs
Workflows
Connect Salesforce Nonprofit Cloud with Martini
Use Martini to build secure, maintainable integrations between Salesforce Nonprofit Cloud and the applications, APIs, files, and data platforms that support nonprofit operations.