docs/integrations/enterprise-connectors/destination-salesforce.md
The Salesforce destination connector enables data activation by syncing data from your data warehouse to Salesforce objects. This connector is designed for operational workflows where you need to deliver modeled data directly to your CRM for sales, marketing, and customer success teams.
The connector uses the Salesforce Bulk API v62.0 for efficient data loading and supports OAuth 2.0 authentication with comprehensive error handling through rejected records functionality.
If you're using an S3 bucket to store rejected records, you also need the following.
Allow connections from Airbyte to your AWS S3/Minio S3 cluster (if they exist in separate VPCs).
An S3 bucket with credentials, a Role ARN, or an instance profile with read/write permissions configured for the host (EC2, EKS).
These fields are always required:
If you are using STS Assume Role, you must provide:
If you are using AWS credentials, you must provide:
If you are using an Instance Profile, you may omit the Access Key ID, Secret Access Key, and Role ARN.
Before setting up the Airbyte connector, you need to create a Connected App in Salesforce to obtain OAuth 2.0 credentials.
https://cloud.airbyte.com/auth/callback (for Airbyte Cloud) or https://your-airbyte-domain.com/auth/callback (for self-managed Airbyte)Follow the instructions below to create a profile and assign custom permission sets to grant the new user the write access needed for data you want to access with Airbyte.
Log in to Salesforce with an admin account.
role unspecified
- Select Salesforce Platform for the User License
- Select Standard Platform User for Profile.
- Decide whether to generate a new password and notify the user.
- Select saveNew to create a new Permission Set.–None— and click save.Object Name for each object you want the user to have write access to (e.g., Accounts, Contacts, Opportunities).SaveAssignLog into the email you used in the preceding steps and verify your new Salesforce account user. You'll need to set a password as part of this process. Keep this password accessible.
:::info Profile vs. Permission Set: remember that the user's profile provides their baseline permissions. The permission set adds or restricts permissions on top of that. Object-Level vs. Field-Level Security: this guide focuses on object-level read-only access. While setting up your permission set, you can stick with object-level security or define more granular controls by scrolling down within each object settings page to select read access for only needed fields. :::
http://localhost:8000)true if connecting to a Salesforce sandbox, false for production. Note: Changing this setting requires redoing authentication.The connector uses OAuth 2.0 authentication with your Salesforce Connected App credentials. Make sure to set the Is Sandbox option correctly before authenticating, as this determines which Salesforce environment you connect to.
| Sync mode | Supported? |
|---|---|
| Full Refresh - Overwrite | No |
| Full Refresh - Append | Yes |
| Full Refresh - Overwrite + Deduped | No |
| Incremental Sync - Append | Yes |
| Incremental Sync - Append + Deduped | No |
| Support Namespaces | No |
For programmatic configuration, use these parameter names:
{
"client_id": "your_consumer_key",
"client_secret": "your_consumer_secret",
"refresh_token": "your_refresh_token",
"is_sandbox": false,
"object_storage_config": {
"storage_type": "S3",
"access_key_id": "your_access_key_id",
"secret_access_key": "your_secret_access_key",
"s3_bucket_name": "your_bucket_name",
"s3_bucket_region": "us-east-1",
"bucket_path": "rejected_records/"
}
}
The connector is still incubating, this section only exists to satisfy Airbyte's QA checks.