For the complete documentation index, see llms.txt. This page is also available as Markdown.

JSON-LD Schema (AEO / GEO)

Schema markup, also known as structured data, is the language search engines and LLM use to read and understand the commerce content on your Limio pages.

Generates Schema.org JSON-LD structured data from your Limio pricing pages and embeds it as a <script type="application/ld+json"> in the page head at publish time. Includes Product, Offer, and Price definitions with billing intervals, regional availability (eligibleRegion), upsell links (isRelatedTo), cross-sell add-ons via the schema.org addOn property, and checkout deep links with UTM attribution for AI agent tracking.

How it works

At publish time, Limio reads the offers on your pricing page and converts them into Schema.org JSON-LD. The schema includes:

  • Product and Offer definitions — mapping directly from Limio's domain model (Product, Offer, Price use the same terminology as Schema.org)

  • Regional availability — each Offer's eligibleRegion is populated from the offer's allowed-countries list, so agents know which offer applies in which country (see Regional availability)

  • Upsell linksisRelatedTo maps upsell offers configured on each offer as related alternatives

  • Cross-sell add-ons — when enabled, add-ons from useCampaign() are attached to each subscription offer using the schema.org addOn property (not as flat entries in the offers array). Duplicates are automatically removed

  • Checkout deep linkscheckoutPageURLTemplate and url on each Offer, pointing to Limio purchase links so agents can link directly to checkout

  • Attribution tracking — UTM parameters (utm_source=ai&utm_medium=llm) baked into checkout URLs so you can measure whether AI agents actually drive purchase traffic

The component is added to your pricing page like any other Limio component. Once published, you can verify the output using Google's Rich Results test (https://search.google.com/test/rich-results) or Schema validation (https://validator.schema.org/).

Configuration

The component is configured via props in the Limio Page Builder. The base props control the schema type and product metadata:

Prop
Type
Default
Description

schemaType

picklist

SoftwareApplication

Schema.org type: SoftwareApplication, Product, or Service

applicationName

string

""

Product or application name

applicationUrl

string

""

Product or application URL

applicationCategory

string

BusinessApplication

Application category (SoftwareApplication only)

pageDescription

string

""

Page-level description for the schema

offerDetailsField

string

offer_features__limio

Offer attribute used for description and feature list. Change this if your offer_features__limio is used for other purposes and you want to point to a custom attribute instead.

includeAddOns

boolean

false

Include cross-sell add-ons in the schema output

To enable checkout deep links and attribution tracking, configure the purchase link props. These use Limio's standard purchase link format (/checkout?purchase=/offers2/offerName) and append UTM parameters so you can measure AI-driven traffic in your analytics.

Prop
Type
Default
Description

shopDomain

string

""

Your shop domain (e.g. https://shop.example.com). Required to enable purchase links — leave empty to omit them.

checkoutBasePath

string

/checkout

The checkout page path. Change this if your checkout uses a custom page tag.

utmSource

string

ai

UTM source parameter for attribution

utmMedium

string

llm

UTM medium parameter for attribution

utmCampaign

string

limio-pricing-page

UTM campaign parameter for attribution

When shopDomain is set, each Offer in the JSON-LD output includes two fields:

  • url — a direct purchase link for the offer, widely supported by search engines and AI agents

  • checkoutPageURLTemplate — the same link using the Schema.org v15 property specifically designed for checkout URLs

The offer path (/offers2/offerName) is derived automatically from the offer data returned by useCampaign().

Example output for a single offer:

Measuring AI attribution

Once deployed, you can track whether AI agents and LLMs are driving purchase traffic by filtering your analytics for the UTM parameters:

  • utm_source=ai — identifies traffic originating from AI systems

  • utm_medium=llm — identifies the channel as a large language model

  • utm_campaign=limio-pricing-page — identifies the specific pricing page

These defaults are designed for general AI attribution. You can customise them per page — for example, setting utmCampaign to enterprise-pricing on your enterprise page to distinguish traffic sources.

The purchase links follow Limio's standard purchase link format, so they work with all existing checkout configurations including promo codes (&pc=PROMO123).

Cross-sell add-ons

When includeAddOns is enabled, add-ons from useCampaign() are attached to each subscription offer using the schema.org addOn property. This is the semantically correct way to represent cross-sell items — rather than listing them as separate top-level offers.

  • Add-ons are automatically deduplicated by name, price, and currency — if the same add-on appears multiple times in your data, it will only appear once in the schema

  • Add-ons do not get purchase links (checkoutPageURLTemplate) — only subscription offers do

  • Unpublished add-ons are filtered server-side by the Limio SDK and won't appear in the output

Regional availability (eligibleRegion)

Each Offer's eligibleRegion is populated from the allowed country set configured on the offer in Limio, as an array of ISO 3166-1 alpha-2 codes:

If an offer has no allowed countries set, eligibleRegion is omitted and the offer is treated as available everywhere. No configuration is required — the regions come straight from the offer data.

Billing intervals and price specification

The component maps Limio's repeat_interval_type to Schema.org's UnitPriceSpecification with UN/CEFACT unit codes. Both singular and plural forms are supported:

Limio interval type
Schema.org unitCode

month / months

MON

year / years

ANN

week / weeks

WK

day / days

DAY

If repeat_interval_type is not set on an offer, the priceSpecification block is omitted entirely (the price and priceCurrency fields are still included).

Pricing

The component maps Limio Price (price__limio) — the price configured on the offer. For promotional offers, this is the introductory price. Free offers with non-numeric values (e.g. "-") are handled gracefully — price fields are omitted entirely.

Limio doesn't currently store the renewal price as it comes from external billing systems. If you're interested in having the renewal/full price available in Limio, contact us to flag your interest.

Feature lists

Offer features are extracted from the attribute specified by offerDetailsField (default: offer_features__limio). If the attribute contains HTML list items (<li>), each item is mapped to a ListItem entry in an ItemList on the offer's itemOffered Service. If the field contains paragraph text instead of a list, it's used as the plain-text description only.

Why it matters

AI agents and LLMs increasingly rely on structured data to understand and recommend products. Without JSON-LD, your pricing pages are invisible to these agents — or worse, misrepresented by stale third-party data.

This is an experiment to test a hypothesis: does publishing structured offer data lead to AI-driven purchase traffic? The UTM tracking lets you answer that question directly. If agents start sending traffic to your checkout, you'll see it in your order data.

Schema.org types map almost 1:1 to Limio's domain model, making the integration lightweight. One schema, two delivery formats — pages get embedded JSON-LD, and a future feed endpoint could serve the same data for direct agent consumption.


This is a Labs feature. It's experimental and not yet part of the core platform. You can use it today as a Limio Custom Component on any release. Want early access or to help shape it?

Request access →

Last updated

Was this helpful?