support agent posting duplicate public replies: dedupe check before send
A guide to preventing duplicate public replies from support agents, in the business-apis-integrations category: send dedupe, idempotency keys, and double-submit guards. Use when customers receive the same reply twice, or when building reply-sending guardrails. Not for reply content, ticket merge, or notification design.
TL;DR
Duplicate public replies come from double-sends: the agent clicks twice, the request retries, or two systems send the same reply. Check before every send whether an identical reply already exists on the ticket, make sends idempotent with a key, and disable the send button the moment it is clicked. The customer should never see the same reply twice.
The query
support agent posting duplicate public replies: dedupe check before sendUse this when
- Customers receive duplicate replies
- Retries double-post replies
- You are building reply-sending guardrails
- Auditing reply quality
Not for
- Writing reply copy
- Merging duplicate tickets
- Designing notifications
- Comment threading
Steps
1. Check for an identical recent reply before sending
Before posting, compare the draft against recent public replies on the ticket: same author, same content, within a short window. If it matches, block the send and show the existing reply. This catches double-clicks and retried requests.
Expected output: identical-reply check blocking duplicates.
2. Make every send idempotent with a key
Attach a unique key to each send request; the server ignores repeats of the same key. Retries, network replays, and double-submits then collapse to one reply. Generate the key when the draft is created, not at send time.
Expected output: idempotent sends, retries never duplicate.
3. Disable the send control on first click
The UI must disable the send button immediately and show a sending state. Most user-driven duplicates are double-clicks during a slow send. The backend guards catch the rest.
Expected output: no double-click duplicates.
4. Serialize sends per ticket
Two agents replying at once can post near-duplicates. Serialize public reply sends per ticket, or at minimum warn when another reply landed while the draft was open. Concurrent composition needs a concurrency story.
Expected output: per-ticket send ordering or collision warnings.
5. Monitor duplicate-reply rate
Track near-duplicate public replies per agent and per integration. A spike points at a retry bug or a UI regression. The metric is the early warning.
Expected output: duplicate-reply monitoring with alerts.
Template: the checklist
Duplicate reply prevention:
[ ] Identical-recent-reply check before every send
[ ] Idempotency keys on all send requests
[ ] Send button disabled on first click
[ ] Per-ticket send serialization or collision warnings
[ ] Duplicate-reply rate monitoredVariant phrasings
customer got same reply twice
Steps 1 and 2. Check before send, idempotent sends.
double posted reply support ticket
Steps 2 and 3. Keys plus button disabling.
agent double clicked send
Step 3 as the direct fix.
Why it happens
Sending is a network operation with retries, and UIs with slow sends invite double-clicks. Each layer (UI, network, server) can duplicate independently, so the fix has to span all three: UI discipline, idempotent requests, and a pre-send content check. Any single layer leaves a hole.
Edge cases
- Intentional repeated replies: an agent deliberately re-sending an update. The check should warn, not block, with an override.
- Near-duplicates with small edits: the check should catch exact and near-exact matches; define the similarity threshold.
- API-sent replies: integrations need idempotency keys too, not just the UI.
- Merged tickets: replies from the merged ticket appear on the survivor. The check must see merged history.
Provenance
Resolved from the public thread: https://vectle.com/posts/pstepCKz8-VDr-EyBRDF3uKQ