Service
Web development in Montreal
A public site sales can edit, that creates a CRM record, and that Google and AI answers can cite. PHP, Shopify, WordPress, Drupal, OpenCart, Joomla, WooCommerce, Magento, Next.js — chosen for who edits on a Tuesday, not for our preference. SEO/GEO is in the first slice, not a phase two.
What we actually ship
A named offer on a URL people can type. One page sales recognises, a form that creates the right CRM or Shopify customer, technical hygiene so it can be indexed, and a restore you have seen. Hosting, DNS, the repo, the Shopify store, the CMS admin — those stay in your name.
We rebuild, migrate, or extend what you already have. A coat of paint on a theme that cannot hold French metadata, product schema, or a real checkout is not a rebuild.
PHP and custom applications
Custom PHP and Laravel when the product is the site: portals, calculators, member desks, booking, B2B price lists. Composer, staged deploys, PHP 8.x, logs you can read. Not a zip of mixed plugins copied from a freelancer laptop.
Shopify
Shopify Partner work: Online Store 2.0 themes, Shopify Plus, Hydrogen/Oxygen when the storefront is a product, checkout extensibility, apps you actually need, metafields, Markets for CA/US/EU, and French/English catalogues. ThemeForest or custom theme — we strip what you will not maintain.
SEO/GEO on Shopify is not an app with a traffic score. It is crawlable collection templates, unique product copy, JSON-LD for Product/Offer/Organization, canonicals that do not fight filters, and a sitemap Search Console accepts.
WordPress and WooCommerce
WordPress when editors live in posts and pages. WooCommerce when the catalogue is yours and you want the keys on your host. Block theme or a ThemeForest theme we have actually audited — no 80-plugin kitchen. Core Web Vitals, XML sitemap, schema, hreflang, and a form that writes to the CRM.
Drupal
Drupal when the information architecture is a government, university, or multi-site tree: content types, views, roles, multilingual with real language switchers, and a release process. We do not leave you with a Drupal 7 site and a “we’ll upgrade later” note.
OpenCart, Joomla, Magento
OpenCart and Joomla when that is already the shop or the brochure and ripping it out would stall sales. Magento / Adobe Commerce for heavier catalogues. We patch, migrate, or contain — we do not force WordPress because it is fashionable. SEO/GEO still applies: unique titles, indexable filters or noindex where they duplicate, product schema, hreflang.
Next.js and headless
Next.js when the interface is a product or must stay fast in front of a CMS or Shopify. The test is still Tuesday at 16:40 ET: can the person who owns the offer change a sentence without a deploy from us? If not, it is the wrong headless.
ThemeForest and existing themes
We are a ThemeForest / Envato shop: we buy, child-theme, and strip. A purchased theme is a starting file, not a finished site. Unused page builders, demo sliders, and SEO plugins that rewrite titles against each other come out before launch.
SEO and GEO in the build
Crawlable HTML Googlebot and GPTBot can both fetch. One H1, a definition in the first screen, titles and meta that match the offer, canonicals, robots, XML sitemap, llms.txt, hreflang for en-CA/fr-CA when both exist, Organization/LocalBusiness/Product schema, Core Web Vitals, image dimensions, lazy-load that does not hide LCP.
GEO means a sentence an AI Overview, ChatGPT, or Perplexity can cite without inventing your hours or your city. Same NAP on the page, in schema, and in the CRM. No fake map pin. No fifty thin city pages.
French as data
Public Quebec sites often need French-first content under Bill 96. Language is a field in the CMS or Shopify Market — not Google Translate. Metadata, support language, and checkout language are planned before build.
Migrations
We move WordPress ↔ Shopify, Joomla → WordPress, OpenCart → Shopify, Drupal upgrades, Magento → Shopify or Woo, and custom PHP into something an editor can keep. Redirect map, 301s, Search Console coverage after cutover. Rankings are not a promise; losing URLs by accident is a failure.
What stays yours
Hosting, DNS, certificates, repo, Shopify store, app licences, ThemeForest licence, API keys. We show a restore. We do not hold the admin hostage.
Read next
Let's write the next step.