Outbound Webhooks
Send TeeckIn events as raw, signed JSON to any HTTPS endpoint — connect your timer and task activity to n8n, Make, Zapier, or your own backend.
What they are
A Custom Webhook (JSON) integration delivers TeeckIn events as a machine-readable JSON payload to an endpoint you control — unlike Slack/Mattermost integrations, which send formatted chat messages. Use it to trigger automations: log a finished timer to a spreadsheet, draft an invoice when a billable entry is created, or update a task in your project tool.
Available on every plan
Creating a webhook integration
- 1Go to Settings → Integrations and click Add Integration
- 2Choose the Custom Webhook (JSON) platform
- 3Paste your HTTPS endpoint URL (the address your automation tool listens on)
- 4Pick the events to send and an optional topic/category filter
- 5Click Create Integration and copy the signing secret shown — it is displayed only once
HTTPS only, public endpoints only
localhost, 10.x.x.x, or cloud metadata IPs). This protects your account and infrastructure from server-side request forgery.The payload
Each delivery is a POST with a versioned JSON envelope. Events occurring within the integration's batch window are combined into one request's events array.
{
"version": "1",
"sentAt": "2026-05-30T14:02:11.000Z",
"integration": { "name": "My Automation" },
"events": [
{
"event": "timer_stop",
"topicName": "Acme redesign",
"categoryName": "Client work",
"userName": "Jordan Breton",
"durationMinutes": 45,
"timestamp": "2026-05-30T14:02:11.000Z"
}
]
}The version field is a stability contract: field names won't change without a version bump, so your automations keep working.
Verifying the signature
Every request includes an X-TeeckIn-Signature header containing an HMAC-SHA256 of the raw request body, keyed with your signing secret:
X-TeeckIn-Signature: sha256=<hex-digest>Recompute the digest over the raw body and compare. Example in Node.js:
import crypto from 'node:crypto';
function isValid(rawBody, header, secret) {
const expected =
'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
// Constant-time comparison
return crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}Rotating the secret
Connecting to n8n / Make / Zapier
Point the webhook URL at your automation tool's inbound webhook node, then use its HTTP request actions to call back into TeeckIn (e.g. create a time entry) if you need two-way flows. A typical setup:
- 1Create a webhook/trigger node in n8n, Make, or Zapier and copy its URL
- 2Create a TeeckIn webhook integration pointing at that URL
- 3(Optional) Add a signature-verification step using the secret
- 4Map the
events[]fields to your downstream action