Billing & PaymentsProducts and Pricing

Collections and Tags

Group products into ordered collections and label them with tags, from the Dashboard or the API, and filter storefront product lists by either.

Collections and tags help buyers find your products. Neither changes a product's price, billing or checkout: they only decide how products are grouped and filtered.

CollectionTag
What it isA named, ordered group of products, such as "Massage" or "Gift ideas"A short label on a product, such as sports or 60-min
OrderYou set the order of products in the collectionNo order
Has its own page dataYes: name, URL handle, description, imageNo
A product can be inAny number of collectionsUp to 50 tags
Managed with/v2/product-collectionsThe tags field on a product

In the Dashboard

  1. Go to Products > Collections and click New collection.
  2. Enter a name. RevKeen suggests a URL handle from it, which you can change. Add a description if you want one, and choose the products in the order buyers should see them.
  3. Click Create collection. To change the products or their order later, edit the collection. To remove it, delete it: deleting a collection does not change or delete its products.

With the API

Collections use the products:read and products:write scopes. Every response wraps the collection in data.

The published TypeScript SDK does not yet include collection methods, so the examples use HTTP directly.

Create a collection

curl https://staging-api.revkeen.com/v2/product-collections \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Massage",
    "slug": "massage",
    "description": "Sports and deep tissue massage",
    "product_ids": [
      "11111111-1111-1111-1111-111111111111",
      "22222222-2222-2222-2222-222222222222"
    ]
  }'
const response = await fetch("https://staging-api.revkeen.com/v2/product-collections", {
  method: "POST",
  headers: {
    "x-api-key": process.env.REVKEEN_API_KEY!,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Massage",
    slug: "massage",
    product_ids: [
      "11111111-1111-1111-1111-111111111111",
      "22222222-2222-2222-2222-222222222222",
    ],
  }),
});
const { data: collection } = await response.json();
  • slug is the URL handle: lower-case letters, numbers and single hyphens, up to 80 characters, unique in your account.
  • product_ids lists products in display order, up to 500. Every product must belong to your account.
  • position (optional) orders collections relative to each other.

Read, update and delete

OperationRequest
List collectionsGET /v2/product-collections
Get oneGET /v2/product-collections/{id} (the ID or the URL handle)
UpdatePATCH /v2/product-collections/{id}
DeleteDELETE /v2/product-collections/{id}

On update, product_ids replaces the whole membership in the order you send. To add one product, read the collection, add the ID to its product_ids, and send the full list back.

Each collection has a version that increases on every change. Send it back as expected_version so your update is refused if someone else changed the collection since you read it:

curl -X PATCH https://staging-api.revkeen.com/v2/product-collections/massage \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "product_ids": [
      "22222222-2222-2222-2222-222222222222",
      "11111111-1111-1111-1111-111111111111",
      "33333333-3333-3333-3333-333333333333"
    ],
    "expected_version": 4
  }'

Errors

StatuscodeCause
404PRODUCT_COLLECTION_NOT_FOUNDNo collection with that ID or handle in your account
409PRODUCT_COLLECTION_CONFLICTThe URL handle is already used, or expected_version no longer matches
422PRODUCT_COLLECTION_INVALID_PRODUCTSOne or more product_ids are not products in your account; they are listed in product_ids

On a 409 version conflict, read the collection again and reapply your change.

Tags

Tags live on the product. Set them with the tags field when you create or update a product. The list you send replaces the product's tags: up to 50 tags, each up to 50 characters.

curl -X PATCH https://staging-api.revkeen.com/v2/products/11111111-1111-1111-1111-111111111111 \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "tags": ["sports", "60-min"] }'

Filter storefront product lists

GET /v2/storefront/products lists your active, purchasable products with browser-safe display data. Filter it by collection or tag:

Query parameterEffect
collectionOnly products in this collection (ID or URL handle)
tagOnly products with this tag
searchCase-insensitive match on name or description
sortfeatured (collection order when collection is set, otherwise newest), newest, name, price_asc or price_desc
curl "https://staging-api.revkeen.com/v2/storefront/products?collection=massage&sort=featured" \
  -H "x-api-key: rk_pk_sandbox_..."

This endpoint accepts a publishable key (rk_pk_*), so you can call it from a browser. A browser call must come from an origin you have registered in Dashboard > Commerce > Embed. See Embed.

Webhooks

There are no public webhook events for collections yet. If you mirror collections into another system, read them from the API.

Owner: david · Reviewed 30 Sep 2026 · Next review 30 Oct 2026

On this page