Skip to content
All integrations Integration / EDMO Asia Pacific

POA quotes and Cin7 price books.

EDMO Asia Pacific distributes aviation test equipment, avionics tooling and ground support equipment: more than 3,600 products, a good share of them price on application. The business runs on Cin7 Core, so that is where a quote has to end up and where business pricing already lives.

  1. 01

    Shopify

    The storefront, cart and checkout, and the catalogs and price lists that business pricing is written into.

  2. 02

    Integration service

    A TypeScript service on Railway that the storefront calls directly.

  3. 03

    Cin7 Core

    Products, customers, quotes and price tiers. The system the business runs on.

  4. 04

    Postgres

    A record of every quote raised, plus short-lived caches of Cin7 products and customers.

  5. 05

    Resend

    Delivers the quote to the buyer by email, with the PDF attached.

The objective

What it
had to do.

One order can hold a part with a price and a test set without one. A checkout can only take the first, and a quote form would lose it. The cart has to do both, and the quote has to land in Cin7 Core. Business prices are kept there too, as price tiers, which a Shopify store knows nothing about unless something carries them across.

Business objectives

  • Let a buyer check out the priced lines and request a quote for the rest, in one visit and from one cart
  • Raise the quote in Cin7 Core as a draft, without anyone re-keying it from an email
  • Keep the order and the quote tied together, so whoever picks up either one can find the other
  • Keep Cin7 as the one place business pricing is maintained, with Shopify price lists fed from it
  • Hand the buyer a PDF quote as soon as they ask

The stack

  • Shopify
  • Cin7 Core
  • TypeScript
  • Bun
  • Effect
  • Postgres
  • Drizzle
  • Resend
  • Railway

Key flows

How it runs.

4 flows

Flow 01

Building the quote list

Price-on-application products are collected beside the cart rather than in it, so they never reach a checkout that cannot price them.

  1. 01 Shopify

    A product without a price shows “POA” and an Add to quote button in place of Add to cart.

  2. 02 Storefront

    Quote items are kept in a quote list in the browser, separate from the Shopify cart.

  3. 03 Shopify

    Cart lines tagged as needing a quote are treated the same way.

  4. 04 Storefront

    The cart’s one button reads Checkout, Request quote, or Request quote & checkout, depending on what it is holding.

Flow 02

From quote list to Cin7 quote

The request goes from the storefront to the integration service, and from there into Cin7 Core as a draft.

  1. 01 Storefront

    A dialog collects contact, company and delivery details, already filled in for a logged-in customer.

  2. 02 Service

    Every SKU is validated against Cin7 before anything is written.

  3. 03 Cin7 Core

    The customer is found or created, then a sale is raised with its quote lines in draft.

  4. 04 Postgres

    The quote is logged.

  5. 05 Resend

    A PDF of the quote is generated and emailed to the buyer.

Flow 03

When the cart holds both

A mixed cart is quoted first, then checked out, with the two tied together by reference.

  1. 01 Service

    The quote is raised first and returns its reference.

  2. 02 Shopify

    The quote reference, status and company are written onto the cart as attributes, so they travel with the order.

  3. 03 Shopify

    The buyer continues to checkout with their details already filled in.

  4. 04 Shopify

    Only the priced lines are paid for. The rest are waiting in Cin7 as a draft quote.

Flow 04

Cin7 price tiers to Shopify price lists

Business prices are maintained once, in Cin7. The sync writes them into Shopify, where the store’s own catalog pricing takes over.

  1. 01 Cin7 Core

    The sync pages through every product and reads its price tiers.

  2. 02 Service

    Each tier is mapped by name to a Shopify catalog.

  3. 03 Shopify

    Variants are matched to Cin7 products by SKU.

  4. 04 Shopify

    Tier prices are written to the catalog’s price list as fixed prices, 250 at a time.

  5. 05 Shopify

    From there it is native catalog pricing on the storefront and at checkout, with no pricing logic in the theme to maintain.

More integrations.

All integrations

Your systems, connected

What does your
store not talk to?

Tell us which systems you run and where the re-keying happens. We’ll come back within one business day with where we would start.

Start a project