It actually does work with underscores - I see now that it didn’t work when I changed to underscore because the .txt file’s fieldnames weren’t updated for some reason. Changed those manually and now it works.
I think the reason I ended up using dashes in fieldnames was because I saw the names were being conformed to contain dashes in the .txt files. Wondering if there is a reason .txt needs to have dashes, rather than keeping it consistent.
Off-topic - it would be nice if when doing an “Edit” to data in a structure field, the modal fields were populated with the existing data. Since you can’t copy and paste the existing data from the panel easily, it’s kind of troublesome to make an edit to a field that has a long url, for example.