Products namespace

Reference for digital products: the catalogue, product pages, reviews and checkout.

Sell or give away digital products (guides, templates, courses, files and links) from your board. board.products lists the catalogue, reads a product page and its reviews, and starts a free claim or a paid checkout. After the purchase, the buyer's download page is board.purchases.

board.products.list()

The board's listed products as cards. ProductsListQuery takes q (every word must appear in the name or summary), price (free or paid), sort (featured, newest, rating, price_asc), cursor and limit (1 to 50).

Each card carries url, the product page path on your board. Unlisted products never appear here.

board.products.get()

A product page: description, details, images, contents (file types, page counts and sizes), price model, checkout questions and, when ratings are on, the rating with its histogram. A product with isListed: false is link-only: render it for visitors who have the link, and keep it out of listings, sitemaps and search indexes.

board.products.reviews()

Visible reviews, newest first, with the operator's reply. A page can be shorter than limit; follow nextCursor while hasMore is true.

board.products.checkout()

Body: email, answers (one per question id), amountCents (pay what you want), jobAlertOptIn (free products, shown unticked), returnPath (paid products; defaults to the product page) and website, a honeypot field to render hidden and leave empty.

  • A free product, or amountCents: 0 on a $0+ product, returns status: 'complete' with downloadUrl, the download page path. The buyer is also emailed the link.
  • A paid product returns status: 'open' with an embedded Stripe Checkout mount kit. Mount it with loadStripe(publishableKey, { stripeAccount: stripeAccountId }) and initEmbeddedCheckout({ clientSecret }). The session lasts 30 minutes.

With a signed-in board user, the purchase also appears in board.purchases.mine().

board.products.getCheckout()

After Stripe returns the buyer with session_id: awaiting_payment until the payment lands, then paid with downloadUrl. Poll for a few seconds, then show "We have emailed your download link".

Errors

Checkout returns product_sold_out, product_email_invalid, product_email_blocked, product_amount_below_minimum (with details.minimumCents), product_amount_invalid, product_answers_invalid (with details.questionId), stripe_not_connected, rate_limited and rate_limit_unavailable. An unknown or unreachable product is products_not_found.