Passwordless sign in
A six digit code to the address you already hold. Nothing for your team to reset.
Native to PlusShopify Plus commerce for distributors and manufacturers, integrated with the ERP that already runs your business. No DTC side hustle, no second platform, no media retainer.
B2B commerce built for
Most agencies list four platforms because it widens the funnel. It also means the recommendation you get is shaped by who they have on the bench that quarter. We build on Shopify Plus only, which makes our advice predictable: we will tell you when it fits, and we will tell you when it does not.
None of that makes Shopify Plus the right answer for everyone. It is the wrong call when the order of record cannot sit with a third party, when your catalogue is millions of SKUs changing hourly, or when nobody internally owns commerce decisions. We will tell you that on the first call, because the alternative is finding out together in month nine.
Every B2B quote you receive sits somewhere on one axis: how much of the storefront comes prebuilt, and how much is drawn from nothing. Further along that axis is not better, it is only more. Most distributors belong in the middle, and we will say so.
For a distributor going online properly for the first time, or replatforming a straightforward catalogue. Your pricing rules are simple enough to live in Shopify.
For a distributor whose prices, credit and stock live in an ERP and have to stay there. The storefront is the easy half of this project.
For a business that is several businesses. Multiple entities, currencies and tax regimes, or a procurement surface your customers connect to directly.
Bands, not quotes. They are drawn from builds we have actually delivered, and they are wide because the pricing model is what moves them: customer specific prices, break quantities and who inherits what across a hierarchy is the single largest variable in a B2B build, and it is the first thing the assessment maps. If your project does not fit any of these three, that is worth a conversation rather than a form.
Thirty-eight B2B requirements, scored from native to custom build, with the six we would not attempt and the reasons why. Shopify's documentation sells the platform and agencies say yes to everything, so the honest map has to come from someone who has hit the walls.
It ends with twelve questions to ask any agency you meet, including us. If the agency you are talking to has not raised at least three of them unprompted, they have not built this before.
No sequence, no drip. One email with the file, and we will tell you when edition 02 lands.
A technical assessment for buyers
Thirty-eight B2B requirements, scored from native to custom build. Plus the six we would not attempt, and why.
Section 01 · The matrix
Pricing is where B2B builds are won and lost. Ten of the thirty-eight rows sit here, and five of them need code.
01 · Pricing
| Customer specific contract prices | Price lists assigned per company location | Native |
| Percentage off list, by customer | Price list adjustment, no code | Native |
| Break quantities and case pricing | Quantity rules at the variant level | Native |
| Prices held in the ERP, resolved live | Middleware plus a cache strategy. The latency decision is the whole job | Custom |
| Price effective dates, future dated | No native scheduling on price lists. Handled in the sync layer | Custom |
| Inherited pricing down a customer hierarchy | Shopify has no parent account concept. Modelled in middleware | Custom |
| Promotion that beats a contract price | Precedence must be defined before build. Function enforces it | Custom |
| Per-customer catalogue visibility | Catalogs scoped to company location | Native |
| Cost-plus pricing computed at order time | Requires live cost from the ERP inside checkout | Custom |
| Price shown only after sign in | Standard B2B behaviour on Plus | Native |
02 · Companies, buyers and permissions
| Company accounts separate from people | First class record | Native |
| Multiple ship-to locations per company | Company locations, each with own terms and catalogue | Native |
| Buyer roles: order, draft only, admin | Native permissions | Native |
| Per order spending limits | Native on the company contact | Native |
| Approval routing above a threshold | Draft order plus custom notification and approval flow | Custom |
| One person buying for several companies | Native. One identity, many companies | Native |
| Self serve user management by the customer | Partially native. Admin invites need a custom surface | Configure |
| Passwordless sign in with a code | Shopify customer accounts, on your account subdomain | Native |
Run your requirements list against this. Most of it is native to Shopify Plus, which is why our quotes look the way they do. The rest is the part we build, and we have marked which is which.
A six digit code to the address you already hold. Nothing for your team to reset.
Native to PlusThe buying organisation and each site, with its own address, terms and catalogue.
Native to PlusOrdering, draft only, or admin. One person can buy for several companies.
Native to PlusPer order caps by buyer, with anything above the threshold routed for approval.
We build itCustomer specific prices or a percentage off list, assigned per location.
Native to PlusCase quantities, increments and minimums enforced at the line.
Native to PlusNet 15, 30, 60 or fixed date, with the open balance visible to the buyer.
Native to PlusType or paste a SKU list and it resolves to priced lines.
We build itRecurring site orders kept per company, not per person.
ConfigureYour rep builds the order or the quote, the buyer accepts and pays it.
Native to PlusEvery order they have placed with you, with a reorder button on each.
Native to PlusOpen invoices, aging and a pay button, reconciled back to the ERP.
We build itSwipe or scroll the row. If something you need is not here, it is genuinely not here, and that is worth a conversation rather than a form.
Most agency pricing carries a layer you never asked for: an account manager translating between you and the people writing the code, and a delivery partner you were never introduced to. We removed both, which is most of the reason our numbers look the way they do.
Twenty five people, in house, in Montreal. When you ask why an integration behaves a certain way, the answer comes from the engineer who wrote it, in the same thread, that day.
A B2B replatform is a bad thing to discover you have bought wrong nine months in. These are the three cases where we are the expensive answer to a cheaper question, and we will tell you so on the first call rather than the fourth.
Below that, a senior in house team is the wrong cost structure and you will feel it. A good freelancer or a smaller studio will serve you better, and we would rather say that now.
We are an engineering partner, not a fractional ecommerce department. If nobody internally is going to own commerce decisions, the build will stall no matter who writes the code.
We will push back on scope that will not survive contact with your ERP. If that reads as friction rather than value, the relationship will be uncomfortable for both of us.
The assessment is two weeks and it is paid, which makes it fair to show you what it produces before you buy it. It is not a proposal with our logo on it. It is your pricing model, your ERP objects and your risks, written down in enough detail that another agency could quote from it.
Most of our clients arrive having been quoted a range by three agencies and unable to explain why the ranges differ. This is the document that explains it.
How a price resolves for a given buyer, and what it costs to build.
| 01 | Customer specific contract price | P21 · PRICE_LIBRARY |
| 02 | Break quantity for that contract | P21 · QTY_BREAK |
| 03 | Parent account negotiated tier | P21 · CUST_GROUP |
| 04 | Published trade price | Shopify · price list |
| 05 | List price | Shopify · variant |
| Price list model and load | Configure | 4 d |
| Precedence engine, checkout Function | Custom | 9 d |
| Hierarchy inheritance in middleware | Custom | 12 d |
| Break quantity rules | Native | 1 d |
| Override reconciliation, 41 accounts | Data | 3 d |
| Section 03 subtotal | 29 d |
41 accounts carry a branch level price override with no owner recorded. Migrating them as-is transfers an undocumented rule into the new system. Reconciliation is costed above. Leaving it out does not remove the risk, it moves it to month nine.
Two weeks. We map your pricing model, your ERP objects and the order paths your buyers actually use, then hand you a scope with fixed numbers instead of the band above. You keep the document whether or not you build with us, and it is specific enough to take to another agency.