Order Product logo

Catalog action Integrations wallet Gas

Place a real product order from Amazon or Walmart, shipped to a US address. By default only free-shipping / Prime items are ordered (freeShipping=true): the vendor is constrained to a free-shipping offer, so shipping is $0 and can't push the charge past the cap, and an item with no free offer is rejected before payment. Set freeShipping=false to allow paid-shipping offers (a flat shipping allowance is then folded into the cap). You pay in USDC from your connected wallet: the listed item cost plus a tax buffer plus a service fee of $2.50 + 2%; unused headroom between the cap and the retailer's final total is refundable. The product charge never exceeds the authorized cap. Ideal for: automated purchasing, reorder workflows, gifting, buying supplies with crypto.

This action can require a wallet connector, gas, token movement, or an external side effect. Test with simulation or a controlled amount before using it in a live workflow.

At a Glance

FieldValue
Action IDorder-product
CategoryIntegrations
Connectorwallet
Requires gasYes
Funds movementNone declared
Tagsshopping, order, ecommerce, purchase, write

Payload Schema

FieldTypeRequiredDescription
productUrlstringYesProduct URL to order (e.g. https://www.amazon.com/dp/B01N5IB20Q or https://www.walmart.com/ip/123456789\). A bare 10-character Amazon ASIN is also accepted.
productTitlestringNoOptional product title (from search-products). Recorded on the vendor order so the order-status page can show the product without a separate product lookup. Not used for ordering.
productImageUrlstringNoOptional primary product image URL (from search-products). Recorded on the vendor order for the order-status page. Not used for ordering.
quantitynumberNoNumber of units to order (1-10). Default: 1.
itemPriceCentsnumberYesCurrent listed per-unit price in integer USD cents (from search-products or get-product-details). Used to compute the authorized cap and service fee.
maxTotalCentsnumberNoOptional authorized product cap in integer cents, including tax and shipping. Defaults to the item subtotal plus a 15% headroom buffer. The product charge never exceeds this cap.
shippingAddressobjectYesUS shipping address for the order.
freeShippingbooleanNoRequire free/Prime shipping for this purchase (default: true). When true the order is placed with a free-shipping constraint, so the vendor buys a free/Prime offer and the quoted total holds — shipping can't push the charge past the cap. If the item has no free-shipping offer the order is rejected BEFORE any payment (nothing is charged). Set false to allow paid-shipping offers.
chainIdnumberNoChain to pay from in USDC. Supported: 8453 (Base), 1 (Ethereum), 42161 (Arbitrum), 10 (Optimism), 137 (Polygon). Default: 8453.
simulatebooleanNoSandbox/test mode. When true, places a vendor TEST order and SKIPS the on-chain USDC payment (no real money moves) — used to exercise the full order flow safely. Requires a configured test key; if none is available the order is refused rather than charged. Default: false (real order).

Result Schema

FieldTypeRequiredDescription
orderIdstringYesOrder identifier — use with get-product-order to track status.
statusstringYesOrder status (newly placed orders start as 'pending').
productUrlstringYesCanonical product URL that was ordered.
quantitynumberYesNumber of units ordered.
itemPriceCentsnumberYesListed per-unit price in integer cents.
itemSubtotalCentsnumberYesitemPriceCents * quantity.
productMaxCentsnumberYesAuthorized product cap in cents (incl. tax/shipping headroom).
serviceFeeCentsnumberYesService fee charged in cents.
totalChargeCentsnumberYesTotal USDC charge in cents (cap + service fee).
totalChargeUsdnumberYesTotal USDC charge in USD (2 decimal places).
paymentTransactionHashstring | nullYesUSDC payment transaction hash (null in simulation).
paymentChainIdnumberYesChain the USDC payment was made on.
shipToSummarystringYesShort shipping destination summary (e.g. 'Jane Smith, Seattle, WA 98101').

Examples

json
{ "type": "order-product", "payload": { "productUrl": "https://example.com/webhook", "itemPriceCents": 1, "shippingAddress": "0x0000000000000000000000000000000000000000" }, "children": [], "connector": { "type": "wallet", "id": "conn_wallet" }}

Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.