Made in Calgary

Read as an agentWork with us

72% of Calgary sites have structured data. Only 61% told search engines they’re a business.

We parsed every JSON-LD block on 403 Calgary business homepages. 72% ship structured data. Sounds good until you look at what they ship. Only 61% actually declared themselves a LocalBusiness or business subtype. Of the sites with JSON-LD, 15.7% (40 of 255) only said “I am a webpage.” And 91% skip FAQPage with populated mainEntity. The business-type fix is about an hour of work.

Key findings · 403 Calgary business homepages, 352 fetched and parsed · July 2026
Calgary business homepages that ship any JSON-LD structured data72%
Declare a LocalBusiness or business subtype61%
Of sites with JSON-LD, share that never declare a business15.7%
Have no FAQPage schema with a populated mainEntity91%
Sites with fully valid schema, a business type and sameAs links, named in the study15

Quote any figure above with a link to this page. Cite it as Meridian15 (2026). 72% of Calgary Sites Have Structured Data. Only 61% Told Search Engines They're a Business. https://fifteenthmeridian.com/blog/broken-schema-calgary-2026. The full result table is metrics.csv and the method is method.json.

Structured data (JSON-LD blocks in the page head, using schema.org vocabulary) is how a website tells search engines and AI models what it actually is. Without it, a crawler has to guess. With it, the crawler knows: this is a Dentist, in Calgary, at this address, with this phone number, open these hours, verified by these external profiles.

Structured data gives crawlers clean facts. Google says it is not required for its generative AI search features and that no special markup is needed, but it still helps search engines read who you are. In our view a LocalBusiness block is one of the cheapest technical fixes you can ship, and it costs about an hour of work.

So we checked what Calgary has actually pulled.

What we did

Corpus: 403 unique Calgary business homepages, drawn from 27 “best of Calgary” listicles across nine verticals (restaurants, gyms, cafes, contractors, dental, med-spa, law, auto services, mortgage brokers, retail).

For each site we fetched the homepage HTML (5-hop redirect limit, gzip/brotli/deflate handled, 5 MB size cap). We extracted every <script type="application/ld+json"> block, ran JSON.parse on each, walked the resulting tree to collect every @type, and classified the site into one of four states:

  • NONE: zero JSON-LD blocks in the served HTML.
  • VALID: at least one parsed block with schema.org @context and a recognized schema.org type.
  • BROKEN: one or more JSON-LD blocks present, but none parses to a valid schema.org typed record.
  • PARTIAL: mixed. At least one valid block, at least one that fails to parse.

Separately we checked whether each site’s schema declares a business type (LocalBusiness, Organization, Store, Restaurant, Dentist, LegalService, AutomotiveBusiness, HealthClub, ProfessionalService, and the vertical subtypes), whether it has populated sameAs, and whether it has FAQPage with populated mainEntity. 352 of 403 sites returned a clean HTML fetch. Audit script at tools/bulk-schema-audit.js, full anonymized dataset at /research/blog/broken-schema-calgary-2026/metrics.csv.

The headline number

72%

of Calgary business homepages have JSON-LD

255 of 352 successfully audited sites ship some structured data on the homepage. In our read, it reflects the fact that WordPress with Yoast or Rank Math, Wix, and Squarespace all now ship JSON-LD by default.

The problem is what most of that 72% actually says.

The real number

61%

told search engines they’re a business

Only 215 of 352 sites declare themselves as a LocalBusiness, Organization, or a vertical-specific business type (Dentist, LegalService, Restaurant, AutomotiveBusiness, HealthClub, and so on). The remaining 40 sites (15.7% of those with any JSON-LD) shipped structured data that only declared WebSite, WebPage, ImageObject, or BreadcrumbList. They technically have schema, but they never told a search engine “this is a business.”

A page whose only structured data is @type: WebSite tells Google exactly one thing: this URL exists. It does not help Google know that you are a Calgary dentist, or that you serve NW Calgary, or that you take walk-ins. For a search like “best dentist in Calgary NW,” LocalBusiness schema (address, telephone, area served, hours) states facts that WebSite schema never does, though no markup guarantees a citation.

The FAQPage gap

91%

skip FAQPage schema entirely

Only 31 of 352 sites (8.8%) ship a FAQPage node with populated mainEntity. Google stopped showing FAQ rich results on May 7, 2026, and no AI engine documents FAQPage as a citation factor. A visible FAQ that answers the questions your customers actually ask is still useful to readers, and matching FAQPage markup describes it accurately.

91% of Calgary businesses skip it.

Cross-tab by platform

Not every builder ships equal schema. Some make it easy, some ship it whether the owner asked or not, and some leave the owner on their own.

Business-type schema adoption by builder (n=352)
Wix (n=24)100% any · 54% business
Squarespace (n=19)100% any · 74% business
WordPress (n=178)88% any · 78% business
Shopify (n=38)63% any · 55% business
Duda (n=5)60% any · 20% business
custom (n=76)37% any · 36% business
Webflow (n=6)17% any · 17% business
Square Online (n=6)0% any · 0% business

Wix and Squarespace both ship JSON-LD on every site (100% “any schema”), but Wix only manages to include a business type on 54% of them. Squarespace does better at 74%. WordPress with Yoast or Rank Math does best at 78%. Custom sites are worst at 36%, because if you build the site yourself, you have to remember to add the schema yourself, and most people forget. Square Online (n=6, tiny sample) shipped zero JSON-LD across every audited site.

Two takeaways. First, builder choice partly determines whether you get schema at all, but even the builders that ship schema on every site miss the business type on 26% (Squarespace) to 46% (Wix) of them. Second, if you are on a custom site, you are almost certainly the one who has to add this yourself. The builder is not going to save you.

The 15 sites that got it right

Fifteen Calgary sites in the corpus ship fully valid schema with a business type, populated sameAs, and eighteen or more distinct schema types across the page. These are the Calgary AEO winners. If you are wondering what the top of the market looks like:

Named winners: LocalBusiness + sameAs + valid, ranked by types shipped
prowindowtinting.ca (WordPress)25 types
bravehomes.ca (WordPress)23 types
calgaryceramiccoatings.ca (custom)23 types
amptover.com (WordPress)22 types
macleodtraildental.ca (WordPress)22 types
newskinyyc.ca (WordPress)22 types
corespinclub.ca (WordPress)21 types
washmyride.ca (custom)21 types
calgarymediclaser.com (WordPress)20 types
gravityelectrical.ca (custom)20 types
yycdetail.ca (WordPress)20 types
roylandstucco.ca (WordPress)19 types
sagehilldental.ca (WordPress)19 types
budgethomerenovation.com (WordPress)18 types
cashionlegal.com (WordPress)18 types

WordPress dominates the winners list, which is unsurprising: Yoast, Rank Math, and Schema Pro are all mature and produce clean output when configured. Three of the fifteen are custom builds where the developer took the time to add real schema. Wix and Squarespace do not appear at the top of this list because their auto-schema is complete enough to be VALID but rarely reaches 18+ types.

What to do

Three moves in order of payoff.

  1. Validate what you have. Run your homepage through the Schema Markup Validator, which lists every schema type on the page (Google’s Rich Results Test only reports types eligible for rich results, so it can show “No items detected” on a page that has schema). If it finds nothing, you are in the 28% with no schema. If it finds only WebSite or WebPage or BreadcrumbList, you are in the 15.7% of schema-shipping sites with schema that does not identify you as a business. That is the failure mode this study is naming.
  2. Add LocalBusiness or the vertical subtype. Dentist for a dental clinic, LegalService for a law firm, AutomotiveBusiness for a shop, HealthClub for a gym, MedicalBusiness for a med-spa. Include name, url, address (with full PostalAddress), telephone, openingHoursSpecification, and sameAs pointing to at least your Google Business Profile, Instagram, and Facebook. Twenty minutes of work, one page.
  3. Add FAQPage. Pick the four to eight questions your customers actually ask you before they book. Use the exact question wording your customers use, not a marketing rewrite. Answer each in 40 to 120 words. Ship as a FAQPage schema block with populated mainEntity. Only add it where the questions and answers are visible on the page. 91% of Calgary businesses have not shipped it. One hour of work.

Methodology

Sample. 403 unique Calgary business homepages, drawn from 27 “best of Calgary” industry listicles verified 2026-07-20. Same corpus used across the AI-blocking myth study. Real estate is represented by mortgage brokers because every Calgary realtor listicle links to internal profile pages rather than to independent websites. Full source list, exclusion policy (30+ hosts and aggregators removed), and vertical mapping are in /research/blog/broken-schema-calgary-2026/method.json.

Selection bias. Read the sample as “Calgary businesses polished enough to be listicle-featured and to own a linkable site.” The frame over-represents established, well-marketed businesses that already invest in a strong web presence. Any homepage-quality finding here is an upper bound. The true Calgary SMB population, including newer, cash-only, and referral-driven businesses, likely has even lower schema adoption than what we measured.

Audit tool. Custom Node script at tools/bulk-schema-audit.js. Each site’s homepage was fetched with a 15-second timeout, 5-hop redirect limit, gzip/brotli/deflate handled, and a 5 MB size cap. Every <script type="application/ld+json"> block was extracted via regex, cleaned of HTML comments and CDATA wrappers, and passed through JSON.parse. The resulting object tree was walked recursively to collect every @type, check for a @context containing “schema.org”, and detect populated sameAs and FAQPage mainEntity.

State classification. NONE when the served HTML contains no <script type="application/ld+json"> block at all. BROKEN when at least one block is present but none parses to a valid schema.org typed record. VALID when at least one block parses with a schema.org @context and a recognized top-level type. PARTIAL when at least one block is valid and at least one block fails to parse.

Business-type detection. A site is counted as declaring a business type if any parsed @type matches LocalBusiness, Organization, Corporation, Store, or one of ~30 vertical-specific subtypes (Restaurant, Dentist, LegalService, AutomotiveBusiness, HealthClub, MedicalBusiness, etc.). The full list is in tools/bulk-schema-audit.js.

Limitations. Homepage only. A site with weak homepage schema may still have rich schema on interior pages (service pages, blog posts, product pages). This study specifically measures the homepage entry point where the majority of first-touch visits and AI citations point. We did not run schema against Google’s Rich Results Test (rate-limited); we implemented independent parsing plus type-membership checks calibrated against schema.org’s own type hierarchy.

Naming policy. Winners (fully valid schema plus LocalBusiness or vertical subtype plus populated sameAs, ranked by types shipped) are named. All other sites are hashed with a stable salted SHA1. Blocking or missing schema is not a moral failing, and naming laggards is not fair game.

Replication. The full anonymized dataset is at /research/blog/broken-schema-calgary-2026/metrics.csv. The audit script is at tools/bulk-schema-audit.js.

Questions, answered.

What is structured data and why does it matter for AI search?

Structured data is a JSON-LD block on a page that tells search engines and AI models exactly what the page is about in a standard format (schema.org). Without it, a crawler has to guess whether the page is a business, a product, a review, or a marketing page. With it, the crawler knows. It gives them clean facts, though Google says structured data isn't required for its generative AI search features. A page that says "we are a LegalService named Example Law, phone 403-555-0100, address Calgary AB, sameAs LinkedIn URL" states facts that a page saying only "call us today" never does.

How many Calgary business homepages have JSON-LD?

255 of 352 successfully fetched sites (72.4%). The other 97 have no JSON-LD block at all. Most of the 72% who do have it are on WordPress with Yoast, Rank Math, or a similar SEO plugin, or on Wix and Squarespace, which ship JSON-LD by default.

How many told search engines they're a business, not just a webpage?

215 of 352 (61.1%). 40 sites (15.7% of those with any JSON-LD) shipped structured data that only declared WebSite or WebPage or ImageObject. They technically have schema, but they never marked themselves as a LocalBusiness, Organization, Dentist, LegalService, or any of the vertical-specific business types schema.org offers. Search engines can index those pages, but they cannot use the schema to answer "who is a good Calgary contractor" because the page never declared itself as one.

How many have FAQPage schema with populated mainEntity?

31 of 352 (8.8%). Google stopped showing FAQ rich results on May 7, 2026, and no AI engine documents FAQPage as a citation factor. A visible FAQ that answers real customer questions still helps readers. 91% of Calgary businesses have not shipped one.

What is sameAs and why does it matter?

sameAs is a schema.org property that links your business to its identity on other services. Facebook page, Instagram profile, LinkedIn company page, Yelp listing, Google Business Profile. It tells search engines and AI models "this business here is the same business over there." 151 of 352 Calgary sites (42.9%) have populated sameAs. The other 57% are structurally isolated from their own social presence.

What should a Calgary business do about this?

Three moves in order of payoff. First, validate what you have. Run your homepage through the Schema Markup Validator (validator.schema.org). If it finds nothing you are in the 28% with no schema. If it finds only WebSite or WebPage you are in the 15.7% of schema-shipping sites with schema that does not identify you as a business. Second, add LocalBusiness or the vertical subtype: Dentist, LegalService, AutomotiveBusiness, HealthClub. Include name, url, address, telephone, hours, and sameAs pointing to at least Google Business Profile, Instagram, and Facebook. Third, add FAQPage with the four to eight questions your customers actually ask you before they book. Use the exact question wording, not a marketing rewrite. Only mark up questions and answers that are visible on the page.

Faster site. Then AI search. One sprint.

If your Calgary site is in the Slow or Painful tier, we fix speed and AEO together. Same weekend, same team, both wins.