These pages list the exact data fields available to hosted Vascula themes. Add a root name such as product to a section's ctx_needs, then read it directly as product.title in the template. The ctx. prefix shown here identifies the public contract; do not include that prefix in a Vascula expression. Required fields are present whenever their containing object is present. Optional fields may be absent, and nullable fields may be present as null. [] marks an array item and {key} marks a key selected at runtime. Named types such as Price and Media are detailed on Shared data shapes.
ctx.shop#
Store identity, storefront-visible store metafields, and the active market's standing free-shipping offer. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
Boolean |
Optional |
|
Object |
Optional |
|
Money input |
Required |
|
Money input |
Required |
|
Metafields |
Optional |
|
String |
Required |
|
String |
Optional |
ctx.menus#
Available navigation menus keyed by handle. Resource picker settings resolve a selected menu to its full item tree. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object keyed by name |
Declared root |
|
Menu summary |
Dynamic key |
ctx.routes#
Canonical storefront URLs using the store's locale, country, and permalink configuration. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
|
URL |
Required |
ctx.localization#
Current locale and the country and language choices enabled for this storefront. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
Array of country |
Required |
|
Array of language |
Required |
|
String |
Required |
|
Country or null |
Required; may be null |
|
String |
Required |
ctx.localization_prompt#
The platform decision for whether to offer a country or language change to this visitor. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
Boolean |
Required |
|
Boolean |
Required |
|
String |
Required |
|
Integer |
Required |
|
Boolean |
Required |
|
Boolean |
Required |
|
String |
Required |
|
String |
Required |
|
Boolean |
Required |
|
String |
Required |
|
String |
Required |
ctx.breadcrumbs#
The platform-resolved entity trail. Themes may prepend their localized Home link. Available on the routes that provide this data when declared in ctx_needs.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
Array of pagination link |
Required |
ctx.consent#
Visitor consent state. available_categories lists the optional cookie categories the consent banner offers, in display order; categories lists the ones the visitor has granted. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
Array of string ( |
Required |
|
Array of string |
Required |
|
Boolean |
Required |
|
Boolean |
Required |
ctx.age_gate#
The store's age gate for this visitor: show is true when the gate applies to the visitor's country. Copy is already in the shopper's language, with the minimum age filled in. Render the gate as the global_overlay section age-gate, and render it only when ctx.age_gate.show is true: the platform adds its gate runtime only then, so a gate rendered while show is false can never be dismissed. Give its root data-tf-age-gate, role="dialog", aria-modal="true" and an aria-labelledby heading, and mark the buttons data-tf-age-gate-confirm and data-tf-age-gate-decline. The platform hides it before first paint for visitors who already confirmed, traps focus, stores the answer for remember_days days (0: the browser session) and handles declining (decline_url, or its own come-back-later screen when decline_url is empty). Keep the page content in the HTML. If the theme renders no age-gate section, the platform adds a plain one. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Object |
Declared root |
|
String |
Required |
|
String |
Required |
|
String |
Required |
|
String |
Required |
|
Boolean |
Required |
|
String |
Required |
|
Integer |
Required |
|
Integer |
Required |
|
Boolean |
Required |
ctx.csrf_token#
The signed form nonce for hosted storefront mutations. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
String |
Declared root |
ctx.design_mode#
True while the theme editor renders the page for the merchant, false for shoppers. Use it to show placeholders for content the merchant has not chosen yet, and render nothing for shoppers instead. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Boolean |
Declared root |
ctx.theme_preview#
True when the page renders sample content in a theme preview (the theme store demo and the theme tooling preview), false on a store. Use it for a theme's own sample artwork where a merchant setting is empty; a store shows nothing there instead. Available on every storefront route. Declare it in ctx_needs before reading it.
Field |
Type |
Requirement |
|---|---|---|
|
Boolean |
Declared root |