What Google's policy says
The wording in Google's spam policies is short: doorway abuse is having multiple domain names or pages targeted at specific regions or cities that funnel users to one page. The word doing the work in that sentence is funnel.
A page that exists to push somebody to one generic contact page is a doorway. A page that answers the question where the visitor landed, and gives them a reason to call from there, isn't. That's the whole test, and it's about the page rather than about how many you have.
Why five small sites are worse than one
Everything a site earns has to be earned again on the next one. Reviews, links, the history Google builds up about a business, the trust a search engine puts in a name it keeps seeing: none of it carries across five web addresses.
You also pay five times. Five web addresses, five sets of pages to keep current, five places where a phone number goes stale. When the number changes, four of them stay wrong for a year, and a wrong number on a live page is a lost job.
And the sites compete with each other. Google picks one page per search, so two of your own pages aiming at the same town split what you'd have had with one.
What a real town page looks like
It's about one job in one town, and it's the destination. What that work involves, what makes it different in that town, jobs you've done in or near it, what it runs, and how to reach you from right there on the page.
The bar people use is simple: a person reading two of your town pages side by side should see two documents, not one document with a find and replace run on it. Write that way and the doorway question never comes up.
The trap that catches contractors
The version that gets sold is a set of near-identical pages, one per town, all pointing at the same contact form. It's cheap to produce and it fits the policy's description closely enough to be a bad bet.
The tell shows up in Search Console before it shows up anywhere else: the town pages sit in crawled, currently not indexed, because Google read them, saw the same page twenty times and kept one.