From eef80081156b349d69333f8de595513acb50abea Mon Sep 17 00:00:00 2001 From: Devin Michael Date: Thu, 3 Sep 2026 16:05:27 +0700 Subject: [PATCH 1/2] Spark as starter theme, legacy identifiers callout, Theme Kit links, disputes and campaign-order notes, reference redirect - Getting Started and Theme Kit guide: Spark is the starter theme; Intro Bootstrap named as the older Bootstrap-based alternative. - Admin API overview: 'Why 29next?' callout: former name; hostnames, headers, API key namespace carry it; current, not scheduled to change. Same wording in llms.txt and AGENTS.md. - Themes overview: links its own Theme Kit page instead of GitHub (a clean-agent run guessed a wrong URL and concluded the commands were off-site). - Webhooks: dispute events cover chargebacks and alerts. Campaigns: campaign orders are regular store orders. - AGENTS.md corrections: no public route yet, use your support contact. - Redirect /docs/admin-api/reference -> /docs/admin-api (old Redoc URL still linked nine times from the platform changelog, was a 404). Co-Authored-By: Claude Fable 5.1 --- AGENTS.md | 4 ++-- app/llms.txt/route.ts | 2 +- content/docs/admin-api/index.mdx | 4 ++++ content/docs/campaigns/index.mdx | 2 ++ content/docs/index.mdx | 2 +- content/docs/storefront/themes/index.mdx | 4 ++-- content/docs/storefront/themes/theme-kit.mdx | 4 ++-- content/docs/webhooks/index.mdx | 4 ++++ netlify.toml | 6 ++++++ public/_redirects | 1 + 10 files changed, 25 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e3abe573..a74e2952 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,8 +42,8 @@ Each version has its own spec file (listed above) and its own reference section ## Legacy identifiers -Next Commerce was formerly 29 Next. Hostnames like `{store}.29next.store`, `accounts.29next.com`, and headers like `X-29next-API-Version` and `X-29Next-Signature` are current, valid technical identifiers and must be used exactly as written. +Next Commerce was formerly 29 Next, and the platform still carries that name in its core technical identifiers: store and account hostnames (`{store}.29next.store`, `accounts.29next.com`), the `X-29next-API-Version` and `X-29Next-Signature` headers, and the API key namespace. These are current, in use on every store, and not scheduled to change. Use them exactly as written. ## Corrections -Outside pull requests to this repository are not accepted. The support route for reporting documentation errors is being confirmed and will be linked here. +Outside pull requests to this repository are not accepted. There is no public correction route yet; report documentation errors through your existing Next Commerce support contact. diff --git a/app/llms.txt/route.ts b/app/llms.txt/route.ts index 16172b56..2d3a0311 100644 --- a/app/llms.txt/route.ts +++ b/app/llms.txt/route.ts @@ -77,7 +77,7 @@ function header(): string { '', '## Legacy identifiers', '', - 'Next Commerce was formerly 29 Next. Hostnames like `{store}.29next.store`, `accounts.29next.com`, and headers like `X-29next-API-Version` and `X-29Next-Signature` are current, valid technical identifiers and must be used exactly as written.', + 'Next Commerce was formerly 29 Next, and the platform still carries that name in its core technical identifiers: store and account hostnames (`{store}.29next.store`, `accounts.29next.com`), the `X-29next-API-Version` and `X-29Next-Signature` headers, and the API key namespace. These are current, in use on every store, and not scheduled to change. Use them exactly as written.', '', ].join('\n'); } diff --git a/content/docs/admin-api/index.mdx b/content/docs/admin-api/index.mdx index 588a6cc9..b8508cee 100644 --- a/content/docs/admin-api/index.mdx +++ b/content/docs/admin-api/index.mdx @@ -20,6 +20,10 @@ Before using the Admin API, you'll need to create a store and an OAuth app for A https://{store}.29next.store/api/admin/ ``` + +Next Commerce was formerly 29 Next, and the platform still carries that name in its core technical identifiers: store and account hostnames (`{store}.29next.store`, `accounts.29next.com`), the `X-29next-API-Version` and `X-29Next-Signature` headers, and the API key namespace. These are current, in use on every store, and not scheduled to change. Use them exactly as written. + + **Use your OAuth app access token in the request headers to access the API.** ```shell title="Example Request" diff --git a/content/docs/campaigns/index.mdx b/content/docs/campaigns/index.mdx index 71371e9b..9e5f3ee3 100644 --- a/content/docs/campaigns/index.mdx +++ b/content/docs/campaigns/index.mdx @@ -6,6 +6,8 @@ import { CampaignFunnelFlow, CampaignAnatomy } from '@/components/campaign-conce Campaigns are fully custom checkout funnels — landing, checkout, upsell, and receipt pages — backed by a CORS-enabled API that handles products, pricing, payments, and order creation. **No backend integration required.** +Orders created through a campaign are regular store orders. They appear in the store's Orders list alongside storefront orders and are available through the Admin API and webhooks like any other order. + The fastest path from zero to a working funnel on localhost is the **[Campaign Page Kit](https://github.com/NextCommerceCo/campaign-page-kit)**: a CLI that scaffolds an SDK-ready starter template, runs a hot-reload dev server, and outputs a static site you can deploy to Netlify, Cloudflare Pages, Vercel, or any static host. ## Quick Start diff --git a/content/docs/index.mdx b/content/docs/index.mdx index ea7c5343..551baf04 100644 --- a/content/docs/index.mdx +++ b/content/docs/index.mdx @@ -97,7 +97,7 @@ Use themes to control the appearance and behavior of your storefront — product **Get started** 1. Install [Theme Kit](/docs/storefront/themes/theme-kit), the CLI for local theme development -2. Start from [Intro Bootstrap](https://github.com/NextCommerceCo/intro-bootstrap) starter theme +2. Start from [Spark](https://github.com/NextCommerceCo/spark), the Tailwind CSS starter theme 3. Run `ntk pull` to sync files locally, make changes, then `ntk push` to deploy **Resources** diff --git a/content/docs/storefront/themes/index.mdx b/content/docs/storefront/themes/index.mdx index df40d4f6..c8933673 100644 --- a/content/docs/storefront/themes/index.mdx +++ b/content/docs/storefront/themes/index.mdx @@ -6,7 +6,7 @@ sidebar_position: 0 import { Callout } from 'fumadocs-ui/components/callout'; -We highly recommend using Theme Kit to manage your store theme for the best developer experience from your favorite IDE. [Install Theme Kit](https://github.com/NextCommerceCo/theme-kit) +We highly recommend using Theme Kit to manage your store theme for the best developer experience from your favorite IDE. [Install Theme Kit](/docs/storefront/themes/theme-kit) — installation, configuration, and every `ntk` command. import IntroTheme from '../../../_snippets/_view-intro-theme.mdx'; @@ -141,5 +141,5 @@ Sass files are not automatically compiled in the platform and must be compiled t -See Theme Kit installation instructions on [Github](https://github.com/NextCommerceCo/theme-kit). +See the [Theme Kit guide](/docs/storefront/themes/theme-kit) for installation, configuration, and commands. Source: [GitHub](https://github.com/NextCommerceCo/theme-kit). \ No newline at end of file diff --git a/content/docs/storefront/themes/theme-kit.mdx b/content/docs/storefront/themes/theme-kit.mdx index a0a7e9e4..36e38a5d 100644 --- a/content/docs/storefront/themes/theme-kit.mdx +++ b/content/docs/storefront/themes/theme-kit.mdx @@ -78,7 +78,7 @@ Work from a copy of an existing theme rather than an empty directory — a compl ntk checkout --theme_id= --apikey="" --store="https://{store}.29next.store" ``` -**Add a new theme to the store** — start from a copy of an existing theme, such as the [Intro Bootstrap](https://github.com/NextCommerceCo/intro-bootstrap) starter theme, then register it as a new theme with `ntk init` and upload the files with `ntk push`: +**Add a new theme to the store** — start from a copy of an existing theme, such as the [Spark](https://github.com/NextCommerceCo/spark) starter theme, then register it as a new theme with `ntk init` and upload the files with `ntk push`: ```bash ntk init --name="" --apikey="" --store="https://{store}.29next.store" @@ -134,7 +134,7 @@ ntk checkout --theme_id= --apikey="" --store="https://{store}.29nex `ntk init` registers your current directory as a new theme on the store and writes a `config.yml`. It does not download or scaffold any files — run it inside an existing theme codebase, then `ntk push` to upload the files. -Building a theme from an empty directory is not advised. Start from a copy of a complete theme — the [Intro Bootstrap](https://github.com/NextCommerceCo/intro-bootstrap) starter theme or an existing theme from your store via [`ntk checkout`](#work-on-an-existing-theme). +Building a theme from an empty directory is not advised. Start from a copy of a complete theme — the [Spark](https://github.com/NextCommerceCo/spark) starter theme (Tailwind CSS), the older Bootstrap-based [Intro Bootstrap](https://github.com/NextCommerceCo/intro-bootstrap) or an existing theme from your store via [`ntk checkout`](#work-on-an-existing-theme). ```bash diff --git a/content/docs/webhooks/index.mdx b/content/docs/webhooks/index.mdx index dc301426..0f26ab14 100644 --- a/content/docs/webhooks/index.mdx +++ b/content/docs/webhooks/index.mdx @@ -78,6 +78,10 @@ The `subscription` object on a `transaction.created` webhook links the charge to There is no renewal-specific event. A renewal charge arrives as `transaction.created` with `billing_cycle` of 1 or higher on that `subscription` object; the initial charge has `billing_cycle` 0. + +There is no separate chargeback event. `dispute.created` and `dispute.updated` cover chargebacks and pre-chargeback alerts alike; the dispute's `type` distinguishes them. See the [Disputes guide](https://docs.nextcommerce.com/docs/features/payments/disputes-guide). + + ### Webhook Data Structure Webhook payloads follow the same structure as Admin API data serializers, which makes them predictable. In general, the data in a webhook payload matches the data you would get by retrieving the same resource through the API. You can set up test webhooks and view the webhook logs in the dashboard to help build and verify your receiver. diff --git a/netlify.toml b/netlify.toml index 91743581..ca03ba5b 100644 --- a/netlify.toml +++ b/netlify.toml @@ -357,3 +357,9 @@ from = "/docs/campaigns/guides/*" to = "https://cart-sdk.nextcommerce.com/latest/" status = 301 + +# Old Redoc-style reference URL still linked from the platform changelog +[[redirects]] + from = "/docs/admin-api/reference" + to = "/docs/admin-api" + status = 301 diff --git a/public/_redirects b/public/_redirects index b2c1cae7..f964e999 100644 --- a/public/_redirects +++ b/public/_redirects @@ -76,3 +76,4 @@ /docs/campaigns/utilities/* https://cart-sdk.nextcommerce.com/latest/ 301 /docs/campaigns/guides https://cart-sdk.nextcommerce.com/latest/ 301 /docs/campaigns/guides/* https://cart-sdk.nextcommerce.com/latest/ 301 +/docs/admin-api/reference /docs/admin-api 301 From 7e3b0c7f29f9eba9c9e9d26eee4656e4ea9e733a Mon Sep 17 00:00:00 2001 From: Devin Michael Date: Thu, 3 Sep 2026 16:16:33 +0700 Subject: [PATCH 2/2] developer-docs#49 review: Theme Kit link text, trailing newline, dispute callout wording, redirect comments and trailing-slash form The changelog links the old reference URL with a trailing slash and a query string; Cloudflare exact-path rules do not cover that variant, so both forms are listed. Deep reference pages verified unaffected on the branch preview. Co-Authored-By: Claude Fable 5.1 --- content/docs/storefront/themes/index.mdx | 4 ++-- content/docs/webhooks/index.mdx | 2 +- netlify.toml | 4 +++- public/_redirects | 3 +++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/content/docs/storefront/themes/index.mdx b/content/docs/storefront/themes/index.mdx index c8933673..977175a8 100644 --- a/content/docs/storefront/themes/index.mdx +++ b/content/docs/storefront/themes/index.mdx @@ -6,7 +6,7 @@ sidebar_position: 0 import { Callout } from 'fumadocs-ui/components/callout'; -We highly recommend using Theme Kit to manage your store theme for the best developer experience from your favorite IDE. [Install Theme Kit](/docs/storefront/themes/theme-kit) — installation, configuration, and every `ntk` command. +We highly recommend using Theme Kit to manage your store theme for the best developer experience from your favorite IDE. [Read the Theme Kit guide](/docs/storefront/themes/theme-kit) — installation, configuration, and every `ntk` command. import IntroTheme from '../../../_snippets/_view-intro-theme.mdx'; @@ -142,4 +142,4 @@ Sass files are not automatically compiled in the platform and must be compiled t See the [Theme Kit guide](/docs/storefront/themes/theme-kit) for installation, configuration, and commands. Source: [GitHub](https://github.com/NextCommerceCo/theme-kit). - \ No newline at end of file + diff --git a/content/docs/webhooks/index.mdx b/content/docs/webhooks/index.mdx index 0f26ab14..598632d4 100644 --- a/content/docs/webhooks/index.mdx +++ b/content/docs/webhooks/index.mdx @@ -79,7 +79,7 @@ There is no renewal-specific event. A renewal charge arrives as `transaction.cre -There is no separate chargeback event. `dispute.created` and `dispute.updated` cover chargebacks and pre-chargeback alerts alike; the dispute's `type` distinguishes them. See the [Disputes guide](https://docs.nextcommerce.com/docs/features/payments/disputes-guide). +Chargebacks and pre-chargeback alerts both arrive as `dispute.created` and `dispute.updated`; the dispute's `type` field says which it is. See the [Disputes guide](https://docs.nextcommerce.com/docs/features/payments/disputes-guide). ### Webhook Data Structure diff --git a/netlify.toml b/netlify.toml index ca03ba5b..2ec9ff55 100644 --- a/netlify.toml +++ b/netlify.toml @@ -358,7 +358,9 @@ to = "https://cart-sdk.nextcommerce.com/latest/" status = 301 -# Old Redoc-style reference URL still linked from the platform changelog +# Old Redoc-style reference URL still linked from the platform changelog. +# Exact path only (Netlify also matches the trailing-slash form); the deep +# /docs/admin-api/reference// pages are real and must not be caught. [[redirects]] from = "/docs/admin-api/reference" to = "/docs/admin-api" diff --git a/public/_redirects b/public/_redirects index f964e999..697a3c78 100644 --- a/public/_redirects +++ b/public/_redirects @@ -76,4 +76,7 @@ /docs/campaigns/utilities/* https://cart-sdk.nextcommerce.com/latest/ 301 /docs/campaigns/guides https://cart-sdk.nextcommerce.com/latest/ 301 /docs/campaigns/guides/* https://cart-sdk.nextcommerce.com/latest/ 301 +# Old Redoc-style reference URL still linked from the platform changelog (with and without +# trailing slash). Exact-path rules on purpose: /docs/admin-api/reference// are real pages. /docs/admin-api/reference /docs/admin-api 301 +/docs/admin-api/reference/ /docs/admin-api 301