> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kwebby.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PC Builder

> Set up the PC Builder: connect a collection to each slot, add the build specs the compatibility checks read, offer presets and assembly, and see how builds reach the cart.

The PC Builder lets shoppers put a complete PC together on one page. They pick a part for each slot from your own collections, Kelvin checks every pick against the rest of the build with specs you keep in product metafields, works out how much power the build needs, and adds the whole build to the cart in one step. It runs entirely in your store: no app, no account and no outside service.

![A preset build loaded in the PC Builder](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-preset.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=898a09b0ab151e415d9e3f0b39d8659b)

1. The message after loading a preset. 2. The parts, slot by slot. 3. The build summary with the power estimate

## What shoppers get

**Slots.** One row per kind of part: Processor, Motherboard, Memory, Graphics card, Storage, Case, CPU cooler, Power supply, Case fans, Monitor, and Keyboard, mouse and dock. Shoppers fill them in any order.

* Processor, Motherboard, Memory, Storage, Case and Power supply are required.
* A graphics card is required unless the chosen processor has integrated graphics, and a CPU cooler unless the processor comes with one. Until a processor is chosen, both count as required.
* The summary counts them, such as 5 of 8 required parts, and Add build to cart names the parts still missing.

**The parts list.** Choose or Change opens the slot's parts from the side.

* A search box (name, brand, product type and spec line), Sort (Compatible first; Price, low to high; Price, high to low; Name) and a Compatible only switch.
* With Compatible only on, parts that would break the build are hidden behind a Show 2 incompatible parts and why button. With it off, they stay in the list, dimmed, with up to two reasons and a disabled Incompatible button.
* Each row shows the price, the difference to the part it would replace, a menu for products with several variants, and Out of stock or Pre-order.

![The parts list for the case slot](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-chooser.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=1a70047def46efbe180fc37800298f18)

The parts list with Compatible only off: each case that does not fit says why

**Checks at three levels.** Every pick is checked in both directions against the parts already chosen. Each message names the parts and the numbers and has an icon and a word, on the slot and in the summary.

| Level | What it means | What happens |
| - | - | - |
| **Error** | The parts cannot work together, for example a processor and a motherboard with different sockets. | Add build to cart stays disabled, with Fix the error above to add this build under it. |
| **Check** | It works, with a catch worth reading, for example a power supply with little headroom. | The first press of Add build to cart lists the checks under Before you add it, with Add anyway and Review the build (setting Ask once before adding a build that has checks). |
| **Note** | Good to know, for example a memory profile to turn on, or a part without specs. | Nothing: the build can be added. |

**Fix buttons.** Under each error and check, Kelvin offers an in-stock part for one of the slots involved: the one with the smallest price change that clears the problem without adding a new error. It reads Use (part) with the price difference, or Add (part) with its price when the slot is empty. Pre-orders are offered last. A fix is never applied without a click.

![An error, two checks and a note in the build summary](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-checks.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=f4874e8a8fec36774d9a5b336560a277)

An error with its fix, two checks and a note: Add build to cart stays disabled until the error is fixed

**The rules.** These are all the checks. The metafields they read are in the tables further down.

| Level | Check |
| - | - |
| Error | The processor socket differs from the motherboard socket. |
| Error | The motherboard does not list the processor generation. |
| Check | The motherboard needs a BIOS update for the processor generation. |
| Error | The memory type differs from the motherboard, or the processor does not take it. |
| Error | More memory modules than the motherboard has slots. |
| Error | More memory than the motherboard or the processor supports (the lower limit counts). |
| Note | The memory is rated faster than the build officially supports (turn on EXPO or XMP). |
| Error | More M.2 drives than M.2 slots, or more SATA drives than SATA ports. |
| Error | The graphics card is longer than the case allows, or takes more slots than the case has. |
| Check | The graphics card fits with less than 10 mm to spare. |
| Error | The air cooler is taller than the case allows, or the liquid cooler radiator does not fit the case. |
| Error | The cooler does not list the processor socket. |
| Check | The cooler is rated for less heat than the processor can draw at peak. |
| Check | The memory is taller than the room the air cooler leaves above the slots. |
| Error | The case does not take the motherboard size, or the power supply size. |
| Error | A back-connect motherboard in a case without a back-connect layout. |
| Error | The power supply is below the estimated load. |
| Check | The power supply is below the recommended size. |
| Note | The power supply is more than two and a half times the load. |
| Check | The graphics card needs a 12V-2x6 cable and the power supply has none (a Note when the adapter is in the box). |
| Check | The graphics card needs more PCIe 8-pin cables than the power supply has. |
| Check | The case has a front USB-C port and the motherboard has no header for it. |
| Check | The processor has no cooler in the box and no cooler is chosen. |
| Check | The processor has no integrated graphics and no graphics card is chosen. |
| Note | A part has no specs, the shopper uses their own part, a part is a pre-order, or a part has your own compatibility note. |

**The power estimate.** The summary shows the Estimated load, the Recommended power supply and the Selected one on a meter, with What this adds up listing every input. See [The power estimate](#the-power-estimate) below.

**Presets.** Preset builds show as cards above the parts, under Start from a build. Start from this build replaces the current build with the preset's parts and says Loaded the (name) build. Change any part you like. An Undo button brings the previous build back.

**Share and print.**

* Copy link copies the page address with the build in it. Anyone who opens it sees the same parts, the assembly choice and the slots marked I already have one.
* Copy as text copies a plain parts list with prices, the total, the power estimate, every check and the link.
* Print prints the parts and the summary without the rest of the page.

**Autosave and saved builds.**

* The build in progress is saved on the shopper's device after every change and comes back on their next visit. The home page's PC Builder entry links back to it.
* Save build keeps a named copy (up to 40 characters) under Saved builds, with Load and Delete. Load replaces the current build, with Undo. Shoppers can keep 10 saved builds; for an eleventh they are asked to delete one.
* Start over asks for a second press within four seconds, then offers Undo.

![Saved builds on the PC Builder page](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-saved.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=a56a4aa71f76425b9599ae037c339196)

Saved builds, kept in the shopper's browser on that device

**Add the whole build to the cart.** Add build to cart sends every part in one request, as normal cart lines that share a build name, and opens the cart drawer (or the cart page, with Theme settings → Cart → Cart type set to Page).

* Pressing it again for the same build in the same visit asks This build is already in your cart, with Add another and Cancel.
* If Shopify refuses a part (sold out, or above a quantity limit), none of that build's lines stay in the cart, and the message names the part when Shopify says which one it was.

**On phones.** Below 1000 px the summary moves under the parts. A bar pinned to the bottom of the screen shows the total, the status (such as Build ready or 1 error) and Review build, which jumps to the summary. Below 750 px the parts list fills the screen.

![The PC Builder on a phone](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-phone.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=77318f4269b4bef54839d40c66e567cc)

On a phone, the bottom bar keeps the total and the status in view

## Set it up

**1. Create the page.** In the Shopify admin go to **Online Store → Pages → Add page**, name it PC Builder (or anything you like), choose **pc-builder** under Theme template and save. The template holds the PC Builder section with all 11 Slot blocks.

**2. Choose it in Theme settings.** In the theme editor open **Theme settings → PC Builder** and pick the page under **PC Builder page**. Every link to the builder uses this page: the header's PC Builder link (Header → Show the PC Builder link), the [PC Builder entry](https://docs.kwebby.com/kelvin/sections/pc-builder-entry.md) on the home page, Add to a PC build on product pages, Edit build in the cart and the saved builds on the account page.

**3. Put each kind of part in a collection.** Create one collection per slot, such as Processors, Motherboards, Memory, Graphics cards, Storage, Cases, Power supplies and Cooling. Automated collections by product type are the easiest to keep up to date. Parts can be in other collections too; the builder only looks at the slot collections.

**4. Connect the slots.** Choose **Pages → pc-builder** in the theme editor's page selector, select the PC Builder section and open each Slot block:

| Setting | What it does |
| - | - |
| Slot | Which row the block is. Each slot is used once; a second block with the same slot is ignored. Links to builds name parts by this slot. |
| Parts collection | The collection the parts list shows. |
| Only parts with this tag | Optional. Narrows the collection to products with this tag, for a collection that holds parts for two slots. |
| Label, Help text | Leave empty for the standard name (such as Processor) and hint. |
| Required | Standard for this slot (as described above), Always or Never. |
| Offer I already have this | Adds a checkbox such as I already have one while the slot is empty. Ticked, the slot counts as filled and that part is not checked. On in the template for the graphics card, storage, case, CPU cooler and power supply. |
| Most parts in this slot | 1 to 6. The template allows 2 memory kits, 4 drives, 3 fan packs, 2 monitors and 4 accessories. |
| Spec columns | Metafield keys from the specs namespace, separated by commas, shown as the spec line under each part, such as cores, socket. Keys from Theme settings → Product cards → Spec rows and the PC Builder keys below both work. |

Delete the Slot blocks for parts you do not sell, or leave their collection empty.

> [!NOTE]
>
> **How parts find their slot.** Slots match products by collection only: a slot lists the products of its Parts collection, narrowed to Only parts with this tag when that is filled. A part that arrives from a preset, a link or a product page goes into the first slot, in block order, whose collection (and tag) holds it. Kelvin does not read slot tags by itself: tags such as `slot:cooler` on the demo store are only there for Only parts with this tag, and any tag works. Type the tag exactly as it is on the products.

**5. Add the build specs.** Create the metafield definitions in [Build specs](#build-specs-metafields) below and fill them on your parts. Without them the builder still works as a plain parts picker, and tells shoppers the parts were not checked.

**6. Tag the parts.** Products with the tag in **Theme settings → PC Builder → Parts tag** (default `pc-part`) show the PC compatibility box on their product page, with their build specs and Add to a PC build. The tag does not decide what the builder lists; the slot collections do.

**7. Review the section settings.**

| Setting | What it does |
| - | - |
| Show compatible parts only by default | Starts the parts list with Compatible only on (default). Shoppers can switch it off to see every part with the reason. |
| Out of stock parts | Show as unavailable (listed with Out of stock and no Choose button) or Hide. |
| Block parts without build specs | Off by default. When on, a part without its slot's main spec cannot be chosen: socket for processors and motherboards, memory\_type for memory, gpu\_length\_mm for graphics cards, storage\_kind for storage, form\_factors for cases, socket\_support for coolers and psu\_w for power supplies (marked Main in the tables below). It shows Specs missing, and links, presets and saved builds leave it out. |
| Show the power estimate | Shows the meter and turns the power supply size checks on or off. |
| Power supply headroom, Allowance for everything else, Motherboard allowance | The numbers in the power estimate (defaults 30%, 30 W and 40 W). |
| Assembly product, Select assembly for new builds, Assembly description | Your build service. See [Assembly service](#assembly-service). |
| Build discount note | A line of text in the summary. It does not create a discount. |
| Ask once before adding a build that has checks | On by default: the Before you add it step. Errors always block the add. |
| Show saved builds, Show how the checks work | The two parts under the builder. How the checks work explains the three levels and, with the power estimate on, the formula with your numbers. |

## Build specs (metafields)

The checks read product metafields in the namespace `specs`. Create each definition once in **Settings → Custom data → Products** (Settings → Metafields and metaobjects → Products in newer admins): Add definition, Namespace and key such as `specs.socket`, and the type below. Then fill them on each part, one product at a time or in bulk with the bulk editor.

**How values are read.**

* Numbers are plain numbers in the unit the key names: `_mm` millimeters, `_w` watts, `_gb` gigabytes, `_mhz` megatransfers per second (the MT/s on memory kits).
* Text is compared without regard to capitals, spaces or punctuation, so AM5 matches am5 and Micro-ATX matches micro ATX. Common short forms are understood: mATX and uATX for Micro-ATX, ITX and mITX for Mini-ITX, Extended ATX for E-ATX, liquid or water for aio, reverse for back\_connect.
* A list can be a list metafield or one line with values separated by commas.
* Use the same spelling on both sides of a rule: if processors say LGA1851, motherboards and coolers must say LGA1851 too.

**When a value is missing.** A missing value never causes an error: the rule that needs it is skipped. When a part lacks its slot's main spec (marked Main below), the build shows a note: Specs missing for (part), so its compatibility is not checked. When no part in the build has any build specs, one note says These parts have no build specs, so compatibility is not checked.

**All parts**

| Key | Type | What it does |
| - | - | - |
| `specs.summary` | Single line text | The spec line under the part in the builder, such as 8 cores / 16 threads · 5.0 GHz boost. Replaces the slot's Spec columns. |
| `specs.tdp_w` | Integer | Watts for the power estimate: the processor's base power (used when it has no peak power) and the graphics card's rated power. On a motherboard, drive or cooler it replaces the standard allowance. |
| `specs.compat_note` | Single line text | Your own note, such as Needs BIOS 1.2 for Ryzen 9000. Shown as a Note whenever the part is in a build, and in the product page's compatibility box. |

**Processor**

| Key | Type | What it does |
| - | - | - |
| `specs.socket` | Single line text | **Main.** Must match the motherboard socket (Error) and be in the cooler's socket list (Error). |
| `specs.generation` | Single line text | Such as Ryzen 9000. Must be in the motherboard's `cpu_generations` (Error). In its `bios_update_generations` it gives a BIOS Check. |
| `specs.memory_types` | Single line text, list | Memory types it takes, such as DDR5. Memory of another type is an Error. |
| `specs.max_memory_gb` | Integer | Most memory in GB. More is an Error. |
| `specs.max_memory_speed_mhz` | Integer | Officially supported memory speed. Faster memory gives a Note. |
| `specs.peak_power_w` | Integer | Peak draw in watts, for the power estimate and the cooler rating check. Without it, `tdp_w` is used. |
| `specs.has_igpu` | True or false | True makes the graphics card optional. False with no card chosen gives a Check. |
| `specs.includes_cooler` | True or false | True makes the CPU cooler optional. False with no cooler chosen gives a Check. |

**Motherboard**

| Key | Type | What it does |
| - | - | - |
| `specs.socket` | Single line text | **Main.** Must match the processor socket. |
| `specs.cpu_generations` | Single line text, list | Processor generations it runs. A processor generation not listed is an Error. |
| `specs.bios_update_generations` | Single line text, list | Generations that need a BIOS update first: a Check. |
| `specs.form_factor` | Single line text | Board size, such as ATX. Must be in the case's `form_factors` (Error). |
| `specs.memory_type` | Single line text | Such as DDR5. Memory of another type is an Error. |
| `specs.memory_slots` | Integer | More memory modules than slots is an Error. |
| `specs.max_memory_gb` | Integer | Most memory in GB. The lower of the motherboard and processor limits counts. |
| `specs.max_memory_speed_mhz` | Integer | Supported memory speed. The lower of the motherboard and processor speeds counts. |
| `specs.m2_slots` | Integer | More M.2 drives than slots is an Error. |
| `specs.sata_ports` | Integer | More SATA SSDs and hard drives than ports is an Error. |
| `specs.connector_layout` | Single line text | `standard` or `back_connect`. A back-connect board needs a case with `back_connect` or `both` (Error). |
| `specs.front_usbc_header` | True or false | False, in a case with a front USB-C port, gives a Check. |
| `specs.chipset` | Single line text | Not checked. Available as a Spec column. |

**Memory** (one kit)

| Key | Type | What it does |
| - | - | - |
| `specs.memory_type` | Single line text | **Main.** Such as DDR5. Must match the motherboard and be in the processor's `memory_types` (Error). |
| `specs.module_count` | Integer | Modules in the kit. All kits together must fit the motherboard slots (Error; checked when every kit has it). 5 W each in the power estimate, one per kit when empty. |
| `specs.capacity_gb_total` | Integer | GB in the kit. All kits together must stay within the memory limit (Error; checked when every kit has it). |
| `specs.speed_mhz` | Integer | Rated speed in MT/s, compared with the supported speed (Note). |
| `specs.module_height_mm` | Integer | Module height, compared with an air cooler's memory clearance (Check). |

**Graphics card**

| Key | Type | What it does |
| - | - | - |
| `specs.gpu_length_mm` | Integer | **Main.** Card length. Longer than the case allows is an Error; less than 10 mm to spare is a Check. |
| `specs.gpu_slot_width` | Decimal | Slots the card takes, such as 2.5. More than the case's expansion slots is an Error. |
| `specs.tdp_w` | Integer | Rated power in watts, for the power estimate. |
| `specs.recommended_psu_w` | Integer | The card maker's minimum power supply. The recommended size is never below it. |
| `specs.gpu_12v_2x6` | True or false | True when the card uses a 12V-2x6 power cable. |
| `specs.adapter_included` | True or false | True when an adapter comes with the card. It turns the 12V-2x6 Check into a Note. |
| `specs.gpu_pcie_8pin_count` | Integer | PCIe 8-pin cables the card needs. More than the power supply has is a Check. |

**Storage**

| Key | Type | What it does |
| - | - | - |
| `specs.storage_kind` | Single line text | **Main.** `m2`, `sata_ssd` or `hdd` (M.2 works too). M.2 drives count against the motherboard's M.2 slots, SATA SSDs and hard drives against its SATA ports. 5 W per drive in the power estimate, 8 W per hard drive. |
| `specs.capacity_gb` | Integer | Not checked. Available as a Spec column, shown in GB. |

**Power supply**

| Key | Type | What it does |
| - | - | - |
| `specs.psu_w` | Integer | **Main.** Wattage, checked against the power estimate and shown as Selected on the meter. |
| `specs.psu_form_factor` | Single line text | Such as ATX or SFX. Must be in the case's `psu_form_factors` (Error). |
| `specs.psu_12v_2x6_count` | Integer | Native 12V-2x6 connectors. 0 triggers the 12V-2x6 message for cards that need one; leave it empty if you do not know. |
| `specs.psu_pcie_8pin_count` | Integer | PCIe 8-pin cables, compared with what the card needs (Check). |

**Case**

| Key | Type | What it does |
| - | - | - |
| `specs.form_factors` | Single line text, list | **Main.** Motherboard sizes it takes, such as ATX, Micro-ATX, Mini-ITX. |
| `specs.max_gpu_length_mm` | Integer | Longest graphics card it fits. |
| `specs.expansion_slots` | Integer | Expansion slots, compared with the card's slot width. |
| `specs.max_cooler_height_mm` | Integer | Tallest air cooler it fits. |
| `specs.radiator_sizes_mm` | Integer, list | Radiator sizes it mounts, such as 240, 280, 360. A liquid cooler with another size is an Error. Used instead of `max_radiator_mm` when filled. |
| `specs.max_radiator_mm` | Integer | Largest radiator, used when there is no size list. |
| `specs.psu_form_factors` | Single line text, list | Power supply sizes it takes, such as ATX. |
| `specs.connector_layout` | Single line text | `standard`, `back_connect` or `both`. |
| `specs.front_usbc` | True or false | True when the case has a front USB-C port. |
| `specs.fans_included` | Integer | Fans that come with the case, 3 W each in the power estimate. |

**CPU cooler**

| Key | Type | What it does |
| - | - | - |
| `specs.cooler_type` | Single line text | `air` or `aio` (liquid). Decides which fit checks apply, and counts 5 W or 15 W in the power estimate. |
| `specs.socket_support` | Single line text, list | **Main.** Sockets it fits, such as AM5, LGA1851. A processor socket not listed is an Error. |
| `specs.cooler_height_mm` | Integer | Air coolers: height, compared with the case (Error). |
| `specs.radiator_size_mm` | Integer | Liquid coolers: radiator size, compared with the case (Error). |
| `specs.max_tdp_w` | Integer | Heat it is rated for in watts. Below the processor's peak draw is a Check. |
| `specs.ram_clearance_mm` | Integer | Air coolers: room above the memory slots. Taller memory is a Check. |

**Case fans**

| Key | Type | What it does |
| - | - | - |
| `specs.fan_count` | Integer | Fans in the pack, 3 W each in the power estimate. Without it a pack counts as one fan. |

Monitors and keyboards, mice and docks have no checks and are not counted in the power estimate. Their Spec columns can use any key from Spec rows.

> [!TIP]
>
> On products with the Parts tag, the same specs show in the product page's PC compatibility box, so shoppers see a part's socket, memory and power figures before they open the builder.

## The power estimate

Kelvin adds up an estimated load from the parts in the build:

* processor: `peak_power_w`, or `tdp_w` without it;
* graphics card: `tdp_w`;
* motherboard: its `tdp_w`, or Motherboard allowance (default 40 W);
* memory: 5 W per module;
* drives: 5 W each, 8 W per hard drive, or the drive's `tdp_w`;
* CPU cooler: 5 W for air, 15 W for liquid, or the cooler's `tdp_w`;
* fans: 3 W per fan, counting the case's `fans_included` and each pack's `fan_count`;
* Allowance for everything else (default 30 W).

Monitors and accessories are not counted. The two allowances are added once the build has any part besides monitors and accessories.

The **recommended** size is the load plus Power supply headroom (default 30%), rounded up to the next 50 W, and never below the graphics card's `recommended_psu_w`. For example, a processor that peaks at 162 W, a 220 W graphics card, the 40 W motherboard allowance, two memory modules (10 W), one drive (5 W), an air cooler (5 W), three case fans (9 W) and 30 W for everything else make 481 W. Plus 30% is 625 W, rounded up to 650 W.

The selected power supply is then checked: below the load is an Error, below the recommended size a Check that names the headroom and the size to choose, and more than two and a half times the load a Note that a smaller unit would do.

![The power estimate in the build summary](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-power.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=ce359bfd960ae416595467b265155528)

Estimated load, recommended and selected power supply, with What this adds up open

Untick Show the power estimate to hide the meter and drop the power supply size checks. The figure is always called an estimate, and How the checks work, under the builder, explains the formula with your own numbers.

## Presets

Add **Preset build** blocks to the PC Builder section: Name, Note, Image (empty uses the first part's photo) and up to 12 Parts. Each part goes into the first slot whose collection holds it. The card shows the sum of the parts' current prices, the number of parts and a line naming the processor, graphics card and memory.

When a shopper loads a preset, parts that are sold out, in no slot's collection, or more than a slot allows are left out and named after Left out, not in any parts list.

**Link to a preset.** Add `?preset=` and the Preset build block's ID to the PC Builder page address, for example `/pages/pc-builder?preset=preset-sweet`. It loads the preset as its Start from this build button does, with Undo to the shopper's previous build. A block ID that starts with `preset-` also works without that prefix, so `?preset=sweet` loads `preset-sweet`. The link is ignored when it also carries a build (`?b=`, `?add=` or `?parts=`).

**Find the block ID.** The theme editor does not show it. Go to **Online Store → Themes**, open the theme's ... menu, choose **Edit code** and open `templates/page.pc-builder.json`: each preset is a block of type preset, and the name in front of it is its ID, next to the title you gave it. The ID stays the same while the block exists; if you delete a block and add a new one, update your links.

> [!TIP]
>
> A `?preset=` link follows the block, so changing the preset's parts in the theme editor changes what the link loads. A Copy link address (`?b=`) keeps the exact parts it was made with. The home page's [PC Builder entry](https://docs.kwebby.com/kelvin/sections/pc-builder-entry.md) has its own Preset build blocks and links them for you.

## Links into the builder

Every build lives in the page address, so any link can open the builder with parts in it. Parts are named by their variant ID: in the admin, open the product, then the variant; the ID is the number at the end of the address.

| Link | What it does |
| - | - |
| `?b=cpu.41234567890,memory.41234567891x2` | A whole build: the slot key, a dot and the variant ID, with `x` and a count for more than one. Slot keys: `cpu`, `board`, `memory`, `gpu`, `storage`, `case`, `cooler`, `psu`, `fans`, `monitor`, `accessory`. Copy link and Edit build in the cart make these. |
| `&own=gpu,case` | Slots marked I already have one (only slots that offer it). |
| `&asm=1` | Assembly ticked (needs an Assembly product). |
| `?add=41234567890` | Adds one part to the shopper's build in progress, in the first slot whose collection holds it. If that slot is full, it replaces the slot's first part. Add to a PC build on product pages uses it. |
| `?parts=41234567890,41234567891` | Starts a new build from these parts (up to 24), each in its slot, with Undo to get the previous build back. The home page presets use it. |
| `?preset=preset-sweet` | Loads the Preset build block with that ID (see [Presets](#presets)). Ignored when the link has `?b=`, `?add=` or `?parts=`. |

A link with a build in it replaces the shopper's build in progress; their saved builds are kept. Parts that are sold out or no longer in their slot's collection are left out with a message, and a part in no parts list is not added (That part is not in any of the builder's parts lists, so it was not added.).

## Builds in the cart

Each part is a normal cart line, and every line of one build carries three line item properties:

| Property | Who sees it | Value |
| - | - | - |
| `Build` | Shoppers in the cart and at checkout; you on the order | The build name, such as PC build K7Q2MX. The same on every line of the build. |
| `_Build` | Hidden from shoppers; you on the order | The build ID, such as k7q2mx. |
| `_Slot` | Hidden from shoppers; you on the order | The slot, such as cpu or psu, or service for the assembly line. |

The cart drawer and the cart page group a build's lines under PC build and its name, with the number of lines and the build total, after the other lines.

* A line under the group says Assembled and stress-tested before it ships. when the build has the assembly line, or Shipped as parts. Add assembly in the PC Builder. when it does not. Change these words in Edit default theme content if your service differs.
* Edit build opens the builder with the build's parts (and assembly). Remove build takes all its lines out of the cart.
* Each line keeps its own quantity buttons and Remove.

![A PC build grouped in the cart](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-cart.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=9c32158cc4ef89f25bed52f6cbdfea14)

1. The build name, its lines and total. 2. Edit build and Remove build

Editing a build and adding it again adds a second build. Shoppers remove the first one with Remove build. On the order, the Build name on each line tells your team which parts go together.

## Assembly service

Create a product for your build fee, such as PC assembly, priced at what you charge, and choose it in the PC Builder section's **Assembly product**. The summary then offers a checkbox, Add (product) for (price), with your **Assembly description** under it, for example: We build it, update the BIOS and test it for 24 hours.

* **Select assembly for new builds** ticks it in advance.
* When ticked, the assembly is one more line of the build, with `_Slot` set to service.
* If the product is sold out, the checkbox is hidden, so set it not to track inventory.
* Leave Assembly product empty to sell parts only.

**Build discount note** adds a line of text to the summary. It does not create a discount: first create an automatic discount in **Discounts**, for example 5% off orders with 5 or more items, then describe it here. The summary's Sale savings included line only counts compare-at prices.

## Elsewhere in Kelvin

* **Home page:** the [PC Builder entry](https://docs.kwebby.com/kelvin/sections/pc-builder-entry.md) section has a start button, its own presets, and a Continue your build: 7 parts, (total) link to the shopper's build in progress.
* **Product pages:** on products with the Parts tag, the PC compatibility block of [Product information](https://docs.kwebby.com/kelvin/sections/product-information.md) lists the build specs the product has, its `specs.compat_note`, and Add to a PC build (block setting Show Add to a PC build). The button opens the builder with the selected variant, when it is in stock and the PC Builder page is chosen.
* **Header:** Show the PC Builder link and PC Builder link label in the Header section.
* **Account page:** the saved builds from this device, each with Open in PC Builder.
* **Cart:** grouped builds with Edit build and Remove build.

![The PC compatibility box on a product page](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/guide-pc-builder-add.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=578d03c35bbb9eec77bf48b15fc0cef1)

The PC compatibility box with Add to a PC build

## Limits

* Everything happens in the shopper's browser and your store. Parts, prices and stock come from your own collections; no request goes to an outside service and no app is needed.
* Builds are not stored in Shopify or in a customer account. The build in progress and up to 10 saved builds stay in the browser on that device: another device, another browser or cleared browsing data starts empty. Shoppers share a build with Copy link.
* The checks cover only the rules above, and only with the specs you fill in. They cannot know about anything that is not in your metafields, and the power figure is an estimate, not a measurement.
* A build is a set of normal cart lines, not one product: stock, prices, taxes and discounts work per part, and Shopify charges the current price at checkout. Nothing is reserved while a shopper builds.
* Each slot lists up to 500 products and up to 25 variants per product. Parts lists are kept in the browser tab for 10 minutes, so a new price or stock level can take that long to appear in the list.
* The builder never swaps a part on its own and never adds anything to the cart without Add build to cart.

## Troubleshooting

* **A slot says No parts in this category yet.** Its Slot block has no Parts collection, the collection is empty, or Only parts with this tag matches no product.
* **A preset or a link leaves a part out.** The part is sold out, in no slot's collection, or missing the slot's tag.
* **Every part says Specs missing.** Check that the namespace is `specs` and that the key is spelled exactly, such as `specs.socket`.
* **Two parts that fit are marked incompatible.** Compare the values on both sides: socket, memory type and size names must match (capitals and spaces do not matter).
* **A shopper lost a build.** Builds live in the browser where they were made. Ask for the Copy link address, or look at the Build name on their order.

## In the theme editor

![PC Builder in the theme editor](https://mintcdn.com/kwebby/QKNMzt7KPy_yk6ai/images/kelvin/editor-pc-builder.webp?fit=max\&auto=format\&n=QKNMzt7KPy_yk6ai\&q=85\&s=0b5e533652a22553b58a10e95a221311)

1 PC Builder, on the pc-builder page; each slot and preset is a block · 2 its settings · 3 the preview

![PC Builder settings](https://mintcdn.com/kwebby/tbWCv70mkhaUy_7w/images/kelvin/settings-pc-builder.webp?fit=max\&auto=format\&n=tbWCv70mkhaUy_7w\&q=85\&s=75208769abf2105eb4918d5bb2e640ff)

The PC Builder page and the parts tag: 1 Theme settings · 2 PC Builder


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.