Salesforce source

tap-salesforce extracts Salesforce objects through the Bulk or REST API.

Support

Source

Status

Load path

Salesforce

Experimental

Singer only

Prerequisites

Create a connected app and complete its OAuth flow. The resulting principal must have API and field access to every selected object. Field-level security can make discovery or extraction incomplete without producing a database-style permission error.

Configuration

id: "salesforce"
name: "Salesforce"
type: "tap-salesforce"
owner: "data-platform@example.com"
db_conn:
  client_id: "<CLIENT_ID>"
  client_secret: "{{ env_var['SALESFORCE_CLIENT_SECRET'] }}"
  refresh_token: "{{ env_var['SALESFORCE_REFRESH_TOKEN'] }}"
  start_date: "2024-01-01T00:00:00Z"
  api_type: "BULK"
target: "snowflake"
batch_size_rows: 20000
stream_buffer_size: 0
default_target_schema: "salesforce"
schemas:
  - source_schema: "salesforce"
    target_schema: "salesforce"
    tables:
      - table_name: "Account"
      - table_name: "Contact"

start_date is an RFC 3339 timestamp. Set api_type to BULK or REST. Discover the objects visible to the connected user before finalising the table list:

pipelinewise discover_tap --tap salesforce --target snowflake

Test API quotas, deleted-record handling, schema changes, and large objects before production use.