Build 3 describes the matching column as an identity key, and it behaves like one right up to the moment two executions run at once. Append or Update reads the sheet to find the matching row and then writes, and the Sheets API has no conditional write to make that a single operation. Two runs carrying the same key both look, both find nothing, and both append: the duplicate the node exists to prevent.
It stays invisible at low volume and appears the first time a webhook fires twice or a batch runs in parallel. Concurrency 1 on that workflow is the cheap fix; a unique key in something that can refuse a second write is the durable one, because the sheet cannot.