seo-local

CDMPrint: local SEO for a Montreal print shop, from 1.4 Domain Rating to 554 searches in the top 10

Eleven weeks of local SEO for CDMPrint, a print shop in Montreal: from 1.4 Domain Rating and traffic almost entirely on brand, to 554 searches in the top 10 results and city pages reaching page one in five days.

Contents

The starting point

In early June 2026, CDMPrint, a print shop in Montreal, had a fully working online store and almost no organic visibility. The site was a bilingual ASP.NET application, English and French, with 40 product pages and real orders coming in every week. The product was not the problem. The problem was that Google had no reason to show the shop to anyone who did not already know its name.

What the audit found:

  • Domain Rating 1.4. A near empty link profile, plus years of accumulated spam residue.
  • URLs inherited from the WordPress era, some indexed in two variants, with no coherent redirect map.
  • Zero local pages. Nothing for Laval, Longueuil or Brossard, even though the shop delivers across the metropolitan area.
  • Organic traffic almost entirely on brand. People who reached the site already knew CDMPrint. People searching "print shop montreal" did not see it.

The engagement is a six month retainer with weekly reporting. What follows covers the first eleven weeks.

What we cleaned before adding anything

The first month produced no new pages. It produced hygiene.

We rewrote the public URL structure and built the 301 redirect map from the old WordPress site to the current routes, so the authority the old pages had earned would not be lost. We filed a disavow covering 374 spam domains, inherited and entirely unrelated to the print shop.

The most useful discovery came from the data, not from the audit. The bare query "cdm" was served 16,395 times in a single week with zero clicks, a brand ambiguity that inflated every impression count on the account. The side effect was that our own report that week had announced "CTR tripled". It had not. The rate rose because the denominator collapsed, not because anything improved.

The technical foundation

With a clean base, we moved to what the search engine actually reads:

  • Structured data across every product and local page: LocalBusiness, Product with AggregateOffer, FAQPage.
  • Indexing: an XML sitemap regenerated on every publish, plus a standing check on pages left outside the index.
  • Proper bilingual setup: hreflang pairs in English and French for every page, explicit canonicals, and a language switcher that lands on the real equivalent page rather than the homepage.

The application was already server rendered, so we did not have to solve the classic problem of content delivered only through JavaScript. When a client's site does depend on rendering work before it can be read correctly, that becomes the first project instead, as it did on the Elisara migration.

The dictionary: topical authority for a print shop

A print shop sells products its customers cannot name. The difference between kiss cut and die cut, what bleed means, when you need 300 dpi rather than 600. Each of those terms is a real search, made by someone who will place an order two days later.

On July 30 we published a print terms dictionary of 16 pages in English and French, linked from every relevant product page. The terms were not chosen by intuition but from search data: we dropped two terms from the initial list because they had no measurable demand, and added others that already appeared in Search Console without a page to answer them.

This is the mechanism behind topical authority: not articles about anything, but complete coverage of a field's vocabulary, coherently linked. The practical result showed up in three days, when the first pages began appearing in searches. Two weeks later the page explaining dpi and ppi sat at position 10.7 with 261 impressions.

City pages: page one in five days

On August 4 we published six regional pages in English and French, plus a delivery page for the rest of the province. The cities were not picked by proximity to the shop but by real search demand: Laval 266 searches a month, Sherbrooke 164, Longueuil 124, Brossard 82, Terrebonne 68, Repentigny 60.

By Friday, five days after publishing, Google was already ranking them in their own cities:

  • imprimerie terrebonne: position 7.1
  • imprimerie longueuil: position 7.2
  • imprimerie repentigny: position 8.4
  • imprimerie laval: position 10.1

The second week brought the first clicks, and the Brossard page had climbed to position 6.2. That speed does not come from the pages. It comes from the trust the domain accumulated in the months before them. The same pages published in June would have sat outside the results for weeks.

Reviews and deliveries: where SEO reaches the till

Visibility does not pay invoices. Two things connect the chart to the cash register.

The first is the review engine: emails that name the product ordered, invite an unhappy customer to reply directly before leaving a public review, and a counter card with QR and NFC. Every link is measurable, and the admin panel carries a card showing how many requests went out, how many were opened, and how many turned into clicks through to Google.

The second is a metric we introduced only now, because it is the cleanest signal that SEO is reaching beyond walking distance: the ratio of counter pickups to delivered orders. A customer in Laval who finds the shop on Google orders delivery. A passer by picks up in store. The delivered share had been flat since the start of the year. In the week after the city pages went live it rose for the first time. One week is not a trend, but it is exactly the indicator the city pages are built to move, so it gets its own line in the report from now on.

The numbers at eleven weeks

  • 176 organic clicks per week, a fourth consecutive record, up from 132 four weeks earlier.
  • 554 distinct searches now show CDMPrint in the top 10 results, 89 more in a single week.
  • 87 pages of the site appear in Google, up from a few dozen at the start.
  • Commercial keywords reached page one: print shop montreal 7.7, business cards montreal 8.5, banner printing montreal 8.8, poster printing montreal 7.6.
  • The brand query no longer pollutes the data: from 16,395 empty impressions down to 104.

What did not move: Domain Rating went from 1.4 to 1.8 and has held there for six weeks. Links are the slow part and there is no honest shortcut. The next move there is a press pitch built around the shop's thirtieth anniversary, not bought links.

What comes next

A FedEx integration for live shipping rates at checkout is written and tested, waiting on final validation of package weights and box sizes with the client. After that, a second batch of dictionary terms and the anniversary press pitch.

Reporting stays weekly, with the same figures, including in the weeks when something drops. Delivery is 40% of the job. The rest is keeping it clean for months afterwards. The result is live at cdmprint.ca.

Frequently asked questions

How long does local SEO take to show results?

The first measurable movement appears in 6 to 8 weeks, and new pages only start ranking quickly once the domain has accumulated trust. At CDMPrint, city pages published in week 9 were on page one within five days. The same pages published in the first month would have stayed outside the results far longer, because the first month does not produce traffic. It produces hygiene: redirects, structured data, and cleaning up the link profile.

Why would a print shop need a dictionary of terms?

Because people search for exactly the terms they do not understand, a few days before they order. Someone searching for the difference between kiss cut and die cut already has a sticker project in mind. Covering a field's vocabulary completely is the mechanism behind topical authority, and the terms are chosen from search data rather than intuition.

Why separate pages for each city instead of one page listing every area served?

Because each city is a separate search with its own result set, and a page that lists them all answers none of them specifically. A dedicated page can speak about delivery to that city, real turnaround times, and what customers there actually order. The condition is measurable demand: we picked six cities by real search volume, from 266 a month for Laval down to 60 for Repentigny, not by how close they are to the shop.