Heap
Signal sends server-side custom events to Heap’s Track API for identified users.
Heap requires an identity (or its own SDK’s numeric user ID) on every server-side event. Signal sends its user ID as identity, so events from visitors who have not identified are not sent. Heap’s browser snippet keeps autocapturing anonymous behaviour.
Prerequisites
Your Heap environment’s App ID (Account > Manage > Projects / Environments).
Configuration fields
| Field | Required | Description |
|---|---|---|
app_id | Yes | Heap environment ID, sent as app_id. |
eu_data_center | No | Your Heap data is in the EU: send to c.eu.heap-api.com. |
api_key | No | Not used: the Track API is authenticated by the App ID. |
API endpoint
POST https://heapanalytics.com/api/track (EU: https://c.eu.heap-api.com/api/track)
Content-Type: application/json
{"app_id": "11", "identity": "crm-user-7", "event": "purchase", "timestamp": "2026-09-22T10:00:00Z",
"idempotency_key": "{Signal event ID}",
"properties": {"transaction_id": "T-1001", "value": 104.5, "currency": "EUR", "item_ids": ["SKU-1", "SKU-2"]}}Property values must be numbers or strings (arrays are stored joined with ||), so booleans are sent as strings and items[] becomes item_ids and item_names lists. user_id and session_id are reserved in properties, so a media session_id is sent as media_session_id. Limit: 30 requests per 30 seconds per identity. Source: Track (updated 2026-06-03, read 2026-09-22).
Presets
Default (core cross-vertical events), Retail, Insurance, B2B / SaaS, Travel and Media & Streaming: each maps the vertical’s event-spec events with their documented properties under the Signal event name, plus page_view. No personal data is sent.
Consent
Default consent category: analytics.
Blueprint
Blueprint version 0.4.0 (not yet tested against a live Heap environment).