Docs
Firmly Agentic Commerce
Set theme to dark (⇧+D)

Curated Product Roundup

A reader is on a curated article — “Best Headphones Under $200”, “Holiday Gift Guide”, “10 Kitchen Gadgets We Love”. The article features several products, each with a Buy Now button. The reader can add multiple items to one cart across the article and check out once.

This is the multi-product Publisher Commerce shape. Roundups drive higher average order value because the editorial framing already does the cross-sell work — readers arrive in browsing mode and convert on multiple items.

Choice Default Why
Integration pattern Embedded Buy Button Same buttons as Shoppable Article, with cart accumulation across multiple Buy Now clicks in the article
Auth Browser session Per-reader article session
Payment Google Pay, PayPal Express, Card via JWE, Klarna BNPL Higher cart values warrant offering BNPL
Attribution UTM + publisher identifier + article identifier + per-line-item product identifier Publisher knows which items in the roundup drove orders

​​ API sequence

The flow follows the Multi-Product Purchase shape — multiple POST /cart/line-items calls as the reader clicks Buy on different products in the article.

Step Endpoint
1. Bootstrap session POST /api/v1/browser-session
2. Add to cart (per click) POST /cart/line-items
3. Read cart for review GET /cart
4. Set shipping address POST /cart/shipping-info
5. Pick shipping method POST /cart/shipment/methods
6. (Optional) Get delivery availability POST /cart/shipments/get-availability
7. (If required) Get + set merchant consents GET /cart/consents → PUT /cart/consents
8. Get payment public key GET /payment/key
9. Complete order POST /payment/complete-order

The valid shipping_method_ids for step 5 come from the cart itself — cart.shipments[].shipping_method_options, populated by step 4 (set-shipping-info). get-availability (step 6) is optional and returns delivery dates, time slots, or pickup locations for scheduled-delivery or in-store-pickup shipments — not shipping methods. Steps 2–7 build the cart, so step 9 finalizes it with complete-order (body: encrypted_card + billing_info); use place-order only for the one-shot create-cart-and-order call.

​​ Considerations the article surface owns

  • Cart accumulation across multiple Buy Now clicks. Make sure the cart session persists across each Add — don’t bootstrap a new session per click.
  • Visible cart count. A persistent cart badge (top of article, sticky on scroll) shows “3 items added” so the reader knows they’ve been building a cart.
  • Cart panel before checkout. Opening the cart panel surfaces all items with adjust/remove controls. The reader can drop items before paying.
  • Single-merchant constraint. All items in a Publisher Commerce roundup cart must come from the same source merchant. If the roundup features products from different merchants, each Buy Now click is a separate cart (or you need Marketplace instead).
  • Affiliate attribution per line. The publisher’s commission may differ per product or category. Attribution metadata flows per line item so reconciliation is accurate.