Google Business Profile work, service pages that actually target what people search, and content built around the jobs you want. Run out of Cambridge by one person, with the numbers shown to you every month whether they are good or not.
Three things keep Minnesota service businesses out of local results, and all three are fixable. None of them have anything to do with how good you are at the job.
The Google Business Profile is the fastest moving thing in local search and the most neglected. No services filled in, no categories beyond the obvious one, no posts, no photos since 2021, review requests nobody sends. A profile that gets worked on weekly beats a better company with a dormant one, every time.
A single services page listing everything you do will not rank for any of it. Google needs a page per service to understand you offer that service. If you pour driveways, do stamped patios and run excavation, that is three pages, each written properly, not three bullet points.
Search is local before it is anything else. If your site never names Cambridge, Isanti, Princeton, North Branch, Elk River or wherever you actually drive, Google has to guess your service area. It usually guesses too small, and you disappear from towns you serve every week.
Profile first, because it shows results in weeks. Site structure second. Content and links after that, because they take longer and they only pay off once the first two are right.
Categories and services built out properly, weekly posts, photos from real jobs, review requests and replies, and the Q and A section filled in before a competitor fills it in for you. This is the single fastest lever in local search and it costs nothing but attention.
Written, not spun. Each one targeting what people actually type, with the questions answered on the page instead of hidden behind a form. If you need the site built too, that is the same conversation.
A real page for the towns you genuinely work in, with real content about working there. Not forty near-identical city pages with the name swapped, which Google has been filtering out for years and which will do you more harm than nothing.
If the big tickets are basement remodels and the small ones are patch jobs, the content goes after basement remodels. Writing that answers what a buyer asks right before they call, not generic blog filler written to hit a word count.
Call tracking and form tracking wired through Google Tag Manager, so a lead gets counted once and attributed to the right place. Without it you are guessing, and most agencies prefer you guessing.
What moved, what did not, what we are doing next month, and the position data to back it. Same format every month so you can compare them. If a month was bad you will read that it was bad.
SEO pairs with the rest of it. See website design, Google Ads and Meta ads, or jump to your trade: roofing, HVAC, concrete, plumbing, landscaping, general contracting.
Ask for a free local SEO audit and you will get a real one: what your Google Business Profile is missing, which searches you show up for today and where, which pages on your site are competing against each other, and what your three closest competitors are doing that you are not. It takes a couple of days and it is written in sentences, not exported from a tool.
There is no catch and no obligation. If the audit says your site is fine and you need to fix your profile instead, that is what it will say, and that is a cheaper month for you than hiring us. We would rather tell you the truth up front than sell you six months of work you did not need.
Every figure here came out of a Search Console property we have access to. Client named, date range attached. We would rather publish a short honest list than a long invented one.
Website rebuild plus ongoing local SEO across twelve months. Climbed from buried on page five to the edge of page two, and the click-through rate nearly doubled on the way up.
See the numbersNo website at all when we started. We built one and did the local SEO behind it. It now sits in the top six for its searches at a click rate most sites never come close to.
See the numbersOne of the first sites we ever built, four years old now, and they still like it. Local SEO that was set up properly does not need replacing every eighteen months.
See the numbersThey are not revenue. We can tell you a site went from invisible to the edge of page two and that clicks nearly doubled, because that is what Google reports to us. What happened to those clicks after they became phone calls is inside your business, not ours, and any agency showing you a revenue figure for an SEO campaign is either guessing or counting work you would have won anyway.
So judge this on what is measurable. Rankings moved, clicks moved, the click rate improved. That is the part we control, and it is the part we will show you every month.
Local SEO runs inside the monthly packages rather than being sold on its own, because the profile work, the site work and the content all pull on each other. Ad spend is billed separately and goes straight to Google or Meta.
SEO only, no ad management. For a business that needs to get found before it starts paying for clicks.
For a business with a decent site that needs the phone to ring.
Everything, including me on site with a camera twice a month.
One-time project. Most Minnesota small business sites land in here.
Month to month, no contracts. We ask you to give SEO six months before judging it, because that is honestly how long it takes to be worth judging, and we tell you that before you sign rather than after. A twelve month commitment includes two on-site photo and video shoots at no charge.
Yes, and you are reading one. Wyfi does the local SEO and builds the website it runs on, which matters more than it sounds. When the SEO person and the web person are different companies, every technical fix becomes a negotiation and things sit for weeks. Here it is one person, so a redirect or a new service page happens the same day. We also run Google Ads, Meta ads, branding and print and the photography, which is unusual for an agency this size.
Most Minnesota agencies will not tell you, so here it is. Local SEO runs inside our Growth package at $1,500 a month, which also covers Google Ads, Meta ads, the Google Business Profile and tracking. Full Service is $3,000 a month and adds deeper SEO, more content and two photo and video shoots. For comparison, the Minneapolis agencies we get compared to start at $2,800 a month for SEO on its own. Our pricing page has the whole list.
Profile work can move in two to six weeks, because fixing a dormant Google Business Profile is the fastest lever available. Website rankings take longer, usually three to six months for anything competitive, and longer again in the metro. We ask you to give it six months before judging it, and we tell you that before you sign rather than after. Anyone promising page one in two weeks is either lying or about to do something that gets your site penalized.
Often no. The first thing we check is whether the site loads fast, has a page per service, and actually asks for the call. If those three are true we leave it alone and spend your money on the profile and the content instead. If it is a six year old template that takes nine seconds to load on a phone, no amount of SEO fixes that, and we will say so.
Local SEO is about being found by someone nearby who is ready to hire. It leans on the Google Business Profile, the map pack, reviews, service area content and consistent business information across the web. Regular SEO is the broader game of ranking for anything anywhere. For a contractor in Isanti County, local SEO is almost the whole thing, and most of the national advice you read online does not apply to you.
Yes. Ask and you will get a real one, written in sentences, covering your profile, your site structure, the searches you currently show up for, and what your nearest competitors are doing differently. No obligation and no catch. If the honest answer is that you do not need to hire anyone yet, that is what it will say.