Create Complex Rule now documents conditions as required
Thanks to user feedback, the Create Complex Rule endpoint reference now marks conditions as a required field.
- conditions is required — the request body schema and the operation’s Required Fields list now include
conditions. The live API rejects requests without it with422 "Please provide a conditions.", so the reference previously showed the field as optional in error.
Complex rule condition schema clarifies nullable variant_id
The Catalog Products reference now marks variant_id as nullable in complex rule condition responses, matching what the API actually returns.
- Nullable
variant_id: complex rules created through the v2 API or the control panel can return conditions without avariant_id, so the field may benullinGETandPUTresponses.
GraphQL Schema Updates
The Storefront GraphQL API adds a vault access token mutation for stored payment instruments and a way to list the company members who have placed orders. Both additions are alpha and marked deprecated in the schema: do not use them in production.
Clarified what updates a product's date_modified
The product documentation now explains exactly which changes update the date_modified timestamp on a product, so you can avoid a common pitfall when detecting changes.
- Product record changes update
date_modified— editing a product’s name, description, pricing, categories, custom fields, images, options, modifiers, or variants updates the timestamp. - Inventory changes do not always update
date_modified— because inventory is a separate entity, stock updates processed by the Inventory API (including stock edits from the control panel Products list) leavedate_modifiedunchanged. Inventory updates processed by the Catalog API, such as aPUTthat setsinventory_level, do update it. - Use webhooks instead of polling — subscribe to the
store/product/updatedandstore/product/inventory/updatedwebhooks to reliably detect product and stock changes.
Storefront Foundations Updates
Updates the Storefront Foundations course to cover Stencil’s new multi-language storefront support and to keep a hands-on lab in sync with its underlying code.
- About Stencil now mentions that a single Stencil storefront can present multiple languages, with catalog and checkout data translated using the Translations Admin GraphQL API or the control panel’s Localization tab.
- Add a Subcategory Listing in Stencil lab syncs its code snippets with the current lab source, including the full category page markup and the component partial filename.
Catalyst Core Updates
Updates the Catalyst Core course to reflect current Catalyst CLI (v2.x) behavior, fixing setup and lab instructions that no longer matched the tool.
- Lab setup now uses
degitinstead ofpnpm dlx create-next-appto provision lab starter code. - Reconnecting a project to a storefront channel now uses
pnpm catalyst channel link, replacing the removedinitcommand. - Documents
CATALYST_ACCESS_TOKEN, the CLI-only credential that replaced the.catalystfile, including that it should be excluded from deployment environment variables. - Adds a brief introduction to the Catalyst CLI as a tool distinct from the initial installer, with a link to the full CLI reference.
- Removes outdated references to a
core/project subdirectory, since the CLI no longer scaffolds a monorepo clone.
Makeswift Core Updates
Updates the Makeswift Core course to reflect current Catalyst CLI (v2.x) behavior, fixing setup and lab instructions that no longer matched the tool.
- Lab setup and hands-on labs now use
degitinstead ofpnpm dlx create-next-appto provision lab starter code. - Reconnecting a project to a storefront channel now uses
pnpm catalyst channel link, replacing the removedinitcommand. - Documents
CATALYST_ACCESS_TOKEN, the CLI-only credential that replaced the.catalystfile. - Corrects component-registration import paths in the Image Compare Slider, Team Members, and Product FAQs labs.
- Removes outdated references to a
core/project subdirectory, since the CLI no longer scaffolds a monorepo clone.
Storefront Foundations Updates
Updates the Storefront Foundations course’s Catalyst setup lab to reflect current Catalyst CLI (v2.x) requirements.
- Adds a required
pnpm approve-builds --allstep after installation, needed on recentpnpmversions to approve dependency build scripts. - Documents
CATALYST_ACCESS_TOKEN, the CLI-only credential that replaced the.catalystfile. - Adds a brief introduction to the Catalyst CLI in the “What Is Catalyst?” lesson, with a link to the full CLI reference.
- Removes outdated references to a
core/project subdirectory, since the CLI no longer scaffolds a monorepo clone.
Category URL translations documentation
The Translations Admin GraphQL API documentation now covers category URL path translations for multilingual Stencil storefronts.
- Category URLs — a new page documents the
CATEGORY_URL_PATHSresource type, thebc/store/categoryUrlPath/{category_id}resource ID format, and the queries and mutations for listing, updating, and deletingurl_pathtranslations. - Translations overview — the resource type list now links to both the Category URLs and Product URLs pages.
GraphQL Account API rate limits clarified
The documented rate limit for the GraphQL Account API and other /accounts endpoints is now accurate, so you can throttle requests correctly and avoid unexpected 429 Too Many Requests responses.
- Corrected quota — the limit is 2,000 requests per hour (approximately 30 per minute), not the previously documented 70 per hour.
- Sliding-window enforcement — the per-minute allowance is spread evenly over time, so bursts can trigger a
429even when you’re under the hourly limit. Keep requests to roughly 2–3 every 5 seconds. - No rate limit headers —
/accountsendpoints don’t return rate limit response headers, so pace requests proactively and back off on429.
GraphQL Schema Updates
The Account GraphQL schema drops the deprecated createUserWithPassword mutation, completing the security change announced in August 2025 that removed the ability to create a control panel user with a password.
Stencil Core: Multi-Language Lesson
The Stencil Core course now includes a Multi-Language lesson covering Cornerstone’s support for multiple languages on a single storefront channel.
- New lesson — “Multi-Language” is added to Module 2: Customize the Stencil Theme, covering available locales, locale detection via the URL’s locale segment, and the Cornerstone language selector.
- Language selector coverage — introduces the
language_selectorStencil object and the Cornerstone templates that render it, alongside the existingcurrency_selector. - BigCommerce Data translations — covers the translatable content types and methods (GraphQL Admin API and control panel) for localizing catalog and other BigCommerce data.
Catalyst CLI resource commands are now plural
The Catalyst CLI standardizes its resource commands on plural names, so projects, channels, domains, and logs all read the same way. Existing scripts keep working — the singular form of each command remains as an alias.
catalyst projectis nowcatalyst projects—projects create,projects link,projects list, andprojects deletecatalyst channelis nowcatalyst channels—channels create,channels link, andchannels update- Singular aliases still resolve —
project,channel,domain, andlogcontinue to work, so no existing command breaks
Custom domain setup for Native Hosting
New documentation covers attaching your own domain to a Catalyst Native Hosting project with catalyst domains add, including setup for stores that already serve their domain through their own Cloudflare account.
- Standard setup — publish a
CNAMEto your worker URL for a subdomain, or anArecord to your store IP for an apex domain - Cloudflare (Orange-to-Orange) setup — publish a proxied
CNAMEtoshops.mybigcommerce.com, so your own Cloudflare rules keep applying to storefront traffic, along with the Cloudflare products that do and don’t take effect on that traffic - SSL/TLS — custom certificates are supported in the Orange-to-Orange setup, where your own Cloudflare zone terminates TLS; in the standard setup, your domain serves the certificate BigCommerce provisions for it
- Domain management — ownership verification for a domain in use on another store, transfers between projects, removal, and troubleshooting
Stencil Utils country resource namespace correction
Thanks to user feedback, the Stencil Utils reference now documents the correct namespace for the country resource.
utils.api.country— thegetByIdandgetByNameexamples now use the singularcountrynamespace exposed bystencil-utils, replacing the incorrect pluralutils.api.countries.
For details, see the Countries Resource reference.
B2B Edition payment method support documentation
The B2B Edition Payments API overview now documents which payment methods B2B Edition supports and why some payment providers don’t sync reliably.
- Sync mechanism explained: B2B Edition syncs its available payment methods from BigCommerce’s Get All Payment Methods endpoint, which only returns gateways with checkout module representation.
- Supported and unsupported gateway tables: added reference tables listing which gateways have checkout module representation (and are therefore supported by B2B Edition) and which are BigPay-only integrations that aren’t returned by the sync endpoint.
- Troubleshooting guidance: added guidance for when a configured payment method doesn’t appear in, or disappears from, Company payment settings.
Featured promotion callouts in Promotions API and Stencil context
The Promotions API now supports featured promotion callouts, letting you highlight promotions on storefront product pages with a short customer-facing message.
is_featured_promotion— new boolean field on automatic promotions that marks a promotion as featured. Featured promotions evaluate at the highest priority within their category. A store can have a maximum of 5 featured promotions.featured_promotion_callout_message— a short message (up to 80 characters) displayed alongside targeted products on the storefront.promotion_category— read-only field indicating whether a promotion is categorized ascartorshipping, based on its discount type.is_featuredquery parameter — filter the Get Promotions endpoint by featured status.- Stencil
featured_promotionscontext — a newfeatured_promotionsarray on the Product object provides the promotion ID, callout text, priority, and category for rendering featured promotion badges on product detail pages, category listings, brand pages, and search results.
Stripe Adaptive Pricing in custom checkouts
A new guide shows how to surface Stripe Adaptive Pricing in a custom checkout built on checkout-sdk-js, letting shoppers pay in their local currency while the store settles in its default currency.
- Currency selector — render a host container and pass
currencySelectorContainerIdwhen initializing the Stripe OCS Checkout Session method; the SDK mounts Stripe’s currency selector and styles it through the Stripe Appearance API. - Reacting to currency changes — subscribe to checkout state and read
paymentProviderCustomer.isCustomerCurrencySelectedto know when a shopper switches to a currency other than the store’s default. - Payment method filtering — narrow the payment methods list to only the Stripe OCS Checkout Session method while a presentment currency is active, because other gateways can’t settle in it.
- Testing and troubleshooting — verify the integration with Stripe test currencies and resolve common issues such as a missing selector or a
NotInitializedError.
GraphQL Schema Updates
Authenticated customers can now access their active B2B company context through the Storefront GraphQL API.
OpenAPI specification downloads
Since moving to our new documentation platform, we’ve received a number of requests for access to our OpenAPI specification files. Now you can get them.

- Browse the index: open one of the following to see the available API references:
https://docs.bigcommerce.com/openapi.jsonhttps://docs.bigcommerce.com/openapi.ymlhttps://docs.bigcommerce.com/openapi.yaml
- Open and save a spec: select an API from the index to open its OpenAPI specification in the browser, then save it with your browser’s Save As option or download it with
curl.