For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Log inBook a demo
GuidesAPI Reference
GuidesAPI Reference
  • Getting started
    • Introduction
    • IP Whitelisting
    • Obtaining API keys
    • LLMs.txt
    • MCP server
    • Quickstart
    • Native clients
    • Concepts
    • Embedding authentication
    • Multitenancy
    • Versioning
    • Idempotent requests
    • Events
    • Self-hosted option
    • 2025-09-18 Migration Guide
  • Configuring your connections
    • Overview
    • CDC streaming from databases
    • Syncing to custom webhooks
  • Code examples
    • Overview
    • Bulk sync (ELT) from HubSpot to PostgreSQL
    • Bulk sync (ELT) from Salesforce to S3
    • Bulk sync (ELT) from Salesforce to Snowflake
    • Model sync (Reverse ETL) from Snowflake query to Salesforce
    • Model sync (Reverse ETL) from MongoDB to Salesforce
    • Adding users from Snowflake to Salesloft Cadence
    • Adding contacts from Snowflake to Gong Engage
    • Joined model sync from Postgres, Airtable, and Stripe to Hubspot
    • Model sync from MySQL to Snowflake
    • Model sync from Salesforce to Netsuite
    • Querying Salesforce using SOQL
    • Syncing audiences from Snowflake to LinkedIn Ads
    • Syncing contacts from Google Cloud Storage to Salesforce
    • Syncing contacts from Google Cloud Storage to webhooks
    • Transactional calls with LinkedIn Ads audiences
  • Terraform examples
    • Overview
    • Model sync (Reverse ETL) from BigQuery to Salesforce
    • Model sync (Reverse ETL) from BigQuery to LinkedIn Ads
Logo
Log inBook a demo
On this page
  • 1. Configure the Polytomic provider
  • 2. Create a BigQuery Connection
  • 3. Create a Salesforce Connection
  • 4. Create a model over the user data
  • 5. Create the Model Sync
  • 6. Apply the configuration
Terraform examples

Model sync (Reverse ETL) from BigQuery to Salesforce

Was this page helpful?
Previous

Model sync (Reverse ETL) from BigQuery to LinkedIn Ads

Next

This example creates a Model Sync from BigQuery to Salesforce using the Polytomic Terraform provider.

Prerequisites:

  • Install the Polytomic Terraform provider.
  • Set your Polytomic API key as an environment variable.

1. Configure the Polytomic provider

Configure the Polytomic provider in your Terraform script:

1terraform {
2 required_providers {
3 polytomic = {
4 source = "polytomic/polytomic"
5 version = "~> 1.5"
6 }
7 }
8}
9
10provider "polytomic" {
11 api_key = var.polytomic_api_key
12}

Define var.polytomic_api_key in your variables file or pass it at apply time.

🤝 Partner keys

If you are using a partner key, set partner_key on the provider and set organization on each resource that targets a specific organization.

1provider "polytomic" {
2 partner_key = "<value from settings page>"
3}

2. Create a BigQuery Connection

Define a resource for the BigQuery connection:

1resource "polytomic_bigquery_connection" "user_data" {
2 name = "BigQuery Users"
3
4 configuration = {
5 auth_method = "service_account_key"
6 service_account = file("bq.json")
7 }
8}

This example loads the service account key with the file function. Any string value or variable works as well.

3. Create a Salesforce Connection

Polytomic supports several authorization modes for Salesforce. To manage a Salesforce Connection from Terraform, you must supply the client ID and secret.

If you want to use Polytomic’s OAuth flow instead, create the Connection through the admin console or the authentication API, then reference it from Terraform with the Salesforce datasource.

Define the Salesforce Connection:

1resource "polytomic_salesforce_connection" "sfdc" {
2 name = "Salesforce Connection (TF)"
3 configuration = {
4 connect_mode = "api"
5 domain = "my--sandbox.sandbox.my.salesforce.com"
6 client_id = var.sfdc_client_id
7 client_secret = var.sfdc_client_secret
8 oauth_refresh_token = var.oauth_token
9 }
10}

🤝 Partner keys

When using a partner key, you must also set the Organization ID on every resource.

4. Create a model over the user data

Define a model that queries BigQuery:

1resource "polytomic_model" "users" {
2 name = "Users"
3 connection_id = polytomic_bigquery_connection.user_data.id
4 configuration = jsonencode({
5 dataset = "application"
6 table = "users"
7 })
8}

5. Create the Model Sync

Define a Model Sync to Salesforce. This example creates an update-only sync to Salesforce Contacts, matched on email address:

1resource "polytomic_sync" "update_contacts" {
2 name = "Update Contact Names"
3 mode = "update"
4 target = {
5 connection_id = polytomic_salesforce_connection.sfdc.id
6 object = "Contact"
7 }
8 identity = {
9 source = {
10 model_id = polytomic_model.users.id
11 field = "email"
12 }
13 function = "Equality"
14 target = "Email"
15 }
16 active = false
17 schedule = {
18 frequency = "manual"
19 }
20 fields = [
21 {
22 source = {
23 model_id = polytomic_model.users.id
24 field = "name"
25 }
26 target = "FirstName"
27 },
28 ]
29}

6. Apply the configuration

Initialize Terraform and apply:

$terraform init
$terraform apply

Review the planned changes and confirm to proceed.

For more details, see the Polytomic Terraform provider documentation.