The shopping flow
Henry’s features are modular - use just the ones you need. You can callcart.checkout.purchase with a product link directly, use products.details without ever touching the cart, or run the full pipeline end-to-end:
Async jobs
Product search, product details, and checkout details are async operations. When you call them, Henry immediately returns arefId and a status.
You can either set a webhook callback or poll the corresponding poll* method until status becomes complete (or handle failed).
Statuses:
| Status | Meaning |
|---|---|
pending | Queued, not started yet |
processing | Actively running |
complete | Results are ready in result |
failed | Hit an unrecoverable error - check error |
Cart lifecycle
Create a cart with one or more product links. From there you can add, update, or remove items freely. When ready, send the buyer to checkout. Items are identified by their product URL - no separate product ID needed.cart.create returns a checkoutUrl immediately, so there’s no extra step to set up hosted checkout.
Checkout modes
Hosted Checkout
Henry collects shipping, payment, and taxes via a hosted modal.
Headless Checkout
Submit payment and shipping directly from your server. Full UI control.
Order states
After checkout (either mode), Henry creates an order and processes it asynchronously across one or more merchants.| Status | Description |
|---|---|
pending | Order received, payment not yet confirmed |
processing | Payment confirmed, placing items with merchants |
complete | All items successfully placed - result.costs is populated |
cancelled | Order could not be completed |
orders.list({ cartId }) to fetch orders associated with a specific cart, or omit cartId to list all orders for your app.
Merchants
Every productlink is associated with a merchant host (e.g. nike.com). You can browse supported merchants with merchants.list - useful for building merchant-selection filters before adding them to a cart.
Monetization
Every completed order generates a commission for your application. Henry handles payout calculations, merchant relationships, and reporting. You configure commission amounts (fixed + percent) in thesettings object when creating a cart.