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
Logo
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
Log inBook a demo
On this page
  • UI demo video
  • Code
  • 1. Create a Snowflake Connection
  • 2. Create a Salesloft Connection
  • 3. Create a Snowflake model
  • 4. List the Salesloft target objects
  • 5. List the target fields on a Salesloft cadence
  • 6. Sync Snowflake users into a Salesloft cadence
Code examples

Adding users from Snowflake to Salesloft Cadence

Was this page helpful?
Previous

Adding contacts from Snowflake to Gong Engage

Next

UI demo video

Watch the same steps in the Polytomic admin console in this demo video.

Code

Set your Polytomic API key as an environment variable:

$export POLYTOMIC_API_KEY=YOUR-API-TOKEN

This example covers six steps:

  1. Create a Snowflake Connection.
  2. Create a Salesloft Connection.
  3. Create a Snowflake model over a custom SQL query.
  4. List the available Salesloft cadences.
  5. List the target fields on a specific cadence.
  6. Sync users from Snowflake into a Salesloft cadence.

1. Create a Snowflake Connection

The Snowflake instance must be reachable from Polytomic over the network. See the Polytomic IP allowlist for the source addresses to allow.

cURL
Python
Typescript
Go
$ curl --request POST \
> --url https://app.polytomic.com/api/connections \
> --header "accept: application/json" \
> --header "content-type: application/json" \
> --header "X-Polytomic-Version: 2025-09-18" \
> --header "Authorization: Bearer ${POLYTOMIC_API_KEY}" \
> -d '{
> "name": "Snowflake Connection",
> "type": "snowflake",
> "configuration": {
> "account": "uc193736182",
> "username": "user",
> "password": "secret",
> "dbname": "database"
> }
> }'

2. Create a Salesloft Connection

The following request creates a Salesloft Connection that authenticates through Polytomic Connect’s embedded OAuth modal. You can also connect with a Salesloft API key or run OAuth yourself and pass the client credentials to Polytomic — see the Salesloft connection configuration for details.

cURL
Python
Typescript
Go
$curl --request POST \
> --url https://app.polytomic.com/api/connections \
> --header "accept: application/json" \
> --header "content-type: application/json" \
> --header "X-Polytomic-Version: 2025-09-18" \
> --header "Authorization: Bearer ${POLYTOMIC_API_KEY}" \
> -d '{"name": "My Salesloft Connection","type": "salesloft", "configuration": {"auth_method": "oauth"}}'

If you authenticate to Salesloft with OAuth instead of an API key, open the URL returned in the auth_url field of the response to complete the flow.

OAuth redirection

By default, the API expects auth_url to open in a new browser window. Set the optional redirect_url parameter in the request body to change the redirect target.

3. Create a Snowflake model

The following request creates a model over a Snowflake query. Replace the query with your own:

cURL
Python
Typescript
Go
$curl --request POST \
> --url https://app.polytomic.com/api/models \
> --header "accept: application/json" \
> --header "content-type: application/json" \
> --header "X-Polytomic-Version: 2025-09-18" \
> --header "Authorization: Bearer ${POLYTOMIC_API_KEY}" \
> -d '{
> "name": "Active Users",
> "configuration": {
> "query": "SELECT MAX(last_activity_date) AS last_activity_date, plan, first_name, last_name, email FROM users GROUP BY plan, first_name, last_name, email",
> },
> "connection_id": "YOUR-SNOWFLAKE-CONNECTION-ID"
> }'

4. List the Salesloft target objects

Polytomic can sync to Salesloft Accounts, People, and Cadences. Every Salesloft cadence appears as a target object alongside Accounts and People:

cURL
Python
Typescript
Go
$curl --request POST \
> --url https://app.polytomic.com/api/connections/YOUR_SALESLOFT_CONNECTION_ID/modelsync/targetobjects \
> --header "accept: application/json" \
> --header "content-type: application/json" \
> --header "Authorization: Bearer ${POLYTOMIC_API_KEY}"

5. List the target fields on a Salesloft cadence

Call the Get Sync Target Fields endpoint to list the target fields available on the cadence you plan to sync to. The fields you map in Step 6 come from this set:

cURL
Python
Typescript
Go
$curl -G \
> --url https://app.polytomic.com/api/connections/YOUR_SALESLOFT_CONNECTION_ID/modelsync/target/fields \
> --header "accept: application/json" \
> --header "content-type: application/json" \
> --header "Authorization: Bearer ${POLYTOMIC_API_KEY}" \
> --url-query "target=YOUR_SALESLOFT_CADENCE_ID"

6. Sync Snowflake users into a Salesloft cadence

This sync matches existing Salesloft Person records on email and also syncs first_name and last_name from Snowflake.

If a Person does not exist in Salesloft, Polytomic creates it before adding it to the cadence. If it does exist, Polytomic updates it with the mapped field values before adding it.

Specify the target cadence with target.object:

cURL
Python
Typescript
Go
$curl --request POST \
> --url https://app.polytomic.com/api/syncs \
> --header "accept: application/json" \
> --header "content-type: application/json" \
> --header "Authorization: Bearer ${POLYTOMIC_API_KEY}" \
> -d '{
> "name": "Snowflake to Salesloft Cadence Sync",
> "mode": "updateOrCreate",
> "identity": {
> "source": {
> "field": "email",
> "model_id": "YOUR_SNOWFLAKE_MODEL_ID"
> },
> "target": "Email",
> "function": "Equality"
> },
> "fields": [
> {
> "source": {
> "field": "first_name",
> "model_id": "YOUR_SNOWFLAKE_MODEL_ID"
> },
> "target": "FirstName"
> },
> {
> "source": {
> "field": "last_name",
> "model_id": "YOUR_SNOWFLAKE_MODEL_ID"
> },
> "target": "LastName"
> }
> ],
> "schedule": {
> "frequency": "manual"
> },
> "target": {
> "connection_id": "YOUR_SALESLOFT_CONNECTION_ID",
> "object": "my-salesloft-cadence"
> }
> }'