There are three ways a roofing company ends up with a website, and most of the regret comes from picking one for the wrong reason: price when the real constraint was time, or speed when the real constraint was control. Here is what each one is genuinely good at, and how each one usually goes wrong.
The agency
You brief them, they design something bespoke, you review it, it launches. Typically a few thousand up to five figures, and typically six to twelve weeks. Good ones will push back on your ideas, which is most of what you are paying for.
Good at: looking unmistakably like your company rather than a template. Handling the whole thing, so it is somebody's job to finish it. Fixing the awkward stuff, like a site that has to serve eleven towns without reading like a spam page.
Goes wrong when: the project stalls waiting on you. The brief, the photographs and the copy are yours to supply, and roofing has a season. A build that needed three weeks of your attention in April will sit untouched until November.
Also worth knowing: some agencies bill the build and then a retainer for search work that is never itemised. Ask what the retainer buys in a normal month, and ask for the previous month's example.
The freelancer
One person, usually working from a template they know well, usually a fraction of the agency price and a fraction of the time. Often the best value on this list.
Good at: getting a real, decent site up without a project plan. Talking to you directly rather than through an account manager. Small changes done same day, because there is nobody to escalate to.
Goes wrong when: they move on. Not maliciously, they just take a full-time job, or stop replying in busy periods. If the hosting, the domain or the platform login sits in their account, a quiet freelancer becomes a locked door. This is the single most common horror story in trade websites and it is entirely preventable.