Hightouch
Reverse ETL and composable CDP platform that syncs data from your data warehouse to business tools for activation.
Signal pairs well with Hightouch as the delivery layer: Signal handles first-party event collection and server-side activation, while Hightouch handles warehouse-native segment building and modelled audience syncs.
Why route Hightouch through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Hightouch even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- Client IP and user agent are carried in the payload. Both are taken from the original visitor request rather than your server, which is what Hightouch needs to attribute the event to the right session.
- One consent decision governs every destination. Hightouch is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Complete these steps in Hightouch before configuring Signal.
Access your Hightouch workspace
Log in to app.hightouch.com and open the workspace that should receive events. Note the workspace’s region (US East, EU West or Asia Pacific).
Create an HTTP event source
Go to Events > Sources, add an HTTP source and give it a descriptive name (for example “Datafly Signal Events”).
Copy the write key
On the source’s Setup tab, copy the Write Key. Signal sends it as HTTP Basic auth.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
write_key | secret | Yes | The Write Key of your Hightouch HTTP event source (Events > Sources > your source > Setup). Sent as the HTTP Basic username. |
region | select | Yes | The region of your Hightouch workspace: us-east-1 (default), eu-west-1 or ap-south-1. Events go to https://{region}.hightouch-events.com. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Hightouch under the Reverse ETL category.
- Click Install, and fill in the required fields with the credentials gathered above.
- Click Install Integration to create the integration with a ready-to-use default configuration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/hightouch/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Hightouch",
"variant": "default",
"config": {
"write_key": "xxxxxxxxxxxxxxxxxxxx",
"region": "us-east-1"
},
"delivery_mode": "server_side"
}'Event Mapping
Signal uses the Hightouch Events HTTP API (Segment-compatible):
| Signal event | Endpoint | Body |
|---|---|---|
page | POST /v1/page | type: "page", properties (url, path, title, referrer) |
identify | POST /v1/identify | type: "identify", traits.email |
| other events of the preset | POST /v1/track | type: "track", event (the Signal event name), properties (every documented property; currency upper-cased, items as an array) |
Every call carries messageId (the Signal event ID, Hightouch’s dedup key), userId, anonymousId, timestamp (ISO 8601) and context (ip, userAgent, locale, page, campaign, consent.marketing, traits.email). Presets: Retail, Default, Insurance, B2B / SaaS, Travel and Media & Streaming.
Identity
| Field | Source | Notes |
|---|---|---|
userId | user_id from datafly.identify() | The canonical authenticated identifier, used by Hightouch syncs to key records. |
anonymousId | Datafly anonymous identifier | Always present; lets Hightouch stitch pre-login activity once the user logs in. |
context.traits.email, traits.email | identify traits | Trimmed and lower-cased, sent as it is: Hightouch builds profiles and syncs the address to your activation destinations. |
Consent
Hightouch events should be sent under the consent category appropriate to the downstream sync (typically marketing or advertising). Signal forwards the visitor’s CMP consent state on every event, and Hightouch syncs can filter on this when routing to specific destinations.
Delivery
Events are delivered server-side from your Datafly Signal infrastructure directly to the Hightouch Events API. No client-side scripts are loaded for this integration.
Verify it’s working
- After installing the integration, trigger a test event from your website or via the Signal event API.
- In Hightouch, navigate to Sources and select your HTTP Events source. Check the event log to verify events are being received.
- If you have syncs configured, check the sync run history to verify events are flowing to downstream destinations.
- In Signal, check Live Events to confirm delivery with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid write key | Copy the write key again from the HTTP event source’s Setup tab and update the integration config |
Connection error or 404 Not Found | Wrong region | Set the region to the region of your Hightouch workspace |
| Events received but not syncing | No sync configured | Create a sync in Hightouch that reads from your HTTP Events source and routes to a destination |
429 Too Many Requests | Rate limit exceeded | Signal retries with backoff. Contact Hightouch support to increase limits if needed |
Visit Hightouch documentation for full API reference and sync configuration details.
See also
- Google BigQuery — direct warehouse delivery
- Snowflake — direct warehouse delivery
- Salesforce CDP — composable CDP alternative