Features Pricing Services
Compare
Resources
Contact Start Free Trial
Home/Docs/Quotes & Orders

Quotes & Orders

Soryk's quote workflow lets agents save a cart, send the customer a public link, and convert it to a real Shopify draft order on acceptance. The lifecycle is short: draft → pending → accepted (or rejected/expired) → converted. Every step is auditable and the public link is token-based, no login required.

Save cart as quote

  1. In the agent app, build a cart for a company / location as usual.
  2. Instead of Slide to confirm, tap Save as quote.
  3. Fill the quote form:
    • Quote name (e.g. "Q-2026-04-001")
    • Customer email + name
    • Optional note (visible to the customer)
    • Expiry days (default 7)
    • Send by email now? (checkbox)
  4. Submit. A soryk_quote metaobject is created with a unique token. Status: draft (or pending if email sent).

Each quote has a token-based URL: https://your-shop.myshopify.com/apps/soryk/quotes/<token>. The customer can open it without logging in and see:

i

Token security. Tokens are 32-byte URL-safe random strings. Guessable in roughly never. Even so, treat the link as semi-private — share it with the named customer only.

Customer accept/reject

Convert to draft order

  1. Open the accepted quote in the agent app.
  2. Tap Convert to draft order.
  3. A native Shopify draft order is created with all the quote's lines + the appropriate Soryk tags (soryk, soryk_quote_accepted, soryk_agent:<email>).
  4. If the discount is over the agent's auto-approve cap, the draft is created with soryk_discount_pending and routes to your approval queue.
  5. Otherwise, the draft is ready to invoice / mark as paid in Shopify.

Edit a pending quote

Sometimes the customer asks to change quantities or swap an item before accepting. Soryk supports edit on both draft and pending statuses without breaking the public token — the link the customer already received still works.

  1. Open the quote in the agent app.
  2. Tap Edit.
  3. Modify lines, save.
  4. Optionally Resend to refresh the customer's view.

Edits on accepted/rejected/expired quotes are blocked — duplicate the quote instead.

Resend / duplicate / delete

ActionWhat it does
ResendRe-sends the quote email to the customer. Returns emailDelivered: true|false — UI surfaces a warning toast if delivery failed.
DuplicateCreates a new quote with the same lines, fresh token and fresh expiry. Useful for "same again next month".
DeleteRemoves the metaobject. The public link 404s. Customer's email reference becomes a dead link — use sparingly.

Discount approval workflow

Per the agentDiscountMaxPercent setting:

  1. Admin reviews from Discounts.
  2. Approve → discount applied to the draft.
  3. Reject → draft is deleted, agent notified.

Payment terms

Soryk uses Shopify's native PaymentTermsTemplate:

Display labels can be overridden via paymentTermLabels in settings — useful for industry-specific terms like "2/10 Net 30" or "30 GG D.F. F.M." (typical Italian construction-industry term).

Tax + shipping preview

Both the cart and the public quote page show a tax + shipping preview computed live via Shopify's cart-preview API. This isn't a hard quote — final taxes and shipping rates apply at checkout — but it's accurate enough to give customers a real expectation.

If the preview can't compute (e.g. missing shipping zone for the destination), it shows "calculated at checkout" instead of a wrong number.

Was this helpful?
Edit this page on GitHub