Importer and wholesaler, Vancouver BC. Shipping across Canada and the US.

Site map and SEO architecture

Every page on this site, where it sits, what it targets and how it links. The crawl records are extracted from the HTML that is actually served, so the plan and the site cannot drift apart. In production this page stays as the human site map; the planning columns move to the agency's workspace.

Shape
Hub and spoke, three clicks deep at most
Built
13 pages, 1 sitemap, robots, 404
Planned
1 hub, 26 product pages, 6 city lanes, 2 guides
Structured data
Organization, WebSite, ItemList, Product, FAQPage, Article, Service, BreadcrumbList
1.0

Page tree and crawl record

Select a page to see what a crawler reads from it. Solid boxes are built; dashed boxes are the planned expansion that the same templates would produce. The URL is the filename, which is the keyword, which is the H1: one name per page, used everywhere.

      • /<sku-name>-wholesale.htmlProduct, plannedSix more product pages, one per olive oil SKU, from the same template
      • /<sku-name>-wholesale.htmlProduct, plannedTen product pages, one per SKU
      • /<sku-name>-wholesale.htmlProduct, plannedTen product pages, one per SKU
    • /pasta-and-grains.htmlCategory hub, plannedFourth line, published when the SKU list is final
      • /mediterranean-food-distributor-<city>.htmlCity lane, plannedCalgary, Toronto, Montreal: lane, DC delivery, local buyers, same template
      • /mediterranean-food-importer-<city>.htmlCity lane, plannedSeattle, Chicago, New York
      • /how-to-import-canned-tomatoes-to-canada.htmlGuide, plannedSecond pillar, tomatoes and low-acid canned goods
      • /olive-oil-grades-explained.htmlGuide, plannedSupporting article feeding the pillar and the hub

Crawl record

select a page
Turn on JavaScript to read the crawl record for each page. The keyword and intent map in section 2.0 does not need it.
2.0

Keyword and intent map

One cluster per page, one page per cluster. No two pages chase the same query, so they never compete with each other in the results. Volumes are not shown because this is a sample plan; in production the column carries the monthly estimate and the source.

Target cluster, intent and structured data by page. Sample plan.
PageTypeTarget clusterIntentStructured data
/Homemediterranean food importer vancouver; wholesale mediterranean foods canadaCommercial, navigationalOrganization, WebSite
/olive-oil.htmlCategory hubwholesale olive oil canada; bulk extra virgin olive oil supplier; olive oil distributor vancouverCommercialItemList, BreadcrumbList
/extra-virgin-olive-oil-wholesale.htmlProductextra virgin olive oil wholesale; 3 l tin olive oil bulk; evoo foodservice priceTransactional, quoteProduct, FAQPage, BreadcrumbList
/tomatoes-and-preserves.htmlCategory hubwholesale canned tomatoes canada; bulk olives supplier; capers wholesaleCommercialItemList, BreadcrumbList
/spices-and-salt.htmlCategory hubbulk spices supplier canada; wholesale sea salt; smoked paprika bulkCommercialItemList, BreadcrumbList
/restaurants-and-foodservice.htmlIndustry landingrestaurant olive oil supplier; foodservice mediterranean ingredients; wholesale food supplier for restaurants vancouverCommercialService, BreadcrumbList
/grocery-retail-and-distribution.htmlIndustry landingmediterranean grocery wholesale; specialty food distributor canada; private label olive oil canadaCommercialService, BreadcrumbList
/import-to-canada.htmlLane landingimport olive oil to canada; food importer vancouver; mediterranean food distributor toronto, montreal, calgaryCommercial, informationalService, BreadcrumbList
/import-to-usa.htmlLane landingmediterranean food importer seattle; olive oil wholesale chicago; specialty food distributor new yorkCommercial, informationalService, BreadcrumbList
/how-to-import-olive-oil-to-canada.htmlGuide, pillarhow to import olive oil to canada; olive oil import requirements canada; hs code olive oilInformationalArticle, BreadcrumbList
/contact.htmlConversionwholesale price list request; mediterranean food wholesale quoteTransactionalContactPage, BreadcrumbList
/seo-architecture.htmlSite mapnone; human site map, noindex candidate in productionNavigationalWebPage, BreadcrumbList
/privacy.htmlLegalnoneNavigationalWebPage, BreadcrumbList
FAQPage markup no longer earns a rich result in Google's results for most sites; it is kept on the product page because the questions are real and the markup costs nothing. Title tags are under 60 characters and descriptions under 155 on every page; the crawl record in 1.0 shows the counts.
3.0

Internal link graph

Contextual links only: the ones written into page bodies, not the header, footer or breadcrumb that link everything to everything. Hover or select a node to light its links. Hubs link down to spokes, spokes link back up and across to the buyer and lane pages, and every page links to the quote request.

contextual linklinks of the selected or hovered page

4.0

Link matrix

The same links as a table, rows link to columns. Red counts are parent-to-child or child-to-parent links, the spine of the hub-and-spoke. The "in" row at the bottom is the number every page needs to keep above zero: a page with no contextual links in is an orphan to a crawler, whatever the footer says.

Contextual links from each page (rows) to each page (columns)
Turn on JavaScript to build the matrix from the crawl data.
5.0

Technical checklist

What the build does on every page. Verified by script against the served HTML.
ItemStateNote
One H1 per page, keyword in natural languagedoneH1, title and filename share the same noun phrase.
Unique title under 60, description under 155doneCounts in each crawl record.
Descriptive URLs and internal anchorsdoneNo generic anchors such as "here" or "read more". Anchor text names the destination.
BreadcrumbList on every inner pagedoneVisible breadcrumb and JSON-LD agree.
Organization and WebSite on the home pagedoneItemList on hubs, Product and FAQPage on the product page, Article on the guide, Service on industry and lane pages.
Every JSON-LD block parsesdoneChecked by script; result recorded in the build notes.
Images with alt text, width and height, lazy below the folddoneLead image preloaded with high fetch priority. WebP at two widths.
sitemap.xml, robots.txt, 404 pagedoneSitemap lists 13 URLs with lastmod. Host is a deploy-time knob.
Canonical and og:urlat deployOmitted on purpose: there is no production domain yet. Added with the host, one find-and-replace.
hreflangnot neededSingle language, en-CA. A French edition would add it.
Fonts self-hosted, no third-party scripts, no trackingdoneTwo woff2 files, one stylesheet, one small script. Nothing loads from a CDN.
Light default with dark mode, mobile firstdoneTheme choice stored in the browser only.
6.0

How it grows

Product pages, one per SKU
The product template already carries Product and FAQPage markup, a specification table and a pack block. Each of the 26 remaining SKUs gets its own page from the hub's row, linked down from the hub and back up to it. Twenty-six long-tail queries of the form "SKU format wholesale", with no new design work.
City lane pages
Six cities already appear in the lane tables. Each gets a page that answers "Mediterranean food distributor in Toronto" with the lane, the DC delivery terms and the local buyer types. Spokes of the two lane landings, sharing a template and a data file.
Guides that feed the hubs
The pillar on importing olive oil is the model. A second pillar on tinned tomatoes and low-acid goods, and shorter articles on grades, harvest timing and label rules, each link to the hub and the product pages they explain.
What stays fixed
One H1 per page, one cluster per page, a breadcrumb that mirrors the tree, and a sitemap regenerated on every publish. The site can reach 60 pages without a second navigation level.