record_id identifies the source document.
- For S3 and Azure Blob connectors, the record ID is a Version 5 UUID generated from the namespace and file path of the document. This ensures that the ID is deterministic and unique at the file level.
- For all other blob connectors, the record ID is a Version 4 UUID representing a random 32-character hexadecimal string.
- For SQL connectors, the record ID is generated from the table name and record ID of the database table.
element_id identifies the specific element. Source connectors generate element ID in one of the following ways, depending on the source connector:
- A SHA-256 hash of the element’s text, its position on the page, the page number it’s on, and the name of the related file. This is to ensure that the ID is deterministic and unique at the file level.
- A Version 4 UUID generated using random numbers.
Older connectors generate SHA-256 hashes for element IDs, while more modern connectors generate UUIDs. Going forward, older connectors will be converted to using UUIDs as well.
id represents the actual row that Unstructured writes into the destination location. The ID is a Version 5 UUID generated from the namespace, element ID and record ID of the source document. The ID is deterministic and unique at the row level.
Destination connectors process document updates in one of the following ways, depending on the connector:
- Use the record ID to identify and delete all elements from a given document, prior to writing new elements from that document into the destination.
- Use the ID to perform upsert operations without generating duplicate rows, ensuring that reprocessing documents is idempotent.

