Connect Hotjar¶
Hotjar can send selected recording and survey-response webhooks to Squoosh. This connection is a receiving surface only. It does not calibrate AI shoppers or provide traffic distributions or conversion rates.
Beta: surface stage
This connector has not been validated against a live account. Saving a connection does not verify the key, plan permissions, or event delivery.
Saving creates an Endpoint ready / Awaiting delivery connection. A current-key authenticated delivery heartbeat establishes transport health. Checking status cannot verify a key, and rotating the key requires a new delivery. Payloads remain discarded and no calibration numbers are produced.
What the connection does¶
The endpoint checks a delivery's signature, validates its envelope, acknowledges eligible messages, and discards the event payload. A periodic sync-log heartbeat records that authenticated messages are arriving. No recording or survey-response content is retained.
Hotjar recordings are sampled and filtered by the saved Recording Segment. Survey respondents are a self-selected population. Neither describes all your traffic, and neither supplies a session denominator for a conversion rate. Device, geography, and referrer fields therefore do not change the shopper pool.
Connect Hotjar¶
Hotjar documents recording webhooks for Observe Scale and survey webhooks for Ask Scale. Confirm that Webhooks is available for your site.
- In Hotjar, open the site's Webhooks Integration settings and choose View Webhook key. The settings address follows
https://insights.hotjar.com/settings/integrations/sites/<site-id>/webhooks. - In Squoosh, open Integrations, choose Hotjar, and enter the Webhook signing key. One Hotjar site is supported per Squoosh workspace. Saving another site’s key replaces the existing connection’s key. This is a Hotjar-issued key, not a REST API client secret or a Squoosh-generated key.
- Copy the HTTPS ingest URL Squoosh provides. Keep the complete
?connection=...query parameter. The path is/api/integrations/hotjar/ingest. - For recordings, open your saved Recording Segment, select its three-dot menu, and choose Webhook. For survey responses, configure the webhook on the relevant Survey. Paste the Squoosh URL as the destination.
- Send Hotjar's test message and check Squoosh's sync log for an arrival heartbeat. Hotjar supplies the
com-hotjar-signatureheader automatically; do not paste your signing key into a custom authentication header.
See the official Webhooks Reference for Hotjar's setup and delivery contract.
What Squoosh reads and never reads¶
| Data | Handling |
|---|---|
| Raw webhook body | Used briefly for HMAC-SHA3-256 signature verification and envelope validation, then discarded |
event, version, timestamp |
Used to recognize supported messages and discard stale or unsupported deliveries |
data.id and data.site_id |
Validated for recognized recording and survey messages; identifiers are discarded |
| Recording contents, URLs, user attributes and survey answers | Not retained, logged, queried, or used for calibration |
| Hotjar REST endpoints | Never called, including user lookup and deletion operations |
| Traffic counts, distributions and conversion rates | Never inferred from webhook deliveries |
Limits and caveats¶
- No backfill or snapshot. This connection receives future deliveries only and never supplies a calibration snapshot.
- Delivery timing. Hotjar requires a 2xx response within ten seconds. Squoosh uses an eight-second handler budget and defers heartbeat writes until after acknowledgement. Infrastructure failures receive a retryable response; the endpoint never returns 410, which would make Hotjar delete the webhook.
- Retries. Hotjar documents up to six retries after 30 seconds, 1 minute, 2 minutes, 5 minutes, 10 minutes and 20 minutes. Duplicates and out-of-order deliveries are possible.
- Replay checks. A valid signature is required before timestamp inspection. Messages more than five minutes old, more than five minutes in the future, or lacking a usable timestamp are acknowledged and discarded. Recording and survey messages with a null or missing ID cannot establish a unique arrival and are also discarded.
- Heartbeat throttling is approximate. Successful heartbeats are limited to one per connection and credential generation per hour in one running server instance. A duplicate delivery may establish proof for a replacement key or retry a failed heartbeat write. Restarts and separate instances can repeat telemetry. No exact event count is stored or reported.
- Signature encoding. Hotjar documents the algorithm but not the header encoding. Squoosh checks both hex and base64 encodings; a live test message is still needed to confirm actual delivery behavior.
- Body and rate limits. Squoosh accepts bodies up to 1 MiB and applies the shared ingest limit of 6,000 authenticated requests per minute per connection. Rate-limited responses include
Retry-After. - Site downgrade. An authenticated
site_downgradeis acknowledged with a permission warning in operational diagnostics. A warning entry also appears in the customer sync log, at most once per hour per worker. - Account migration. Webhook availability after a move to Contentsquare depends on the destination plan and account state. Hotjar's migration FAQ lists webhooks as unsupported on Contentsquare Growth and describes an option to postpone migration. See the migration FAQ.
Troubleshooting¶
| Problem | What to do |
|---|---|
| Setup is unavailable | Enter the signing key issued by Hotjar before saving the connection |
| Delivery receives 401 | Verify the complete connection URL and the site's Webhook key. Missing connections and bad signatures deliberately receive the same response |
| Saved connection has no heartbeat | Saving leaves delivery unverified. Send a test message and confirm the site supports Webhooks |
| Delivery receives 400 or 413 | Send Hotjar's JSON webhook envelope and keep the body within 1 MiB |
| Delivery receives 429 | Respect Retry-After and reduce webhook volume or narrow the Recording Segment |
| Delivery receives 503 | Retry after the indicated delay; the receiver's infrastructure or request budget was unavailable |
| Acknowledged delivery has no new heartbeat | Heartbeats are throttled to one per hour. Stale messages, duplicates, unsupported versions/types and unusable timestamps or IDs do not establish new arrivals |
| Site downgrade warning | Check the site's plan and webhook availability in Hotjar |
| No traffic mix or conversion rate appears | This is the surface-stage limit. Use an aggregate traffic source or import your own supported counts |
Related¶
- Connect Google Analytics and Connect Matomo for traffic calibration.
- Connect a CSV / Excel import for your own aggregate counts.
- Connect Segment for another inbound event surface.
- Hotjar API Reference for the separate REST survey capabilities.