I’ve spent hours trying to figure this out thinking it was my code and pulling my hair out. It wasn’t.
If you use batch-upsert with a catalog item that already exists and has a description, Square will wipe the description unless you send back a new and different one.
Even if you send the exact same description value as before, Square still deletes it. With no response, or anything else.
This is silent, undocumented, and 100% reproducible.
Tested Scenarios:
-
Existing item with description → send same description again → wiped
-
Existing item with description → send no description → wiped
-
Add new variation without updating description → wiped
-
Send different description → replaces it
-
Trick it with minor change (e.g. appending a dash) → preserved
Workaround:
-
Always send
item_data.descriptionwith every upsert. -
If the description hasn’t changed, append a character (I use a dash
-) to bypass Square’s weird logic.
Posting this so the someone else doesn’t waste hours trying to figure this out.