Credentials

For us to extract data from SFDC APIs on your behalf, we need your Salesforce domain. For more information on how we integrate with SFDC click here.

Authorization Request

To retrieve an access token required for all data requests, we make an initial authorization request to <https://login.salesforce.com/services/oauth2/token>.

These fields are required in the param of the login request:

  • grant_type
  • client_id
  • client_secret
  • refresh_token

📘

Authorization request values

client_id and client_secret are values used to identify Simon and are identical across all authorization requests for every client using our Salesforce.com integration.

We use refresh_token as the grant_type

We use [refresh_token', 'api] as our scope.

For information on the resources this scope grants click here.

Supported Objects

Available endpoints for the Salesforce ingestor depend on your Salesforce instance. Before pulling new Salesforce data for your account, a list of these endpoints and their schemas are dynamically fetched.

Endpoint Base: <https://{your_instance}.salesforce.com/>

FAQ

  • Why am I seeing different Record IDs for the same data in Salesforce vs Simon?
    This is a well-documented intricacy of Salesforce Record IDs. Click here for a more detailed explanation.

  • How do I revoke Simon’s access to our SFDC and SFSC data?
    Click here for instructions

  • How are SFDC and SFSC extractions different?
    To maintain incrementality while fetching data from the SFDC and SFSC APIs, object additions and deletions are ingested via two separate endpoints. The endpoint corresponding to the deleted objects have the suffix _DELETED.

    Records are ingested when added or updated, meaning that updated records will be duplicates of the previous version of those records

    In order to use current data, you account manager can build data lake that joins the two tables populated by the two associated streams, removes deleted records, and removes duplicate records. For example:

with max_contact as (
    select
        *
    from (
        select
            *,
            row_number() over (partition by id order by systemmodstamp ) as row_num
        from salesforce_contact c
    )
    left join salesforce_contact_DELETED cd on c.id = cd.id
    where row_num = 1 and isdeleted = false and cd.id is null
)