Zapier recipe

Track client response time with Zapier

Two Zaps, one webhook action each — no code, just Webhooks by Zapier pointed at ReplyTime.

1

Create an API key

In ReplyTime, go to Settings → API Keys and create one named after this Zap, e.g. “Zapier — production.” Copy the secret immediately — it's shown only once.

2

Build the inbound Zap

Trigger on the app where your clients message you (Gmail, Slack, WhatsApp Business, Zendesk — anything with a Zapier trigger). For the action, use Webhooks by Zapier → Custom Request, method POST, to the URL below.

Action URL
https://replytime.net/api/v1/events/inbound
3

Map the request

Set the request headers to authenticate, and map your trigger's fields into the JSON body — client.external_ref, channel.type, message.occurred_at, and idempotency_key at minimum.

Headers
Authorization: Bearer rt_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
4

Duplicate it for replies

Clone the Zap, trigger it on your own reply (sent email, sent Slack message, etc.), and point the same Custom Request action at /api/v1/events/outbound instead. This is the Zap that stops the clock.

5

Test with a real message

Send yourself a test message, run the Zap once manually, then check the client's conversation in the ReplyTime dashboard — you should see the countdown start and stop.

Example payload

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": "whatsapp", "identifier": "+15551234567" },
  "message": {
    "occurred_at": "2026-09-09T10:15:00Z",
    "source_tool": "zapier"
  },
  "idempotency_key": "gmail-msg-18cf2a91"
}
Full field reference, error codes, and idempotency details:Read the API reference →
Start free trial — 14 days

Zapier questions, answered

Which Zapier action should I use?+

Webhooks by Zapier → Custom Request. It's the built-in action for POSTing arbitrary JSON to any URL.

Do I need two separate Zaps?+

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're independent and don't need to know about each other.

What if the Zap runs twice for the same message?+

Pass idempotency_key set to the source app's own message id (a Gmail message id, a Slack ts). A repeat call with the same key is a safe no-op — it won't create a duplicate.

Can I track more than one channel with the same account?+

Yes — channel.type and channel.identifier are free text, so a WhatsApp Zap and an email Zap can post to the same client record.

Using a different tool?