Delivery Setup for Salesforce
Delivery Setup
This guide explains how to configure the Salesforce CRM integration on our platform using the information provided by the customer.
1. Prerequisites
Ensure you have the following details from the customer:
- Consumer Key
- Consumer Secret
- Access Token
- Refresh Token
- Webhook Details (Object Name, Events, Webhook Endpoint URL)
2. Configure Salesforce API Access
Steps to Configure API Access
- Log in to the Marketplace platform.
- Navigate to the Integrations > CRM section.
- Select Salesforce CRM from the list of available integrations.
- Click on Create Integration and provide a descriptive name (e.g., "Salesforce CRM Production Integration").
- In the Salesforce CRM Details section, enter the following:
- Consumer Key
- Consumer Secret
- Access Token
- Refresh Token
- Save the integration to establish the connection.
Alternatively, if the customer supplied only a one-time authorization code (rather than tokens), exchange it for tokens via:
POST /v1/tenants/{tenantId}/adapters/{tenantAdapterId}/token?code={code}
This calls Salesforce's token endpoint with grant_type=authorization_code and stores the resulting access/refresh tokens against the tenant. Refresh afterwards is automatic (grant_type=refresh_token, throttled to roughly every 2 hours). Note: there is no "test connection" step for Salesforce
3. Set Up Webhooks
Steps to Set Up Webhooks
- Use a third-party tool like the Salesforce Webhook Creator, or create an Apex Class and Trigger in Salesforce (see Salesforce <-> CDP for the Apex code).
- Configure the webhook with the following details:
- Name: A descriptive name for the webhook.
- Object: The Salesforce object to monitor (e.g., Accounts, Contacts).
- Events: The events to track (e.g., Create, Update, Delete).
- Webhook Endpoint URL: The tenant events endpoint, authenticated with the tenant's API key:
POST /v1/tenants/{tenantId}/adapters/{tenantAdapterId}/events
- Save the webhook configuration.
Delete/Undelete events are now correctly matched to an entity type (a prior bug where these were silently dropped — because only the payload's new array was read, and Delete events only populate old — has been fixed).