Quoting custom-built PCs with bundles
Price a custom PC as the sum of its parts, choose which component lines the client sees, and plan HaloPSA invoicing and purchasing so parts go to your warehouse — not to the client.
Written By Mike Forte
Last updated 2 days ago
A custom-built PC is a bundle of real products: processor, memory, storage, chassis, and the labor to assemble it. In Salesbuildr the package name is a grouping row. HaloPSA — the Professional Services Automation (PSA) system this article assumes — never receives that name. It receives the component lines, and those are what appear on the Halo quotation, sales order, and invoice unless you plan otherwise.
Do the commercial work on the quote. Then decide, before you send, what the client should see and what Halo should invoice.
This article is the quoting and handoff pattern for custom PCs. How bundles are structured in every PSA is in Product bundles. How to present a package so the quote matches the first invoice is in Presenting licenses and services so clients see the value. What happens after approval is in From won quote to delivered order.
Do this in order
- Build the PC as a bundle of catalog products — each part is a listed product, not a note in the description.
- Leave each part at its real price — the bundle total is the sum. Do not change one component to hit a target package price.
- Choose what the client sees — show the parts, collapse them, or hide them. Hiding is display only.
- Plan the HaloPSA sales order — pick the lines that should be invoiced. The bundle name is not one of them.
- Buy the parts to your warehouse — use local stock, or order from a distributor as wholesale (to you), not dropship (to the client).
1. Build the PC as a bundle of catalog products
A bundle is a catalog product that groups other products. On a quote it appears as:
- One parent line — the name the client can see as the package (“Custom workstation”, “Finance desktop”). This row has no price and no Halo catalog record.
- Child lines — each part inside the bundle. Each child keeps its own product type, cost, sell price, billing term, and manufacturer part number (MPN).
Standard spec vs one-off build
Every child should already be a listed catalog product with a category. Search Marketplace by MPN before you create a part by hand. Custom or configure-to-order parts that are missing from a feed are covered in Adding hardware to your catalog.
Assembly time belongs on a Labor child (or a separate Labor line), not as a sentence in the bundle description. See Quoting labor and projects.
2. Bundle pricing is the sum of the parts
The bundle parent does not have a sell-price field. What the client pays is the sum of the enabled child lines, grouped by billing term (one-time hardware plus any monthly service on the same bundle).
On the quote you can still change those child prices:
- Open the bundle line and click Manage bundle.
- Set each child’s quantity, cost, and sell price.
- Save. The bundle total on the quote updates to the new sum.
Quantities multiply. Each child has a quantity per bundle. When you set the bundle quantity on the quote:
Final child quantity = bundle quantity × quantity per bundle
Example: a bundle contains 2× memory modules. If you quote 3 PCs, Salesbuildr and Halo both see 6 modules. The sell price you enter in Manage bundle is the unit price, not the line total.
Cost and sell price are copied from the catalog (or the distributor feed) when the part is added. Everyday hardware should stay on dynamic pricing so cost follows the feed. Override a child on this quote when the deal needs it — do not lock a new sell price on the catalog product just to make one PC come out at a round number.
3. Show or hide component lines from the client
Hiding the parts changes what the client reads. It does not remove the children from the quote, and it does not stop them syncing to HaloPSA.
Quote default
In the quote actions menu (⋯) open Manage Settings. Set Show bundle products in quote to customers:
Set the same control on the quote template so every custom-PC proposal starts the same way.
One bundle on this quote
In Manage bundle, the same three options appear for this bundle and override the quote default.
Open Presentation view and Preview (PDF) before you send. Confirm the client sees either the parts they will be invoiced for, or a package name plus a description that lists what is in the box.
4. How the quote syncs to HaloPSA
Salesbuildr bundles do not become Halo bundles. Halo has no grouped header for the package name.
When the quote syncs to Halo, those children appear as individual quotation lines. After the quote is Approved, Create sales order on the quote lets you pick which of those lines go on the Halo sales order. Halo invoices from the sales-order lines (you still click Add recurring invoice in Halo for any recurring children).
A selected line must already be linked to a Halo product. A selected line with no Halo link fails the whole sales order. Sync or link those products first, then retry. Detail: Fulfillment Tickets and Product bundles.
Quote shipping is not a sales-order line in Halo. If fulfillment needs to see freight, add a regular Halo-linked catalog product and select it, or add the line in Halo after sync.
Plan the invoice before you send
Because Halo lists components, not the bundle name, decide which invoice the client should receive:
Invoice the parts. Keep each child at its real sell price. Set Show bundle products in quote to customers to Visible to customer, expanded by default (visible on PDF). On Create sales order, select those children. The proposal and the Halo invoice name the same SKUs.
Invoice one package line. Add a listed, Halo-linked catalog product that is the package (“Custom-built workstation”) and put the full sell price on that child. Leave the real parts on the bundle at $0 sell (keep their cost so margin and purchasing stay honest). Hide the $0 children if you do not want them on the PDF. On Create sales order, select only the package product. The Halo quotation still lists every enabled child — including the $0 parts — because quote sync flattens the bundle. The sales order and invoice follow what you selected. This takes more manual setup on every quote, and the $0 component lines no longer reflect real selling prices.
Do not expect Halo to print “Custom workstation” from the Salesbuildr parent. That name never leaves Salesbuildr.
5. Why changing one component to hit a target package price sends the wrong price to Halo
The number Halo stores on each line is that child’s unit sell price and cost, attached to that child’s Halo product. The parent total is only a sum in Salesbuildr.
Two changes look like they “set the bundle price” and both send the wrong amount to Halo.
You type a new sell price on one part so the sum matches a target. Example: the parts add up to $1,850 and you want $2,000, so you raise the chassis from $80 to $230. The quote total looks right. Halo invoices chassis at $230. Purchasing, stock, and the client’s invoice all show a padded SKU price. If the bundle quantity is more than 1, Halo multiplies that unit price again.
You try to put $2,000 on the bundle parent. The parent has no price and is not synced. Halo still receives the children at $1,850.
Leave every part at the price you are willing to see next to that SKU in Halo. Include an "Assembly and configuration" labor line in every build bundle. To reach a different package total, adjust that line, not a component price. Component prices stay accurate in HaloPSA, and the difference lands on the build work. If the invoice must show one price for the whole PC, use the package product approach in section 4. Change prices in Manage bundle on this quote. Do not rewrite the catalog product’s sell price to make one deal round.
6. Buy the parts to your warehouse, not to the client
Custom PCs are assembled by you. The parts should arrive at your site, then you build, image, and ship the finished machine.
The bundle parent never becomes a purchase-order line. Only product children do (and Pax8-linked subscriptions). Services, labor, zero-quantity lines, and products marked Does not require procurement are skipped. See From won quote to delivered order.
Parts you already hold
Internal warehouse quantity comes from your PSA inventory. Stock on the product and the Unavailable badge are explained in Stock levels, the Unavailable badge, and low-stock alerts.
- On the product, turn on Does not require procurement for SKUs you always fulfill from the shelf.
- If procurement is on and a shelf part still appears under Procurement → Pending items, Dismiss it. Dismissing can also set Does not require procurement so later quotes do not queue it again.
Parts you order from a distributor
Order as Wholesale (the distributor ships to you). Do not use Dropship — that sends the parts to the client’s delivery address, and you cannot assemble a PC you never receive.
If procurement is enabled for your workspace:
- After approval, open Procurement → Pending items.
- Group the children for the same distributor onto one purchase order.
- On the order, confirm ship-to is Wholesale — your warehouse, not the client.
- Place the order (API, email, or mark as submitted). Use Skip distributor submission only when the “distributor” is your own warehouse and you are syncing the purchase order to the PSA without sending it out.
Distributor cost on the order can differ from the quote. The quote is what the client approved; the procurement view shows the live buy price. Credentials and placing orders: Ordering from distributors.
Procurement is in closed beta. If it is not on for your workspace, place the purchase order in the distributor portal or in Halo, still ship-to your warehouse, receive the parts, assemble, then deliver the finished PC with your usual process.
Do not ask the distributor to deliver components to the client and “the PC will be built there.” Salesbuildr will not re-route those parcels to you after dropship is placed.
What the quoter does on each deal
- Start from an opportunity or press Q. Add the catalog bundle, or Create bundle and add the parts.
- In Manage bundle, check quantities, cost, and sell price. Leave each SKU at a price you would accept on a Halo invoice. Add assembly as its own Labor (or package) line if the target total needs it.
- Set Show bundle products in quote to customers. Preview the PDF.
- Send. Confirm the Halo quotation lists the children you expect — not the bundle name.
- After approval, click Create sales order and select the lines that should be invoiced. Order missing parts Wholesale to your warehouse, or dismiss what you already hold.
Checklist
Before you send a custom-PC quote:
- Every part is a listed catalog product on a bundle — not a note in the description
- Each component stays at its real sell price; the package total is the sum
- Every build bundle includes an "Assembly and configuration" labor line; adjust that line to hit a target total, not a component price
- Client visibility is set (show, collapse, or hide children) and matches what Halo will invoice
- The Halo sales order is planned: invoice the parts, or use a package product with $0 children (more setup; those $0 lines are not real selling prices)
- The bundle parent is not treated as a Halo line — Halo receives the children
- Missing parts are ordered Wholesale to your warehouse, or fulfilled from local stock — never dropshipped to the client
See also
- Product bundles — parent vs children, and how every PSA flattens a bundle
- Quote editor — Create bundle, Manage Settings, and sending
- Adding hardware to your catalog — Marketplace search and parts that are not in a feed
- Presenting licenses and services so clients see the value — showing or hiding bundle children so the quote matches the invoice
- From won quote to delivered order — Create sales order, procurement, wholesale vs dropship
- Fulfillment Tickets — Halo sales-order picker
- Procurement — pending items, purchase orders, and skip-distributor
- Monthly and annual quote terms and HaloPSA invoicing — recurring children on a Halo sales order
- PSA integration best practices — catalog cleanup, one PSA at a time, and quoting in Salesbuildr
Was this helpful?
More in Best Practices
Quoting best practices for new quotersQuoting labor and projectsSet up Salesbuildr in this orderPSA integration best practicesStill need help? Ask the team