Usually they are not: the answer to the write leaves them out. A write's answer lists the custom field rows as that request left them, so a field emptied in the request, and every row a customFieldValues list did not name, is missing from it while still stored. Read the record again to see what it holds.
Two cases do lose data:
- Products, product categories and people take a
customFieldValueslist as the complete set, and delete the rows it leaves out. nullfor a field empties it.
Writing by name avoids both: {"customFields": {"fieldName": value}} changes the fields named and nothing else, on every type that has custom fields.