Two workflows, one HTTP Request node each — works the same self-hosted or on n8n Cloud.
In ReplyTime, go to Settings → API Keys and create one named after this workflow, e.g. “n8n — production.” Copy the secret immediately — it's shown only once.
Start with a trigger node for wherever your clients message you (a webhook trigger, Gmail, Slack, or similar). Add an HTTP Request node, method POST, to the URL below.
https://replytime.net/api/v1/events/inbound
Under Authentication, choose Generic Credential Type → Header Auth, with name Authorization and the value below. Set Body Content Type to JSON and map the previous node's fields into client, channel, and message.
Bearer rt_xxxxxxxxxxxxxxxxxxxxxxxx
Clone the workflow, trigger it on your own reply instead, and point the HTTP Request node at /api/v1/events/outbound. This is the workflow that stops the clock.
Run the workflow once with real data, then check the client's conversation in the ReplyTime dashboard — the countdown should start and stop as expected.
Both endpoints accept the same shape. Set message.source_tool so you can tell where an event came from later.
{
"client": { "external_ref": "acme-corp", "name": "Acme Corp" },
"channel": { "type": "slack", "identifier": "#client-acme" },
"message": {
"occurred_at": "2026-09-09T10:15:00Z",
"source_tool": "n8n"
},
"idempotency_key": "slack-ts-1694256900.001"
}The built-in HTTP Request node, set to POST with a JSON body — no custom code or extra packages required.
Yes — one triggered by an incoming client message (posts to /api/v1/events/inbound), one triggered by your reply (posts to /api/v1/events/outbound). They run independently.
Pass idempotency_key set to the source node's own message id (a Slack ts, a Gmail message id). A repeat call with the same key is a safe no-op.
Yes — the recipe is identical whether n8n is self-hosted or cloud, since it's just an outbound HTTP Request node.