Retailers: sell it installed and permitted
Scopes: catalog:readquotes:writeprojects:writeprojects:readorders:writeorders:read
1. Map your SKUs
List the products Ducto installs and map your own SKUs to them, once (and when your catalog changes). Carts then use your SKUs.
2. Check eligibility
For a ZIP and your SKUs: whether Ducto serves the area, whether each product can be installed there, and what the install needs.
3. Price the install against the cart
Send the home's answers with merchant "retailer" and your cart. Ducto sizes the home and binds the system from your cart only: a cart that doesn't fit is refused with the reasons. The response has the installer, the earliest date and the installation price; Ducto's checkout carries no equipment. Or let the install widget do this on your product page.
4. Book it
At your checkout, book the project with the homeowner's contact, the address and your order reference. Give the homeowner the booking's url: they accept the installation contract on Ducto and save a card (nothing is charged until the installer confirms).
5. Ship and deliver
When order.ready_to_ship arrives (the installer confirmed), ship and report it with each serialized unit's model number and serial; a wrong model is refused. Report delivery with the serials received: a mismatch keeps work from starting.
6. Follow it and cancel by the rules
Every status change arrives as order.status_changed. Before the installer confirms, a cancellation is immediate; after, it's a request Ducto arranges; once work starts it isn't done through the API.
7. Drop in the widgets
Your server makes a widget session (never put an API key in a browser); the page loads embed.js and calls Ducto.mount with its token. The install widget sends quoted with the project id to attach to the cart line; the booking widget sends booked.