An advanced SEO module.
SEO structure, fields and integrations inside the platform. Structured data together with Solaris, with sitemaps, feeds and robots governed from here, and data layers ready to run or adapt. Built for how SEO actually works today.
SEO fields where the content lives.
Structure, fields and integrations
Templates underneath, exceptions on top
Titles and descriptions are generated from templates per entity type and language. If somebody writes their own value, that wins. The completeness report shows where templates are used and where content is missing.
- Entities
- Item, variant, category, brand, CMS page, landing page, blog post
- Per language
- Your own fields and templates per language and channel, with hreflang linking
- Indexing
- Robots per entity, canonical, pagination and faceted views
- Redirects
- 301 and 302 with bulk import, hit logging and a 404 report
- Permissions
- An SEO role that edits metadata without touching price or stock
Integrations included
Verification, measurement and tagging are connected in the platform, not in the theme. Change frontend and the connections come with you.
Consent mode governs which events may be sent, and the same setting applies both in the browser and server-side.
Together with Solaris.
// Generated by Solaris from the platform's data { "@context": "https://schema.org", "@type": "Product", "name": "Shell Tech Jacka", "sku": "APP-221", "gtin13": "7350061234567", "brand": { "@type": "Brand", "name": "Nordkust" }, "offers": { "@type": "Offer", "price": 2495, "priceCurrency": "SEK", "availability": "https://schema.org/InStock", "shippingDetails": { "@id": "#frakt-se" }, "hasMerchantReturnPolicy": { "@id": "#retur" } }, "aggregateRating": { "ratingValue": 4.6, "reviewCount": 128 } }
Solaris renders structured data server-side from the same data the page shows. Price, stock, shipping terms and return policy come from the platform, so the markup and the page never drift apart.
Commerce
- Product · Offer
- AggregateOffer
- ShippingDetails
- MerchantReturnPolicy
- AggregateRating · Review
Navigation
- BreadcrumbList
- ItemList (listings)
- CollectionPage
- SearchAction
- WebSite
Company & content
- Organization
- LocalBusiness
- FAQPage
- Article · BlogPosting
- VideoObject
Custom types are added per page type, and the markup is validated in the build so a release cannot ship with broken JSON-LD.
Sitemaps and robots are governed from here.
No files to remember
| Sitemap | Content | URL:er | Uppdateras | Last | Status |
|---|---|---|---|---|---|
| sitemap-index.xml | An index of all sub-sitemaps | 6 kartor | On change | 14:31 | Aktiv |
| sitemap-produkter.xml | Publicerade artiklar | 4 218 | Vid publicering | 14:31 | Aktiv |
| sitemap-kategorier.xml | Categories and filter views | 312 | On change | 13:02 | Aktiv |
| sitemap-innehall.xml | CMS pages and landing pages | 148 | Vid publicering | idag 09:44 | Aktiv |
| sitemap-bilder.xml | Product images with alt text | 18 902 | Natt 03:00 | 03:00 | Aktiv |
| sitemap-b2b.xml | Inloggad B2B-katalog | — | — | — | Disabled |
Facets without index clutter
You decide which filter combinations become indexable pages with their own title and copy, and which are closed off through robots and canonical. The rest is handled with parameter rules.
- Indexable
- Selected facets — category + colour, say — with their own metadata
- Closed
- Sorting, page numbers beyond the series, empty results
- Pagination
- A self-referencing canonical with correct lastmod
- 404 & 410
- Discontinued items with a suggested replacement, or a redirect
Google feed, Meta feed or your own.
The same field picker, different destinations
| Feed | Mottagare | Urval | Poster | Schema | Status |
|---|---|---|---|---|---|
| Google Shopping SE | Merchant Center | Published, in stock | 4 102 | Every hour | Aktiv |
| Google Shopping NO | Merchant Center | NO-katalog | 3 640 | Every hour | Aktiv |
| Meta katalog | Meta Business | Kampanjurval | 1 284 | Var 4:e timme | Aktiv |
| Price comparison | URL · XML | All except outlet | 3 980 | Var 6:e timme | Aktiv |
| Retailer feed | FTP · CSV | Avtalat sortiment | 642 | Natt 02:00 | Schemalagd |
| Affiliate | URL · CSV | Kampanjartiklar | 218 | Dagligen | 2 varningar |
Custom feeds are built from the same field picker as export, in any format, to any destination — URL, FTP, email or API.
Ready-made data layers, ready to run or adapt.
The whole purchase journey is instrumented from the start: list views, product views, cart, checkout steps and purchase. The events follow GA4's ecommerce schema and can be remapped to your own names without rebuilding the theme.
- Included
- view_item_list, view_item, select_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund
- Customisable
- Your own events and parameters — customer group, margin class or stock status, for example
- Destinations
- GA4, GTM, Meta, your own endpoints — one event, several destinations
- Server-side
- Purchases and refunds can be sent server-side, independent of blockers
- Consent
- Consent Mode v2 governs what may be sent, per category
// Sent by Solaris on order confirmation window.dataLayer.push({ event: 'purchase', ecommerce: { transaction_id: 'SO-104882', value: 3990, tax: 798, shipping: 49, currency: 'SEK', coupon: 'HOST20', items: [{ item_id: 'APP-221', item_name: 'Shell Tech Jacka', item_brand: 'Nordkust', item_category: 'Jackor', item_variant: 'Svart / M', price: 2495, quantity: 1, // custom parameters customer_group: 'b2c', margin_class: 'A', }], }, });
Built for how SEO actually works today: server-rendered pages with Core Web Vitals designed in, structured data that follows the page’s real data, and index hygiene that keeps facets, pagination and discontinued items under control.
Rendered on the server
Solaris renders pages server-side with revalidation on price and stock changes, so what gets indexed is current.
Templates and exceptions
Metadata is generated from templates per language and channel, with a completeness report on what is missing.
Measurement that holds up
Data layers, server-side tagging and consent mode sit in the platform, not in the theme.
Questions about the SEO module.
Common questions
Do we need Solaris for structured data?+
No, but it is the easiest route. Solaris renders the markup ready from the platform’s data. With your own frontend, the same data is exposed through the API and you render the JSON-LD yourself.
Do we keep our URLs in a migration?+
Yes. The URL structure is set in the platform and redirects are imported in bulk. See replatforming for how it works in practice.
Can we have different SEO settings per market?+
Yes. Fields, templates, robots, sitemaps and feeds are set per channel and language, with hreflang between the versions.
How often are sitemaps updated?+
On publish for products and content, on a schedule for images. Search Console can be pinged automatically on update.
Can we build a custom feed for a reseller?+
Yes. Custom feeds use the same field picker as export, in any format, to a URL, FTP, email or the API.
Does measurement work with a consent banner?+
Yes. Consent Mode v2 governs which events are sent per category, and the same rule applies server-side.
Can we rename the events in the data layer?+
Yes. The default follows GA4’s schema, but events and parameters can be remapped and extended without rebuilding the theme.
Bring your current store.
We go through the URL structure, indexing and feeds as they stand today, and what moves with you when you switch platform.