Blank policy: Unit and Postal Code are optional and skipped when truly blank or formula-empty; Street and City are required. Numeric zero is data, not blank. N/A remains literal text. Any source error or missing required field returns Review.
Display Address formula: =IFERROR(IF(OR([@Street]="",[@City]=""),"Review",TEXTJOIN(", ",TRUE,[@Unit],[@Street],[@City],[@[Postal Code]])),"Review"). TEXTJOIN with ignore_empty TRUE removes Unit or Postal Code together with the would-be separator. Postal Code stays text, so 01970 remains intact. Add a separate audit column: =IF([@[Postal Code]]="","Postal code missing","").
Contact Label formula: =IFERROR(IF(OR([@Street]="",[@City]=""),"Review",TEXTJOIN(", ",TRUE,[@Unit],[@Street],[@City],[@[Postal Code]])&" — ext. "&TEXT([@Extension],"0")),"Review"). Do not use a truth test on Extension because zero must survive.
Tests: all present → “4B, 18 Lake Rd, Salem, 01970 — ext. 0”; Unit empty string → “18 Lake Rd, Salem, 01970” with no leading comma; Postal Code blank → address without it plus audit flag; Street blank → Review; Unit N/A → starts “N/A, …”; source error → Review; copying within the Table keeps row-scoped references. CSV export should be spot-checked for preserved 01970 and commas being quoted by the exporter.