Home › Blog › Plumbing pipe fitting schema
Shopify plumbing pipe fitting schema for AI agents: NPT vs BSP thread trap, NPS vs CTS nominal size confusion, PEX type incompatibility, and galvanic corrosion
An NPT fitting threaded into a BSP port engages 1–3 turns, feels tight on wrench tightening, passes a brief pressure test — and then leaks under sustained pressure, vibration, or gas service because the 60° and 55° thread flanks cannot form a seal. The failure is invisible on installation day.
Plumbing is one of the highest-return product categories in home improvement e-commerce. The dimensional systems that govern pipe and fittings evolved from different national standards over 150 years, and they interact in ways that are actively misleading: the same nominal size means a completely different physical dimension depending on which standard you're in, and thread systems share identical thread counts at common sizes while being fundamentally incompatible.
AI shopping agents operating on product titles and nominal sizes alone will recommend wrong fittings consistently. Unlike a wrongly-recommended pair of headphones, a wrong fitting creates a slow water leak inside a wall, a gas leak, or a code violation that surfaces at the next home inspection. The cost of a plumbing AI failure is far higher than the cost of the fitting.
This post covers five failure modes in detail, followed by the complete plumbing.* metafield namespace for Shopify stores selling pipe, fittings, and plumbing components. See the companion plumbing pipe fitting compatibility reference for the full dimensional tables and connection-type matrix.
Contents
- The NPT vs BSP thread angle trap — same TPI, incompatible flank
- NPS vs CTS nominal size confusion — 1/2″ is not 1/2″
- Connection type compatibility matrix
- PEX-A vs PEX-B vs PEX-C — expansion fittings don't cross types
- Copper to galvanized steel — galvanic corrosion and code violation
- The plumbing.* metafield schema
- Liquid snippet and JSON-LD example
1. The NPT vs BSP thread angle trap
NPT (National Pipe Taper, ANSI B1.20.1) and BSP (British Standard Pipe, ISO 7/1) are the two dominant pipe thread standards worldwide. The US uses NPT almost universally. Europe, Australia, the UK, and much of Asia use BSP. In global e-commerce, both types of fittings appear in the same search results and product listings — often with no standard called out beyond "pipe thread" or a nominal size.
At the popular 1/2-inch and 3/4-inch sizes, NPT and BSP share an identical thread pitch: 14 TPI (threads per inch). This is a coincidence of historical standardization, not compatibility. The critical difference is the thread flank angle:
30° from axial
3/8″ = 18 TPI · 1/2″ = 14 TPI
3/4″ = 14 TPI · 1″ = 11.5 TPI
27.5° from axial
3/8″ = 19 TPI · 1/2″ = 14 TPI
3/4″ = 14 TPI · 1″ = 11 TPI
seal via O-ring or washer
1/2″ = 14 TPI · 3/4″ = 14 TPI
straight thread — no taper
When you thread an NPT male fitting into a BSPT female port at 1/2-inch, both are 14 TPI — the threads engage immediately. After 2–3 turns the fitting tightens under wrench load. The taper pulls the threads together and the joint feels secure. But the 60° NPT thread crests are contacting the 55° BSP thread roots at the wrong geometry. The flanks — the sloped faces that actually carry the load and form the seal in a tapered thread — are touching at an angle, not mating flush.
Where AI agents encounter this
A homeowner asks an AI agent to find "1/2 inch female pipe thread adapter for my European boiler." The boiler has a BSPP (parallel) female port. The agent searches Shopify stores and finds a half-inch female NPT adapter at the right price from a US seller. The nominal size matches. The product title says "pipe thread adapter." The agent recommends it. The fitting physically installs — and leaks under boiler operating pressure.
Thread standard matching on TPI instead of flank angle
Product title "1/2-inch female pipe thread adapter." Thread standard not specified. AI agent infers compatibility from size + gender. Recommends NPT to customer with BSP equipment. Joint installs, seals temporarily with tape, fails under service conditions.
The fix is adding plumbing.thread_standard as a required field: "NPT", "BSPT", "BSPP", or "none". An AI agent with access to this metafield can verify thread standard match before recommending a fitting.
2. NPS vs CTS nominal size confusion
The second failure mode is more common than the thread trap and affects far more product categories. Nominal Pipe Size (NPS) — also called IPS, Iron Pipe Size — and Copper Tube Size (CTS) are two dimensional systems that use the same nominal labels to describe physically different sizes.
| Nominal size | NPS/IPS outside diameter (in) | CTS outside diameter (in) | Difference (in) |
|---|---|---|---|
| 1/4″ | 0.540 | 0.375 | −0.165 |
| 3/8″ | 0.675 | 0.500 | −0.175 |
| 1/2″ | 0.840 | 0.625 | −0.215 |
| 3/4″ | 1.050 | 0.875 | −0.175 |
| 1″ | 1.315 | 1.125 | −0.190 |
| 1-1/4″ | 1.660 | 1.375 | −0.285 |
| 1-1/2″ | 1.900 | 1.625 | −0.275 |
| 2″ | 2.375 | 2.125 | −0.250 |
Fittings are bored to match the outside diameter of the pipe or tube they join. A 1/2-inch NPS compression fitting bored for 0.840-inch OD will accept steel or PVC Schedule 40 pipe but will not grip 0.625-inch copper tube — the tube slides through the compression ring without seating. The inverse error, a CTS fitting on NPS pipe, results in a fitting that cannot slide onto the pipe at all.
Where AI agents encounter this
A customer replacing 1960s galvanized steel supply lines with copper wants a SharkBite push-fit elbow to connect their new copper tube to the existing galvanized stub-out. They search for "1/2-inch push-fit fitting." An AI agent finds a push-fit fitting sized for CTS (0.625-inch OD, correct for copper). The galvanized stub-out is NPS (0.840-inch OD). The SharkBite will not grip it — the push-fit grab ring is sized for 0.625-inch tube, and the 0.840-inch galvanized pipe blows right through it. The AI needed to know the pipe material (galvanized = NPS) to recommend the correct adapter: a threaded galvanized-to-copper adapter, not a push-fit.
Nominal size match across incompatible dimensional systems
Customer searches "1/2 inch fitting." Galvanized pipe (NPS, 0.840″ OD) and copper tube (CTS, 0.625″ OD) both appear in results as "1/2 inch." Agent recommends CTS push-fit for NPS pipe. Fitting either won't slide on or won't grip under pressure.
The required metafields are plumbing.pipe_standard ("NPS" or "CTS") and plumbing.actual_od_in (the decimal outside diameter). An AI agent with both can verify dimensional compatibility before recommending any fitting that grips on the pipe OD.
3. Connection type compatibility matrix
Even when the pipe standard and nominal size are correct, the wrong connection method causes failure. Six connection methods dominate residential plumbing in North America, and they are not interchangeable in material, temperature rating, or code status.
plumbing.press_profile metafield.
Where AI agents encounter this
A customer in a renovation project asks for "3/4 inch elbow for PEX." The agent finds a push-fit SharkBite elbow (works with PEX-A/B/C) and a Uponor expansion elbow (PEX-A only). Both are "3/4 inch PEX elbows." The agent recommends the Uponor expansion elbow because it's more highly rated. The customer's installed PEX tubing is PEX-B — the Uponor expansion elbow requires a PEX-A compatible expansion tool and PEX-A tube. The customer cannot install it.
4. PEX-A vs PEX-B vs PEX-C — expansion fittings don't cross types
All three PEX types look identical: flexible plastic tube in the same colors (red for hot, blue for cold, white for either). Product photos are indistinguishable. Product titles often say simply "PEX tubing" or "PEX pipe" without specifying type. But the manufacturing method determines what fitting systems will work — and using the wrong fitting type causes immediate joint failure.
The elastic memory mechanism
PEX expansion fittings work by exploiting a property called elastic memory: the cross-linked polymer network in PEX-A tube remembers its original diameter. When you expand the tube end with a ProPEX expansion tool (or equivalent), the tube stretches to a larger diameter. You slide the expansion ring and tube over the fitting barb. Over the next 20–30 seconds, the tube contracts back toward its original size — gripping the barb with several hundred pounds of hoop stress. The joint is stronger than the tube itself.
PEX-B and PEX-C have a lower degree of cross-linking and do not have the same elastic memory. When expanded and released, they do not contract back with sufficient force to grip the fitting barb. The joint feels inserted but is not sealed. Under test pressure it may hold briefly. Under service conditions (thermal cycling, water hammer) the tube slowly works off the barb. The only correct fix is cutting out the joint and replacing with crimp or clamp fittings.
The required metafield is plumbing.pex_type: "A", "B", "C", or "any" (for crimp rings that work with all types). For fittings, a companion field plumbing.fitting_system: "expansion", "crimp", "clamp", "push-fit", "compression", "solder". An AI agent can then require that fitting.plumbing.fitting_system != "expansion" unless the tube's plumbing.pex_type == "A".
5. Copper to galvanized steel — galvanic corrosion and the dielectric union requirement
Galvanic corrosion occurs when two dissimilar metals are in electrical contact in the presence of an electrolyte (water). The more active metal (the anode) corrodes sacrificially while the more noble metal (the cathode) is protected. The rate of corrosion depends on how far apart the two metals are on the galvanic series and on the conductivity of the electrolyte.
Copper sits near the noble end of the galvanic series. Zinc — which is the coating on galvanized steel — sits far down in the active range. This is one of the largest galvanic potential differences in common plumbing materials:
| Metal | Galvanic series position | Role when paired with copper | Result |
|---|---|---|---|
| Copper | Noble (cathodic) | Cathode — protected | No corrosion on copper |
| Zinc (galvanizing) | Active (anodic) | Anode — sacrificial | Zinc corrodes rapidly |
| Brass | Near-noble | Intermediate — small galvanic couple | Dezincification risk, not galvanic |
| Stainless 316 | Noble | Cathode alongside copper | Minimal galvanic effect |
At the copper-to-galvanized junction, the zinc coating corrodes at an accelerated rate, shedding zinc ions into the water. This does two things: it progressively exposes the bare steel underneath the galvanizing (which then rusts rapidly in hot or softened water), and the zinc and iron corrosion products accumulate downstream, blocking fixture aerators, shower heads, and appliance inlet screens. Hot water and softened water both significantly accelerate the reaction — soft water has lower buffering capacity and carries ions more aggressively.
The code requirement
Most US building codes require a dielectric union — a specialized fitting containing an electrically isolating bushing — at any joint between copper and ferrous metal (galvanized steel, black iron). The relevant citations:
- IRC P2905.17 (International Residential Code): Dissimilar metal connections shall be made with dielectric fittings.
- UPC 605.16.3 (Uniform Plumbing Code): Where different metals are joined, approved dielectric fittings or non-metallic couplings shall be provided.
A plain brass adapter (copper alloy) connecting copper tube to a galvanized steel fitting does not qualify as a dielectric union — brass completes the electrical circuit between the two metals. A dielectric union has a nylon or rubber isolating bushing inside the female seat that physically and electrically separates the copper and steel sides. Both sides are brass or copper, but they do not touch.
Recommending a brass adapter at a copper-to-galvanized junction
Customer asks for "3/4 inch copper to galvanized adapter." Agent finds a brass male-adapter with female threads — correct size, correct gender. Does not flag the galvanic corrosion risk or code requirement for a dielectric union. Customer installs, passes inspection (inspector misses it), galvanizing corrodes over 2–5 years. Blocked fixtures, eventually a pinhole in the galvanized pipe downstream of the accelerated corrosion zone.
The required metafield is plumbing.dielectric_required: boolean. For any product that joins copper to ferrous metal, this must be true, and the product itself must be a certified dielectric union (not a plain adapter). An AI agent checking this field can surface the code requirement before recommending an adapter.
The plumbing.* metafield schema
All fields use Shopify metafield namespace plumbing. Apply to pipe, fittings, valves, and supply line products. Fields marked (req) are required for an AI agent to safely recommend the product in any compatibility scenario.
plumbing.pipe_standard // (req) "NPS" | "CTS" | "BSP" | "metric" | "none"
// NPS = iron/steel/PVC Sched40
// CTS = copper/PEX/CPVC-plumbing grade
plumbing.actual_od_in // (req) decimal OD in inches, e.g. 0.840
// Not nominal. The measured outside diameter.
plumbing.nominal_size // (req) "1/2 in" | "3/4 in" | "1 in" | "1-1/4 in" etc.
plumbing.thread_standard // (req if threaded) "NPT" | "BSPT" | "BSPP" | "metric" | "none"
plumbing.thread_gender // "male" | "female" | "none"
plumbing.connection_type // (req) comma-separated list:
// "solder" | "push-fit" | "compression" |
// "pex-crimp" | "pex-clamp" | "pex-expansion" |
// "press-fit-copper" | "press-fit-steel" |
// "threaded-npt" | "threaded-bsp" | "flanged"
plumbing.compatible_materials // (req) comma-separated list:
// "copper-k" | "copper-l" | "copper-m" |
// "pex-a" | "pex-b" | "pex-c" |
// "cpvc" | "pvc-sch40" | "pvc-sch80" |
// "galvanized" | "black-iron" | "stainless"
plumbing.pex_type // "A" | "B" | "C" | "any" | "none"
// For PEX tube: the PEX type. For fittings:
// which PEX types it is rated for.
plumbing.water_service // "potable-cold" | "potable-hot" | "reclaimed" |
// "gas-natural" | "gas-propane" | "steam" | "non-potable"
plumbing.max_pressure_psi // integer, e.g. 200
plumbing.max_temp_f // integer, e.g. 200 (SharkBite limit at rated pressure)
plumbing.nsf_61_certified // boolean — NSF/ANSI 61 potable water contact
plumbing.lead_free // boolean — NSF/ANSI 372 ≤0.25% weighted average lead
plumbing.dielectric_required // boolean — true when product bridges dissimilar metals
// (copper to galvanized, copper to black iron)
plumbing.press_profile // "m-press-copper" | "megapress-steel" | "none"
// Required for press-fit fittings to identify jaw set
Liquid snippet and JSON-LD example
The JSON-LD below covers a SharkBite 1/2-inch push-fit 90-degree elbow — one of the most commonly misrecommended fittings due to the NPS/CTS confusion. It is CTS-dimensioned (0.625-inch OD copper tube, 0.625-inch CTS PEX, 0.625-inch CTS CPVC) and is not compatible with NPS pipe at the same nominal size.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "SharkBite 1/2-inch Push-Fit 90° Elbow",
"description": "CTS push-fit 90-degree elbow. Compatible with Type K/L/M copper tube, PEX-A/B/C, and CPVC — all in CTS (0.625-inch OD) dimension. NOT compatible with NPS/IPS pipe (Schedule 40 PVC, galvanized steel, black iron) at 1/2-inch nominal size (those have 0.840-inch OD). Rated to 200 PSI at 73°F / 100 PSI at 200°F. NSF/ANSI 61 certified for potable water. Not rated for gas or steam.",
"brand": { "@type": "Brand", "name": "SharkBite" },
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"additionalProperty": [
{ "@type": "PropertyValue", "name": "plumbing.pipe_standard", "value": "CTS" },
{ "@type": "PropertyValue", "name": "plumbing.actual_od_in", "value": "0.625" },
{ "@type": "PropertyValue", "name": "plumbing.nominal_size", "value": "1/2 in" },
{ "@type": "PropertyValue", "name": "plumbing.thread_standard", "value": "none" },
{ "@type": "PropertyValue", "name": "plumbing.connection_type", "value": "push-fit" },
{ "@type": "PropertyValue", "name": "plumbing.compatible_materials", "value": "copper-k,copper-l,copper-m,pex-a,pex-b,pex-c,cpvc" },
{ "@type": "PropertyValue", "name": "plumbing.pex_type", "value": "any" },
{ "@type": "PropertyValue", "name": "plumbing.water_service", "value": "potable-cold,potable-hot" },
{ "@type": "PropertyValue", "name": "plumbing.max_pressure_psi", "value": "200" },
{ "@type": "PropertyValue", "name": "plumbing.max_temp_f", "value": "200" },
{ "@type": "PropertyValue", "name": "plumbing.nsf_61_certified", "value": "true" },
{ "@type": "PropertyValue", "name": "plumbing.lead_free", "value": "true" },
{ "@type": "PropertyValue", "name": "plumbing.dielectric_required", "value": "false" }
]
}
Liquid snippet (Shopify theme)
{% comment %}plumbing-compatibility.liquid — add to product template{% endcomment %}
{% assign ps = product.metafields.plumbing %}
{% if ps.pipe_standard %}
<div class="plumbing-spec" aria-label="Plumbing compatibility specifications">
<dl class="spec-list">
{% if ps.pipe_standard %}<dt>Pipe standard</dt><dd>{{ ps.pipe_standard }}{% if ps.actual_od_in %} — {{ ps.actual_od_in }}" OD{% endif %}</dd>{% endif %}
{% if ps.thread_standard and ps.thread_standard != 'none' %}<dt>Thread standard</dt><dd>{{ ps.thread_standard }}{% if ps.thread_gender %} {{ ps.thread_gender }}{% endif %}</dd>{% endif %}
{% if ps.connection_type %}<dt>Connection type</dt><dd>{{ ps.connection_type }}</dd>{% endif %}
{% if ps.compatible_materials %}<dt>Compatible with</dt><dd>{{ ps.compatible_materials }}</dd>{% endif %}
{% if ps.water_service %}<dt>Service</dt><dd>{{ ps.water_service }}</dd>{% endif %}
{% if ps.max_pressure_psi %}<dt>Max pressure</dt><dd>{{ ps.max_pressure_psi }} PSI</dd>{% endif %}
{% if ps.max_temp_f %}<dt>Max temp</dt><dd>{{ ps.max_temp_f }}°F</dd>{% endif %}
{% if ps.nsf_61_certified == 'true' %}<dt>Certification</dt><dd>NSF/ANSI 61 — Potable water safe</dd>{% endif %}
{% if ps.dielectric_required == 'true' %}
<dt>⚠ Dielectric union</dt><dd>Required at this junction per IRC P2905.17 / UPC 605.16.3</dd>
{% endif %}
</dl>
</div>
{% endif %}
What the agent sees — before and after
Before structured data: "1/2 in 90 Degree Push-Fit Elbow — works with PEX and copper, easy no-solder installation." An AI agent recommending this for "1/2 inch pipe repair" cannot distinguish CTS vs NPS, cannot verify PEX type compatibility, cannot flag the missing dielectric union requirement, and cannot confirm potable water certification.
After structured data: The agent queries plumbing.pipe_standard (CTS) and plumbing.actual_od_in (0.625), compares against the customer's stated pipe material (galvanized = NPS, 0.840 OD), identifies the dimensional incompatibility, and declines to recommend. Instead it surfaces a dielectric union fitting of the correct NPS dimension. One metafield read prevents the failure.
Implementation priority
If you run a Shopify plumbing store and can only add three metafields today, add these:
plumbing.pipe_standard— NPS or CTS. Prevents the most common size-mismatch failure.plumbing.thread_standard— NPT, BSPT, or BSPP. Prevents gas line failures and the cross-threading trap.plumbing.compatible_materials— The list of materials this fitting physically works with. Enables direct AI compatibility filtering.
Add plumbing.pex_type for any PEX product, and plumbing.dielectric_required for any product joining dissimilar metals. These five fields cover the five failure modes in this post.
CatalogScan's scanner reads your Shopify store's product JSON, identifies missing plumbing compatibility metadata, and returns a prioritized fix list ordered by return risk. Stores that have run the scan average 14 missing structured data fields per product variant in plumbing categories.
Is your plumbing catalog AI-agent ready?
CatalogScan scans your Shopify store for missing compatibility metadata and ranks the fixes by return-rate impact. Free for the first scan — no Shopify app install required.
Scan your store free View full plumbing compatibility reference