CRM connections (Make, Zapier, webhook)
Contest contacts and client comments straight in your systems.
Set it up in Organisation settings › Integrations. For every new contact (and optionally client comment) we send JSON to the address you enter. Included in the Pro, Agency and Enterprise plans and during the trial.
Make
- New scenario › Webhooks › Custom webhook module › Add › copy the address.
- In the studio add a connection with this address and click Send a test contact; Make learns the data structure from it.
- Add another module, e.g. HubSpot, Pipedrive, Google Sheets or Mailchimp, and map the fields.
Zapier
- New Zap › Webhooks by Zapier › Catch Hook trigger › copy the address.
- In the studio add the connection and send a test contact, then click Test trigger in Zapier.
- Add an action for your CRM.
Data format
{
"id": "6f1c…",
"event": "lead.created",
"created_at": "2026-10-29T10:15:00.000Z",
"data": {
"project": { "id": "…", "slug": "sutaz-kavovar", "name": "Súťaž o kávovar" },
"contact": {
"id": "…",
"name": "Eva Nováková",
"email": "[email protected]",
"phone": null,
"locale": "sk",
"detail": "win",
"consent_text": "Súhlasím so spracúvaním údajov na účel súťaže.",
"created_at": "2026-10-29T10:15:00.000Z"
}
}
}Headers: X-Dimenzum-Event (lead.created, review.created or test), X-Dimenzum-Delivery (delivery id, the same on retries) and X-Dimenzum-Signature with the signature.
Verifying the signature (your own server)
The signature is HMAC SHA-256 of “timestamp.body” with the secret shown with the connection. Verify it and reject messages older than 5 minutes.
// Node.js: overenie podpisu webhooku Dimenzum
import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(body, header, secret) {
const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
const expected = createHmac('sha256', secret).update(`${parts.t}.${body}`).digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < 300;
return fresh && timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}<?php // PHP: overenie podpisu webhooku Dimenzum
$body = file_get_contents('php://input');
parse_str(str_replace(',', '&', $_SERVER['HTTP_X_DIMENZUM_SIGNATURE'] ?? ''), $sig);
$expected = hash_hmac('sha256', $sig['t'] . '.' . $body, getenv('DIMENZUM_SECRET'));
if (!hash_equals($expected, $sig['v1'] ?? '') || abs(time() - (int) $sig['t']) > 300) {
http_response_code(400);
exit;
}
$event = json_decode($body, true);Errors and retries
If your server does not answer with 2xx within 10 seconds, we retry after 1, 5 and 30 minutes, then after 2 and 12 hours. After 20 failures in a row the connection is paused; turn it back on with one click. Recent deliveries are listed with the connection.
The address must be https and point to a public server. Delivered content is deleted from our queue; undelivered content within 14 days.