# 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. ```mermaid flowchart LR S[Segment] --> A[Activation] A --> C[Marketing Channel] ``` 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: | Field | Purpose | | --- | --- | | `name` | Display name for this sync | | `connection` | Which destination (set up by your admin) | | `enabled` | Turn sync on/off without deleting | | `schedule` | When 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](https://docs.treasuredata.com/integrations). ## 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 ` 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): ```mermaid flowchart LR S[Segment
Reservoir] --> SF[Salesforce] S --> GA[Google Ads] S --> Email[Email Platform] ``` 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 ` 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](/treasure-code/book/11-first-journey) 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.*