Import - Snowflake Integration

Last Updated: 13/3/2026     Tags: Snowflake, Import, Integration, SQL, Data Warehouse
  • Switch Version
  • V5
  • V4

Taguchi offers a self-service Snowflake integration that allows you to import data directly from your Snowflake data warehouse into Taguchi using custom SQL queries. This integration provides automated, scheduled imports of subscriber data, custom fields, lists, and audiences, with intelligent field mapping based on your query results.

This integration enables secure and efficient data transfers from Snowflake, allowing you to leverage your existing data warehouse infrastructure for marketing operations. With the Snowflake import integration, the process is fully automated, ensuring that your data is regularly updated without manual intervention.

Key Features

  • Query-based data import: Write custom SQL queries to retrieve exactly the data you need
  • Intelligent field detection: Automatically detects available fields from your query results
  • Field metadata display: See data types and sample values for all fields to assist with mapping
  • Two-phase setup: Simplified configuration process for new integrations
  • Multiple import types: Support for subscriber data, custom fields, lists, partition data, and audiences
  • Scheduled execution: Run imports on hourly, daily, weekly, monthly, or yearly schedules
  • Secure credential management: Encrypted storage of Snowflake credentials

Prerequisites

Credentials

You will need to set up a Snowflake credential before you can create a Snowflake import integration. The credential should include:

  • Account name
  • Username
  • Programmatic access token (stored securely)
  • Database name
  • Warehouse name
  • Schema name
  • Role (optional)

In order to set up credentials, you will need to be an administrator of your organization. Navigate to Settings > Credentials to create a new Snowflake credential.

For more information about setting up Snowflake credentials, refer to the relevant section of the Snowflake User Guide.

Snowflake Permissions

Your Snowflake user account must have appropriate permissions to:

  • Execute SELECT queries on the tables and views you want to access
  • Use the specified warehouse
  • Access the specified database and schema

Snowflake Import Integration Setup

To create a new integration, ensure that you have the required User Type integration role privileges assigned to you. The 'integration' page is under Settings > Integrations.

Integrations Page

Select 'New Integration' and a new screen will popup.

New Integration

Two-Phase Setup for New Integrations

When creating a new Snowflake integration, you'll follow a two-phase setup process:

Phase 1: Configuration

In the first phase, you'll only see three sections:

  1. Details - Basic integration information
  2. Configuration - Snowflake connection and query settings
  3. Notes - Optional notes about the integration

Snowflake Phase 1

The save button will read "Save and continue" instead of "Save changes".

Phase 2: Data Mapping

After clicking "Save and continue", Taguchi will:

  1. Save your integration configuration
  2. Execute your SQL query with a LIMIT 1 to retrieve field information
  3. Display the complete setup modal with all available fields from your query

You'll then see additional sections:

  • Map Data - Configure how Snowflake fields map to Taguchi fields
  • Extract Target - Set target expressions for filtering
  • Activate/Deactivate buttons

Snowflake Phase 2

The Taguchi Object will default to "Subscriber Normal" for convenience.

Configuration Sections

Details

Snowflake Phase 2

  1. Name: Set the name of the integration.

  2. Type: Select 'Import: Snowflake'. When selecting the integration type, note that integrations are arranged in groups: API, Import, Export, Messaging, and Scheduled. Some integrations may appear in multiple groups.

  3. Schedule start date/time: Determines when the integration will first run. When used in tandem with the Repeats setting, this controls the ongoing schedule.

  4. Repeats: Choose the frequency for running the integration:

    • Yearly
    • Monthly
    • Weekly
    • Daily
    • Hourly

    Note: Consider Snowflake query execution time and data processing requirements when selecting frequency. Daily or weekly repeats are recommended for most use cases.

  5. Send status notifications to: Optionally add a notification list to receive status updates when the integration runs.

Configuration

Snowflake Configuration

  1. Credential to use: Choose the Snowflake credential you've set up in the Credentials page.

  2. Snowflake Query: Enter your SQL query to retrieve data from Snowflake. The query can be as simple or complex as needed:

    select * from SNOWFLAKE_SAMPLE_DATA.TPCDS_SF10TCL.CUSTOMER limit 100;
    

    Query Guidelines:

    • Use standard SQL SELECT statements
    • Include all fields you want to import
    • Apply filtering and transformations within your query (WHERE, JOIN, etc.)
    • Multi-line queries are supported for improved readability
    • You can include LIMIT, ORDER BY, GROUP BY, and HAVING clauses as needed
    • Queries are executed with your Snowflake account permissions
  3. Ignore null text values: When enabled, treats representations like \N or NULL as empty values rather than literal text. This is typically not needed for Snowflake, where null values should be represented as SQL NULLs.

Map Data

After completing the first phase and clicking "Save and continue", you'll see the Map Data section with intelligent field detection.

Before clicking "Save and continue" Snowflake Phase 2

After clicking "Save and continue" Snowflake Phase 2

Foreign Field Selection

One of the key features of the Snowflake integration is automatic field detection. After your query runs, Taguchi:

  1. Detects all available fields from your query results
  2. Displays field metadata including:

    • Data type (shown in bold) - e.g., text, number, date
    • Sample value (shown in italic) - e.g., "e.g. customer@example.com"
  3. Provides dropdown menus populated with your detected fields

Snowflake Field metadata

  1. Updates when you click "Update source fields"

Field metadata example:

  • Below each field dropdown, you'll see metadata like: text e.g. customer@example.com
  • Data type appears in bold, sample values in italic

Snowflake Field metadata

Update Source Fields

For existing integrations, an "Update source fields" button appears in the Map Data section header. Use this to:

  • Refresh the list of available fields if you've modified your query
  • Detect new fields added to your query
  • Update field metadata and sample values

Snowflake Field metadata

When you click this button:

  • Your current configuration is preserved
  • The query is re-executed to fetch field information
  • New fields are automatically added to the mapping section
  • Existing mappings remain unchanged

Taguchi Object Types

The Snowflake integration supports multiple import types. Select the appropriate Taguchi Object based on what you want to import:

Snowflake Field metadata

Subscriber Normal

Import subscriber profile data including email, reference, custom fields, and list assignments.

Snowflake Field metadata

Key Fields:

Snowflake Field metadata

  • Add to subscriber list: Subscriber list ID to add imported subscribers to
  • Performs Subscription Management: Manage subscriptions and unsubscriptions
  • Subscriber Partition Custom Field (Optional): Partition field for segmentation
  • Data Mapping: Map Snowflake fields to Taguchi subscriber fields

Data Mapping:

Snowflake Field metadata

  • Map your Snowflake query fields (shown in dropdown menus) to Taguchi fields
  • Each mapping row shows:
    • Source Field: Snowflake column from your query (dropdown selection)
    • Taguchi Field: Target field in Taguchi
    • Field metadata (data type and sample value) appears below each dropdown

Subscriber Custom Field

Create or update custom fields for subscribers.

Key Fields:

Snowflake Field metadata

  1. Custom Field Subscriber Reference Taguchi Field: Match by email, ref (external ID), phone, or subscriber ID
  2. Custom Field Subscriber Reference Foreign Field: Snowflake field containing the reference value
  3. Custom Field Field Name Foreign Field: Snowflake field containing custom field names
  4. Custom Field Field Value Foreign Field: Snowflake field containing custom field values
  5. Custom Field Group Foreign Field (Optional): Field for custom field grouping
  6. Custom Field Create Subscribers If They Do Not Exist: Create new subscribers during import

Subscriber List

Manage list subscriptions for subscribers.

Key Fields:

Snowflake Field metadata

  1. List Subscriber Reference Taguchi Field: Match by email, ref (external ID), phone, or subscriber ID
  2. List Subscriber Reference Foreign Field: Snowflake field for subscriber reference
  3. List Reference Foreign Field: Field containing list identifiers
  4. List Subscribed Boolean Field (Optional): Field indicating subscription status
  5. List Unsubscribed Boolean Field (Optional): Field indicating unsubscription
  6. List Start Datetime Field (Optional): Subscription start date/time
  7. List End Datetime Field (Optional): Subscription end date/time
  8. List Template String: Template for list reference formatting
  9. List Resub Days: Days before re-subscription allowed
  10. List Resub Timestamp Field (Optional): Re-subscription timestamp field
  11. List Resub Timestamp Format: Format for timestamp parsing

Partition Custom Field

Import custom field data for partitions. One column must be designated as the partition reference, which will match against the partition external ID; all other fields will be imported as partition custom fields with names matching the column names.

Key Fields:

Snowflake Field metadata

  • Partition Reference Foreign Field: Snowflake field identifying the partition external ID

Subscriber Audience

Manage externally-managed audience memberships from Snowflake data.

Key Fields:

Snowflake Field metadata

  1. Subscriber Reference Taguchi Field: Match by ref (external ID), email, phone, or subscriber ID
  2. Subscriber Reference Foreign Field: Snowflake field for subscriber reference
  3. Audience Name Foreign Field: Field containing audience names (audiences will be auto-created)
  4. Audience Membership Foreign Field: Boolean field for membership (true/false)
  5. Audience Start Timestamp Foreign Field (Optional): When membership begins
  6. Audience End Timestamp Foreign Field (Optional): When membership ends

Externally-Managed Audiences:

When using the Subscriber Audience import type, Taguchi creates externally-managed audiences. These audiences:

  • Are populated entirely from your integration data
  • Use a special target expression format: __external:{audience_id}
  • Cannot be edited manually in the audience setup interface
  • Are fully synchronized with each import (full sync - removes subscribers not in current dataset)
  • Display a note in the audience setup modal indicating external management

When viewing an externally-managed audience in the audience setup modal:

  • The target expression editor is hidden
  • A note appears: "This audience is externally managed. Its membership is updated via an integration."

Note: Add optional notes about the integration for documentation purposes. Notes are visible to all users with access to integrations.

Activating Your Integration

Save Changes and Activate

Integration Activate

Once you have configured all required sections:

  1. Click "Save changes" to save your configuration (or "Save and continue" for new integrations)
  2. Click "Activate" to enable the integration

The integration will run according to your configured schedule starting from the specified start date/time.

Deactivate

Integration Deactivate

To stop the integration, click "Deactivate". This will prevent Taguchi from importing data from Snowflake according to the schedule.

Active Integration Status

Active Integration

Once the integration has been saved and activated, the on/off icon of the integration card will change from yellow (Off) to green (On) indicating that it is now activated.

Updating an Existing Integration

Modifying Configuration

Update Integration Update Integration Active

You can update your integration whether it is activated or deactivated:

  1. Make your desired changes (query, schedule, field mappings, etc.)
  2. Click "Save changes"
  3. The integration will be updated immediately

Important Notes:

  • Changing your Snowflake Query does not automatically clear existing field mappings
  • After modifying your query, click "Update source fields" to refresh available fields
  • New fields from your query are automatically added to the mapping section
  • Existing field mappings are preserved when updating source fields

Updating Source Fields

For existing integrations, you can refresh the detected fields from your query:

  1. Modify your Snowflake Query if needed
  2. Click "Save changes" to save the new query
  3. Click "Update source fields" in the Map Data section
  4. Taguchi will re-execute your query and update available fields
  5. New fields appear in the dropdown menus and are added to the mapping section

This workflow allows you to iteratively refine your query without losing your mapping configuration.

Integration Status & Logs

Users can determine the status of an integration by looking at the status symbol (On/Off icon) color within the integration tile.

Integration Status

  • Green – Integration is active and has either been deployed or is awaiting deployment
  • Yellow – Integration has been deactivated
  • Red – Integration has failed to deploy

Viewing Logs in the UI

Users can view detailed integration logs directly in the Taguchi UI to troubleshoot issues.

To access logs:

  1. Navigate to Settings > Integrations
  2. Select the integration you want to review
  3. Click on "View Status" in the top right corner to see recent activity, including:
    • Timestamps
    • Status updates
    • Error messages (if any)
    • Records processed

Integration Logs

If an integration fails, checking the logs can help identify issues such as incorrect credentials, invalid SQL queries, connection timeouts, or data mapping errors.

Integration Deployment Status

Integration Status Info

Hover your cursor over the status symbol (On/Off icon) to view the integration status message.

The messages will vary based on the deployment of the integration:

  • Green – "Integration has not yet run (Start time/date have not occurred yet)" / "Integration is deployed. Last successful run on [date/time]"
  • Yellow – "Integration is not deployed (Deactivated)"
  • Red – "Integration Failed to run on [date/time]"

Viewing Integration Schedules and Next Run Details

The Integration UI provides visibility into integration schedules by displaying the scheduled frequency and the time of the next run when hovering over the status icon. Adding to that, the integration UI supports list view with sortable columns so you can see the next run timestamp and frequency there too.. This helps users quickly check when integrations are scheduled to execute and manage them more efficiently.

Integration View Integration View

Best Practices

Query Optimization

  1. Use selective queries: Only query the data you need to import

    SELECT email, first_name, last_name 
    FROM customers 
    WHERE updated_date >= DATEADD(day, -7, CURRENT_DATE())
    
  2. Apply filters in Snowflake: Use WHERE clauses to filter data at the source

  3. Limit result sets appropriately: For testing, use LIMIT to verify your query before full imports
  4. Use incremental imports: Query only changed/new records using timestamp filters
  5. Optimize execution time: Ensure queries complete within 15 minutes to avoid timeouts

Scheduling

  1. Consider data freshness requirements: How often does your source data change?
  2. Account for processing time: Give adequate time between runs for data processing
  3. Avoid peak hours: Schedule during off-peak hours if possible
  4. Start with lower frequency: Begin with daily or weekly, adjust based on needs
  5. Monitor execution times: Check logs to ensure queries complete successfully

Field Mapping

  1. Use "Update source fields": Refresh fields when you modify queries
  2. Review metadata: Check data types and sample values before mapping
  3. Test with small datasets: Use LIMIT in your query for initial testing
  4. Preserve mappings: Mappings are retained when updating source fields
  5. Document field purposes: Use the Notes section to document your mapping logic

Security

  1. Use least-privilege credentials: Grant only necessary Snowflake permissions
  2. Rotate credentials regularly: Update Snowflake passwords periodically
  3. Review query results: Ensure no sensitive data is exposed unintentionally
  4. Monitor access logs: Check Snowflake access logs for unusual activity
  5. Test in non-production first: Verify queries with test data before production use

Troubleshooting

Common Issues

Query Timeout Errors

If your integration fails with timeout errors:

  • Optimize your SQL query for performance
  • Add appropriate indexes to your Snowflake tables
  • Reduce the result set size using WHERE clauses
  • Consider partitioning large queries into multiple integrations
  • Ensure your query completes within 15 minutes

Connection Errors

If you see connection errors:

  • Verify your Snowflake credentials are correct
  • Check that your Snowflake user has necessary permissions
  • Confirm the database, warehouse, and schema names are correct
  • Ensure your Snowflake account is active and accessible
  • Verify network connectivity to Snowflake

Schema Does Not Exist or Not Authorized

If your query fails with errors like Schema ... does not exist or not authorized:

  • Verify the database and schema names in your SQL query
  • Confirm the table/view exists in Snowflake
  • Ensure your Snowflake role has USAGE on the database and schema, plus SELECT on the table/view

Integration Schema Error

Field Mapping Issues

If fields aren't appearing or mapping incorrectly:

  • Click "Update source fields" to refresh available fields
  • Verify your SQL query returns the expected columns
  • Check field metadata (data type and sample values) for accuracy
  • Ensure column names don't contain special characters
  • Confirm your query executes successfully in Snowflake directly

Data Not Importing

If the integration runs successfully but data doesn't appear:

  • Check that your target expressions (if any) are correct
  • Verify list IDs and subscriber references are valid
  • Review the integration logs for warnings or errors
  • Ensure data mapping fields match your Taguchi configuration
  • Confirm subscribers exist (or enable "create if not exist" for custom fields)

Scheduled Execution Issues

If your integration doesn't run as scheduled:

  • Verify the integration is activated (green status)
  • Check that the start date/time is in the past
  • Ensure the repeat frequency is configured correctly
  • Review integration logs for execution history
  • Confirm your timezone settings are correct

Getting Help

If you are having trouble with this integration, please contact Taguchi Support for assistance.

When contacting support, please provide:

  • Integration name and ID
  • Your SQL query (with sensitive data removed)
  • Error messages from the logs
  • Integration configuration details
  • Expected vs. actual behavior

Example Use Cases

Basic Subscriber Import

Import subscriber profile data from Snowflake:

SELECT 
  customer_id AS ref,
  email_address AS email,
  first_name,
  last_name,
  phone_number,
  subscription_date
FROM customer_database.customers
WHERE active_status = 'ACTIVE'
  AND email_address IS NOT NULL;

Map fields:

  • ref → Subscriber external ID (ref)
  • email → Email profile field
  • first_name → First name profile field
  • last_name → Last name profile field
  • phone_number → Phone profile field

Audience Management from Segments

Automatically sync marketing segments as audiences:

SELECT 
  email,
  segment_name,
  CASE WHEN segment_active = 'Y' THEN TRUE ELSE FALSE END AS is_member,
  segment_start_date,
  segment_end_date
FROM customer_segments.segment_membership
WHERE segment_type = 'marketing';

Use Subscriber Audience import type, and map:

  • email → Subscriber reference column (email)
  • segment_name → Audience Name
  • is_member → Audience Membership
  • segment_start_date → Audience Start Timestamp
  • segment_end_date → Audience End Timestamp

Incremental Daily Updates

Import only records changed in the last 24 hours:

SELECT 
  subscriber_ref,
  email,
  updated_field,
  updated_value,
  update_timestamp
FROM subscriber_updates.daily_changes
WHERE update_timestamp >= DATEADD(day, -1, CURRENT_DATE());

The examples in the documentation are just examples, you would need to adapt them to refer to whatever their own tables and fields are called

Schedule daily to capture incremental changes efficiently. To run an initial data load or re-synchronize the entire dataset, simply remove the WHERE clause temporarily and re-run the integration.