HomeBlog › 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

CatalogScan · June 26, 2026 · 18 min read

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.

60°
NPT thread flank angle (ANSI B1.20.1)
55°
BSP thread flank angle (ISO 7/1 Whitworth)
0.215″
OD difference between 1/2″ NPS and 1/2″ CTS
3
PEX types — only PEX-A accepts expansion fittings

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

  1. The NPT vs BSP thread angle trap — same TPI, incompatible flank
  2. NPS vs CTS nominal size confusion — 1/2″ is not 1/2″
  3. Connection type compatibility matrix
  4. PEX-A vs PEX-B vs PEX-C — expansion fittings don't cross types
  5. Copper to galvanized steel — galvanic corrosion and code violation
  6. The plumbing.* metafield schema
  7. 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:

NPT
ANSI B1.20.1
60° flank angle
30° from axial
1/8″ = 27 TPI · 1/4″ = 18 TPI
3/8″ = 18 TPI · 1/2″ = 14 TPI
3/4″ = 14 TPI · 1″ = 11.5 TPI
BSPT
ISO 7/1 (BSP tapered)
55° Whitworth angle
27.5° from axial
1/8″ = 28 TPI · 1/4″ = 19 TPI
3/8″ = 19 TPI · 1/2″ = 14 TPI
3/4″ = 14 TPI · 1″ = 11 TPI
BSPP
ISO 228/1 (BSP parallel)
55° Whitworth angle
seal via O-ring or washer
Same TPI as BSPT
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.

The field failure pattern: NPT-into-BSP joints often pass an initial low-pressure water test because thread sealant (Teflon tape or pipe dope) fills the gaps. Under sustained pressure, vibration, thermal cycling, or gas service, the joint slowly works the sealant out. The leak develops weeks or months after installation, inside a wall or in an inaccessible location. In gas service, this is a life-safety hazard — gas leaks from mismatched threads are the root cause of several structure fires each year in property inspection reports.

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.

AI Agent Failure Pattern #1

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.5400.375−0.165
3/8″0.6750.500−0.175
1/2″0.8400.625−0.215
3/4″1.0500.875−0.175
1″1.3151.125−0.190
1-1/4″1.6601.375−0.285
1-1/2″1.9001.625−0.275
2″2.3752.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.

Why this keeps happening: NPS evolved from the iron pipe trade in the 1800s (the nominal size was once the approximate ID of a schedule 40 iron pipe, but the OD became fixed for threading). CTS evolved separately from the copper tube industry where the nominal size was closer to the actual ID. By the time both systems were standardized in the 20th century, the labels were too embedded to change. Every new material (PVC, CPVC, PEX) had to choose a system, and the industry split: Schedule 40 PVC uses NPS, CPVC uses CTS for plumbing grade, PEX for plumbing uses CTS.

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.

AI Agent Failure Pattern #2

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.

Connection type Works with Does NOT work with
Sweat / solder Copper (Types K, L, M); bronze valves PEX (melts), CPVC (melts/crumbles), galvanized (won't tin)
Push-fit (SharkBite) Copper, PEX-A/B/C, CPVC — all CTS-dimensioned PEX-AL-PEX, galvanized (NPS), black iron, PVC (NPS), ABS
Compression Copper, soft PE (supply lines); cold water only for PE PEX in hot service (creeps), rigid PVC, CPVC (may crack over-torque)
PEX crimp ring PEX-A, PEX-B, PEX-C (all types, matching OD) Copper, CPVC, anything not CTS PEX
PEX expansion PEX-A only (Engel method — elastic memory required) PEX-B (silane), PEX-C (electron beam) — insufficient memory
Press-fit (ProPress) Copper — Viega M-Press for copper; MegaPress for steel M-Press jaws ≠ MegaPress jaws. Cross-tool use causes non-sealing crimp
ProPress M-Press vs MegaPress: Viega ProPress M-Press (copper, teal ring) and MegaPress (steel, yellow ring) use different fitting profiles and require different jaw sets on the press tool. A plumber who presses an M-Press copper fitting with a MegaPress jaw (or vice versa) produces a crimp that looks identical visually but does not achieve the required deformation depth. The joint will pass visual inspection and may hold initial pressure before failing. Viega's color-coded rings are the only field indicator — M-Press = teal, MegaPress = yellow — and even these are invisible on a product listing without color-coded product imagery and a 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.

PEX-A
Engel / peroxide cross-linking
Uponor AquaPEX, Rehau EVERLOC+, Watts FLAIR, Viega PEX-a
Fittings: expansion (ProPEX, FLAIR-IT) + crimp + clamp + push-fit. Most flexible. Expansion fittings require PEX-A — elastic memory contracts tube back. Freeze damage recoverable (tube re-expands).
PEX-B
Silane / moisture-cure cross-linking
Viega PEX-b, Zurn PEX, most big-box coil PEX
Fittings: crimp rings + clamp rings + push-fit ONLY. No expansion fittings. Less flexible than PEX-A. Freeze damage may crack (no elastic memory to re-expand). Lower cost.
PEX-C
Electron beam (irradiation) cross-linking
Nibco PEX-C, some generic coil
Fittings: crimp rings + clamp rings + push-fit ONLY. Most rigid, least flexible. Lowest cost. Crimp-only is most important constraint. Not interchangeable with expansion.

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.

Installation error with no warning sign: A PEX expansion fitting incorrectly installed in PEX-B looks identical to a correctly-installed fitting in PEX-A immediately after installation. The visual pass-off happens at every level: the installer, the inspector, the homeowner. The leak — or catastrophic blowout at the joint — occurs months later.

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
CopperNoble (cathodic)Cathode — protectedNo corrosion on copper
Zinc (galvanizing)Active (anodic)Anode — sacrificialZinc corrodes rapidly
BrassNear-nobleIntermediate — small galvanic coupleDezincification risk, not galvanic
Stainless 316NobleCathode alongside copperMinimal 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:

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.

AI Agent Failure Pattern #5

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:

  1. plumbing.pipe_standard — NPS or CTS. Prevents the most common size-mismatch failure.
  2. plumbing.thread_standard — NPT, BSPT, or BSPP. Prevents gas line failures and the cross-threading trap.
  3. 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
Structured data
Plumbing
Shopify metafields
AI agent compatibility
NPT BSP
PEX types
NPS CTS