iPaaS
Hightouch
API integration
Ship iPaaS features without building the integration. Full Hightouch API access via Proxy and 60+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with Hightouch
Common scenarios for SaaS companies building Hightouch integrations for their customers.
Offer Bring-Your-Own-Warehouse activation to enterprise clients
Let your enterprise customers power your SaaS with data from their own Snowflake, BigQuery, or Databricks via their Hightouch workspace — no CSV uploads or custom pipelines. Truto handles auth and provisioning so you can ship warehouse-native onboarding in days.
Enable just-in-time audience freshness for ad and campaign tools
If you run an AdTech, personalization, or campaign platform, you can trigger your users' Hightouch syncs on demand right before a bidding window or send, instead of waiting for batch schedules. This guarantees audiences are fresh when it matters most.
Power event-driven transactional messaging from the warehouse
Loyalty, lifecycle, and transactional messaging SaaS products can fire a Hightouch campaign the moment a user crosses a threshold in your app, pulling the latest warehouse state into a personalized send. Truto exposes the campaign trigger without you managing Hightouch API quirks.
Standardize activation across hundreds of end-user accounts
Use Hightouch sync templates to roll out a single, governed activation pattern across every one of your customers' workspaces. You maintain the blueprint; each customer gets syncs provisioned automatically against their own models and destinations.
Add governed deployment workflows for enterprise buyers
Enterprise customers require change management before new data mappings go live. By exposing Hightouch sync drafts and approval flows inside your product, you satisfy compliance requirements without building a review system from scratch.
What You Can Build
Ship these features with Truto + Hightouch
Concrete product features your team can ship faster by leveraging Truto’s Hightouch integration instead of building from scratch.
One-click Hightouch workspace connector
Let end users connect their Hightouch workspace through a Truto-managed auth flow and immediately start provisioning sources, models, and syncs from inside your product.
Programmatic destination and sync provisioning
Create Hightouch destinations, models, and syncs on behalf of your users so their warehouse data starts flowing into your platform automatically after onboarding.
On-demand sync triggers with run status polling
Expose a 'Refresh now' action that triggers a Hightouch sync and surfaces live run status from the sync runs endpoint, so users see exactly when their data is up to date.
Sync template management for multi-tenant rollouts
Define a master sync template once and deploy standardized configurations across every connected customer workspace, with updates propagated through the templates API.
In-app approval UI for Hightouch sync drafts
Surface pending sync drafts in your product and let authorized reviewers approve or reject them, giving enterprise customers an auditable change-control workflow.
Identity resolution and match booster triggers
Fire Hightouch IDR runs or Match Booster enrichment jobs from your app before pushing audiences downstream, improving dedupe quality and ad match rates for your customers.
Agentic campaign and message orchestration
Clone, update, and trigger Hightouch Decision Engine messages and campaigns programmatically to power real-time, warehouse-personalized sends from inside your product.
SuperAI
Hightouch AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
hightouch_campaigns_trigger
Trigger an API campaign send in Hightouch: start an API-triggered campaign to the given recipients. Returns: handle, id, status, sendId, reason, missingVariables. Required: campaign_id, recipients.
get_single_hightouch_sends_batch_get_by_id
Get the delivery status of up to 100 Hightouch campaign sends in one request, using the sendId values from the campaign trigger endpoint. Returns: sendId, status, reason. Max 100 sends per request. Required: id, sendIds.
create_a_hightouch_signup
Capture a signup in Hightouch: record consent for a delivery handle plus the fields the form collected. Returns: status, message, code, syncId, finishedAt, syncRunId. Required: channel, handle. Consent may settle immediately or await double opt-in confirmation depending on the channel's configuration.
create_a_hightouch_model_size
Start a background job in Hightouch to compute the size of an audience (model). Returns: jobId. Required: model_id.
get_single_hightouch_model_size_by_id
Get the state of an audience size job in Hightouch. Returns: jobId, status, size, evaluatedAt, error. Required: id, model_id.
get_single_hightouch_decision_engine_flow_by_id
Get a single Hightouch decision engine flow by its UUID. Returns: id, name, workspaceId, decisionEngineId, audienceId, status. Required: id.
list_all_hightouch_decision_engine_flows
List decision engine flows in the Hightouch workspace. Returns each flow's id, name, workspaceId, decisionEngineId, audienceId, and status. Optional: name (filter by flow name), orderBy (id or name).
get_single_hightouch_message_by_id
Get a single Hightouch decision engine message by id within a flow. Returns: id, name, channelId, config, tags, guardrails, variables, createdAt, updatedAt, identifier, value. Required: id, flow_id.
update_a_hightouch_message_by_id
Update a decision engine message in a Hightouch flow. Returns the updated message: id, name, channelId, config, tags, guardrails, variables, createdAt, updatedAt. Required: id, flow_id.
delete_a_hightouch_message_by_id
Delete a decision engine message in a Hightouch flow: it is soft-deleted and disabled, so it is no longer returned by the API and is ineligible for future sends. Returns an empty 204 response on success. Required: id, flow_id.
hightouch_messages_clone
Clone a decision engine message within a Hightouch flow: the copy keeps the source message's config, tags, guardrails, and variables and is created disabled. Returns the new message: id, name, channelId, config, createdAt. Required: flow_id, message_id.
list_all_hightouch_messages
List decision engine messages for a Hightouch flow. Returns each message with id, name, channelId, config, guardrails, variables, createdAt. Required: flow_id.
create_a_hightouch_message
Create a message in a Hightouch decision engine flow. Returns the created message with its id, name, channelId, config, guardrails, variables, and createdAt. Required: flow_id, name, channelId, config.
create_a_hightouch_run
Trigger a decision engine run for a specific decision engine flow in Hightouch. Returns: flowsEnqueued. Required: flow_id.
list_all_hightouch_runs
List Identity Resolution (IDR) runs for a given graph in Hightouch. Returns: fullRerun, stats, finishedAt, startedAt, createdAt, error, status, graphId, id. Required: graph_id.
get_single_hightouch_destination_by_id
Get a Hightouch destination by id. Returns the destination object including id, name, slug, type, workspaceId, syncs, and configuration. Required: id.
update_a_hightouch_destination_by_id
Update an existing Hightouch destination by id. Returns the updated destination object including id, name, slug, type, and configuration. Required: id.
list_all_hightouch_destinations
List Hightouch destinations in the current workspace. Returns destinations with id, name, slug, type, workspaceId, syncs, and configuration.
create_a_hightouch_destination
Create a new Hightouch destination. Returns the created destination object including id, name, slug, type, and configuration. Required: name, slug, type, configuration.
get_single_hightouch_events_contract_by_id
Get an event contract in Hightouch by id. Returns the full contract including id, name, slug, workspaceId, events (with their schema and ALLOW/BLOCK handling), eventSources, onUndeclaredSchema, createdAt, and updatedAt. Required: id.
update_a_hightouch_events_contract_by_id
Update an existing event contract in Hightouch by patching its event definitions. Returns the updated contract including id, name, workspaceId, events, onUndeclaredSchema, eventSources, createdAt, and updatedAt. Required: id.
list_all_hightouch_events_contracts
List all event contracts in your Hightouch workspace. Returns: id, name, slug, description, onUndeclaredSchema, events, workspaceId, createdAt, updatedAt, eventSources. Filter by name; order by id, name, createdAt, or updatedAt.
create_a_hightouch_events_contract
Create a new event contract in Hightouch with a name and event definitions. Returns the created contract including id, name, workspaceId, events, onUndeclaredSchema, eventSources, createdAt, and updatedAt. Required: name.
get_single_hightouch_events_domain_by_id
Get an event domain in Hightouch by its id, including its events and components. Returns: id, name, slug, description, onUndeclaredSchema, events, components, workspaceId, createdAt, updatedAt, identifier, value. Required: id.
update_a_hightouch_events_domain_by_id
Update an existing event domain in Hightouch by id, replacing its events and components. Returns the updated domain with id, name, slug, onUndeclaredSchema, events, components, createdAt, and updatedAt. Required: id.
list_all_hightouch_events_domains
List all event domains in the current Hightouch workspace, optionally filtered by name or by event source slug (which also limits components to those applicable to the source). Returns: id, name, slug, description, onUndeclaredSchema, schemaVersionPath, events, components, workspaceId, createdAt, updatedAt, eventSources, identifier, value.
create_a_hightouch_events_domain
Create a new event domain in Hightouch, with its events and components. Returns the created domain with id, name, slug, onUndeclaredSchema, events, components, createdAt, and updatedAt. Required: name.
hightouch_idrs_trigger
Trigger a new Identity Resolution (IDR) run for a graph in Hightouch. Returns: id. Required: graph_id.
create_a_hightouch_queue_for_reprocessing
Queue identifier values for reprocessing in Hightouch. Triggers an async job that reprocesses clusters containing the given identifiers and adds them to the blocklist by default. Returns: requestId. Required: graph_id, identifiers.
get_single_hightouch_reprocess_status_by_id
Get the status of an Identity Resolution reprocessing job in Hightouch. Returns: status, queuedAt, reprocessedAt, reprocessedRunId, recordFound, error. Required: id, graph_id.
hightouch_id_graphs_trigger
Trigger a run for an Identity Resolution graph in Hightouch. Returns: id. Optionally pass fullRerun (boolean) to rerun the entire graph. Deprecated: use the /idr/{graph_id}/trigger endpoint instead. Required: graph_id.
create_a_hightouch_match_booster_trigger
Trigger a Match Booster enrichment run for a model in Hightouch. Returns: id, status, createdAt. The model must have Match Booster enabled. Required: model_id.
list_all_hightouch_match_booster_runs
List Match Booster enrichment runs for a Hightouch model, most recent first. Required: model_id.
get_single_hightouch_source_by_id
Get a Hightouch source by id. Returns: id, name, slug, workspaceId, createdAt, updatedAt, configuration, type. Required: id.
update_a_hightouch_source_by_id
Update an existing source in Hightouch by patching it based on its Hightouch id. Only the supplied fields change. Returns the updated source object including id, name, slug, type, workspaceId, createdAt, updatedAt, and connection configuration. Required: id.
list_all_hightouch_sources
List all Hightouch sources in the current workspace. Returns: id, name, slug, workspaceId, createdAt, updatedAt, configuration, type.
create_a_hightouch_source
Create a new source in Hightouch. Returns the created source object including id, name, slug, type, workspaceId, createdAt, updatedAt, and connection configuration. Required: name, slug, type, configuration.
get_single_hightouch_model_by_id
Get a single Hightouch model by its numeric id. Returns: id, name, slug, description, workspaceId, primaryKey, createdAt, updatedAt, createdBy, updatedBy, sourceId, queryType, tags, isSchema, isGeneralModel, syncs, visual, custom, table, dbt, dbt_cloud, raw, folderId, lastRunSize, spaceId, rowLevelAccessRuleIds. Required: id.
update_a_hightouch_model_by_id
Update an existing Hightouch model by patching it with the model's Hightouch id. Returns the full model record: id, name, slug, description, queryType, sourceId, raw SQL, tags, syncs, and audit fields. Required: id.
delete_a_hightouch_model_by_id
Delete a Hightouch model by id. Syncs using the model and every audience built on it are deleted too. Deletion is blocked while the model is still referenced by a journey, priority list, decision engine agent, dynamic content condition, saved chart, or identity resolution graph. Returns an empty 204 response on success. Required: id.
list_all_hightouch_models
List all Hightouch models in the current workspace, including parent and related models. Returns: id, name, slug, description, workspaceId, primaryKey, createdAt, updatedAt, createdBy, updatedBy, sourceId, queryType, tags, isSchema, isGeneralModel, syncs, visual, custom, table, dbt, raw, lastRunSize, and 4 more. Default limit of 100 per page.
create_a_hightouch_model
Create a new Hightouch model in the current workspace. Returns the created model record: id, name, slug, description, queryType, sourceId, tags, syncs, and audit fields. Required: name, slug, queryType, sourceId, isSchema.
get_single_hightouch_sync_template_by_id
Get a Hightouch sync template by its numeric id. Returns the full template record including id, name, description, modelId, destinationId, configuration, schedule, schedulePaused, tags, and overrideConfig. Required: id.
update_a_hightouch_sync_template_by_id
Update an existing Hightouch sync template by id. Syncs created from the template pick up a new configuration on their next run, and a new overrideConfig replaces the previous one. Returns: id, name, description, modelId, destinationId, configuration, schedulePaused, and 6 more. The destinationId cannot be changed after creation. Required: id.
list_all_hightouch_sync_templates
List all Hightouch sync templates in the current workspace. Returns each template's id, name, description, modelId, destinationId, configuration, schedule, schedulePaused, tags, and overrideConfig.
create_a_hightouch_sync_template
Create a Hightouch sync template holding a destination configuration that syncs created from it share; overrideConfig names the configuration fields those syncs may set for themselves. Returns: id, name, modelId, destinationId, configuration, schedulePaused, overrideConfig, and 6 more. Required: name, modelId, destinationId, configuration.
list_all_hightouch_syncs_drafts
List sync drafts across every sync in the Hightouch workspace, oldest change first. Returns: id, syncId, operation, status, requestedBy, requestedApprovers, requestComment, createdAt, updatedAt, reviewedBy, and 2 more. Max 100 per page; poll with status=pending and read every page since the list shows current state, not a feed of changes.
get_single_hightouch_sync_by_id
Get a Hightouch sync by id. Returns the sync including id, slug, status, destinationId, modelId, configuration, and schedule. Required: id.
update_a_hightouch_sync_by_id
Update a Hightouch sync by id. Returns the updated sync including id, slug, configuration, schedule, status, and disabled. Required: id. A sync bound to a sync template takes its configuration from the template — change values with syncTemplateOverrides or rebind/detach with syncTemplateId instead of setting configuration.
delete_a_hightouch_sync_by_id
Delete a Hightouch sync by id. Returns an empty 204 response on success. Required: id.
list_all_hightouch_syncs
List all syncs in the current Hightouch workspace. Returns syncs including id, slug, status, destinationId, modelId, configuration, and schedule.
create_a_hightouch_sync
Create a Hightouch sync that either owns its configuration (destinationId plus configuration) or is created from a sync template (syncTemplateId). Returns the created sync including id, slug, destinationId, modelId, configuration, schedule, and status. Required: slug, modelId, schedule, disabled.
hightouch_syncs_trigger
Trigger a new run for a Hightouch sync. Returns the triggered run's sync_id, syncRunId, status, and finishedAt. If a run is already in progress, the new run is queued and executes immediately after the current run completes. Required: sync_id.
list_all_hightouch_sync_runs
List sync runs under a Hightouch sync. Returns each run's id, status, startedAt, finishedAt, completionRatio, plannedRows, successfulRows, failedRows, and error. Required: sync_id.
create_a_hightouch_syncs_trigger
Trigger a new run for a Hightouch sync by sync id or slug. Returns the triggered run's id. Supplying either syncId or syncSlug in the request body is expected; if a run is already in progress, the new run is queued until the current one completes.
list_all_hightouch_sync_drafts
List Hightouch sync drafts for one sync, oldest change first; filters to pending drafts by default. Returns: id, syncId, operation, status, requestedBy, requestedApprovers, requestComment, createdAt, updatedAt, reviewedBy, reviewedAt, reviewMetadata, current, proposed, changedFields, draftVersion, resourceVersion, relatedDrafts. Required: sync_id.
get_single_hightouch_sync_draft_by_id
Get a Hightouch sync draft by id, showing the sync as it stands and as approval would leave it. Returns: id, syncId, operation, status, requestedBy, requestedApprovers, requestComment, createdAt, updatedAt, reviewedBy, reviewedAt, reviewMetadata, current, proposed, changedFields, draftVersion, resourceVersion, relatedDrafts. Required: id, sync_id.
hightouch_sync_drafts_approve
Approve a Hightouch sync draft and apply its change. Returns: id, syncId, operation, status, requestedBy, requestedApprovers, requestComment, createdAt, updatedAt, reviewedBy, reviewedAt, and 1 more. Applies nothing when the draft or sync changed after the versions sent. Required: sync_id, draft_id, expectedDraftVersion, expectedResourceVersion.
hightouch_sync_drafts_reject
Reject a Hightouch sync draft, closing it without applying its change. Returns: id, syncId, operation, status, requestedBy, requestedApprovers, requestComment, createdAt, updatedAt, reviewedBy, reviewedAt, reviewMetadata. Required: sync_id, draft_id.
hightouch_sync_sequences_trigger
Trigger a new run for a Hightouch sync sequence. Returns: id. A sequence never runs concurrently with itself: if a run is already in progress, a single follow-up run is queued when run queueing is enabled for the workspace, otherwise the in-progress run's id is returned. Required: sync_sequence_id.
get_single_hightouch_sync_sequences_run_by_id
Get the status of a sync sequence run in Hightouch. Returns: id, status, syncRuns. Required: id.
Why Truto
Why use Truto’s MCP server for Hightouch
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 1000+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Start with Hightouch in a free sandbox, usually ready within one business day. No boilerplate, no maintenance burden.
Link your customer’s Hightouch account
Use Truto’s frontend SDK to connect your customer’s Hightouch account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Hightouch
Truto’s Proxy API is a 1-to-1 mapping of the Hightouch API. You call us, we call Hightouch, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Hightouch’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Hightouch on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authenticate their Hightouch workspace?
Truto manages the Hightouch API key auth flow on your behalf. Your users complete a connection flow once, and Truto stores and rotates credentials so your backend only works with a standardized Truto connection ID.
Can we create and trigger syncs programmatically, or only read them?
Both. The integration exposes full CRUD on sources, models, destinations, syncs, and sync templates, plus trigger endpoints for syncs, sync sequences, campaigns, IDR, ID graphs, and Match Booster runs.
How fresh is the data we can activate for our users?
Freshness depends on the Hightouch sync schedule, but you can bypass batch cadence by calling the sync trigger endpoint on demand and polling sync runs to confirm completion before acting on the data.
Does the integration support Hightouch's draft and approval workflow?
Yes. You can list sync drafts, fetch a specific draft, and approve or reject them via the API, which lets you build in-app change-management UIs for customers with governance requirements.
Can we support customers who use Hightouch's Decision Engine and Customer Studio?
Yes. The integration covers Decision Engine flows, messages (including clone), campaign triggers, and model size calculations, so you can orchestrate agentic marketing actions from your product.
What happens when Hightouch adds new endpoints or changes its API?
Truto maintains the underlying API client, including pagination, rate limit handling, and schema changes. New endpoints can be added on request, and existing tool contracts stay stable for your integration code.
Can we manage event tracking configuration like contracts and domains?
Yes. The integration includes full CRUD for Hightouch events contracts and events domains, so you can let users define and update their event schemas and tracking domains from inside your product.
From the Blog
Hightouch integration guides
Deep dives, architecture guides, and practical tutorials for building Hightouch integrations.
Hightouch
Get Hightouch integrated into your app
Our team understands what it takes to make a Hightouch integration successful. A short, crisp 30 minute call with folks who understand the problem.