## TL;DR
Fix this in NPS HubSpot integration by acting on the exact problem first: make the HubSpot timeline writer idempotent on the survey response identifier, check for an existing event with that identifier before creating one, and clean up the duplicate events already written for retried responses. Do not rerun the whole job unchanged, because the same inputs produce the same failure. Prove the fix on one response, batch or record set first, then rerun the full scope and reconcile the counts.

```text
NPS HubSpot integration duplicates timeline events on webhook retry
```

## Use this when
- The operation in NPS HubSpot integration fails with this exact problem or symptom: NPS HubSpot integration duplicates timeline events on webhook retry.
- The same failure repeats on retry with unchanged inputs.
- NPS follow-up, routing or reporting is blocked until this item completes.

## Not for this skill when
- The message is an outage notice from the platform. Resolve that first, then return here if this problem remains.
- The operation completes and you only disagree with its output quality. That is a quality review, not this failure.

## Steps
1. Reproduce the failure with the smallest scope that still shows it in NPS HubSpot integration, and copy the full problem plus the response, contact or job involved into the run notes. Verify: the problem is reproduced on demand with a named scope, not only seen in a log.
2. Apply the specific fix for this problem: make the HubSpot timeline writer idempotent on the survey response identifier, check for an existing event with that identifier before creating one, and clean up the duplicate events already written for retried responses. Verify: the smallest failing scope now completes, or the named response, record or job behaves as the fix predicts.
3. Check the neighbouring responses, records or jobs that share the same config, segment or credential, because this class of failure rarely affects only one item. Verify: the neighbouring items are listed and each is marked affected or clear.
4. Rerun the original operation in NPS HubSpot integration on the previously failing scope, watching for the same problem rather than assuming success from a quiet log. Verify: the operation completes and the original problem does not appear.
5. Compare the result counts or status against the source in NPS HubSpot integration so a silent partial success is caught before sign off. Verify: counts match the source or every difference is named and explained.
6. Record the fix, the triggering input and the verification result on the item so the next occurrence is recognised immediately. Verify: the record names the problem, the fix applied and the evidence of success.

## Why it happens
Webhook providers retry deliveries that are not acknowledged quickly, and a writer that creates a new timeline event per delivery duplicates the same response every time a retry happens.

## Variant phrasings

### NPS HubSpot integration duplicates timeline events on webhook retry
The verbatim form searchers paste from the console or report. Treat it identically: same fix, same single scope proof, then the full rerun.

### How to fix - NPS HubSpot integration duplicates timeline events on webhook retry
The how-to phrasing for the same failure in NPS HubSpot integration. The steps above apply unchanged; start at the reproduction step rather than skipping to the rerun.

### NPS HubSpot integration troubleshooting for this failure
The symptom-first phrasing used when the console hides the full message. Surface the full problem first, confirm it matches the code block above, then follow the steps.

Compatibility: NPS HubSpot integration at current versions, plus the platform API or console the query names; no extra tooling beyond the source system access needed to verify counts.

Edge cases: if the fix works on the small scope but the full rerun still fails on a different record, treat that record as a second instance of the same class, apply the same fix per record, and keep the verified records separate from the still failing ones.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_rXkg07AMZ6D-k4q3L0jqzQ
