On-Page SEO
Pointless POS uses a built-in SeoService to manage document titles, meta tags, Open Graph social tags, and canonical URLs across all customer-facing pages. This service runs automatically when customers navigate through your menu and product pages.
How It Works
The SeoService is injected into every public-facing component (menu lists, product detail pages, lesson and rental pickers, display menus). When a page loads, the component calls seo.setPage() with the relevant content. When the user navigates away, seo.reset() restores the default storefront metadata.
Page Title
Every page title follows the pattern:
{Page Content} | {Your Company Name}
The company name is resolved in this priority order:
- Company Name Display — set in Settings > Software & Hardware > Interfaces (most authoritative).
- Assigned site name — the live site configuration for your account.
- Fallback —
PointlessPOS(used only in demo/dev environments).
Example
If your Company Name Display is Green Valley Dispensary and the customer views a product named Blue Dream Pre-Roll, the browser tab shows:
Blue Dream Pre-Roll | Green Valley Dispensary
Meta Description
Each page sets a <meta name="description"> tag that search engines use for search result snippets. The description source depends on the page:
| Page | Description Source |
|---|---|
| Product detail | metaDescription field, falling back to onlineShortDescription, then stripped HTML from onlineDescription |
| Menu / category browse | Category or department description |
| Display menu | Menu section description or subtitle |
| Lesson / rental picker | Offering's short description |
| Default (home) | Browse our menu and place your order online. |
Descriptions are truncated to ~158 characters to avoid search engine cutoff.
Open Graph Tags
Open Graph tags control how your pages appear when shared on social media (Facebook, LinkedIn, X, Slack, etc.). The SeoService sets these automatically:
| Tag | Source |
|---|---|
og:title | Same as page title ({Content} | {Company Name}) |
og:description | Same as meta description |
og:type | product for product pages, website for all others |
og:image | Product's main image URL (product pages only) |
og:url | Current page URL |
Keywords
If a product has meta tags configured in the Web Editor, those tags are pushed into <meta name="keywords"> on the product detail page. This helps search engines understand the product's attributes.
Canonical URLs
Each routed page sets a <link rel="canonical"> tag pointing to its clean URL (without query parameters). This prevents duplicate content issues when the same page is reachable through multiple URLs.
| Page | Canonical URL |
|---|---|
| Product detail | /menu/{product-id} |
| Menu browse | /menu or /menu/{category-id} |
| Display menu | /display-menu/{menu-id} |
What You Can Control
As a store admin, you influence SEO through these settings:
| Setting | Where | Effect |
|---|---|---|
| Company Name Display | Interfaces Settings | Appears in every page title |
Product metaDescription | Product Web Editor | Primary meta description |
Product onlineShortDescription | Product Web Editor | Fallback meta description |
Product metaTags | Product Web Editor | Page keywords |
| Product main image | Product Image Upload | Open Graph shared image |
Pages Without SEO
Authenticated pages (login, register, admin panels, POS screens) do not set SEO metadata. Search engines cannot index these pages — they are behind authentication gates.
Coming Soon: Structured Data
schema.org JSON-LD structured data (Product, Organization, BreadcrumbList) is planned for future releases. See Structured Data for the current roadmap.