Developer Changelog
What changed for app, theme and SDK developers, newest first. Changes are backwards compatible unless an entry says otherwise.
October 2026
Themes and MCP
/llms.txtfor every site. Each storefront now serves/llms.txt, a Markdown index of the site for language models (site name, description, and the pages with their titles). A theme can write its own astemplates/llms.twig, and addtemplates/llms-full.twigfor/llms-full.txt. See Directory structure.og:localeper language.sitepack_head()now printsog:localein Open Graph'slanguage_TERRITORYform for the language being read (nl_NLon/nl/,en_GBfor a bareenstore), plus anog:locale:alternatefor every other language of the page. It used to print the store's main locale on every page, often as justen.- Cookie banner after first paint, in the page's language.
sitepack_cookies()now shows the banner right after the first paint, so it is never the Largest Contentful Paint at load. On a custom theme its texts were rendered in the store's main language on translated pages; they now follow the page. Seesitepack_cookies(). sitepack_slug()and deeper paths. A link written as the whole admin trail to a sub page ('website-builder/business-email/alternative') now resolves to the address that is served (/business-email/alternative) in every language, instead of a 404. Seesitepack_slug().- One address per page.
/nl/and other paths with a trailing slash redirect to/nlwith a relativeLocation, so the redirect keeps https./index.phpredirects to/. - Structured data. The
SoftwareApplicationoffer from the company profile now links to the pricing page in the language being read, and a post type overview page (such as/themes) without entries gets alastmodinsitemap.xmlfrom its own last change. - Custom head and body code on custom themes. The head and body code a merchant sets under Settings → Custom HTML (a verification meta tag, a tracking snippet) was only printed by the built-in layout.
sitepack_head()now prints the head code and thebody_starthook the body code. Nothing changes in your templates, as long as your layout has{% app_block 'body_start' %}right after<body>. Seesitepack_head(). - Social media profiles over MCP and the API.
get_social_media/update_social_mediaread and change the site's social media profiles, LinkedIn included, and so doGET/PATCH /api/public/v1/site/social-media(sites:read/sites:write). Only the networks sent change; a URL that is not on the network's own domain is refused with a422. See AI and MCP. - LinkedIn. Merchants can link a LinkedIn page under Settings → Social media. It shows in the social media element and in
site.socialMediawithnameLinkedIn, and becomes part of theOrganizationsameAs. See Twig objects. filefield type. A theme setting or template field with"type": "file"is a download, such as a PDF. The merchant sees the current file with buttons to upload, replace or remove it; the file is virus-scanned and hosted by SitePack. Themediatype is now documented too, and its upload accepts documents. See File fields.booleantoggles work. Abooleantemplate field or setting is now an on/off toggle in the Admin, stored as"1"/"0". A template field'sdefaultfromtheme.jsonnow really applies to every field the merchant never filled in (it was documented, butpagedid not carry it). See Toggling sections on and off.- PDFs through MCP.
upload_mediaalso takes a PDF (data:application/pdf;base64,...or a public url ending in.pdf). Afiletemplate field written withcreate_page/update_pagemust hold the url it returns; links to other websites are refused. - Structured data on app post type pages. The overview and entry pages of an app's post type (e.g.
/cinemasand/cinemas/<slug>) now get the same schema.org JSON-LD fromsitepack_head()as every other page: the organisation from the company profile, the website, the page itself and a breadcrumb. They used to print a bareOrganizationwith a brokenhttps://https://address. Nothing changes in your templates. - Policy page titles name the site. On a custom theme,
sitepack_title()on a legal page (terms, privacy, cookie policy…) now returnsPrivacy policy | <site name>instead of the bare policy name, as the built-in layout already did.content.nameis unchanged, so headings stay the same. - Company profile. Merchants describe their business under Settings → My company (organisation type, founders, founding date, registration numbers and type-specific details). It now drives the site's
OrganizationJSON-LD, whose@typefollows the chosen schema.org type. See Twig objects. The JSON-LD no longer claims the site's creation year asfoundingDate, andfoundersbecame the schema.orgfounderwith@type: Person. - Variant image follows the picker. On a product page,
sitepack_product_options()now switches the main product photo to the image of the picked variant, in every theme and without theme code. Variant images are added toproduct.images, so they show up as gallery thumbnails, and clicking one picks its variant. Themes can point at their main photo withdata-product-main-imageor handle the cancelablesitepack:variant:changeevent themselves. Seesitepack_product_options(). get_company_profile/update_company_profile. The MCP connector can read and fill in the company profile. The connector now also asks forsites:write; existing connections pick it up when they reconnect. See AI and MCP.
Apps
- API Endpoints page. Every endpoint on
https://api.sitepack.euon one page, grouped like the API Reference, with the scope each one needs, the response format, errors and rate limits. See API Endpoints. - API Reference for tools and AI assistants. The full OpenAPI document is at
/openapi.json(also behind the reference's Download button), every section is a small Markdown file such as/api-reference/leads.md, and/llms.txtlists them all. Point code generators and AI assistants there instead of at the API Reference page, which is too large for them to read whole. - Leads in the API Reference. The lead endpoints (
/api/public/v1/leads) have their own section instead of sitting under Site, and so do Comments and Billing. - Webhook topics, complete. Webhooks now lists every topic SitePack sends, with the endpoint to read the record back, and the topics you can subscribe to that do not fire yet.
- Correction: webhook retries. A failed delivery is retried once, about 5 seconds later, not for 24 hours. A retry has a new event
uuid. See Delivery and retries.
CLI
- Two-factor sign-in and trusted browsers.
sitepack loginsigns in through the browser, so it now goes through the account's two-factor gate. The default second step is a 6-digit email code; an account with an authenticator app (TOTP) enabled confirms with an app or backup code instead, and staff accounts are required to use an authenticator app. After verifying, the browser stays trusted for a while (up to about a week) based on a device cookie rather than the client IP, so a changing network no longer forces a new challenge. Nothing changes in how the CLI stores its own token. See Authentication.
September 2026
Apps
- Install link for every app. Your app page in the Partner Portal shows an Install link that works for public and private apps. Whoever opens it gets a consent screen showing the app, the site and the price. Private apps can be tested and shared before review. The Marketplace one-click install is unchanged. See The Partner Portal.
- Scopes come from
app.json. The consent screen readsauth.scopesfrom your latest published version. - Faster releases. A publish now reaches the storefronts of every site with your app installed right away.
- API Reference. Every endpoint of the app API, with its parameters, required scope and example responses, is now published at API Reference.
sitepack app:link. Register an existing app folder as a new app in your organisation. See CLI commands.- Review emails. Owners and App developers get an email when an app is submitted and when the review is done, in their own language. See Marketplace Policy.
- Translatable settings. Mark a free-text setting
"translatable": trueand the merchant translates it with the rest of the site. See Translations. - Image settings. A
stringsetting with"format": "image"becomes a media picker, with an optional default image shipped in your app. See App Settings. - App translations. One JSON file per language in
translations/translates your settings form and your storefront blocks. See Translations. - One sandbox for apps and themes. App blocks may use everything a theme may use, including
sitepack_products()andsitepack_price().rawis not available; usesitepack_htmlandsitepack_json. See The sandbox. - App CDN. App scripts are served from
https://cdn-app.sitepack.eu/<uuid>/<version>/assets/js/<file>. - Marketplace assets. Screenshots may now be SVG (cleaned on upload), up to 5 MB each.
- New webhook topics.
order.created,order.paidandcustomer.createdline up with the storefront tracking events. See Webhooks. - Storefront blocks and events. Apps render Twig into fixed spots of every theme (
blocks), load scripts (scripts), and readwindow.SitePackTracking, thesitepack:*SDK events and the visitor's cookie consent. See Storefront Blocks & Events.
SDK
sitepack:checkout:thank-you. Raised once on the confirmation page when the order is paid. See Storefront events.- Cookie consent.
sdk.cookies.consent()and thesitepack:cookies:consentevent. See UI & Cookies.
Themes
homepage.twigis assigned to the homepage automatically.- Legal pages are translatable and served per language.
August 2026
Apps
- App install flow. The consent screen with a site picker, grouped permissions and paid plans; the install link and redirect URI in the Partner Portal; signed OAuth callbacks with
manage_url. See Authentication (OAuth). X-SitePack-Access-Tokenis the preferred header.Authorization: Bearerkeeps working.- Product options and variants on the v1 API, with the
products:*andinventory:*scopes and the ordered variant on order reads. See Product Options & Variants. - E-commerce and blog scopes:
products,inventory,categories,collections,tags,orders,customers,discounts,shippingandblogs. See Scopes.
CLI
sitepack mcpconnects an AI editor to your SitePack site. See AI & MCP.
Themes
- New functions:
sitepack_account(),sitepack_account_slug(),sitepack_blogs(),sitepack_categories(),sitepack_products(),sitepack_product_options(),sitepack_json_ldand the product, category and blog slug helpers. See Functions. rawremoved from themes. Usesitepack_htmlfor merchant rich text andsitepack_jsonfor data in a<script>tag.- Central content (newsletter, USPs, top bar, events) is managed in the admin and read through theme functions and the SDK.
July 2026
- JavaScript SDK released for theme and app developers. See SDK overview.
sitepack_slug()and the translation switcher functions for themes.