The Pricing Tool gives Layer3’s sales team one place to build, revise and send managed-services quotes, with costs pulled from the vendors and every price kept in step with the ConnectWise catalogue. It’s built in C# on .NET 10 with Blazor and MudBlazor, hosted in Azure, and connected into ConnectWise Manage.
Quoting that knows the margins
- A real pricing engine. Service plans are built from core services, each with its own quantity rule (fixed, per user, per device or a custom formula), and prices resolve in order: an override, then a tiered pricing schedule, then the product’s default.
- Margin guardrails everywhere. Cost, gross profit and margin show on every line, section and quote, colour-coded against thresholds the business sets, so a thin deal is obvious before it goes out.
- Commercial rules built in: minimum monthly recurring, term discounts for longer agreements, setup fees and when to waive them, and separate rules for agreement quotes versus add-ons and projects.
- Revision control. Every revision freezes its inputs, prices and costs, so an old quote always shows exactly what was offered. Revisions can be restored or duplicated, and the app shows who else is editing a quote right now.
- Templates and plan comparison for reusing a whole quote setup, or showing a customer two plans side by side.
From approval to signature
Approving a quote freezes the customer-facing details, sets a valid-until date and issues a private link. The customer sees a clean proposal with the services and terms, and signs it off by drawing or typing a signature, with a PDF available. Expired quotes are marked automatically, and the customer can ask for a refreshed one.
Connected into ConnectWise
- Push to ConnectWise. One click turns a quote into a ConnectWise opportunity with its forecast items, and later pushes update the same items instead of duplicating them.
- Catalogue and company sync. Products, companies, contacts, agreements and members are synced on a schedule, with enrolment controls so only chosen records are touched, and a QA view that compares local data with ConnectWise.
- Quote requests from tickets. Technicians ask for a quote from a tab inside the ConnectWise ticket. The request lands in an inbox where sales accept it, which opens a new quote already filled in, or reject it with a reason the technician sees.
- Usage billing. What the backup platform billed each month is mapped onto ConnectWise agreement additions, with a preview before anything is written.
Pax8 pricing, kept in step
The Pax8 catalogue is browsed live and each Pax8 price is linked to its ConnectWise product. A scheduled sync writes cost and sell prices back to ConnectWise, checking each change before and after it’s applied, and keeps a history of every price movement. New ConnectWise catalogue items can be created straight from a Pax8 SKU, with checks for duplicates, and nothing is written unless the pricing currency is confirmed as NZD.
Fortinet import
This replaced a standalone desktop tool. Upload the distributor’s Excel price list, pick the sheet and columns, and the app tracks cost changes over time and flags parts that have dropped off the list. Fortinet parts are built into priced bundles per term, with hardware costed once and licences per year, markup and rounding applied. The pricing matches the old tool to the cent. Each bundle term maps to a ConnectWise catalogue item, and changes are previewed and re-checked against ConnectWise before they’re pushed.
Built properly
- Hosted in Azure: App Service on Linux in a container (so PDFs can be rendered with headless Chromium), Azure SQL reached with a managed identity, and Application Insights monitoring.
- Sign-in with Microsoft through Entra ID, with roles and per-module permissions.
- Over 1,000 automated tests running against a real SQL Server, and a build that fails on any warning or pending database change.