Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
2 changes: 1 addition & 1 deletion app/llms.txt/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
}
Expand Down
4 changes: 4 additions & 0 deletions content/docs/admin-api/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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/
```

<Callout type="info" title="Why 29next?">
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.
</Callout>

**Use your OAuth app access token in the request headers to access the API.**

```shell title="Example Request"
Expand Down
2 changes: 2 additions & 0 deletions content/docs/campaigns/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion content/docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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**
Expand Down
6 changes: 3 additions & 3 deletions content/docs/storefront/themes/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_position: 0
import { Callout } from 'fumadocs-ui/components/callout';

<Callout type="idea">
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. [Read the Theme Kit guide](/docs/storefront/themes/theme-kit) — installation, configuration, and every `ntk` command.
</Callout>

import IntroTheme from '../../../_snippets/_view-intro-theme.mdx';
Expand Down Expand Up @@ -141,5 +141,5 @@ Sass files are not automatically compiled in the platform and must be compiled t

<Callout type="idea">

See Theme Kit installation instructions on [Github](https://github.com/NextCommerceCo/theme-kit).
</Callout>
See the [Theme Kit guide](/docs/storefront/themes/theme-kit) for installation, configuration, and commands. Source: [GitHub](https://github.com/NextCommerceCo/theme-kit).
Comment thread
next-devin marked this conversation as resolved.
</Callout>
4 changes: 2 additions & 2 deletions content/docs/storefront/themes/theme-kit.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ Work from a copy of an existing theme rather than an empty directory — a compl
ntk checkout --theme_id=<id> --apikey="<api key>" --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="<Theme Name>" --apikey="<api key>" --store="https://{store}.29next.store"
Expand Down Expand Up @@ -134,7 +134,7 @@ ntk checkout --theme_id=<id> --apikey="<api key>" --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.

<Callout type="warn">
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).
</Callout>

```bash
Expand Down
4 changes: 4 additions & 0 deletions content/docs/webhooks/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
</Callout>

<Callout type="info" title="Disputes include chargebacks">
Comment thread
next-devin marked this conversation as resolved.
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).
</Callout>

### 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.
Expand Down
8 changes: 8 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
Expand Up @@ -357,3 +357,11 @@
from = "/docs/campaigns/guides/*"
to = "https://cart-sdk.nextcommerce.com/latest/"
status = 301

# 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/<group>/<op> pages are real and must not be caught.
[[redirects]]
from = "/docs/admin-api/reference"
to = "/docs/admin-api"
status = 301
4 changes: 4 additions & 0 deletions public/_redirects
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +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/<group>/<op> are real pages.
/docs/admin-api/reference /docs/admin-api 301
Comment thread
next-devin marked this conversation as resolved.
/docs/admin-api/reference/ /docs/admin-api 301