If you're interested, another approach would be to first set up a dynamic named range in workbook_a, which covers the area where you permit users to enter data. Then, use that dynamic named range as the source for a pivot table in workbook_b.
Any changes you make to your data in workbook_a, including new customers, get picked up when you refresh the pivot table in workbook_b.
Note that both workbooks need to be open.
Specifically, when I played around with this, I named my dynamic range in workbook_a as "AllCustomerData", with the data starting in cell A1 on sheet1, and defined the formula for "AllCustomerData" as
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1))
Next, for the pivot table source in workbook_b, I used
workbook_a.xlsx!AllCustomerData
Then, when I built the pivot table, I chose the "Classic Pivot Table layout". I placed all my fields in the "RowLabels" section of the Pivot table Fields List box, in the order of my fields in the original workbook_a. You can, of course, order them as you desire -- or only select the field(s) you need.
When I tested this, I did see that if I deleted a customer, refreshed the pivot table, then re-used that deleted customer's CUSTID at the bottom of the source range, and again refreshed the pivot table, that the re-used CUSTID would show up in the pivot table not at the bottom, but in the original position before deletion. (I hope that was clear!) I don't know if your business rules permit re-use of CUSTIDs, but be aware of that if you do.
Hope this helps. The VBA approach of @Lance Roberts is real nice too. It has an advantage over this pivot table approach of not incurring all that "pivot table overhead".