Definition
An operation is idempotent if running it multiple times produces the same result as running it once. Reading a file is idempotent. Deleting a user by ID is idempotent (the user is gone either way). Incrementing a counter is not idempotent (it increments every time). Idempotency is a critical property for any system that might retry - without it, retries cause duplicate rows, duplicate charges, or duplicate emails.
To make a non-idempotent operation idempotent, you typically add an idempotency key - a unique identifier the client generates once per logical attempt. The server checks if it has already processed that key; if so, it returns the original result rather than running the operation again. Stripe, SQS, and most modern APIs expose idempotency keys for this reason.
How SheetLinkWP relates to Idempotency
SheetLink Forms generates a unique submission ID for every form entry and includes it in the webhook payload. The Apps Script connector checks recent rows for that ID before appending, so a retry after a partial success does not create a duplicate Sheet row. The CRM Fan-Out add-on uses the same submission ID as the Stripe-style Idempotency-Key header when calling HubSpot, Salesforce, Zoho, and Pipedrive - so retries land on the same CRM record instead of creating duplicates.