I would separate two questions here: is Bubble receiving the same raw CSV in the UI flow as it receives in the backend flow? does the first row/header actually match the schema your upload action expects before Bubble starts trying to parse/write it? When a CSV works in one path and fails in another, I usually put a preflight validation step before the upload/write step.