Catalog action Integrations

Ask the user to approve a product purchase before any money moves. Sends an approval card to the org's chat destinations (Slack gets one-tap Approve; other surfaces get a reply instruction) with the current quote pinned — the approved purchase executes with exactly the price and cap shown. Use this as the final node of price-watch / availability workflows instead of order-product, which is reserved for manual-trigger workflows. Ideal for: price-drop alerts that buy on approval, restock watches, any automated purchase that should keep a human on the trigger.

At a Glance

FieldValue
Action IDrequest-purchase-approval
CategoryIntegrations
ConnectorNot required
Requires gasNo
Funds movementNone declared
Tagsshopping, purchase, notification

Payload Schema

FieldTypeRequiredDescription
walletIdstringYesOrg wallet id (wal_...) that the approved purchase will pay USDC from. This exact id is carried into the approval card and used to execute the one-shot order, so it must be the org-wallet row id the order-product node would reference — not a Turnkey/provider id.
productUrlstringYesProduct URL to request approval for (e.g. https://www.amazon.com/dp/B01N5IB20Q or https://www.walmart.com/ip/123456789\). A bare 10-character Amazon ASIN is also accepted.
quantitynumberNoNumber of units (1-10). Default: 1.
itemPriceCentsnumberYesCurrent listed per-unit price in integer USD cents (wire from an upstream get-product-details node). PINNED into the approval card — the approved purchase executes with exactly this quote.
maxTotalCentsnumberNoOptional authorized product cap in integer cents, including tax and shipping. Defaults to the item subtotal plus a 15% headroom buffer. Becomes the hard ceiling of the approved purchase.
shippingAddressobjectYesUS shipping address the approved order will ship to.
chainIdnumberNoChain the approved purchase will pay from in USDC. Supported: 8453 (Base), 1 (Ethereum), 42161 (Arbitrum), 10 (Optimism), 137 (Polygon). Default: 8453.
notestringNoOptional context shown on the approval card (e.g. 'price dropped below your $40 target').

Result Schema

FieldTypeRequiredDescription
statusstringYesApproval request delivery status.
deliverednumberYesNumber of notification destinations the approval card reached.
failednumberYesNumber of destinations that could not be reached.

Examples

json
{ "type": "request-purchase-approval", "payload": { "productUrl": "https://example.com/webhook", "itemPriceCents": 1, "shippingAddress": "0x0000000000000000000000000000000000000000", "walletId": "0x0000000000000000000000000000000000000000" }, "children": []}

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.