Skip to main content

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​

  1. Log in to the Marketplace platform.
  2. Navigate to the Integrations > CRM section.
  3. Select Salesforce CRM from the list of available integrations.
  4. Click on Create Integration and provide a descriptive name (e.g., "Salesforce CRM Production Integration").
  5. In the Salesforce CRM Details section, enter the following:
    • Consumer Key
    • Consumer Secret
    • Access Token
    • Refresh Token
  6. 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​

  1. 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).
  2. 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
  1. 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).