Signal propagation
This page explains what happens between "you click Publish" and "the live storefront shows the new signals". It's the part that most often surprises people, especially around what is automatic vs manual, what gets pushed where, and why JSON-LD sometimes seems to disappear.
The core loop
SYNC → ENRICH → PROPAGATE → VERIFY
- Sync brings the catalog from the platform (BigCommerce, Shopify, WooCommerce) into Clione.
- Enrich generates the AI-driven signals — meta title, meta description, JSON-LD, FAQs, keywords in the language of your content.
- Propagate writes those signals back to the platform.
- Verify fetches the live storefront HTML and confirms the signals landed.
This page focuses on the third step.
What signals are propagated
What Clione writes when you publish, per platform and entity type.
BigCommerce
| Signal | Products | Categories | Pages |
|---|---|---|---|
| Meta title | Yes | Opt-in, off by default | Opt-in, off by default |
| Meta description | Yes | Yes | Yes |
meta_keywords | Yes (array) | Yes (array) | Yes (string) |
search_keywords | — | Yes | Yes |
Canonical URL (custom_url on products and categories, url on pages) | Yes | Yes | Yes |
| JSON-LD (including FAQPage) | Yes (widget) | Yes (widget) | Yes (widget) |
| OG tags | Yes | Yes | Yes |
meta_keywords is an array for products and categories but a comma-separated string for pages. This is how the BigCommerce API works, and a frequent source of bugs in custom integrations.
Shopify
| Signal | Products | Collections | Pages |
|---|---|---|---|
| Meta title (Shopify's SEO title) | Yes | Opt-in, off by default | Opt-in, off by default |
| Meta description (Shopify's SEO description) | Yes | Yes | Yes |
JSON-LD (including FAQPage) — clione.jsonld metafield | Yes | Yes | Yes |
Visible FAQ accordion — clione.faq_html metafield | Yes | Yes | Yes |
| Enriched description, appended to the product description | Opt-in, off by default | — | — |
Clione does not write meta keywords, a canonical URL or OG tags on Shopify. Shopify renders the canonical URL from the entity's own URL.
The JSON-LD and the FAQ accordion reach the storefront through the Clione SEO and Clione FAQ app embeds, which come with Clione's Shopify app. A store connected through an app you created yourself (Client ID and Secret) gets sync, enrichment and the meta title and description, which Clione writes through the Admin API. The app embeds and the llms.txt and .md files under /apps/clione need Clione's app.
WooCommerce
| Signal | Products | Product categories | Pages |
|---|---|---|---|
| Meta title | Yes | Opt-in, off by default | Opt-in, off by default |
| Meta description | Yes | Yes | Yes |
| JSON-LD (including FAQPage) | Yes | Yes | Yes |
| Visible FAQ accordion | Yes | Yes | Yes |
Clione stores these signals on the WordPress post or term, and the Clione WordPress plugin prints them in the page server-side. When an SEO plugin (Yoast, Rank Math, AIOSEO or SEOPress) already manages the title and meta description, the Clione plugin leaves those to it and prints the JSON-LD.
— means Clione does not write that signal there. The opt-in signals are switched on per store in Store Settings: Push meta_title to categories, collections, and pages, and, on Shopify, Enriched product description.
Publishing is manual
Enriching never writes to your storefront. The enriched signals are saved in Clione, and nothing reaches the platform until you publish:
- One entity — the Publish tab on the entity page: Push All to Store, or Push on a single signal.
- Many entities — Publish All / Publish selected on the Products, Categories/Collections and Content lists, or the Publishing page.
There is no setting to publish automatically after enrichment: every write to your storefront is one you can see and audit.
Why JSON-LD is different
Meta title, meta description, canonical URL, and platform-native fields are written via the platform's catalog API. The platform stores them and renders them on every storefront page request.
JSON-LD is trickier — no platform renders arbitrary JSON-LD by default. It needs a delivery mechanism:
BigCommerce — a widget per entity
When you publish an entity, Clione writes its JSON-LD to a BigCommerce widget placed on that entity's page (Widget API, region header_bottom). BigCommerce renders the widget server-side, so the JSON-LD is in the HTML of the first fetch and every crawler sees it, including AI crawlers that do not run JavaScript.
JSON-LD appears on the pages you have published, and only on those. The Schema Injector script is separate: it renders the visible FAQ accordion, not the JSON-LD.
Shopify — the theme app embeds
Clione's Shopify app adds two app embeds to your theme:
- Clione SEO reads the
clione.jsonldmetafield on the product, collection or page and renders it in<head>as<script type="application/ld+json">. - Clione FAQ reads the
clione.faq_htmlmetafield and renders the visible FAQ accordion in the page.
Both are server-rendered Liquid, so they work for every crawler immediately. But they only render if the embeds are enabled in the theme editor.
If the embed is not enabled, the metafield exists but is invisible. This is the most common reason "JSON-LD missing on Shopify" — see Schema Injector.
WooCommerce — the WordPress plugin
The Clione WordPress plugin prints the JSON-LD and the meta tags in <head> from WordPress's wp_head hook, and prints the visible FAQ accordion in the page. Both are in the HTML of the first response.
What happens when you publish
- Clione resolves the credentials of the store the entity belongs to.
- For each signal, it writes to the platform via its API. Errors are caught per signal, so a partial failure doesn't block the rest.
- A publishing record is saved in Clione with what was pushed, when, and the platform's response.
Publishing does not start a Verification run. Verification runs on its daily schedule, or when you start it from the Verification page.
The Publish tab
From any entity's Publish tab:
- Push All to Store sends every signal to the platform.
- Push FAQs only sends the FAQ signals and leaves the rest alone.
- Push on a single signal sends just that one.
- The history pane shows every past push, with the platform's response and any returned errors.
Use it when:
- You have enriched or edited an entity and want the storefront to show it.
- Verification flags a Fail on an entity you have already published.
- The storefront CDN is showing a stale version and you want to force a write.
Rollback
There are two different rollbacks, and they do different things:
- Restoring a version from the entity's History tab restores the enriched fields in Clione and creates a new version snapshot. It does not touch your storefront. Publish afterwards if you want the storefront to show the restored version.
- Rolling back a publish from the Publish tab puts back the value the platform had before Clione's push, for that signal. For a JSON-LD widget that means removing the widget.
Why a propagation can silently fail
Even when the platform returns 200 OK, a signal may not show up on the storefront if:
- On Shopify, the Clione SEO or Clione FAQ app embed is not enabled in the theme. The metafield is written, but nothing renders it.
- On BigCommerce,
meta_keywordsis capped at 255 characters in total. Clione shortens the keyword list to fit, so the storefront can carry fewer keywords than Clione generated. - On BigCommerce products and categories,
custom_urlrequires the{ url, is_customized }object shape; a malformed string is rejected.
In all these cases, the Verification page is the canonical place to spot the discrepancy. See Verification.