Skip to content

Chapter 10: Connecting Channels

The Problem

You've built the perfect segment. Now what? The audience sitting in Treasure Data 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 Data 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.

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.