Column mapping
After parse, each schema field can point at one uploaded header (or ignore).

Auto-map
Headers and field key, label, and optional aliases are normalized (trim, lower case, strip spaces, _, -). Exact normalized matches score highest; stem and substring matches score lower. Pairings are assigned strongest-first so field declaration order cannot steal a better alias. Each header is used at most once during auto-map. Unmatched fields start as ignore.
Use aliases for CRM-style headers (Email Address, E-mail, Work Email) that will not match your field key alone.
Manual map
Users can change the select per field. Mapping a header to one field clears that header from other fields so two required fields cannot silently share one column. Changing the map re-runs validation.
Preview is disabled until every required field has a mapped column. The map step lists which required labels are still missing.
Excel sheets
Multi-sheet workbooks show a sheet selector above the field maps. Switching sheets re-parses that worksheet and re-runs auto-map.
Related: Fields · File formats · Excel · Validation · CSV column mapping in React