Skip to content

Chapter 10: Connecting Channels ​

The Problem ​

You've built the perfect segment. Now what? The audience sitting in Treasure AI doesn't help your marketing until it reaches Salesforce, Google Ads, your email platform, or wherever you run campaigns.

The Key Idea ​

Core concept

Activations connect segments to external channels. Define where the audience should go, what data to include, and when to sync.

An activation is the bridge between your segment and your marketing tools.

Adding an Activation ​

Tell AI where you want to send the segment:

> "Send this segment to Salesforce daily"

AI adds an activation to your segment YAML:

yaml
name: High-Value Recent Buyers

rule:
  type: Value
  attribute: lifetime_value
  operator:
    type: Greater
    value: 1000

activations:
  - name: Salesforce Sync
    connection: salesforce-prod
    schedule:
      type: daily
      timezone: America/New_York

Understanding Activations ​

Each activation has:

FieldPurpose
nameDisplay name for this sync
connectionWhich destination (set up by your admin)
enabledTurn sync on/off without deleting
scheduleWhen to sync

Available Connections ​

List connections configured by your data team:

bash
tdx connection list
TYPE                             NAME                  OWNER
salesforce_marketing_cloud_v2    sfmc-prod             Jane Smith
google_ads                       google-ads-main       Marketing Team
s3_v2                            s3-data-lake          Data Team
snowflake                        snowflake-warehouse   Data Team

You reference connections by their NAME in your activation YAML. The TYPE tells you what connector_config fields are available.

For a full list of supported integrations, see the Treasure AI Integrations documentation.

Multiple Activations ​

A segment can activate to multiple channels:

> "Also send this to Google Ads and our email platform"
yaml
activations:
  - name: Salesforce Sync
    connection: salesforce-prod
    schedule:
      type: daily
      timezone: America/Los_Angeles

  - name: Google Ads Audience
    connection: google-ads-main
    schedule:
      type: daily
      timezone: America/Los_Angeles

  - name: Email Suppression
    connection: sendgrid-marketing
    schedule:
      type: hourly

Same segment, three destinations, possibly different schedules.

Scheduling Options ​

Common schedule patterns:

Daily:

yaml
schedule:
  type: daily
  timezone: America/New_York

Hourly:

yaml
schedule:
  type: hourly

Weekly (Monday):

yaml
schedule:
  type: weekly
  repeat_sub_frequency: [1]  # 1 = Monday
  timezone: UTC

Custom (cron):

yaml
schedule:
  type: cron
  cron: "0 6,12,18 * * *"  # 6am, 12pm, 6pm daily
  timezone: America/Los_Angeles

Choosing What Data to Send ​

By default, activations send customer identifiers. You can specify additional columns:

> "Include email, first name, and lifetime value in the Salesforce sync"
yaml
activations:
  - name: Salesforce Sync
    connection: salesforce-prod
    all_columns: false
    columns:
      - email
      - first_name
      - lifetime_value
    schedule:
      type: daily
      timezone: America/Los_Angeles

Each destination has different requirements for what columns are needed or allowed.

Bringing In Behavior History ​

Sometimes a flat list of customer columns isn't enough, you want to send a customer's recent page views or purchases alongside their profile. That's what behaviors: is for: it joins in event history from up to 4 behavior tables.

yaml
activations:
  - name: Marketing Export
    connection: my-s3-connection
    behaviors:
      - behavior_table: page_views
        join_strategy: Top-N
        join_row: 10
        columns:
          - url
          - timestamp
      - behavior_table: purchases
        join_strategy: All

Think of each entry in behaviors: as its own mini-export: pick the table, decide how many rows per customer to bring in (join_strategy), and choose which columns matter. tdx sends up to 4 of these joined tables in a single activation, so you can combine, say, browsing history and purchase history in one export without building separate pipelines.

Connector Configuration ​

Each connector type has specific settings. Discover available fields with:

bash
tdx connection schema salesforce_marketing_cloud_v2
Connector Schema: salesforce_marketing_cloud_v2

de_name: Data Extension Name [text] (required)
shared_data_extension: Shared Data Extension [boolean]
data_operation: Data Operation [dropdown]
  Options: upsert, replace
create_new_de: Create New Data Extension [boolean]
folder_path: Folder Path [text]
  Show when: create_new_de=[true]
...

Salesforce Marketing Cloud Example ​

yaml
activations:
  - name: SFMC Customer Sync
    connection: sfmc-prod
    columns:
      - email
      - first_name
      - lifetime_value
    connector_config:
      de_name: HighValueCustomers
      data_operation: upsert
      shared_data_extension: false
    schedule:
      type: daily
      timezone: America/Los_Angeles

S3 Export Example ​

yaml
activations:
  - name: S3 Data Lake Export
    connection: s3-data-lake
    all_columns: true
    connector_config:
      bucket: my-company-data
      path: segments/high-value/data.csv
      format: csv
      compression: gz
    schedule:
      type: daily
      timezone: UTC

Snowflake Example ​

yaml
activations:
  - name: Snowflake Sync
    connection: snowflake-warehouse
    all_columns: true
    connector_config:
      warehouse: COMPUTE_WH
      database: MARKETING
      schema: SEGMENTS
      table: HIGH_VALUE_CUSTOMERS
      mode: truncate_insert            # insert | truncate_insert | merge
    schedule:
      type: daily
      timezone: America/Los_Angeles

Discover Fields

Always run tdx connection schema <type> to see available fields for your connector. Each connector has different required and optional settings.

Enabling and Disabling ​

Pause an activation without removing it:

> "Disable the Google Ads activation"
yaml
  - name: Google Ads Audience
    connection: google-ads-main
    enabled: false  # Paused

Re-enable when ready:

> "Enable the Google Ads activation"

Mental Model: Pipelines ​

Think of activations as water pipes from a reservoir (your segment):

Each pipe can be turned on or off. Each can flow at different rates (schedules). The water (audience data) is the same; only the destinations differ.

Notifications ​

Get alerted when syncs complete or fail:

> "Notify me by email when the Salesforce sync finishes"
yaml
activations:
  - name: Salesforce Sync
    connection: salesforce-prod
    notification:
      on_success: true
      on_failure: true
      email: "marketing-team@company.com"

Verifying Activations ​

Before pushing, validate:

> "Validate the segment with activations"
✓ Segment rules are valid
✓ Connection 'salesforce-prod' exists and is authorized
✓ Schedule syntax is valid
✓ Required columns are available

Ready to push.

Dry Run ​

See what would be synced:

> "Dry run the Salesforce activation"
DRY RUN - Salesforce Sync

Would sync 3,247 customers to salesforce-prod
Columns: email, first_name, lifetime_value
Schedule: Daily at 06:00 America/New_York

No data was sent. Remove --dry-run to activate.

Pitfalls ​

"Connection not found."

The connection might not be set up or you might have the wrong name:

bash
tdx connection list

"What connector_config fields do I need?"

Check the schema for your connector type:

bash
tdx connection schema salesforce_marketing_cloud_v2

"Missing required columns."

Some destinations require specific fields. The schema output shows which fields are required vs optional.

"Sync is failing."

Validate your activation before pushing:

bash
tdx sg push --dry-run

What You've Learned ​

  • Activations send segments to external channels
  • tdx connection list shows available connections
  • tdx connection schema <type> reveals connector_config fields
  • Schedule syncs daily, hourly, weekly, or custom
  • Specify which columns to include
  • Each connector type has specific configuration options
  • Validate with tdx sg push --dry-run before pushing

Next Step ​

You can build and activate segments. Chapter 11 introduces journeys—multi-step customer experiences that go beyond one-time audience syncs.


You've connected to the outside world. Next, you'll orchestrate experiences across time.