# Anglera — full blog corpus > Every post from https://www.anglera.com/blog, inlined. See https://www.anglera.com/llms.txt for the curated site map. # The Program Suppliers: How 29 Distributors Win Source: https://www.anglera.com/blog/program-supplier-distributors-2026 Published: 2026-09-18 ![The Program Suppliers: How 29 Distributors Win](/og/hero-program-supplier-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Fastenal has made zero acquisitions since 2018. In an industry where growth usually means buying share, that ought to be a problem. Instead the company is spending its 2026 capital budget on a new Atlanta distribution hub and more trucking and IT capacity to support vending and onsite growth — because [Fastenal](/blog/fastenal-distributor-playbook)'s unit of competition was never the transaction. It's the vending machine bolted to a customer's wall and the onsite rep sitting inside their four walls. That's the program-supplier model: win the process, not the order, and let the contract do the work a sales call used to do. Twenty-nine companies in this index run some version of that playbook, from a $28.4 billion public healthcare distributor to family-owned fuel and fastener businesses that don't disclose revenue at all. What ties them together isn't size or category. It's the decision to compete on embedding rather than on price or catalog breadth. ## The roster | Rank | Company | Revenue (fiscal year) | Secondary model | Digital Readiness | |---|---|---|---|---| | 12 | [Medline Industries](/blog/medline-distributor-playbook) | $28.4B | catalog-native | not measured (not observable) | | 22 | [Builders FirstSource](/blog/builders-firstsource-distributor-playbook) | $15.2B | scale-aggregator | not yet measured (catalog verified live) | | 24 | [Henry Schein](/blog/henry-schein-distributor-playbook) | $13.2B | catalog-native | not measured | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B | branch-density | 55 | | 65 | [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) | $3.77B | catalog-native | 65 | | 66 | [NFI Industries](/blog/nfi-industries-distributor-playbook) | $3.6B (est.) | Program-supplier / scale-aggregator | not sampled | | 68 | [Guttman Holdings](/blog/guttman-holdings-distributor-playbook) | $3.0B (est.) | Program-supplier / branch-density | not sampled | | 83 | [Vallen Distribution](/blog/vallen-distributor-playbook) | $1.9B (NA, est.) | technical-specialist | not measured | | 84 | [Lonestar Electric Supply](/blog/lonestar-electric-distributor-playbook) | $1.7B | branch-density | not measured | | 85 | [The Hillman Group](/blog/hillman-group-distributor-playbook) | $1.55B | — | not measured (not observable) | | 88 | [Northern Tool + Equipment](/blog/northern-tool-distributor-playbook) | $1.5B (est.) | catalog-native | not measured | | 102 | [AFC Industries](/blog/afc-industries-distributor-playbook) | $700M | pe-rollup | not measured | | 104 | [Optimas OE Solutions](/blog/optimas-distributor-playbook) | $577M | technical-specialist | not measured | | 106 | [Kimball Midwest](/blog/kimball-midwest-distributor-playbook) | $565M | — | not measured | | 118 | [Rural Electric Supply Cooperative (RESCO)](/blog/resco-distributor-playbook) | $404M | Program-supplier / branch-density | not sampled | | 123 | [Loeb Electric](/blog/loeb-electric-distributor-playbook) | $300M+ (est.) | technical-specialist | not measured | | 127 | [Bossard (Americas)](/blog/bossard-americas-distributor-playbook) | $275M (approx.) (NA, est.) | technical-specialist | not measured | | 132 | [Field Fastener](/blog/field-fastener-distributor-playbook) | ~$160M (est.) | technical-specialist | not measured | | — | [Arbill](/blog/arbill-distributor-playbook) | not disclosed | technical-specialist | not measured | | — | [Boeing Distribution](/blog/boeing-distribution-distributor-playbook) | not disclosed | — | not measured | | — | [EWIE Group](/blog/ewie-group-distributor-playbook) | not disclosed | — | not measured | | — | [Great Lakes Petroleum](/blog/great-lakes-petroleum-distributor-playbook) | not disclosed | — | not measured | | — | [Incora](/blog/incora-distributor-playbook) | not disclosed | pe-rollup | not measured | | — | [Magid Glove & Safety](/blog/magid-distributor-playbook) | not disclosed | catalog-native | not measured | | — | [Parman Energy Group](/blog/parman-energy-distributor-playbook) | not disclosed | branch-density | not measured | | — | [Port Consolidated](/blog/port-consolidated-distributor-playbook) | not disclosed | branch-density | not measured | | — | [Wholesale Electrical Supply Co. of Houston](/blog/wholesale-electrical-houston-distributor-playbook) | not disclosed | technical-specialist | not measured | | — | [Würth Industry North America](/blog/wurth-industry-distributor-playbook) | not disclosed | branch-density | not yet measured (catalog verified live) | | — | [Total Safety Supplies & Solutions](/blog/total-safety-supplies-distributor-playbook) | not disclosed | Program-supplier / catalog-native | not sampled | See the [full 2026 index](/top-distributors-2026) for every archetype and vertical cut. ## How the model actually works Every company on this list has the same tell somewhere in its story: vending-device counts, onsite location counts, VMI or integrated-supply contracts, or a private-brand manufacturing line reported as the growth metric that matters, ahead of same-branch sales or SKU count. [MSC Industrial](/blog/msc-industrial-distributor-playbook)'s stated strategy leads with vending-machine signings and in-plant program counts even though it also runs a multi-million-SKU catalog. [Kimball Midwest](/blog/kimball-midwest-distributor-playbook) runs almost no customer-facing branches at all — it operates a large outside sales force restocking maintenance bins directly inside customer facilities out of a handful of distribution centers, a route-based VMI business more than a counter business. [EWIE Group](/blog/ewie-group-distributor-playbook) manages roughly $300 million in customer-owned inventory across more than 2 million part numbers through tool cribs and onsite vending at 350-plus manufacturing sites. [Field Fastener](/blog/field-fastener-distributor-playbook) names "Data-Driven VMI Programs" and "Value-Added Engineering" as its two flagship offerings, ahead of sourcing. The economics are straightforward once you see the pattern. A vending machine, a tool crib, or a rep who restocks your bins every week costs real money to install and staff, and it doesn't pay off on the first order — it pays off on the hundredth, after the customer has stopped comparison-shopping because switching now means re-engineering a process, not re-issuing a PO. Private label compounds the effect: [Medline](/blog/medline-distributor-playbook) manufactures its own wound-care lines sold under CVS, Walgreens, Target, and Dollar General private labels while deploying roughly 2,000 direct sales reps into hospitals, pairing owned manufacturing with an embedded account relationship. [Magid Glove & Safety](/blog/magid-distributor-playbook) runs the same play from a 700,000-square-foot Romeoville, Illinois plant, layering house-brand PPE onto distribution of 700-plus third-party safety brands. Once a distributor owns the product design and the on-site inventory, the buyer's actual alternative supplier is whoever is willing to redo both. The freshest data confirms the model is still being built, not just defended. [Würth Industry North America](/blog/wurth-industry-distributor-playbook)'s Northern Safety & Industrial division acquired ORR Safety in 2025, explicitly to extend its private-label safety footprint into rail, automotive, and government accounts. [The Hillman Group](/blog/hillman-group-distributor-playbook) agreed to a $315 million deal for Kanebridge and bought Campbell Chain & Fittings from Apex Tool Group in April 2026, pushing toward a stated 2030 target of $2.5 billion in net sales built on in-store merchandising programs run by more than 1,200 field associates. [Builders FirstSource](/blog/builders-firstsource-distributor-playbook) bought off-site component manufacturer Innovative Construction Group from PulteGroup in August 2026 specifically to expand turnkey framing and wall-panel capacity — moving further from selling lumber and closer to running part of the builder's own construction process. ## The tension Embedding is expensive to walk back. A distributor that has staffed onsite locations, financed vending hardware, or stood up a private manufacturing line has committed fixed cost against a specific customer relationship, and that cost doesn't move if the customer's volume does. It also concentrates risk: [Incora](/blog/incora-distributor-playbook), which runs kitting, VMI, and integrated-supply programs across 68 locations in 17 countries for aerospace and defense customers, emerged from Chapter 11 in January 2025 after eliminating roughly $2 billion in net funded debt — a reminder that the same fixed infrastructure that creates switching costs for the customer also creates fixed obligations for the distributor, regardless of demand. There's a second, quieter tension in the model: the deeper a distributor embeds in the account relationship, the less reason it has to invest in a public-facing catalog. If the rep restocks the bin and the contract sets the price, nobody is browsing a product detail page to decide what to buy. That shows up directly in this data. ## What the readiness scores actually say Only two of the 29 companies here were measured for the Digital Readiness Index (see the [methodology](/top-distributors-2026/methodology) for how the score is built): Fastenal, at 55, and MSC Industrial Supply, at 65. Everyone else falls into one of the model's structural gaps rather than a low score — though the gaps turned out to be smaller than they first looked. Builders FirstSource runs a real storefront at shop.bldr.com, and Würth Industry North America sells openly through its Northern Safety banner; both catalogs are verified live but not yet sampled, so neither carries a score this edition. Hillman Group's portal shows products freely but demands registration before it will show price or add-to-cart, and its pages are not observable to the standard measurement pipeline. None of that is a zero. Mostly it's a company leaning on the program relationship to do the selling instead of a browsable public catalog, which is close to the model working as designed. With a sample of two, nothing here should be read as a verdict on the archetype broadly. But the two measured cases diverge in a way worth sitting with. MSC scores a full 20 out of 20 on commerce transparency — list pricing and add-to-cart are visible with no account required, with sign-in unlocking only negotiated rates — and posts a median of 25 structured attributes per page, more than double Fastenal's 11. Yet MSC's weakest pillar is buyer answerability, at 7.8 of 25, and its consistency spread is 25 points, the largest kind of number this index measures: some product pages are far richer than others in the same catalog. Fastenal's spread is a tight 6 points — its catalog treats products more uniformly — but that uniformity sits on top of a thinner base, and its weakest pillar is machine and agent readiness at 6 of 20, dragged down by a sitemap that doesn't reliably surface product URLs. Put simply: MSC's catalog is deeper but more uneven: Fastenal's is thinner but more consistent, and machine-discoverability is the softer spot for both. The archetype's median DRI of 65 sits above the index-wide median of 58, though with only two data points that gap is suggestive rather than conclusive. ## The read The program-supplier model doesn't ask a distributor to be good at the open web — it asks it to be good at one customer's four walls. The two companies here that did open their catalogs to measurement scored respectably, and their weak points, thin structured data at Fastenal, wide inconsistency at MSC, look like ordinary catalog debt rather than a model that structurally resists digital readiness. The more common story in this list is different: 27 of 29 companies carry no score — some not yet in the measured set, some with catalogs verified live but not yet sampled, and many with no public catalog a machine could read in the first place — because the contract is doing the job the catalog would otherwise do. That's not a gap in this index. It's the clearest signal in it about what these businesses actually are. --- # The PE Roll-Ups: How 29 Distributors Win Without Building Source: https://www.anglera.com/blog/pe-rollup-distributors-2026 Published: 2026-09-16 ![The PE Roll-Ups: How 29 Distributors Win Without Building](/og/hero-pe-rollup-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* [QXO](/blog/qxo-distributor-playbook), formerly Beacon Roofing Supply, went from a $57 million shell company to $6.8 billion in revenue in eight months by tender-offering for Beacon, then ten months later paid $2.25 billion for [Kodiak Building Partners](/blog/kodiak-building-partners-distributor-playbook) — a deal that closed April 1, 2026 and that it says triples its addressable market past $200 billion, on a stated path to $50 billion in revenue within a decade. That is the fastest-moving version of a pattern that shows up 29 times in this index: the growth story is measured in deal count, not same-branch sales, and the operating skill being sold to investors is integration capability, not merchandising or engineering. [Across the full ranking](/top-distributors-2026), this archetype runs from a combined $10 billion+ foodservice-and-janitorial platform down to single-state fastener and hose distributors three deals into their first sponsor relationship. ## The roster | Rank | Company | Revenue | Ownership | DRI | |---|---|---|---|---| | 29 | [Imperial Dade](/blog/imperial-dade-distributor-playbook) | $10B+ (FY2025) | Private (PE) | 54 | | 43 | QXO (formerly Beacon) | $6.84B (FY2025) | Public | not measured (not observable) | | 44 | [US LBM](/blog/us-lbm-distributor-playbook) | $6.8B (FY2025, est.) | Private (PE) | not yet measured (catalog verified live) | | 45 | [Foundation Building Materials](/blog/fbm-distributor-playbook) | $6.5B (FY2024) | Subsidiary | not sampled | | 47 | [White Cap](/blog/white-cap-distributor-playbook) | $6.1B (FY2025) | Private (PE) | not sampled | | 50 | [Veritiv](/blog/veritiv-distributor-playbook) | $5.9B (FY2023, dated) | Private (PE) | 61 | | 81 | [SunSource](/blog/sunsource-distributor-playbook) | $2B+ (FY2025, est.) | Private (PE) | 52 | | 82 | [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) | $1.98B (FY2025) | Public | 58 | | 97 | [North American Plastics](/blog/north-american-plastics-distributor-playbook) | $1.0B (FY2021, dated) | Private (PE) | not yet measured (catalog verified live) | | 103 | [Singer Industrial](/blog/singer-industrial-distributor-playbook) | $593M (FY2025) | Private (PE) | not yet measured (catalog verified live) | | 107 | [Descours & Cabaud (North America)](/blog/descours-cabaud-distributor-playbook) | $545M (FY2024, NA) | Subsidiary | not sampled | | 110 | [Endries International](/blog/endries-distributor-playbook) | $500M+ (FY2024) | Private (PE) | not sampled | | 114 | [Motion & Control Enterprises](/blog/motion-control-enterprises-distributor-playbook) | $488M (FY2024) | Private (PE) | not sampled | | 115 | [BlackHawk Industrial](/blog/blackhawk-industrial-distributor-playbook) | $460M (FY2020, dated) | Private (PE) | not sampled | | — | BradyPlus | ~$5.0B (at Oct 2023 formation) (FY2023, dated) | Private (PE) | not measured (not observable) | | — | Kodiak Building Partners | $2.4B (FY2025) | Subsidiary | not sampled | | — | [Applied Adhesives](/blog/applied-adhesives-distributor-playbook) | not disclosed | Private (PE) | not measured (no public catalog) | | — | [Aramsco](/blog/aramsco-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [Cadence Petroleum Group](/blog/cadence-petroleum-distributor-playbook) | not disclosed | Private (PE) | not measured (no public catalog) | | — | [Echelon Supply and Service](/blog/echelon-supply-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [EFC International](/blog/efc-international-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [GracoRoberts](/blog/gracoroberts-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [Green Mountain Electric Supply](/blog/green-mountain-electric-distributor-playbook) | not disclosed | Private (family) | not sampled | | — | [Krayden](/blog/krayden-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [LGG Industrial](/blog/lgg-industrial-distributor-playbook) | not disclosed | Private (PE) | not measured (no public catalog) | | — | [Liquid Tech Solutions](/blog/liquid-tech-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [Meritus Gas Partners](/blog/meritus-gas-distributor-playbook) | not disclosed | Private (PE) | not sampled | | — | [OTC Industrial Technologies](/blog/otc-industrial-distributor-playbook) | not disclosed | Private (PE) | not yet measured (catalog verified live) | | — | [Pilot Thomas Logistics](/blog/pilot-thomas-distributor-playbook) | not disclosed | Private (PE) | not sampled | ![Digital Readiness Index pillar breakdown for measured PE Roll-Up distributors](/charts/top-2026/pe-rollup.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Rank is this company's position in the full 2026 index; a dash means it did not disclose enough for us to rank it there, not that it is small. "Not sampled" means the company sits in this archetype but wasn't in the batch of catalogs we measured for the index — a scope decision on our end, not a finding about them. ## How the model runs The mechanics are consistent across all 29. A sponsor buys a platform, then bolts on smaller regional operators at a steady clip, and the acquired brand usually keeps its own name. Imperial Dade has closed 97 acquisitions since the Tillis family took control in 2007 under Advent International and then Bain Capital, a run that culminated on March 12, 2026 in a merger with BradyPlus — a $2.8 billion JPMorgan term loan financed the combination, which unified under the Imperial Brady name in May 2026 and now runs 125+ facilities and 13,000+ employees under one $10B+ roof. North American Plastics has taken the model further: it publicly rebranded as "Plastics Family Americas" this year specifically to disclose 40+ owned distributor brands, from Polymershapes to Laird Plastics, under one federated identity, while every brand keeps trading under its own name across 200+ locations, up from 115 in the FY2021 MDM listing. Cadence Petroleum Group closed five named acquisitions in the 2025–2026 window alone — R.W. Davis Oil, B-J Supply, Glockner Oil, BOC Oil, and SEI — folding legacy family-run fuel distributors into a 34-location, 22-state footprint. What that buys is straightforward: geographic density a single operator would take a decade to build organically, purchasing leverage with suppliers, and enough scale to win national-account business that no regional player could service alone. What it costs is working capital and debt tolerance — the Imperial Dade/BradyPlus deal needed a $2.8 billion loan — plus a standing M&A and integration function that never really stops running. [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) shows where that function eventually points inward: built from three separate operating companies (Lawson Products, TestEquity, Gexpro Services) through bolt-ons like TestEquity's 2024 ConRes carve-out, it is now itself being taken private by its own ~79% owner, LKCM Headwater, for $35.00 a share — an 81% premium, and a reminder that the sponsor doing the consolidating can also be the next thing consolidated. ## The tension Keeping an acquired brand's name intact is good business — it preserves the local sales relationships and reputation the sponsor just paid for. It also means the roll-up, almost by design, doesn't end up with one system, one item master, or one place a buyer or a crawler can go to see what the whole company sells. That tension shows up in this data more starkly than in any other archetype: three of the 29 companies here — [Applied Adhesives](/blog/applied-adhesives-distributor-playbook), Cadence Petroleum, and [LGG Industrial](/blog/lgg-industrial-distributor-playbook) — came back "no public catalog," and four more — [US LBM](/blog/us-lbm-distributor-playbook), North American Plastics, [OTC Industrial Technologies](/blog/otc-industrial-distributor-playbook), and [Singer Industrial](/blog/singer-industrial-distributor-playbook) — looked that way until an adversarial verification pass found live public product pages inside the brand family, usually on an owned banner storefront; those four now read "not yet measured (catalog verified live)" and carry no score this edition. US LBM's corporate site is still brochure and recruiting content spread across roughly 48 separate locally branded building-materials sites — the public catalog we found lives on one of its banners, Higginbotham Brothers. Applied Adhesives' site is consultative, organized by chemistry and market segment, with no product-level pages to sample. That isn't a defect in any one company's website — it's the direct, structural consequence of the model's central bet: that brand equity is worth more than a shared front end. ## What the index found The [Digital Readiness Index](/top-distributors-2026/methodology) has a published score for only 4 of these 29 companies. Imperial Dade scored 54, Veritiv 61, SunSource 52, and Distribution Solutions Group 58 — a median of 56, just under the 58 median across the entire index. On four companies that's proximity worth noting rather than a pattern worth trusting; it at least argues against assuming a roll-up structure is inherently punishing for product data, but it's not enough to claim the model helps either. Two more roll-ups, QXO and BradyPlus, came back "not observable" rather than scored — QXO's own product pages are public and crawlable with no login wall, per our notes, but neither site renders to our standard measurement client, so no rule-compliant sample exists yet. That's a limit of what we could observe on those particular platforms, not a statement about what QXO or BradyPlus publish. Within the four measured companies, product data depth is the consistently strong pillar — all four land between 18 and 19.8 of 35 — but commerce transparency is where they split. Imperial Dade and Distribution Solutions Group both showed 0% public pricing across their five sampled products; SunSource showed 40%, Veritiv 50%. That's a normal pattern for trade-account distributors where a login gates price, not a red flag on its own, but it's also the reason none of the four broke 61. Identifier discipline is where the real spread sits: Imperial Dade's sample carried GTINs on 80% of products, against 0% for Veritiv, SunSource, and Distribution Solutions Group alike — one company solved a problem the other three, despite running comparable operating models, have not. And the more damning number, per the sample, belongs to SunSource: a 24-point consistency spread between its richest and thinnest product page, triple Imperial Dade's 8-point spread, on a single storefront rather than across a scattered brand family — evidence that even a roll-up that did consolidate onto one platform can still treat its own SKUs unevenly. None of these four scores is a verdict on the company behind it — each is a read of five pages sampled from the middle of a catalog on a given day in 2026, and a business mid-integration this year can look different next year. What the roll-up archetype adds that the other five in this index don't is a second axis entirely, sitting in front of the score: whether there was a single catalog to sample from at all. For three of the 29 distributors that built their scale this way, there wasn't, and for four more the catalog only surfaced one owned banner deep — not because the products don't exist, but because the entity that reports the revenue and the dozens of entities a customer actually buys from are still, deliberately, not the same system. --- # The Catalog-Natives: How 13 Distributors Win on Data Alone Source: https://www.anglera.com/blog/catalog-native-distributors-2026 Published: 2026-09-15 ![The Catalog-Natives: How 13 Distributors Win on Data Alone](/og/hero-catalog-native-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) has no sales phone number worth calling. Its category pages carry a full spec table and an "Add to Order" quick-view for every SKU in a family, reachable with no login, and that page is the entire sales interaction. That is the catalog-native model in one screenshot: breadth, depth, and self-serve fulfillment doing the job a rep would do everywhere else in distribution. ## The roster Thirteen companies in this cut run some version of that model, at wildly different scales and under wildly different ownership structures. Four were measured on the [Digital Readiness Index](/top-distributors-2026/methodology) — one of them, Uline, in a full browser session because its site can't be read by standard clients; the rest either weren't part of this round's sample or don't publish a catalog the index can read. | Company | Rank | Revenue | DRI Score | |---|---|---|---| | [Thermo Fisher Scientific](/blog/thermo-fisher-distributor-playbook) | 7 | $44.6B (FY2025) | 59 | | Uline | 36 | $8.1B (est.) (CY2025, est.) | 56 | | [ADI Global Distribution](/blog/adi-global-distributor-playbook) | 54 | $4.78B (FY2025, segment) | — | | [DigiKey](/blog/digikey-distributor-playbook) | 63 | $3.96B (FY2025, est.) | 53 | | [Global Industrial Company](/blog/global-industrial-distributor-playbook) | 90 | $1.38B (FY2025) | — | | [RS Group (Americas)](/blog/rs-group-distributor-playbook) | 92 | ~$1.09B (FY2026, NA) | — | | [Berkshire Tool Supply Group](/blog/berkshire-tool-distributor-playbook) | — | not disclosed | — | | [Interstate Plastics](/blog/interstate-plastics-distributor-playbook) | — | not disclosed | 52 | | [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) | — | not disclosed | — | | [Mouser Electronics](/blog/mouser-distributor-playbook) | 61 | $4.1B (FY2022, dated) | — | | [Professional Plastics](/blog/professional-plastics-distributor-playbook) | — | not disclosed | — | | [ThyssenKrupp Engineered Plastics](/blog/thyssenkrupp-engineered-plastics-distributor-playbook) | — | not disclosed | — | | [D&H Distributing](/blog/dh-distributing-distributor-playbook) | 42 | ~$7.0B (FY2025) | — | ![Digital Readiness Index pillar breakdown for measured Catalog-Native distributors](/charts/top-2026/catalog-native.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* ## How the model actually runs The tell that separates catalog-natives from everyone else in this index isn't size, it's the absence of a rep in the loop. [DigiKey](/blog/digikey-distributor-playbook) ships same-day from more than 17.5 million components across nearly 3,000 manufacturers with nobody picking up a phone to quote a price. Mouser stocks more than 1.2 million SKUs with no minimum order quantity, competing deliberately for the low-quantity prototype order that a rep-driven distributor can't fill profitably. RS Group runs an 830,000+ product searchable catalog as its core operating asset in the Americas. Even a master distributor like Berkshire Tool Supply Group, which sells through independent resellers rather than directly to end buyers, builds its whole proposition on a roughly two-million-SKU digital catalog running on a punch-out e-commerce platform. What that buys is scale without headcount. Search and filtering aren't a website feature bolted onto a sales operation, they're the product — which is why Thermo Fisher's Fisher Scientific channel, DigiKey's parts finder, and McMaster's family pages all read less like storefronts and more like databases with a checkout button. What it costs is capital sunk into inventory breadth and fulfillment speed instead of sales headcount. Uline is mid-build on that trade right now: a new 1.25-million-square-foot distribution center opening in Plainfield, Connecticut this fall to serve New England, alongside a paused (not cancelled) Kenosha County, Wisconsin facility the company attributed to economic uncertainty. DigiKey is making the same bet globally, standing up an India subsidiary and a Bengaluru capability center in November 2025 to push headcount toward 300 there. The model scales by adding distribution centers and stocking capacity, not by adding quota-carrying reps. ## The tension: breadth fights depth A catalog with a million SKUs and a catalog with a hundred SKUs are not the same engineering problem, and the measured companies in this cut show the strain in different places. [Interstate Plastics](/blog/interstate-plastics-distributor-playbook) — recently acquired by Curbell Plastics, which kept its e-commerce platform running as the deal's stated centerpiece — posts a median of just 2 structured attributes per sampled product page. [DigiKey](/blog/digikey-distributor-playbook), by contrast, posts a median of 34 attributes, the richest page-level data in this cut, but its own consistency spread of 29 points means some pages in the same catalog are far thinner than others. Breadth is the whole pitch of this model, and breadth is exactly what makes uniform depth hard to hold across a catalog that size. There's no rep to smooth over a thin page with a phone call — whatever is on the page is the whole answer a buyer gets. ## What the index actually shows This is where the data pushes back on the archetype's own reputation. Catalog-native distributors are the companies the rest of the channel points to as the standard for digital shelf quality, and McMaster-Carr's rationale in this data set calls it "the industry's widely-cited reference standard." But only four of the thirteen were measured — Thermo Fisher Scientific, Uline, DigiKey, and Interstate Plastics — so this is a read on four companies, not thirteen, and it should be held loosely. Their median score is 56, against an index-wide median of 58. On this specific yardstick, at this sample size, the catalog-native leaders in this cut are not outperforming the rest of the index; they're running slightly behind it. The more useful pattern is that none of the four clears all four pillars. Thermo Fisher posts a perfect 20 out of 20 on machine and agent readiness — full sitemap, structured product data, no crawler blocks — but its lowest score is buyer answerability at 8.8 out of 25. DigiKey's productData pillar leads the group at 23 out of 35, driven by that median of 34 attributes per page, but its agentReadiness pillar is the group's weakest at 9 out of 20, with no sitemap confirmed and no product structured data detected. Interstate Plastics inverts it again: its answerability pillar leads at 15 out of 25, its productData pillar trails at 12.4 out of 35. Uline is a fourth shape: a perfect 20 out of 20 on transparency, against the group's thinnest productData pillar at 10.5 out of 35 and a median of 6 attributes per family page. Each company is strong in the exact place the others are weak, which argues these are four different execution choices rather than one shared catalog-native profile. One number is identical across all four: a GTIN rate of 0. None of the measured catalog-natives publish standard product identifiers on the pages sampled, which means the machine-readable part of "identifiers" inside the productData pillar goes unclaimed everywhere in this small sample, even on catalogs built specifically to be searched and compared. ## The read The catalog-native pitch has always been that the website replaces the salesperson. The Digital Readiness Index asks a narrower question: does the website also replace the paperwork a machine would otherwise need? On this cut's small measured sample, a catalog deep enough for a human to search comfortably isn't automatically a catalog structured well enough for a crawler or a shopping agent to parse — and the gap between those two things is where the next round of competitive separation in this archetype is likely to open up. --- # The Technical Specialists: How 36 Distributors Win Source: https://www.anglera.com/blog/technical-specialist-distributors-2026 Published: 2026-09-13 ![The Technical Specialists: How 36 Distributors Win](/og/hero-technical-specialist-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* At [DH Sutherland](/blog/dh-sutherland-distributor-playbook), a buyer does not check out. Every product page for its aerospace adhesives and composites, filterable by manufacturer and type, browsable without a login, ends the same way: a button that reads "Contact." No price. No cart. That is not a broken storefront. It is the entire technical-specialist model rendered as a single UI decision — the catalog exists to inform the conversation, not to replace it. ## The roster Thirty-six distributors run this model in our data set. Only eighteen disclose enough revenue to be ranked, and just four have measured Digital Readiness Index scores; the other eighteen are private, unranked, and in most cases never entered the batch of catalogs we sampled at all. That imbalance is itself the finding, and we return to it below. | Company | Rank | Revenue | Ownership | DRI | |---|---|---|---|---| | [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) | 57 | $4.56B (FY2025) | Public | not measured (not observable) | | [Future Electronics](/blog/future-electronics-distributor-playbook) | 52 | $5.17B (FY2023, est.) | Subsidiary | 68 | | [Matheson](/blog/matheson-distributor-playbook) | 74 | $2.44B (approx.) (FY2025, NA, est.) | Subsidiary | not in set | | [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) | 79 | $2.0B (FY2025) | Public | 48 | | [Wajax Corp](/blog/wajax-distributor-playbook) | 86 | $1.5B (FY2025) | Public | not yet measured (catalog verified live) | | [Gresco Utility Supply](/blog/gresco-distributor-playbook) | 99 | $846M (FY2025) | Private/family | not in set | | [R.S. Hughes](/blog/rs-hughes-distributor-playbook) | 109 | $527M (FY2024) | Private/family | not in set | | [Bridgestone HosePower](/blog/bridgestone-hosepower-distributor-playbook) | 125 | $287M (FY2024, segment, est.) | Subsidiary | not measured (no public catalog) | | [Motion & Flow Control Products](/blog/motion-flow-control-distributor-playbook) | 128 | ~$272M (FY2025, est.) | Private/family | not in set | | [DH Sutherland](/blog/dh-sutherland-distributor-playbook) | 136 | ~$8M (est.) (recent (estimate), est.) | Private/family | 47 | | [EIS Inc.](/blog/eis-distributor-playbook) | — | not disclosed | Private/PE | 60 | | [Associated Industries](/blog/associated-industries-distributor-playbook) | — | not disclosed | Private/family | not measured (not observable) | | 22 more companies | not ranked | not disclosed | mostly private/family or ESOP | not in set | ![Digital Readiness Index pillar breakdown for measured Technical Specialist distributors](/charts/top-2026/technical-specialist.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Full roster of all 36, including the long tail not shown above, is in the [complete Top Distributors 2026 index](/top-distributors-2026). ## How the model actually works The tell that unifies this group is not a product category, it is a cost structure. [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) spent $293.4 million on M&A in FY2025, and the acquisitions were not catalog additions — IRIS Factory Automation and the pending Thompson Industrial Supply deal both add application-engineering and repair capability, on top of the Hydradyne fluid-power business it folded in during 2024. [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) reports its Innovative Pumping Solutions segment separately at $390.3 million, up 26.4% year over year, because that revenue is engineered and fabricated pump packages, not resale. Tencarva Machinery runs 22 full-service repair shops staffed by more than 100 engineers across 35 locations and, backed by PE sponsor Bessemer Investors, closed three bolt-on fluid-handling acquisitions in fourteen months. The pattern repeats: HeadCo runs five in-house metalworking shops doing Timken-certified gearbox rebuilds. Levitt-Safety owns NL Technologies, a NIOSH-approved respirator manufacturer, rather than only reselling third-party PPE. IEWC built a new Controls business unit out of two 2025-2026 acquisitions, pairing wire distribution with its own control-panel manufacturing. None of that scales by adding SKUs to a website. It scales by adding certified people, facilities, and shops, one acquisition or one capital investment at a time — which is why the growth engine here is M&A of capability, not M&A of catalog breadth, and why it runs slower and costs more per dollar of revenue added than any other model in this index. ## The tension The trade-off is the mirror image of the strength. What makes a technical specialist hard to disintermediate — an engineer on the phone specifying the seal, the field truck that fabricates a hydraulic hose to spec on-site, the quote that only exists after someone reads the application — is also what keeps most of the roster off the internet as a transactable channel. [Bridgestone HosePower](/blog/bridgestone-hosepower-distributor-playbook)'s "ALL PRODUCTS" navigation leads to a category page with marketing copy and no individual SKUs. Edgen Murray, a Sumitomo company selling engineered pipeline solutions, runs a purely informational corporate site describing product families with brochures, not listings. [Wajax](/blog/wajax-distributor-playbook) long read the same way — until a verification pass turned up live spec-level product pages on wajax.com, quote-only and cart-free, a catalog now verified live but not yet sampled for a score. Eighteen of the thirty-six companies here are private and disclose no revenue at all — a degree of opacity, financial and digital both, that no other archetype in this index approaches. That opacity is not evasion. It is what a relationship business optimized for engineering trust rather than search-engine reach looks like from outside. ## What the index says We measured four of the thirty-six: [Future Electronics](/blog/future-electronics-distributor-playbook) at 68, [EIS Inc.](/blog/eis-distributor-playbook) at 60, [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) at 48, and [DH Sutherland](/blog/dh-sutherland-distributor-playbook) at 47. That is still too small a sample to claim a verdict on the archetype, but the [methodology](/top-distributors-2026/methodology) breaks the score into four pillars, and the pattern across even four companies is worth naming rather than averaging away. DXP and DH Sutherland land within a point of each other for almost opposite reasons. DXP's real storefront lives at a separate domain, store.dxpe.com, because its corporate site dead-ends product category links in "Get in Touch with an Expert" forms — the catalog and the marketing site are architecturally split. Its commerce transparency pillar sits at 8.4 of 20, with a public price rate of just 40%. DH Sutherland's product pages score well on buyer answerability (12.2 of 25, second only to Future Electronics's 15.4) and agent readiness (16 of 20), but its commerce transparency pillar is 6 of 20 with a 0% public price rate — every page ends in a quote request. Its median attribute count, 4, is the thinnest of the four, though its consistency spread of 1 shows that thinness is applied uniformly rather than unevenly. EIS and Future Electronics break from both. EIS runs a genuine e-commerce catalog (React/Spire-based) with public, login-free product pages showing price, stock status, and add-to-cart — an 80% public price rate and a near-perfect 18.4 of 20 on commerce transparency, a number Future Electronics matches exactly, at the same 80% price rate, on its way to the archetype's best score. EIS's median attribute count of 18 is more than four times DH Sutherland's — Future's, at 25, is the deepest of the four — and EIS is the only one of the four carrying any GTIN coverage, at 20%. But EIS also posts the widest consistency spread in the set, 24 points between its richest and thinnest sampled page — proof that genuine self-serve commerce can still coexist with one category treated as an afterthought. The archetype's median DRI, 60, sits two points above the index-wide median of 58 — a mildly surprising result given that two of the four technical specialists we measured gate price behind a quote precisely because their core offer is a specification, not a fixed SKU, and a specification does not have one price. Note also what the score is not measuring against them: none of the four blocks AI crawlers, so all four collect full marks on that signal by default, silence being permission rather than neglect. ## The read This is the archetype that will resist a pure digital-readiness story the longest, and for a defensible reason. A company that sells "will this seal hold at this pressure and temperature" is selling judgment, and judgment does not compress into a structured attribute field the way a bolt's thread pitch does. The seventeen unranked, unmeasured companies in this cut are not hiding, they are running a model that has never needed a storefront to close a sale. The interesting question for 2026 is not whether that changes, it is whether the EIS and Future Electronics pattern — real e-commerce sitting underneath real application engineering — becomes what other specialists start reaching for, or stays the minority it is today. --- # The Branch-Density Operators: How 70 Distributors Win Local Source: https://www.anglera.com/blog/branch-density-distributors-2026 Published: 2026-09-12 ![The Branch-Density Operators: How 70 Distributors Win Local](/og/hero-branch-density-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* This is the largest archetype in the index by headcount. Seventy distributors, more than in any other operating model, compete primarily on proximity: a branch, a counter, and a relationship within a short drive of the buyer. Only nine of them have ever had a product page measured, which turns out to be a finding in its own right, not just a sampling limitation. ## Twenty Minutes From the Jobsite No company states the model more plainly than [Winsupply](/blog/winsupply-distributor-playbook). It runs more than 680 "Local Companies," each carrying real equity held by its own branch president, and each free to set local pricing and buy decisions without a corporate office signing off. Growth is reported the same way every year: not revenue per distribution center, but new Local Company openings, 20 of them planned for 2025-2026. It is the purest expression of a pattern that repeats across the roster. [Consolidated Electrical Distributors](/blog/ced-distributor-playbook) runs over 700 "profit centers" on the same logic. [Hajoca](/blog/hajoca-distributor-playbook) runs more than 450 of them under 60-plus retained regional trade names, each manager controlling local inventory, pricing, and hiring directly. The branch is not a cost center reporting up. It is the unit of the business. That structure has a direct, awkward consequence for a project like this one: Winsupply has no single storefront to sample, because there isn't one — the corporate domain routes to individual local-company sites like "Newark Windustrial," each its own small brochure page. CED's own domain now redirects to an unrelated company and its commerce happens on dozens of independently branded local sites — though a verification pass found one of them, its solar arm Greentech Renewables, running a full national public catalog, verified live but not yet sampled for a score. Hajoca's homepage says outright that ordering happens through your local store, and the local stores mean it: their per-branch storefronts show public pricing and live branch stock, verified live but likewise not yet sampled. None of these are failures to build a catalog. They are the catalog behaving exactly the way a branch-owned business would: locally, not centrally. ## The Roster | Rank | Company | Revenue (FY) | DRI | |---|---|---|---| | 18 | [ABC Supply Co.](/blog/abc-supply-distributor-playbook) | $20.2B | not measured (no public catalog) | | 31 | Motion (Genuine Parts Company) | ~$9.0B (segment) | 62 | | 32 | Winsupply | $8.4B | not measured (no public catalog) | | 49 | [84 Lumber](/blog/84-lumber-distributor-playbook) | $5.9B | not measured | | 51 | Consolidated Electrical Distributors (CED) | ~$5.5B (est.) | not yet measured (catalog verified live) | | 55 | [SiteOne Landscape Supply](/blog/siteone-distributor-playbook) | $4.7B | not measured | | 67 | [Reece USA](/blog/reece-usa-distributor-playbook) | $3.3B (NA) | 51 | | 72 | F.W. Webb | $2.6B | 65 | | 73 | [TopBuild (Specialty Distribution)](/blog/topbuild-distributor-playbook) | $2.52B (segment) | not measured | | 77 | [Gulfeagle Supply](/blog/gulfeagle-supply-distributor-playbook) | $2.2B (est.) | not measured | | 78 | Elliott Electric Supply | $2.12B | not measured | | 87 | [Lansing Building Products](/blog/lansing-building-products-distributor-playbook) | $1.5B (est.) | not measured | | 93 | [Main Electric Supply Co.](/blog/main-electric-distributor-playbook) | just under $1.1B | not measured | | 94 | Bearing Distributors Inc. (BDI) | $1.0B | 58 | | 95 | Richards Building Supply | $1.0B (est.) | not measured | | 101 | [Locke Supply Co.](/blog/locke-supply-distributor-playbook) | $738M | not measured | | 112 | Arc3 Gases | $500M+ (est.) | 43 | | 116 | [Inline Electric Supply](/blog/inline-electric-distributor-playbook) | $456M | not measured | | 117 | [Bisco Industries](/blog/bisco-industries-distributor-playbook) | $427.9M | not measured | | 119 | [nexAir](/blog/nexair-distributor-playbook) | $400M (FY2022, dated) (dated) | not measured | | 121 | [Edges Electrical Group](/blog/edges-electrical-distributor-playbook) | $360M (dated) | not measured | | 122 | [Granite City Electric Supply](/blog/granite-city-electric-distributor-playbook) | $335M | not measured | | 124 | [United Electric Supply](/blog/united-electric-distributor-playbook) | $300M+ (dated) | not measured | | 126 | [Martin Supply](/blog/martin-supply-distributor-playbook) | $279M+ | not measured | | 130 | [Roberts Oxygen Company](/blog/roberts-oxygen-distributor-playbook) | ~$220M (est.) (est.) | not measured | ![Digital Readiness Index pillar breakdown for measured Branch-Density Operator distributors](/charts/top-2026/branch-density.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Thirty-two more branch-density operators sit in the full [Top Distributors 2026 index](/top-distributors-2026) without a numeric rank, private companies that do not disclose revenue at all — E&T Plastics, Curbell Plastics, and American Welding & Gas among them. Their absence from a revenue ranking is not a comment on their size; several run more locations than half the companies above. ## How the Model Runs The mechanics are consistent across the roster regardless of category. Growth gets reported in branch count, not SKU count: [Elliott Electric Supply](/blog/elliott-electric-distributor-playbook) describes its strategy as "building, not buying," and backed it with a first Carolinas branch in Charlotte and a $5M San Antonio expansion in 2025. F.W. Webb has a new Somerdale, NJ location planned for 2026 on top of its existing 100-plus branches. 84 Lumber opened a new La Mirada, CA store in January 2026 specifically to help supply Palisades-fire rebuilding — the kind of hyperlocal, event-driven opening that a centralized DC network can't replicate on a two-week timeline. Wholesale Electric Supply opened five new branches in 2025 alone and credits them for 12% revenue growth. M&A shows up constantly in this cut too, but it works differently than in a roll-up. Richards Building Supply's April 2026 purchase of United States Building Supply added four Colorado branches and, notably, its first entry into the Western US — acquisition as a way to add density in a new territory, not to consolidate an existing one. SPI Health and Safety has made 24 acquisitions since 1972 and still runs only 18 locations, folding small operators in one at a time rather than centralizing them. Arc3 Gases has done the same with small welding shops across seven states, adding its 59th and 60th locations in 2025 alone. The acquired unit typically keeps its counter, its local name recognition, and often its staff. What changes is the balance sheet behind it. ## The Working-Capital Tax Every one of those openings is a real-estate lease, a local inventory position, and a counter staff — capital that a centralized-warehouse competitor doesn't tie up the same way. That is the honest trade embedded in the model, and it scales in both directions. The most extreme case in the roster is [SRS Distribution](/blog/srs-distribution-distributor-playbook), which Home Depot bought in 2024 and which then bought GMS for roughly $5.5B in September 2025, pushing the combined network past 1,250 locations. Home Depot deliberately kept SRS running as "a family of distinct local brands" rather than folding it into one national banner — proof that even a trillion-dollar-market-cap parent believes the branch relationship is worth preserving, not proof that the model becomes cheaper to run once it has that kind of backing. [Home Depot Pro](/blog/home-depot-pro-distributor-playbook)'s own storefront is not observable to this measurement's standard pipeline — its homepage sits behind Register Now / Log In prompts even though the product pages themselves are public — a reminder that capital doesn't automatically buy a catalog a machine can read even when it buys 1,250 branches. ## What the Catalog Says When Nobody's Watching Nine measured companies out of 70 is a small enough sample that any pattern here should be read as a lead, not a verdict. Their median [Digital Readiness Index](/top-distributors-2026/methodology) score is 58 — respectable, and squarely mid-pack against the wider index. The pillar breakdown, four subtotals covering product data depth, buyer answerability, commerce transparency, and machine and agent readiness, is where the model's fingerprint shows up. Product Data Depth, worth 35 points, is the soft spot almost everywhere in this group. [BDI](/blog/bdi-distributor-playbook) leads it at 27.5, with a median attribute count of 34 per page — genuinely deep. Everyone else measured comes in under 22, and four of the nine — Arc3 Gases, American Welding & Gas, Curbell Plastics, and E&T Plastics — score below 15, with median attribute counts of 6, 6, 5, and 3 respectively. None of those four carry a GTIN on a majority of sampled pages either. That is consistent with an operating model where the person who resolves "is this the right part" is a branch employee on the phone, not a taxonomy behind the search bar — the branch relationship substitutes for machine-readable identity rather than needing it. The highest score in the group, 68, belongs to E&T Plastics — but not because its catalog is deep. Its product-data pillar is actually one of the weakest in the sample (11.5), because the whole public catalog is 140 SKUs of acrylic sheet. It wins on Buyer Answerability (16.2 of 25) and a clean sweep of Machine & Agent Readiness (20 of 20 — sitemap, structured data, and open crawler access all present). A narrow catalog, done consistently, scores better than a broad one done unevenly. Motion is the clearest case of the opposite problem: solid Product Data Depth (21.9) and full marks on Commerce Transparency, but a consistency spread of 45 points between its richest and thinnest sampled page — the widest in the whole cut — despite running on a single, unified motion.com storefront. Consolidation of the front end hasn't consolidated the underlying data discipline. ## The Read Branch density is not a digital strategy, and none of the nine measured scores here suggest the companies running it think of it as one. It is a real-estate and staffing strategy that happens to leave a thin, uneven layer of product data behind it — good enough for a buyer who already trusts the counter, thinner than what an AI agent sourcing on that buyer's behalf will be able to work with. The two things that make this model expensive to copy, a lease in every territory and a local reputation built branch by branch, are exactly the two things a catalog page can't show. --- # The Scale Aggregators: How 46 Distributors Win on Size Source: https://www.anglera.com/blog/scale-aggregator-distributors-2026 Published: 2026-09-10 ![The Scale Aggregators: How 46 Distributors Win on Size](/og/hero-scale-aggregator-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* [McKesson](/blog/mckesson-distributor-playbook) moves roughly a third of all pharmaceutical products consumed in North America through a centralized national network, and it does not do it with a public storefront. That combination — enormous volume, no self-serve catalog — turns out to define the archetype more than any single company does. Forty-six distributors in this index compete primarily on national scale: fewer, bigger distribution centers, purchasing leverage suppliers cannot ignore, and national-account programs built for buyers who operate in every state at once. ## The roster | Rank | Company | Revenue | Digital Readiness | |---|---|---|---| | 1 | [McKesson Corporation](/blog/mckesson-distributor-playbook) | $359.1B (FY2025) | not measured (no public catalog) | | 2 | [Cencora](/blog/cencora-distributor-playbook) | $321.3B (FY2025) | not yet measured (catalog verified live) | | 3 | [Cardinal Health](/blog/cardinal-health-distributor-playbook) | $222.6B (FY2025) | not yet measured (catalog verified live) | | 4 | [Sysco Corporation](/blog/sysco-distributor-playbook) | $81.4B (FY2025) | not sampled | | 5 | [Performance Food Group](/blog/performance-food-group-distributor-playbook) | $63.3B (FY2025) | not sampled | | 6 | [McLane Company](/blog/mclane-distributor-playbook) | $51.0B (FY2025) | not measured (no public catalog) | | 8 | [US Foods](/blog/us-foods-distributor-playbook) | $39.4B (FY2025) | not sampled | | 9 | [United Natural Foods (UNFI)](/blog/unfi-distributor-playbook) | $31.8B (FY2025) | not sampled | | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | $31.3B (CY2025) | 58 | | 11 | [Arrow Electronics](/blog/arrow-electronics-distributor-playbook) | $30.9B (FY2025) | 49 | | 13 | [Network Distribution](/blog/network-distribution-distributor-playbook) | $28B (systemwide, global) (FY2026) | not sampled | | 14 | [Southern Glazer's Wine & Spirits](/blog/southern-glazers-distributor-playbook) | $25.5B (projected, CY2026) (CY2026, est.) | not sampled | | 15 | [Wesco International](/blog/wesco-distributor-playbook) | $23.5B (FY2025) | 40 | | 16 | [Gordon Food Service](/blog/gordon-food-service-distributor-playbook) | $23B (FY2024, est.) | 65 | | 17 | [Avnet](/blog/avnet-distributor-playbook) | $22.2B (FY2025) | 57 | | 19 | [Sonepar (North America)](/blog/sonepar-distributor-playbook) | $19.0B (FY2025, NA) | 62 | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B (FY2025) | 66 | | 21 | [Linde (Americas)](/blog/linde-americas-distributor-playbook) | $15.2B (FY2025, segment) | not sampled | | 23 | [Tricon Energy](/blog/tricon-energy-distributor-playbook) | $14.0B (FY2025, est.) | not sampled | | 25 | [Graybar](/blog/graybar-distributor-playbook) | $12.9B (FY2025) | 51 | | 26 | [Republic National Distributing Company](/blog/rndc-distributor-playbook) | $12B (peak, pre-divestiture) (FY2024, est.) | not sampled | | 27 | [Rexel (North America)](/blog/rexel-distributor-playbook) | $10.1B (FY2025, NA) | not yet measured (catalog verified live) | | 30 | [Dole plc (North America)](/blog/dole-north-america-distributor-playbook) | $9.17B (FY2025) | 41 | | 33 | [Breakthru Beverage](/blog/breakthru-beverage-distributor-playbook) | $8.4B (FY2025) | not yet measured (catalog verified live) | | 34 | [Mansfield Energy](/blog/mansfield-energy-distributor-playbook) | $8.3B (FY2025, est.) | not sampled | | 37 | [Owens & Minor](/blog/owens-minor-distributor-playbook) | $8.0B (FY2024, segment) | not sampled | | 38 | [Ben E. Keith Co.](/blog/ben-e-keith-distributor-playbook) | $8.0B (FY2025, est.) | not yet measured (catalog verified live) | | 39 | [Core & Main](/blog/core-main-distributor-playbook) | $7.65B (FY2025) | 63 | | 40 | [Airgas](/blog/airgas-distributor-playbook) | $7.5B (FY2024, NA, est.) | 46 | | 41 | [Watsco](/blog/watsco-distributor-playbook) | $7.24B (FY2025) | 62 | | 46 | [Brenntag North America](/blog/brenntag-distributor-playbook) | $6.5B (FY2025, NA) | not measured (no public catalog) | | 48 | [Boise Cascade (Distribution)](/blog/boise-cascade-distributor-playbook) | $5.9B (FY2025, segment) | not sampled | | 53 | [Colonial Group](/blog/colonial-group-distributor-playbook) | $5.0B (FY2025, est.) | not measured (no public catalog) | | 56 | [Apex Oil](/blog/apex-oil-distributor-playbook) | $4.6B (FY2025, est.) | not sampled | | 62 | [Border States](/blog/border-states-distributor-playbook) | $4.0B+ (FY2024, est.) | not sampled | | 64 | [TTI Inc.](/blog/tti-distributor-playbook) | $3.78B (FY2023, dated) | not sampled | | 69 | [BlueLinx Holdings](/blog/bluelinx-distributor-playbook) | $3.0B (FY2025) | not sampled | | 70 | [DNOW](/blog/dnow-distributor-playbook) | $2.8B (FY2025) | not measured (no public catalog) | | 75 | [AmeriGas Propane](/blog/amerigas-distributor-playbook) | $2.28B (FY2025, segment) | not measured (no public catalog) | | 80 | [UFP Industries](/blog/ufp-industries-distributor-playbook) | $2.00B (FY2025, segment) | not sampled | | 89 | [TricorBraun](/blog/tricorbraun-distributor-playbook) | $1.4B (stale, FY2020 TTM) (FY2020, dated) | 70 | | 113 | [Moove (North America)](/blog/moove-distributor-playbook) | ~$490M (FY2023, NA, est.) | not sampled | | 120 | [WPG Americas](/blog/wpg-americas-distributor-playbook) | ~$390M (FY2023, NA, est.) | 60 | | — | [Polymershapes](/blog/polymershapes-distributor-playbook) | not disclosed | not sampled | | — | [RelaDyne](/blog/reladyne-distributor-playbook) | not disclosed | not sampled | | — | [MRC Global](/blog/mrc-global-distributor-playbook) | $3.01B (FY2024) | not yet measured (catalog verified live) | ![Digital Readiness Index pillar breakdown for measured Scale Aggregator distributors](/charts/top-2026/scale-aggregator.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* *Median [Digital Readiness Index](/top-distributors-2026/methodology) among the 14 companies in this archetype that were measured: 60, against an index-wide median of 58. See the [full 2026 index](/top-distributors-2026) for every archetype.* ## How the model runs The mechanics repeat across every vertical in this table. [Cencora](/blog/cencora-distributor-playbook) moves roughly 20% of all pharmaceuticals distributed in the US through about 26 US distribution centers plus nine in Canada — not hundreds of branches, a couple dozen very large hubs. [Cardinal Health](/blog/cardinal-health-distributor-playbook) serves more than 100,000 locations and over 75% of US hospitals, and runs Red Oak Sourcing, a joint generic-drug purchasing venture with CVS billed as the largest generic sourcing operation in the country — buying power turned into a standing structural advantage, not a one-time discount. [Arrow Electronics](/blog/arrow-electronics-distributor-playbook) runs over 140 sales facilities but only 39 distribution and value-added centers across 85-plus countries: wide sales footprint, deliberately concentrated inventory footprint. [TTI Inc.](/blog/tti-distributor-playbook) runs North America out of 13 major DCs holding more than 3 million square feet, and calls its "available-to-sell inventory" the buffer that keeps manufacturers on contract. Buying power compounds because it funds acquisition, and acquisition adds more buying power. [Sonepar](/blog/sonepar-distributor-playbook) closed ten acquisitions in 2025 adding $277 million in revenue, posted record global sales of $37.9 billion, and grew digital sales 50% to $13.9 billion through its Spark platform, all while acquired regional brands keep operating under their own names. [Graybar](/blog/graybar-distributor-playbook) is mid-way through roughly its twentieth acquisition in a decade, layering new STAR distribution centers built for data-center and large-construction accounts on top of a long-standing branch network. [Sysco](/blog/sysco-distributor-playbook) put the mechanic on full display in March 2026, agreeing to acquire Jetro Restaurant Depot for roughly $29.1 billion enterprise value — its largest deal ever — funded by a company that already runs 337 distribution centers serving about 730,000 customer locations. The clearest evidence of what that scale is worth: [Border States](/blog/border-states-distributor-playbook) left the Affiliated Distributors buying group in December 2025, after 40 years, to negotiate with suppliers directly. A company has to already move roughly $4 billion a year on its own before that trade makes sense. None of this runs through a shopping cart. National accounts are negotiated relationships — EDI feeds, punchout catalogs, dedicated reps, contract pricing — not browse-and-buy web storefronts, and the data reflects that structure directly. Six of the 46 companies here are coded "no public catalog": a corporate site that is pure brochureware sitting in front of a login-gated ordering portal. Six more carried that code until an adversarial verification pass turned up live public product pages — usually on an owned banner storefront, like Cencora's ASD Healthcare or Cardinal Health's Canadian shop — and now read "catalog verified live," unscored until a rule-compliant sample is taken. Another chunk simply weren't in the sampled panel. Fourteen had a public catalog that was actually measured. ## The tension: scale is rented, not owned The [archetype](/top-distributors-2026/methodology) description calls out the risk plainly — big enough to be slow, not local enough to be fast — but the data points to a sharper version of the trade-off. National scale in distribution is built on supplier relationships that suppliers can walk away from. [Republic National Distributing Company](/blog/rndc-distributor-playbook) assembled national breadth across roughly 40 states by merging four family beverage businesses into the #2 US wine-and-spirits distributor. When major suppliers including Brown-Forman and Tito's pulled their brands, RNDC exited California, sold operations in 11 states plus DC to Reyes Beverage Group, agreed to sell its remaining control-state operations to Martignetti Companies, and filed for Chapter 11 on July 26, 2026. The scale that made RNDC valuable was never fully its own; it was rented from the brands that chose to route volume through it, and the rent can be revoked. Scale is also hard to consummate even when both sides want it. [Performance Food Group](/blog/performance-food-group-distributor-playbook)'s proposed merger with US Foods — a deal that would have leapfrogged Sysco outright — collapsed in early 2026. PFG says it is now hunting for acquisitions with an expanded war chest instead, which is itself telling: when the single biggest possible scale move fails, the fallback is the same bolt-on playbook every other company in this table already runs. ## What the index says about this model Read the roster and a pattern jumps out before you even get to scores: the largest company in the entire 2026 index by revenue, McKesson at $359.1 billion, is coded "no public catalog," and so is McLane at $51.0 billion. Cencora at $321.3 billion and Cardinal Health at $222.6 billion carried the same code until verification found live product pages on owned banners — ASD Healthcare and Cardinal's Canadian storefront — leaving them catalog-verified but unscored this edition. That is close to definitional, not a sampling accident. The model's actual selling motion runs through negotiated national-account channels, not open web catalogs, so the mechanism that makes a company big enough to top this list is the same mechanism that keeps its product data invisible to a public crawl. A gated portal is not a failing grade here; per the [methodology](/top-distributors-2026/methodology), it is simply unscored — a finding about the channel, not a verdict on the business. That leaves a smaller and more mid-scale group actually measured — fourteen companies, from [WPG Americas](/blog/wpg-americas-distributor-playbook) at roughly $390 million up to [Ferguson](/blog/ferguson-distributor-playbook) at $31.3 billion — and within that group the scores still edge ahead: a median of 60 against an index-wide median of 58. With only fourteen data points and a two-point gap this should be read as a plausible pattern, not a proven one, but there's a structural reason it would hold: companies in this archetype that still run an open storefront generally do so because they also serve smaller accounts who won't set up EDI, and that self-serve motion forces real investment in the page. The pillar breakdown carries the real texture. [Grainger](/blog/grainger-distributor-playbook) posts the group's best product-data score, 31 of 35, with a median of 47 attributes per sampled page — then scores just 9 of 20 on machine and agent readiness, because its robots policy explicitly blocks AI crawlers. Best data, worst access, same company. [Watsco](/blog/watsco-distributor-playbook) matches Grainger's 47-attribute median but posts the widest consistency spread in the group, 29 points between its richest and thinnest page — a direct readout of a company built through more than 70 acquisitions that deliberately keeps each acquired banner's identity intact; the sample was drawn from Carrier Enterprise, one of several distinct operating companies under the Watsco roof, because no single unified catalog exists to sample instead. [Ferguson](/blog/ferguson-distributor-playbook) is the inverse puzzle: a respectable 58 overall and the group's best buyer-answerability score, 19.5 of 25, alongside a median of zero structured attributes — pages that read well to a person and hand a crawler almost nothing to parse. [TricorBraun](/blog/tricorbraun-distributor-playbook) posts the group's high score, 70, with full public pricing, a working sitemap, product structured data, and the only "partial" AI-crawler stance in the set, where every other measured company here either blocks AI crawlers outright or leaves the question unaddressed. ## The read Scale aggregation is a supplier-facing strategy first and a buyer-facing one second, and the digital-readiness data is a direct consequence of that ordering. The companies that dominate this table by revenue built their advantage in purchasing offices and distribution-center footprints, not on product pages, and most of them don't run a page a stranger could browse at all. The ones that do — mid-scale by comparison, still billion-dollar businesses — treat the storefront as one more channel to manage well, and on the numbers they generally do. The interesting question for this archetype isn't which company has the best catalog. It's how much of the industry's actual volume never touches a catalog at all. --- # Top Lubricants & Fuels Distributors 2026: A Blank Scoreboard Source: https://www.anglera.com/blog/top-lubricants-fuels-distributors-2026 Published: 2026-09-09 Industries: oilfield-energy ![Top Lubricants & Fuels Distributors 2026: A Blank Scoreboard](/og/hero-top-lubricants-fuels-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Lubricants and fuels is the most active consolidation vertical in this index and the least visible one. Twenty distributors made the cut, five 2025-2026 acquisitions came from a single PE-backed roll-up, and not one company returned a measured [Digital Readiness Index](/top-distributors-2026/methodology) score. That is not twenty zeros. It is twenty companies whose public catalogs either do not exist or were never put in front of the crawler, and the difference between those two states is the real story here. ## The field Almost nothing here is disclosed. Seven companies carry a revenue figure: [Tricon Energy](/blog/tricon-energy-distributor-playbook) at $14.0B for FY2025, [Mansfield Energy](/blog/mansfield-energy-distributor-playbook) at $8.3B for FY2025, [Brenntag North America](/blog/brenntag-distributor-playbook) at $6.5B for FY2025 on a North America basis, [Colonial Group](/blog/colonial-group-distributor-playbook) at an estimated $5.0B total-company for FY2025 — 46th and 53rd in the wider [Top Distributors 2026](/top-distributors-2026) index — [Apex Oil](/blog/apex-oil-distributor-playbook) at an estimated $4.6B for FY2025, [Guttman Holdings](/blog/guttman-holdings-distributor-playbook) at an estimated $3.0B for FY2025, and [Moove](/blog/moove-distributor-playbook) at an estimated ~$490M in North America for FY2023. The other thirteen report "not disclosed" — itself the dominant fact of this vertical, which runs almost entirely on private, family, ESOP, and PE-sponsor capital, with only Brenntag North America and Moove sitting under a larger public parent. | Company | Archetype | Ownership | Revenue | DRI status | |---|---|---|---|---| | [Colonial Group](/blog/colonial-group-distributor-playbook) | scale-aggregator | private-family | $5.0B (FY2025, est.) | Not scored — no public catalog | | [Brenntag North America](/blog/brenntag-distributor-playbook) | scale-aggregator / technical-specialist | subsidiary | $6.5B (FY2025, NA) | Not scored — no public catalog | | [Moove (North America)](/blog/moove-distributor-playbook) | scale-aggregator / catalog-native | subsidiary | ~$490M (FY2023, NA, est.) | Not in measured set | | [RelaDyne](/blog/reladyne-distributor-playbook) | scale-aggregator / pe-rollup | private-pe | not disclosed | Not in measured set | | [Cadence Petroleum Group](/blog/cadence-petroleum-distributor-playbook) | pe-rollup / branch-density | private-pe | not disclosed | Not scored — no public catalog | | [Liquid Tech Solutions](/blog/liquid-tech-distributor-playbook) | pe-rollup / program-supplier | private-pe | not disclosed | Not in measured set | | [Pilot Thomas Logistics](/blog/pilot-thomas-distributor-playbook) | pe-rollup / program-supplier | private-pe | not disclosed | Not in measured set | | [Carson Oil](/blog/carson-oil-distributor-playbook) | branch-density | private-family | not disclosed | Not scored — no public catalog | | [SC Fuels](/blog/sc-fuels-distributor-playbook) | branch-density / scale-aggregator | subsidiary | not disclosed | Not in measured set | | [Senergy Petroleum](/blog/senergy-petroleum-distributor-playbook) | branch-density / program-supplier | private-family | not disclosed | Not in measured set | | [Southern Counties Lubricants](/blog/southern-counties-lubricants-distributor-playbook) | branch-density | private-family | not disclosed | Not in measured set | | [Great Lakes Petroleum](/blog/great-lakes-petroleum-distributor-playbook) | program-supplier | private-family | not disclosed | Not in measured set | | [Parman Energy Group](/blog/parman-energy-distributor-playbook) | program-supplier / branch-density | esop | not disclosed | Not in measured set | | [Port Consolidated](/blog/port-consolidated-distributor-playbook) | program-supplier / branch-density | private-family | not disclosed | Not in measured set | | [Dilmar Oil Company](/blog/dilmar-oil-distributor-playbook) | technical-specialist / branch-density | private-family | not disclosed | Not scored — no public catalog | | [Smitty's Supply](/blog/smittys-supply-distributor-playbook) | technical-specialist / branch-density | private-family | not disclosed | Not in measured set | | [Tricon Energy](/blog/tricon-energy-distributor-playbook) | Scale-aggregator | Private (family) | $14.0B (FY2025, est.) | Not scored — not sampled | | [Mansfield Energy](/blog/mansfield-energy-distributor-playbook) | Scale-aggregator / program-supplier | Private (family) | $8.3B (FY2025, est.) | Not scored — not sampled | | [Apex Oil](/blog/apex-oil-distributor-playbook) | Scale-aggregator | Private (family) | $4.6B (FY2025, est.) | Not scored — not sampled | | [Guttman Holdings](/blog/guttman-holdings-distributor-playbook) | Program-supplier / branch-density | ESOP | $3.0B (FY2025, est.) | Not scored — not sampled | Ordered by archetype cluster, since revenue is the one column this vertical mostly refuses to fill in. ## Who's buying whom Scale-aggregators are the largest cluster at seven companies — Colonial Group, Brenntag North America, Moove, RelaDyne, Tricon Energy, Mansfield Energy, and Apex Oil — competing on national buying power and a single brand over a distribution network. Branch-density operators — Carson Oil, SC Fuels, Senergy Petroleum, and Southern Counties Lubricants — compete on proximity, the closest cardlock or warehouse to the customer. Four program-suppliers (Great Lakes Petroleum, Parman Energy Group, Port Consolidated, Guttman Holdings) embed tank-monitoring or mobile-fueling equipment into a customer's site, and two technical-specialists (Dilmar Oil, Smitty's Supply) blend and reclaim their own fluids rather than reselling someone else's line. The pe-rollup cluster is where the 2025-2026 activity concentrates. [Cadence Petroleum Group](/blog/cadence-petroleum-distributor-playbook), backed by Wellspring Capital, closed five named acquisitions in this window alone — R.W. Davis Oil, B-J Supply, Glockner Oil, BOC Oil, and SEI — the fastest deal pace in the set, building a 34-location, 22-state platform per its archetype rationale. [RelaDyne](/blog/reladyne-distributor-playbook), which its own rationale calls the nation's largest lubricant distributor at 190-plus locations, added Dion and Sons in February 2026 and Chart Distribution Group in June 2026, then refinanced into a $1.49B Term B facility that S&P downgraded to B- citing elevated leverage. [Colonial Group](/blog/colonial-group-distributor-playbook) made two moves of its own: Colonial Oil Industries acquired Atkinson Oil Company, and sister unit Colonial Chemical Solutions acquired Integrity Partners Group. Even [Moove](/blog/moove-distributor-playbook), which claims the largest-distributor title on volume rather than location count, saw its parent Cosan reported to be exploring a stake sale, per Valor International — ownership itself is still moving here, not just branch counts. Two companies in the same 20-name list each claim to be the largest lubricant distributor in the country, on different metrics — a sign this vertical is big and fragmented enough that "largest" has more than one honest answer. ## Why the shelf is dark The [Digital Readiness Index](/top-distributors-2026/methodology) samples five live product pages from five categories of a distributor's own public catalog and scores what a machine or buyer can extract from them. In lubricants and fuels, that sampling step failed before scoring could start, for two distinct reasons that should not be read as the same finding. Five companies were checked and found to have no public catalog to sample. [Colonial Group](/blog/colonial-group-distributor-playbook)'s corporate site is brochureware that fans out to subsidiary domains; its Colonial Oil Industries lubricants pages stop short of individual product records. [Brenntag North America](/blog/brenntag-distributor-playbook) publishes an alphabetical index of roughly 600 chemicals with CAS numbers and use-case copy, informational rather than transactional. [Cadence Petroleum Group](/blog/cadence-petroleum-distributor-playbook)'s "By Product" navigation leads only to category-level marketing pages for motor oils, gear oils, and fuel. [Carson Oil](/blog/carson-oil-distributor-playbook) organizes its line into four service categories with no SKU-level pages beneath them, and [Dilmar Oil Company](/blog/dilmar-oil-distributor-playbook)'s Automotive, Transportation, Industrial, and Aviation categories are the same kind of overview page. That is a finding about how these five present product online: not absent from the internet, just structured for a sales conversation rather than a catalog browse. The other fifteen distributors were not part of this measurement pass at all — a gap in coverage, not a finding about Apex Oil, Great Lakes Petroleum, Guttman Holdings, Liquid Tech Solutions, Mansfield Energy, Moove, Parman Energy Group, Pilot Thomas Logistics, Port Consolidated, RelaDyne, SC Fuels, Senergy Petroleum, Smitty's Supply, Southern Counties Lubricants, or Tricon Energy. None failed a test they were never given, and several run public-facing cardlock locators a future pass would need to check on their own terms. Set against the full index's median Digital Readiness score of 58, zero scores out of twenty is the most extreme outcome in the index, and it tracks with the product. A distributor's own product pages, when they exist, would need to answer what a sourcing agent actually asks about a lubricant or fuel: viscosity grade, API or ACEA service category, base oil type, container size from quart to tote to bulk delivery, flash point, and whether it carries an NSF H1 food-grade registration. None of that is exotic data — it is standard content on a technical data sheet. The absence here is not that these companies lack the attributes; it is that the attributes live in a PDF a rep sends after a call, not a page a crawler can reach. ## Where this settles The consolidation math and the catalog math are heading in opposite directions. Cadence Petroleum, Pilot Thomas, Liquid Tech Solutions, and RelaDyne are all PE-sponsored platforms still adding locations, and platform owners eventually standardize the back office of whatever they buy, storefront included. The family-owned branch-density operators — Carson Oil, Southern Counties Lubricants, Dilmar Oil, Smitty's Supply — face less pressure to do that, since the mobile-fueling, cardlock, and contract-supply model this vertical runs on was built for a phone call and a delivery truck, not a shopping cart. Whether the next measurement pass finds more public catalogs to sample, or the same brochureware under new owners, is the open question this cut leaves for next year. --- # Top Food & Beverage Distributors 2026: Scale, Not Storefronts Source: https://www.anglera.com/blog/top-food-beverage-distributors-2026 Published: 2026-09-07 Industries: grocery-cpg ![Top Food & Beverage Distributors 2026: Scale, Not Storefronts](/og/hero-top-food-beverage-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Food and beverage is the vertical where the ranking and the readiness index tell almost opposite stories. The twelve companies here move a combined $357 billion a year through account-gated ordering platforms; just two have a public catalog our crawler has scored, and two more turned out to run live public product pages that haven't yet been sampled — a gap that says more about how this industry sells than any single revenue figure could. ## The Ranking | Rank | Company | Revenue | Archetype | Digital Readiness Index | |---|---|---|---|---| | 4 | [Sysco Corporation](/blog/sysco-distributor-playbook) | $81.4B (FY2025) | Scale-aggregator | Not in measured set | | 5 | [Performance Food Group](/blog/performance-food-group-distributor-playbook) | $63.3B (FY2025) | Scale-aggregator / PE-rollup | Not in measured set | | 6 | [McLane Company](/blog/mclane-distributor-playbook) | $51.0B (FY2025) | Scale-aggregator / Program-supplier | not measured (no public catalog) | | 8 | [US Foods](/blog/us-foods-distributor-playbook) | $39.4B (FY2025) | Scale-aggregator | Not in measured set | | 9 | [United Natural Foods (UNFI)](/blog/unfi-distributor-playbook) | $31.8B (FY2025) | Scale-aggregator / catalog-native | not sampled | | 14 | [Southern Glazer's Wine & Spirits](/blog/southern-glazers-distributor-playbook) | $25.5B (projected, CY2026) (CY2026, est.) | Scale-aggregator | Not in measured set | | 16 | [Gordon Food Service](/blog/gordon-food-service-distributor-playbook) | $23B (FY2024, est.) | Scale-aggregator | 65 | | 26 | [Republic National Distributing Company](/blog/rndc-distributor-playbook) | $12B (peak, pre-divestiture) (FY2024, est.) | Scale-aggregator | Not in measured set | | 30 | [Dole plc (North America)](/blog/dole-north-america-distributor-playbook) | $9.17B (FY2025) | Scale-aggregator | 41 | | 33 | [Breakthru Beverage](/blog/breakthru-beverage-distributor-playbook) | $8.4B (FY2025) | Scale-aggregator / Branch-density | not yet measured (catalog verified live) | | 38 | [Ben E. Keith Co.](/blog/ben-e-keith-distributor-playbook) | $8.0B (FY2025, est.) | Scale-aggregator | not yet measured (catalog verified live) | | 60 | [The Chefs' Warehouse](/blog/chefs-warehouse-distributor-playbook) | $4.15B (FY2025) | Technical-specialist / scale-aggregator | not sampled | Full methodology for the score is at [/top-distributors-2026/methodology](/top-distributors-2026/methodology), and the complete cross-vertical index is at [/top-distributors-2026](/top-distributors-2026). ## One archetype, no exceptions Eleven of the twelve companies on this list carry scale-aggregator as their primary archetype — the one exception is The Chefs' Warehouse, a specialty foodservice distributor built around chef and restaurant relationships rather than route density. That concentration is still far higher than in the other verticals we've cut this index by, and it is the actual headline here: food and beverage distribution does not reward a branch-density or specialist model the way, say, electrical or plumbing distribution does. Perishables and high-velocity SKUs punish anyone without a national cold chain and buying scale to match, so the businesses that survive at this size all converge on the same shape, then differentiate around the edges with a secondary label — Performance Food Group layers on pe-rollup, having built its #2 broadline position through acquisitions like Cheney Brothers ($2.1B, 2024) and Core-Mark ($2.5B, 2021) that still report under their original brand names. McLane pairs its 80-plus-DC national footprint with program-supplier work, running dedicated contract-logistics centers for customers like Circle K alongside its national accounts. Breakthru Beverage pairs the same national scale with branch-density, holding 59 offices and warehouses across 16 state markets because beverage-alcohol distribution is licensed state by state and has to be local no matter how large the parent gets. The freshest evidence that scale is still the whole game: Sysco's agreement to acquire Jetro Restaurant Depot for roughly $29.1 billion in enterprise value, announced in March 2026 and described as the largest deal in Sysco's history. That single transaction is worth more than Gordon Food Service's entire annual revenue and more than three-quarters of US Foods' entire annual revenue. It buys Sysco entry into the cash-and-carry channel it didn't previously compete in, expected to close by the third quarter of Sysco's fiscal 2027. Performance Food Group was chasing a version of the same math from the other direction — its proposed merger with US Foods would have vaulted it past Sysco in scale, but the deal collapsed in early 2026, and under new CEO Scott McPherson (who succeeded George Holm on January 1, 2026) the company says it is now actively hunting for other acquisitions with an expanded war chest. Not every scale story in this vertical is additive. Republic National Distributing Company spent the past year dismantling rather than building: it exited California in 2025 after losing suppliers Brown-Forman and Tito's, sold operations across 11 states and D.C. to Reyes Beverage Group in a deal that closed May 29, 2026, agreed to sell its remaining 17 control-state operations to Martignetti Companies, and filed for Chapter 11 bankruptcy on July 26, 2026. It was built the same way as everyone else on this list, by merging four family beverage-distribution businesses into national breadth — the difference is what happens when the suppliers that made that scale valuable start walking away. ## Two companies, two different ways to fail a pillar Only Gordon Food Service and Dole plc's North American foodservice arm had a catalog sampled this edition — verification later found live public product pages for Breakthru Beverage and Ben E. Keith too, but those carry no score until they're sampled under the rules — and neither scored company used its primary consumer-facing domain to get there — Gordon's B2B ordering platform sits behind a login, so the measured storefront is its public "Gordon Restaurant Market" retail chain; Dole's dole.com is pure marketing with no product pages, so the measured catalog is the separate B2B site Dole Foodservice operates for restaurant and institutional buyers. Both scores are set against an index-wide median DRI of 58 across all measured companies in the full ranking. Gordon scored 65 and Dole scored 41, and the pillar breakdown explains why in almost mirror-image terms. Gordon is close to maxed on the pillars that describe whether a page transacts: transparency at 17.6 of 20 (its sampled pages show live pricing on 100% of products) and agent readiness at a full 20 of 20, meaning product structured data, sitemap discoverability, and crawler access were all clean. But its product data depth pillar is the weak one at 12 of 35 — a median of just 2 attributes per page and a 0% GTIN match rate, meaning a machine can find the page and see the price but can't tell what the product actually is well enough to match it elsewhere. Dole inverts that. Its product data pillar leads the pair at 17.7 of 35, with a median of 5 attributes and a 100% GTIN rate — every sampled page carries an identifier a buyer or an agent could cross-reference. But transparency collapses to 7.2 of 20 because none of the sampled pages show a public price, typical of B2B foodservice ordering, and agent readiness falls to 6 of 20 with no product JSON-LD and no working sitemap. Neither company was penalized for an AI crawler policy — both show "unaddressed," which under this methodology means silence, not a block, so full marks there for both. For a buyer actually working these categories, neither number is close to enough. A foodservice operator sourcing a case of frozen protein or a produce SKU needs to filter on pack size, case count, unit of measure, temperature class (frozen, refrigerated, dry), allergen flags, and certifications like organic or kosher before price ever enters the decision — that's easily eight to ten attributes per item, not two or five. Gordon's spread of 2 between richest and thinnest page suggests the shortfall is uniform rather than a few weak listings dragging an otherwise-strong catalog down; Dole's spread of 1 says the same about its own thin-but-consistent pages. ## Where this settles The consolidation story here is not slowing down — Sysco is buying its way into a new channel, PFG is hunting after a failed merger, and RNDC's collapse is freeing up territory that Reyes and Martignetti are already absorbing. None of that activity shows up in a digital storefront, because in this vertical the storefront usually isn't public in the first place. The two data points we do have suggest that when a food and beverage distributor does expose a catalog, it tends to be strong on exactly one side of the ledger — either it transacts cleanly or it identifies its products cleanly — and rarely both at once. --- # Top Plastics Distributors 2026: A Roll-Up Outruns Its Data Source: https://www.anglera.com/blog/top-plastics-distributors-2026 Published: 2026-09-06 ![Top Plastics Distributors 2026: A Roll-Up Outruns Its Data](/og/hero-top-plastics-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Curbell Plastics closed its acquisition of Interstate Plastics in April 2026, adding nine locations and a self-serve e-commerce catalog to a network that now runs 31 sites. On paper that reads as consolidation strengthening the buyer's digital shelf. The Digital Readiness Index says the opposite happened: [Interstate Plastics](/blog/interstate-plastics-distributor-playbook) scores a 52, two points ahead of the [Curbell Plastics](/blog/curbell-plastics-distributor-playbook) storefront it now reports into at 50, and both trail [E&T Plastics](/blog/et-plastics-distributor-playbook), a ten-branch acrylic specialist that scores 68 while carrying a fraction of either company's catalog. Eleven companies make up this cut of the [Top Distributors 2026 index](/top-distributors-2026). Only three carry a measured score this edition — a fourth has a verified live catalog awaiting sampling — and the order those three produce runs against the roll-up narrative building around them. ## The ranking | Company | Overall Rank | Revenue | Archetype | Digital Readiness Index | |---|---|---|---|---| | [Tricon Energy](/blog/tricon-energy-distributor-playbook) | 23 | $14.0B (FY2025, est.) | Scale-aggregator | not sampled | | [North American Plastics](/blog/north-american-plastics-distributor-playbook) (now Plastics Family Americas) | 97 | $1.0B (FY2021, dated) | PE Roll-up | not yet measured (catalog verified live) | | [Cope Plastics](/blog/cope-plastics-distributor-playbook) | 135 | $100M+ (FY2018, dated) | Branch-Density / Technical-Specialist | not measured (no public catalog) | | [Curbell Plastics](/blog/curbell-plastics-distributor-playbook) | Not disclosed | not disclosed | Branch-Density / Technical-Specialist | 50 | | [E&T Plastics](/blog/et-plastics-distributor-playbook) | Not disclosed | not disclosed | Branch-Density / Technical-Specialist | 68 | | [Interstate Plastics](/blog/interstate-plastics-distributor-playbook) | Not disclosed | not disclosed | Catalog-Native / Branch-Density | 52 | | [Piedmont Plastics](/blog/piedmont-plastics-distributor-playbook) | Not disclosed | not disclosed | Branch-Density | Not in this round's sample | | [Polymershapes](/blog/polymershapes-distributor-playbook) | Not disclosed | not disclosed | Scale-Aggregator / Technical-Specialist | Not in this round's sample | | [Professional Plastics](/blog/professional-plastics-distributor-playbook) | Not disclosed | not disclosed | Catalog-Native / Technical-Specialist | Not in this round's sample | | [ThyssenKrupp Engineered Plastics](/blog/thyssenkrupp-engineered-plastics-distributor-playbook) | Not disclosed | not disclosed | Catalog-Native | Not in this round's sample | | [Total Plastics International](/blog/total-plastics-distributor-playbook) | Not disclosed | not disclosed | Branch-Density / Technical-Specialist | Not in this round's sample | ![Digital Readiness Index pillar breakdown for measured Plastics distributors](/charts/top-2026/plastics.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Eight of the eleven companies here are privately held and disclose nothing. North American Plastics is the clearest exception because its FY2021 revenue of $1.0B was reported before its 2026 rebrand, and that rebrand is itself the vertical's biggest structural move: the company now trades as Plastics Family Americas, a holding brand sitting over more than 40 acquired distributor names — Polymershapes, Laird Plastics, Total Plastics, ePlastics, and Port Plastics among them — spanning 200-plus locations, up from 115 in that FY2021 filing. Its old domain now redirects to a corporate site with no catalog of its own, but a verification pass found live public product pages on its owned banners — ePlastics among them — so its status is now catalog verified live, not yet measured: it carries no Digital Readiness score this edition, since scores are only published from rule-compliant samples, despite being the only company here with a disclosed number to rank by. ## Branch density, with a fabrication spine Five of the eleven companies are classified branch-density: Cope Plastics, Curbell Plastics, E&T Plastics, Piedmont Plastics, and Total Plastics International. That is the plurality archetype, and it fits the product. Plastics distribution runs on sheet, rod, and tube stock that gets cut to a customer's dimension close to where the customer is, so branch count and cut-shop capability matter more here than in categories where a single DC can ship anywhere overnight. Six of the eleven — Cope, Curbell, E&T, Polymershapes, Professional Plastics, and Total Plastics International — carry technical-specialist as a primary or secondary tag, reflecting CNC routing, laser cutting, or custom fabrication layered onto the stock business. This is not a pure buy-and-resell category; the value-add is cutting and finishing, and the archetype mix says so plainly. Three companies sit outside the branch-density norm and explain the vertical's consolidation story. [Polymershapes](/blog/polymershapes-distributor-playbook) is the scale-aggregator built for this category: one national brand across 85-plus centralized locations, and its 2026 moves (acquiring fabrication shop TuBro Company in January, expanding a Chihuahua nearshoring facility) both add engineering capacity rather than raw branch count, a different growth logic than the branch-density group. North American Plastics is the lone PE roll-up, and its move this year was consolidating disclosure rather than adding capability — folding dozens of already-owned brands under one federated name while leaving each brand's own storefront and identity untouched. Between them, Curbell's acquisition of [Interstate Plastics](/blog/interstate-plastics-distributor-playbook) sits closer to the branch-density playbook: trade press and the deal announcement both emphasized keeping Interstate's e-commerce platform running rather than folding it into Curbell's own systems, which is exactly why the two companies still carry two separate — and separately scored — storefronts today. The cut's other scale-aggregator, [Tricon Energy](/blog/tricon-energy-distributor-playbook), is new to this refresh and lists under MDM's combined "Plastics, Lubricants & Fuels" category — a $14.0 billion petrochemicals distributor whose scale comes from feedstocks and fuels, not the sheet-and-rod business the rest of this cut runs. ## What the Digital Readiness Index found The [Digital Readiness Index](/top-distributors-2026/methodology) samples five live product pages from five different categories of a company's own catalog and scores what a machine or a buyer can extract from them. This vertical's median score among the three measured companies is 52, six points under this index's overall median of 58. The pillar breakdown explains why in different ways for each company. Curbell's product page is genuinely open — no login to browse, most SKUs priced directly — which is why its commerce transparency pillar hits 18.4 of 20. But its machine and agent readiness pillar collapses to 6 of 20: no `Product` schema markup on the pages sampled and a sitemap that didn't resolve cleanly, the kind of gap that keeps a page invisible to a shopping agent even when a human buyer can see the price fine. E&T Plastics inverts that pattern almost perfectly, scoring a full 20 of 20 on agent readiness with working schema markup and a clean sitemap, and a perfect 20 of 20 on commerce transparency with every sampled SKU priced. Its weak spot is product data depth at 11.5 of 35 — a function of how narrow the sampled catalog actually is, since every purchasable SKU in E&T's 140-product Shopify store is a variant of cast or mirrored acrylic sheet. Interstate lands in between on most pillars but posts the worst consistency spread of the three, 16 points between its richest and thinnest sampled page against 7 for Curbell and 5 for E&T — the clearest sign of a catalog still being unified after a change of ownership. One number is identical across all three measured companies: a 0 percent GTIN rate. None of them exposes a barcode-level identifier on the sampled pages, and median attribute counts run thin everywhere — 5 for Curbell, 3 for E&T, 2 for Interstate. For a category where the actual buying question is "does this sheet come in 3/8-inch cast acrylic in a 48-by-96 size with a matte finish," that gap matters more than a missing barcode would. A buyer or an agent filtering by resin type, gauge or thickness, sheet dimensions, color, and flame or chemical rating needs those as structured fields, not prose in a description. At two to five attributes per page, none of the three measured catalogs currently supports that kind of filtering at any depth, which is arguably a bigger gap for this category than the identifier problem the GTIN number points to. ## Where this goes next The M&A activity in this vertical outpaces the digital investment behind it. Curbell folded in Interstate's storefront rather than its own, Polymershapes bought a fabrication shop instead of a catalog upgrade, and North American Plastics spent 2026 consolidating a holding-company identity over more than 40 brand names that still each run their own site. None of that shows up as a Digital Readiness gain, and the one company that scores best, E&T Plastics, does it by staying narrow rather than by winning a scale race. The buyers who show up in five years expecting to filter plastics inventory the way they already filter fasteners or electronics are going to find a category still organized around branch phone numbers and quote forms, Cope Plastics being the plainest example: its only calls to action are "Request A Quote" and a material selector tool that ends at a phone number, not a checkout. --- # Top Specialty Adhesives Distributors 2026: PE Moves In Source: https://www.anglera.com/blog/top-specialty-adhesives-distributors-2026 Published: 2026-09-04 Industries: mro-industrial, electrical ![Top Specialty Adhesives Distributors 2026: PE Moves In](/og/hero-top-specialty-adhesives-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Four of the eleven companies in this cut changed private-equity hands, added a new sponsor, or announced a take-private in the fifteen months leading into this index. Despite that, the vertical's operating shape barely moved: nine of eleven still carry "technical specialist" somewhere in their archetype, including two of the four roll-ups. The two that don't are also the two running a corporate holding-company website instead of an actual product catalog. That's the tension here. ## The ranking | Rank | Company | Revenue | Archetype | Digital Readiness Index | |---|---|---|---|---| | 82 | [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) | $1.98B (FY2025) | PE roll-up / program supplier | 58 | | 108 | [Ellsworth Adhesives](/blog/ellsworth-adhesives-distributor-playbook) | $540M (FY2022, est.) | Technical specialist / catalog-native | not measured | | 109 | [R.S. Hughes](/blog/rs-hughes-distributor-playbook) | $527M (FY2024) | Technical specialist | not measured | | 136 | [DH Sutherland](/blog/dh-sutherland-distributor-playbook) | ~$8M (est.) (recent (estimate), est.) | Technical specialist | 47 | | — | [Applied Adhesives](/blog/applied-adhesives-distributor-playbook) | not disclosed | PE roll-up / program supplier | not measured (no public catalog) | | — | [Associated Industries](/blog/associated-industries-distributor-playbook) | not disclosed | Technical specialist / program supplier | not measured (not observable) | | — | [EIS Inc.](/blog/eis-distributor-playbook) | not disclosed | Technical specialist | 60 | | — | [GracoRoberts](/blog/gracoroberts-distributor-playbook) | not disclosed | PE roll-up / technical specialist | not measured | | — | [Integral Products](/blog/integral-products-distributor-playbook) | not disclosed | Technical specialist | not measured | | — | [Krayden](/blog/krayden-distributor-playbook) | not disclosed | PE roll-up / technical specialist | not measured | | — | [Rudolph Bros. & Co.](/blog/rudolph-bros-distributor-playbook) | not disclosed | Technical specialist | not measured | ![Digital Readiness Index pillar breakdown for measured Specialty Adhesives distributors](/charts/top-2026/specialty-adhesives.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Ranks come from the full [Top Distributors 2026](/top-distributors-2026) index; NR means the company doesn't disclose revenue and so isn't placed on that list. Eight of the eleven are privately held and publish no top-line number, which is normal for this vertical and not a signal of size. ## A buying spree that hasn't changed what's being bought The ownership churn is concentrated and recent. Distribution Solutions Group's majority owner, LKCM Headwater Investments, agreed on July 15, 2026 to take the company fully private at $35.00 a share, an 81% premium to where the stock traded before the announcement. Applied Adhesives changed PE sponsors for the second time in a decade when Bertram Capital bought it from Arsenal Capital Partners in April 2025, citing Applied's "proven M&A playbook" as the reason to keep going. GracoRoberts ended an eleven-year run under CM Equity Partners with a new strategic investment from Tinicum, L.P. in July 2026, adding a Miami hub via the Sky Mart acquisition the same year. Krayden, already under its second sponsor (Quad-C to Audax), added Aerospace Reliance and the Europe-based CAPLINQ in June 2025. What's notable is what the sponsors are buying. GracoRoberts has made six acquisitions in seven years — Able Aerospace Adhesives, Silmid, SkyGeek, Pacific Coast Composites, Sky Mart — and every one still trades under its own name. Krayden's PE owner, Audax, frames the customer base around "specialized, no-fail applications" requiring technical sales support, not a generic distribution playbook. Both carry technical specialist as a secondary archetype alongside PE roll-up. DSG and Applied Adhesives don't: DSG's own site is investor brochureware with no catalog, and Applied runs a consultative site organized by adhesive chemistry and market segment, reflecting a strategy built on private-label lines (ASURE, Adhezion, Infinity Bond) and installed equipment service rather than catalog breadth. The other seven never left family or founder hands and read almost identically: certification-first operators competing on capability, not footprint. [Integral Products](/blog/integral-products-distributor-playbook) holds AS9100D, ISO 9001, and NADCAP 7202 out of one 61,500-square-foot Harbor City facility. [Rudolph Bros. & Co.](/blog/rudolph-bros-distributor-playbook) runs a climate-controlled, H2-rated hazmat facility with minus-20°F cold storage for freezer-stable structural adhesives. [DH Sutherland](/blog/dh-sutherland-distributor-playbook) sells temperature-sensitive aerospace adhesives out of an ISO7 cleanroom under DDTC export certification. [EIS Inc.](/blog/eis-distributor-playbook) runs six fabrication facilities converting process materials into engineered parts. None of that is an asset a roll-up erases quickly, which is probably why the PE-owned entrants keep buying more of it rather than replacing it. ## What the Digital Readiness Index actually found Only three of the eleven were measured for the [Digital Readiness Index](/top-distributors-2026/methodology), and the other eight split across three reasons that aren't equivalent. Six — R.S. Hughes, Ellsworth Adhesives, GracoRoberts, Integral Products, Krayden, Rudolph Bros. & Co. — simply weren't in the measured set this cycle. Applied Adhesives has no public catalog to measure: its site is consultative, not e-commerce. Associated Industries has a public catalog with open specs and no visible price, but its pages are not observable to our measurement pipeline — a note about the page's construction, not the company. Of the three, EIS Inc. leads the vertical at 60, with Distribution Solutions Group at 58 and DH Sutherland at 47 — a vertical median that lands exactly on the index-wide median of 58. But the three get there by completely different routes, and the pillar breakdown is the actual story. EIS wins on commerce transparency: 18.4 of 20 points, driven by a full B2B storefront that shows price on 80% of sampled products and stock status throughout, plus a GTIN on a fifth of them — real self-serve commerce. But EIS is weakest on buyer answerability (10 of 25) and machine readiness (13 of 20): despite the working cart, its pages carry no product structured data at all, so a crawler has to parse rendered HTML instead of reading a clean feed. Its median attribute count of 18 is the highest of the three, but its consistency spread of 24 points is also the widest — EIS treats some product lines far more thoroughly than others. Distribution Solutions Group sits almost opposite. Its machine and agent readiness score is a perfect 20 of 20 — sitemap coverage, product structured data, and open crawler access are all in place, and an unaddressed AI crawler policy costs nothing here since silence permits access rather than blocking it. But its commerce transparency pillar is the worst in the vertical at 6 of 20: zero percent of sampled pages showed a price or a GTIN, which tracks with the group's own corporate domain having no catalog — the real commerce sits one layer down, at Lawson Products and its sister operating companies. DH Sutherland is the outlier in a different direction. Its catalog is public and filterable by manufacturer and product type with no login wall, and its consistency spread of just 1 point is the tightest in the vertical — every product page reads almost identically. The problem is what's on those pages: a median of 4 structured attributes, less than a quarter of EIS's 18. A buyer of aerospace-grade adhesive needs to filter on cure temperature, working time, shear strength, freezer-stable shelf life, and certification level. Four attributes doesn't leave room for most of that, and DH Sutherland's pages end in a request rather than a price, so the remaining answers come from a person, not the page. ## Where this settles Four ownership changes across eleven companies in fifteen months is a fast churn rate for a vertical this small, and the language every new sponsor uses — "proven M&A playbook," more bolt-ons — suggests it isn't finished. What the data argues against is the assumption that PE ownership flattens these businesses into generic distribution. The certifications, cleanrooms, and cold-storage facilities that define this group don't transfer with a change of sponsor, and the two roll-ups that kept a technical-specialist identity, GracoRoberts and Krayden, look more like the vertical's median company than the two that didn't. The open question is whether that holds as ownership turns over, or whether the next deal optimizes the catalog the way DSG's corporate site already reads: built for a crawler, not for a buyer with a price question. --- # Mansfield Energy: The Gas Station Franchise That Never Sold Source: https://www.anglera.com/blog/mansfield-energy-distributor-playbook Published: 2026-09-04 Industries: oilfield-energy ![Mansfield Energy: The Gas Station Franchise That Never Sold](/og/hero-mansfield-energy-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Mansfield Energy shows up on Modern Distribution Management's [2026 Top Distributors report](https://www.mdm.com/top_distributors) in the Lubricants & Fuels category, one of a handful of fuel and lubricant suppliers MDM tracks each year across North America's largest distribution companies. It is also, sixty-nine years after its founding, still owned by the family whose name is on the building. In a downstream fuel sector that has spent two decades getting bought, rolled up, and taken private by strategic and financial buyers alike, that alone is worth pausing on. ## A Cities Service Franchise, Not a Startup Mansfield did not begin as a growth story. In 1957, John and Winnie Mansfield bought a Cities Service Oil Company franchise in Gainesville, Georgia, inheriting a small customer list, some basic equipment, and a modest stock of consigned heating oil, according to the company's own [history page](https://mansfield.energy/about/). It was a local heating-oil operation serving a farm town, the kind of business that either stays small forever or finds a second act. Mansfield found the second act by shifting its customer base from households to commercial trucking fleets and industrial plants, trading unpredictable seasonal residential demand for steadier, year-round commercial volume. That pivot, from home heating oil to fleet fuel, is the hinge the rest of the company's growth swings on. ## The Company Inside the Company Here is the detail that does not show up in the marketing copy: Mansfield Service Partners, the lubricants and fluids division that is the reason Mansfield lands on MDM's Lubricants & Fuels list, is older than Mansfield Energy Corp itself. MSP traces its own founding to 1932, starting as a single Houston gas station, per its [company history](https://msp.energy/about-msp/). Mansfield acquired it and folded it in as a semi-autonomous operating brand rather than dissolving it into the parent name. Today MSP runs its own fleets out of the Gulf Coast, the Rocky Mountains, and the Mid-Continent, holds a Shell Prestige Distributor designation for lubricants, and extends its reach further through what it calls a network of Associate Distributors, according to its [website](https://msp.energy/). The parent company is younger than the subsidiary that carries its lubricants business. That is not how most roll-ups work; usually the biggest name absorbs the older ones. Mansfield let a 25-year-older company keep operating under its own identity because the brand and the customer relationships were worth more intact than merged. ## An Independent Network, Not a Private Fleet The operating model that makes Mansfield unusual is called the DeliveryONE Network, which Mansfield describes as the largest independent fuel distribution network in the country, moving over 3 billion gallons of fuel and related products annually to more than 8,000 customers across every U.S. state and all ten Canadian provinces. Most large fuel distributors compete on the size of their owned fleet: more trucks, more drivers, more terminals. Mansfield's network instead stitches together independent haulers and regional operators under one coordination layer, letting the company claim national reach without owning every truck that carries its fuel. It is closer to a logistics platform than a trucking company, and it is the kind of asset-light structure that lets a family-held business compete for national fleet accounts against much better-capitalized, publicly traded rivals without matching them dollar for dollar in rolling stock. ## Growth by Acquisition, Carefully Mansfield's expansion since the 1990s has come mostly through bolt-on acquisitions rather than organic branch-building: O'Rourke Petroleum in Houston, R.W. Earhart Company in Ohio, the oil and lubricants division of Hi-Grade, and FuelTrac in Baton Rouge, all absorbed in the 2017-2018 window according to the company's own account. Mansfield also built out capability through partnership rather than pure acquisition, forming Team Logistics as a joint venture with Lincoln Energy Solutions in 2018, and creating Mansfield Clean Energy Partners with Clean Energy Fuels back in 2013 to get into natural gas and alternative fuels before that was a mainstream distributor bet. The pattern across three decades is consistent: buy the regional relationships, keep the acquired brand's local credibility where it helps, and use joint ventures to enter adjacent categories instead of building every capability from scratch. ## Second Generation Running It, Third Generation Learning It Michael Mansfield, the current CEO, is the second generation of family leadership and has been in the business for roughly 40 years, according to the company's [leadership page](https://mansfield.energy/leadership/), taking it from a 25-employee regional outfit to an organization of around 880 people. His son, Michael Mansfield Jr., is now Chief Operating Officer, having joined in 2013 after a stint trading oil liquids at Noble Group, and sits over operations, supply, transportation, and technology. That is a third generation already running the parts of the business, technology and logistics, that will determine whether the DeliveryONE model keeps scaling. It is a quiet bet against the sector's dominant trend: while distributors of Mansfield's size are frequently the target of private equity consolidation, this one is preparing to hand the wheel to family again rather than to a buyer. ## The Honest Tension Staying private and family-run has an upside MDM's rankings do not capture: patience. Mansfield can hold onto a joint venture like Clean Energy Partners for over a decade without a quarterly earnings call demanding it prove out. But the same structure caps how fast it can move against PE-backed competitors that can raise acquisition capital in weeks rather than fund deals off the balance sheet. Mansfield has bet that logistics network breadth and long-held customer relationships outrun raw acquisition speed. Six decades in, the bet is still open, and still working. Distribution rewards the companies that get the unglamorous layer right: the catalog, the branch, the truck route, the data behind all three. Mansfield Energy's version of that discipline is a network built on relationships old enough to have outlived the oil company whose franchise started it. --- # Gases & Welding Supplies 2026: Branch Density Wins, Digital Lags Source: https://www.anglera.com/blog/top-gases-welding-distributors-2026 Published: 2026-09-03 Industries: welding-gas, fasteners, plumbing ![Gases & Welding Supplies 2026: Branch Density Wins, Digital Lags](/og/hero-top-gases-welding-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Eighteen distributors make this vertical's cut, but only five had public catalogs we could measure, and the results scramble the revenue ladder. [F.W. Webb](/blog/fw-webb-distributor-playbook), a $2.6 billion Northeast branch operator, posts the highest Digital Readiness Index score of the group at 65, ahead of both [Fastenal](/blog/fastenal-distributor-playbook) at $8.2 billion (DRI 55) and [Airgas, an Air Liquide company](/blog/airgas-distributor-playbook), at $7.5 billion (DRI 46). Company size and digital shelf performance are two different lists in this vertical, and the gap between them is the story. ## The 2026 Ranking Ranks below reflect each company's position in Anglera's full [Top Distributors 2026](/top-distributors-2026) index, which spans every vertical; the eighteen companies here are the ones the index groups into Gases & Welding Supplies. Digital Readiness Index (DRI) scores, explained in full in our [methodology](/top-distributors-2026/methodology), run 0-100 across four measured pillars. | Rank | Company | Revenue | Archetype | DRI | |---|---|---|---|---| | 21 | [Linde (Americas)](/blog/linde-americas-distributor-playbook) | $15.2B (FY2025, segment) | Scale-aggregator / program-supplier | not measured | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B (FY2025) | Program-supplier / branch-density | 55 | | 40 | [Airgas, an Air Liquide company](/blog/airgas-distributor-playbook) | $7.5B (FY2024, NA, est.) | Scale-aggregator / branch-density | 46 | | 72 | [F.W. Webb](/blog/fw-webb-distributor-playbook) | $2.6B (FY2025) | Branch-density | 65 | | 74 | [Matheson](/blog/matheson-distributor-playbook) | $2.44B (approx.) (FY2025, NA, est.) | Technical-specialist / scale-aggregator | not measured | | 75 | [AmeriGas Propane](/blog/amerigas-distributor-playbook) | $2.28B (FY2025, segment) | Scale-aggregator / branch-density | not measured (no public catalog) | | 112 | [Arc3 Gases](/blog/arc3-gases-distributor-playbook) | $500M+ (FY2025, est.) | Branch-density | 43 | | 119 | [nexAir](/blog/nexair-distributor-playbook) | $400M (FY2022, dated) (FY2022, dated) | Branch-density / scale-aggregator | not measured | | 130 | [Roberts Oxygen Company](/blog/roberts-oxygen-distributor-playbook) | ~$220M (est.) (CY2025, est.) | Branch-density / technical-specialist | not measured | | 134 | [Indiana Oxygen](/blog/indiana-oxygen-distributor-playbook) | ~$100M (FY2023, est.) | Technical-specialist / branch-density | not measured | | 137 | [Charbone Corporation](/blog/charbone-distributor-playbook) | $0.2M (FY2025) | Technical-specialist / program-supplier | not sampled | | — | [American Welding & Gas](/blog/american-welding-gas-distributor-playbook) | not disclosed | Branch-density | 42 | | — | [Gas And Supply Co.](/blog/gas-and-supply-distributor-playbook) | not disclosed | Branch-density | not measured | | — | [General Air](/blog/general-air-distributor-playbook) | not disclosed | Branch-density | not measured | | — | [Meritus Gas Partners](/blog/meritus-gas-distributor-playbook) | not disclosed | PE-rollup / branch-density | not measured | | — | [Norco Inc.](/blog/norco-distributor-playbook) | not disclosed | Branch-density / technical-specialist | not measured | | — | [O.E. Meyer](/blog/oe-meyer-distributor-playbook) | not disclosed | Branch-density / technical-specialist | not measured | | — | [Red Ball Oxygen Co.](/blog/red-ball-oxygen-distributor-playbook) | not disclosed | Branch-density / technical-specialist | not measured | ![Digital Readiness Index pillar breakdown for measured Gases & Welding Supplies distributors](/charts/top-2026/gases-welding.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* ## A Vertical Built on Trucks and Counters Ten of the eighteen companies here carry branch-density as their primary archetype, and it is a physical necessity more than a strategic choice. Gas cylinders are heavy and hazardous to move long distances and need local fill or exchange infrastructure; welding supply purchases run through will-call counters and technical service relationships as often as through a cart. Roberts Oxygen, General Air, O.E. Meyer, Red Ball Oxygen and several others built regional footprints almost entirely through organic branch openings, and each pairs that footprint with a technical-specialist secondary label: calibration labs, EPA protocol gas production, welder repair. The exception is [Meritus Gas Partners](/blog/meritus-gas-distributor-playbook), the vertical's one pe-rollup, sponsored by AEA Investors on a stated platform strategy with eight deals since 2021. It has not slowed: a July 31 acquisition of five-location Dallas-Fort Worth distributor Metroplex Welding Supply followed a March 2026 purchase of Greens Welding Supply in Granbury, Texas, and a July 2026 deal for HICO Distributing of Colorado. Each acquired shop keeps trading under its own local brand, an admission that branch-density's local identity is worth preserving even inside a roll-up. Arc3 Gases runs a quieter version of the same playbook, growing to 60 locations by folding in small operators like Economy Welding & Industrial Supply and Hall's Welding Supplies rather than centralizing into a few large distribution centers. At the top of the size scale, the model looks different only because the companies are bigger. Linde's distribution runs on what the company itself calls networks of "thousands of production plants, pipeline complexes... and delivery vehicles," and Airgas layers nearly 800 branches, retail stores and fill plants onto Air Liquide's production scale. AmeriGas took branch-density furthest into a pure service model: no catalog exists to browse, only a delivery quote request and a MyAmeriGas login, consistent with an archetype built by rolling up local propane distributors into one centrally purchased, locally delivered brand. ## What the Product Pages Actually Show Only five of the eighteen companies had a public, unauthenticated catalog our extractor could sample, and the spread among them is wide. This vertical's median DRI of 46 sits well below the 58 median across Anglera's full index, and the pillar breakdown explains why. F.W. Webb's 65 comes from a near-perfect commerce transparency score (20 of 20) and the only confirmed product structured data in the group, which lifts its agent-readiness pillar to 14 of 20 against 6 for three of its four peers. But its consistency spread of 21 points is the widest we measured in this cut: a median of 16 attributes per page masks category pages that are richly built out sitting next to ones that are not. F.W. Webb is also the one company here whose robots.txt explicitly blocks AI crawlers, a policy choice that costs it points the other four keep by simple silence, since an absent rule permits a crawler rather than penalizing the company for one. Fastenal is the most evenly built of the five, scoring within a few points of its own average across product data (16.7), answerability (16.6) and transparency (15.2), with a median of 11 attributes per page and the sample's best, if still modest, 20 percent GTIN match rate. Airgas trails on product data (14.5) with a median of just 4 attributes per page; our sampler noted its category navigation runs several levels deep, for example Safety Products to Gloves to Coated Work Gloves, before reaching an actual product grid. Arc3 Gases and American Welding & Gas both hide pricing behind a "Call for price" pattern, dragging their transparency pillars to 12 and 6, the lowest score in any pillar for any measured company here. Arc3's consistency spread of 2 is the tightest we measured anywhere: it treats every sampled page almost identically, just identically thin. For a buyer of gases and welding consumables, the attributes that actually matter are specific: cylinder size and CGA valve fitting, gas purity or mixture composition, pressure rating, welding process compatibility (MIG, TIG, stick, flux-core), filler wire diameter and AWS classification, and whether a cylinder is sold, leased or exchanged. A median of 3 to 6 attributes, where Arc3 and American Welding & Gas both sit, rarely clears that bar. A median of 16, where F.W. Webb sits, gets closer, provided the buyer happens to land on one of the well-built pages rather than one of the thin ones. ## Where This Leaves the Vertical The physical logic of gas and welding distribution, trucks, fill plants, will-call counters, is not going away, and it will keep branch-density as the default model whether the operator is an independent adding its ninth location or a PE platform stitching together its ninth acquisition. What is still unsettled is whether any of the measured operators close the gap between physical service quality, which by every account here is strong, and the kind of consistent, structured product data that lets a buyer or an AI shopping agent confirm fit without picking up the phone. Right now the honest answer, across five very different companies, is not yet, unevenly. --- # Guttman Holdings: 90 Years Family-Run, Now Employee-Owned Source: https://www.anglera.com/blog/guttman-holdings-distributor-playbook Published: 2026-09-03 Industries: oilfield-energy ![Guttman Holdings: 90 Years Family-Run, Now Employee-Owned](/og/hero-guttman-holdings-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Guttman Holdings shows up on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors) in the Lubricants & Fuels category, one of dozens of privately held wholesalers whose revenue MDM lists simply as not disclosed. The Belle Vernon, Pennsylvania company has been selling petroleum products since 1931, which by itself would make it unremarkable in a vertical full of century-old family names. What sets Guttman apart is what happened to the ownership structure four generations in: instead of selling to private equity or a strategic buyer, the Guttman family handed the entire company to its employees. ## From one gas station to a full-line distributorship Jacob Guttman opened Guttman Super Service, a single gas station at Ninth and Market in McKeesport, PA, in 1931. The pivotal early bet came nine years later. In 1940, Texaco granted him a full-line distributorship to sell fuels and lubricants across Washington County, turning a retail pump operation into a wholesale distribution business. [Guttman's own company history](https://guttmanenergy.com/fueling-energy-solutions/the-history-of-guttman-energy/) treats that Texaco agreement, not the gas station itself, as the real start of the distribution business. The next eight decades read like a standard playbook for building a regional fuel wholesaler into something durable. Acquire adjacent territory: Mercer County Oil Company in 1947 pushed the company into northwestern Pennsylvania and eastern Ohio. Control real estate: Guttman Realty Company formed in 1950. Control transportation: bulk hauling with Mon River Towing began in 1960, and Guttman built its own trucking arm, Source One Transportation, in 2001. Diversify revenue: 28 Crossroads Food Marts convenience stores from 1984, plus a proprietary fleet fuel card program launched in 1989. None of it is flashy. All of it compounds. ## The ownership bet nobody else on the list is making Most of Guttman's MDM list-mates in Lubricants & Fuels are either still closely held by a founding family or have already been rolled into a larger platform. Guttman took a third path. In November 2022, the company completed its transition to 100 percent employee ownership through an Employee Stock Ownership Plan, consolidating its fuel, transportation, and newly launched renewables businesses under a new parent, [Guttman Holdings](https://guttmanenergy.com/about-guttman-energy/about-guttman-holdings/). The family did not exit. Joseph Lucot serves as CEO, a professional operator rather than a fourth-generation Guttman, while Alan Guttman chairs the board and family members James, Richard, and Daniel Guttman hold additional board and executive seats. What changed is who owns the equity: 270 employees, not a private equity sponsor and not a public shareholder base. That is the insight worth naming plainly. An ESOP conversion lets a founding family de-risk and monetize ownership without submitting to the margin and growth targets that come with a private equity recapitalization, and without staging a succession fight across branches of a family tree. The tradeoff is real. An ESOP-owned company finances acquisitions out of cash flow and debt rather than sponsor equity, which caps how fast it can roll up a fragmented vertical next to a PE-backed platform buyer writing checks with someone else's money. Guttman's board bet that the retention and loyalty benefits of employee ownership, plus the tax treatment ESOPs carry, would outweigh that speed disadvantage. The Pennsylvania ESOP Association evidently agreed, naming Guttman Holdings its [2025 ESOP Company of the Year](https://www.businesswire.com/news/home/20250402605979/en/Guttman-Holdings-Inc.-Earns-Prestigious-Pennsylvania-ESOP-Company-of-the-Year-Award). ## Still buying, just differently The ESOP structure has not stopped Guttman from acquiring. In September 2024, Guttman Energy and Source One Transportation together bought the assets of [Weaver Energy](https://www.prweb.com/releases/guttman-holdings-accelerates-its-growth-strategy-with-acquisition-of-weaver-energy-302252797.html), a Lititz, PA company supplying bioheat, heating oil, and HVAC services, extending Guttman's reach into central and eastern Pennsylvania's home-heating market. It is a small, adjacent, bolt-on deal, the kind an employee-owned balance sheet can comfortably absorb, and a signal that the ownership change was not a prelude to winding the business down. ## Where lubricants actually sits in the business today Here is the honest tension worth flagging rather than smoothing over. Guttman's current [product lineup](https://guttmanenergy.com/) leads with on-and-off-road diesel, gasoline grades, home heating oil, diesel exhaust fluid, propane, compressed natural gas, and renewable fuels like biodiesel and carbon offsets. Lubricants, the product line that produced the company's original wholesale distributorship agreement in 1940, does not headline the current site. MDM groups lubricants and fuels into a single vertical for ranking purposes, and Guttman's placement on that list reflects a wholesale fuel and energy logistics business more than a blended-lubricants operation today. It is a small reminder that a company's category label and its actual center of gravity can drift apart over ninety years, even when the category name traces straight back to the deal that built the business in the first place. For a fuel wholesaler, the moat was never really about which single product carried the highest margin. It was branch density, tank storage, and a delivery fleet reliable enough that a factory floor manager or a fleet dispatcher never has to think twice about where the next load is coming from. Guttman built that infrastructure for ninety years under one family's name and now runs it on 270 people's collective stake instead of one family's alone, with the acquisitions still coming. Distribution rewards the unglamorous work behind the scenes: the tank inventory that is accurate at 2 a.m., the branch that opens on schedule, the catalog entry that matches what actually ships. Guttman Holdings is one more entry on an MDM list built largely on companies that got that unglamorous work right for decades before anyone outside the industry noticed. --- # Apex Oil: The Bankruptcy That Built a Trading House Source: https://www.anglera.com/blog/apex-oil-distributor-playbook Published: 2026-09-02 Industries: oilfield-energy ![Apex Oil: The Bankruptcy That Built a Trading House](/og/hero-apex-oil-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Apex Oil Company shows up on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) in the Lubricants & Fuels category, one of a few dozen wholesalers MDM tracks in a segment it deliberately leaves unranked. Apex has been privately held since 1932, and unlike most names on that list it survived a bankruptcy in the 1980s that had almost nothing to do with fuel. The story of how it got from there to here says more about the company than its terminal count does. ## A Depression-era fuel jobber Samuel R. Goldstein incorporated Apex Oil in St. Louis in 1932, wholesaling fuel oil into a Midwest still converting from coal, and building the business on river logistics and tight margins rather than owning wells or refineries. That structural choice, be a mover and blender of other people's petroleum rather than a producer of it, is the thread that runs through everything Apex did afterward, according to the company's own [account of its history](https://apexoil.com/about-apex/). ## Novelly turns a jobber into a trading house Paul "Tony" Novelly joined Apex in 1969 and, through the 1970s, pushed the company well past regional fuel oil distribution into international petroleum trading, tanker shipping, and refining-adjacent acquisitions. By the mid-1980s the Novelly-run Apex Holding group controlled not just barge and terminal operations but a fleet of oceangoing tankers run through subsidiaries like Trinidad Corporation and Crest Tankers, according to [Forbes's profile of Novelly](https://www.forbes.com/profile/paul-novelly/). That expansion is what made Apex a genuine trading operation instead of a regional distributor. It's also what nearly ended the company. ## The 1987 filing, and what actually caused it On December 24, 1987, Apex Holding Co. and its shipping affiliates filed for Chapter 11, in a case widely described at the time as one of the ten largest privately held companies in the country to seek bankruptcy protection. The trigger wasn't the fuel business. It was a wave of asbestosis claims from merchant mariners who had worked aboard tankers operated by Apex's Trinidad Corporation and Mathiasen's Tanker Industries subsidiaries, more than 230 claimants pursuing personal injury and wrongful death suits that the shipping arms could not absorb, per the [Eighth Circuit's 1992 opinion](https://law.justia.com/cases/federal/appellate-courts/F2/980/1150/335627/) in the resulting claims litigation. A distribution and trading company was pulled into bankruptcy by a liability it inherited from owning ships. Apex reorganized and emerged in the early 1990s, and Novelly came out the other side as sole owner of the whole enterprise. ## The insight: a fuel distributor with a trading house's balance sheet Here's the part that doesn't show up on a fuel distributor's About page. Coming out of bankruptcy, Novelly didn't retreat to a simple, single-line fuel wholesaling business. He kept building a portfolio that looks less like a typical regional distributor's and more like a commodities trading house's: barge and towing operations on the inland waterway system, marine terminal networks including a stretch he assembled as World Point Terminals, an international oil trading arm based in Bermuda called AIC, a 40 percent stake in publicly traded specialty chemicals maker FutureFuel, and, improbably, ownership of Shanty Creek, a ski and golf resort in northern Michigan, according to Forbes's accounting of [Novelly's holdings](https://www.forbes.com/profile/paul-novelly/). None of that is what a pure logistics operator buys. It's what someone who thinks in uncorrelated positions buys, the same instinct that took Apex into tanker shipping in the 1970s, just pointed at assets that couldn't sink the fuel business a second time if one of them went sideways. Most distributors on the MDM lists optimize branch density or category depth. Apex optimized for surviving its own balance sheet. ## A handoff completed just in time Novelly stepped down as CEO in 2022, handing the company to his son, Paul Novelly II. Tony Novelly died on February 6, 2025, at age 81, according to [Forbes](https://www.forbes.com/profile/paul-novelly/) and the company's own [St. Louis location page](https://apexoil.com/location/st-louis-mo/). Apex enters the 2026 MDM rankings as a company that just completed a generational transition at the top, still wholly family-owned, still headquartered a few miles from where Goldstein started it, still running the Apex Towing, Clark Oil Trading, and Petroleum Fuel & Terminal subsidiaries alongside its lubricants and fuels business, per [Forbes's company profile](https://www.forbes.com/companies/apex-oil/). In a fuels and lubricants sector where private equity and strategic buyers have consolidated most of the mid-sized regional names, a 90-plus-year-old family business surviving both a near-fatal bankruptcy and a leadership transition without selling out is itself the notable fact. Whatever else changes in distribution, someone still has to own the barge, staff the terminal, and know precisely which blend a customer needs delivered by Thursday. Apex's ninety-plus years are a reminder that the unglamorous infrastructure of fuel logistics, terminals, barges, specifications, is what survives when everything else about a company's structure gets tested. This profile is part of Anglera's Distributor Playbooks series, examining the strategies behind the companies on MDM's 2026 Top Distributors lists. --- # Top Pharmaceuticals & Healthcare Distributors 2026 Source: https://www.anglera.com/blog/top-pharma-healthcare-distributors-2026 Published: 2026-09-01 Industries: medical-dental ![Top Pharmaceuticals & Healthcare Distributors 2026](/og/hero-top-pharma-healthcare-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* The three largest companies in this vertical are also the three largest companies in the entire [Top Distributors 2026](/top-distributors-2026) index, and none of them carries a Digital Readiness score. That is the finding this cut turns on: [McKesson](/blog/mckesson-distributor-playbook), [Cencora](/blog/cencora-distributor-playbook), and [Cardinal Health](/blog/cardinal-health-distributor-playbook) move a combined $900 billion or so of pharmaceuticals a year through account-gated ordering systems, and the only Digital Readiness Index score recorded anywhere in Pharmaceuticals & Healthcare belongs to a company that ranks seventh in the vertical by revenue. ## The ranking | Rank | Company | Revenue | Fiscal Year | Primary Archetype | DRI | |---|---|---|---|---|---| | 1 | [McKesson Corporation](/blog/mckesson-distributor-playbook) | $359.1B | FY2025 | Scale-aggregator | not measured (no public catalog) | | 2 | [Cencora](/blog/cencora-distributor-playbook) (formerly AmerisourceBergen) | $321.3B | FY2025 | Scale-aggregator | not yet measured (catalog verified live) | | 3 | [Cardinal Health](/blog/cardinal-health-distributor-playbook) | $222.6B | FY2025 | Scale-aggregator | not yet measured (catalog verified live) | | 7 | [Thermo Fisher Scientific](/blog/thermo-fisher-distributor-playbook) | $44.6B | FY2025 | Catalog-native | 59 | | 12 | [Medline Industries](/blog/medline-distributor-playbook) | $28.4B | FY2025 | Program-supplier | not measured (not observable) | | 24 | [Henry Schein](/blog/henry-schein-distributor-playbook) | $13.2B | FY2025 | Program-supplier | Not measured this wave | | 37 | [Owens & Minor](/blog/owens-minor-distributor-playbook) | $8.0B (segment) | FY2024 | Scale-aggregator | Not measured this wave | Revenue figures are each company's total, most recently reported fiscal-year revenue as given in the source data, not a pharma-only or healthcare-only segment figure. Owens & Minor is the exception: its $8.0B is the FY2024 distribution-segment figure, the last full year before that segment changed hands mid-cut; see below. ## Why scale-aggregators own this vertical Every company at the top of this list carries a scale-aggregator archetype, and the [archetype rationale](/top-distributors-2026/methodology) behind each is nearly identical in shape even though the numbers differ by hundreds of billions of dollars. McKesson delivers roughly a third of all pharmaceutical products consumed in North America through a centralized national network. Cencora moves roughly 20% of all US pharmaceuticals through a footprint of only about 26 US distribution centers plus nine in Canada. Cardinal Health serves more than 100,000 locations and over 75% of US hospitals, and runs Red Oak Sourcing, its generic-drug joint purchasing venture with CVS, described in the data as the largest generic sourcing operation in the country. None of that is order-taking off a web catalog. It is national-network density and negotiated buying power applied to a product category, pharmaceuticals, where price is set per contract and controlled substances move through DEA-tracked account channels rather than an anonymous storefront. That structural fact explains the DRI table better than any catalog quality judgment could, though an August verification pass complicated it in an interesting way. The data now records only McKesson as `no-public-catalog`: its corporate site is brochureware, and even its medical-surgical storefront, `mms.mckesson.com`, surfaces only category landing pages such as `/content/anesthesia/` rather than product detail pages a crawler could parse. Cencora and Cardinal Health both moved to catalog found, not yet sampled. Cencora's corporate site is still a B2B lead-generation platform with no shop or store section reachable, but its specialty business ASD Healthcare publishes a public catalog with real product pages — name, NDC, manufacturer, storage details, no login required. Cardinal Health's core distribution ordering still runs through login-gated portals like Order Express, yet its Canadian storefront and its Edgepark home-delivery site both render full product pages anonymously. Neither carries a score this edition, because scores are only published from rule-compliant samples. And the finding is still not a zero. It states that these companies chose an account-based commercial model for pharmaceutical distribution, a defensible and arguably necessary choice given what they sell — the public pages live at the edges of the business, not at its pharmaceutical core. The exception, and the second archetype in this vertical, is program-supplier: companies that pair a catalog with an embedded relationship. Medline manufactures its own private-label products, including wound-care lines sold under CVS, Walgreens, Target, and Dollar General brands, and deploys roughly 2,000 direct sales reps into hospitals. Henry Schein bundles its Henry Schein One practice-management software with consumables sold into dental and medical practices, pushing the relationship past a transactional order. Owens & Minor ran the same play at hospital scale with MediChoice private label and VMI supply-chain services, until its medical-surgical distribution segment, Products & Healthcare Services, was sold to Platinum Equity for $375 million in a deal that closed December 31, 2025. The remaining public company rebranded as Accendra Health, Inc. (NYSE: ACH) on January 2, 2026, keeping only the home-based care business, Apria and Byram. That move split a scale-aggregator archetype away from a company's public identity within a single fiscal year, as clean a demonstration as this index has of how fast archetype and ownership can diverge from the name on the door. ## What the Digital Readiness Index actually found Only one company in Pharmaceuticals & Healthcare cleared measurement: [Thermo Fisher Scientific](/blog/thermo-fisher-distributor-playbook), at 59 out of 100, exactly the vertical's median because it is the vertical's only data point. That score sits almost precisely at the [index-wide median of 58](/top-distributors-2026/methodology), which is itself worth noting: the one healthcare-adjacent company with a real digital shelf performs like an average distributor across the whole index, not like a laggard and not like a standout. The pillar breakdown is where the interesting detail lives. Thermo Fisher's product data depth pillar scored 17.9 of 35, the weakest of the four, and its GTIN rate on sampled pages was 0%, meaning none of the five sampled pages carried a standard product identifier a machine could use to match the item to the same SKU elsewhere. For a catalog spanning Thermo Scientific, Invitrogen, Applied Biosystems, Gibco, and Fisher Scientific branded lines, that is a real gap: a lab buyer or procurement system trying to cross-reference a reagent or consumable across suppliers has nothing but the manufacturer's own part number to work from. The median attribute count on a sampled page was 13, which is enough to describe a general product but thin for the kind of filtering a clinical or lab buyer actually needs, things like reagent grade, storage temperature, container volume, sterility, and compatibility with specific instrument platforms. The consistency spread of 22 points between the richest and thinnest sampled page says that depth is uneven across categories, which matters more than the median for a buyer who happens to land on a thin page. Where Thermo Fisher did well: agent readiness scored a full 20 of 20, with product structured data present, a working sitemap, and no explicit AI crawler block, which under this index's scoring rules means full marks on that signal rather than a gap. Public pricing appeared on 60% of sampled pages, a partial but real improvement over the account-gated norm elsewhere in the vertical. Commerce transparency landed at 12 of 20, ahead of where a fully gated wholesaler would fall by definition, since there is no wholesaler comparison point in this vertical to set the bar. Medline is the case worth watching rather than scoring. Its `driNote` records that individual product detail pages are publicly viewable, full name, images, features and benefits, a spec table, and SKU list, with no login required, and only final purchase pricing gated behind a sign-in wall. But an August re-test in a full Chrome browser session got a completely blank page, so the honest status is "not observable": a limit of the measurement, not a claim about the data behind the wall — and distinct from having no catalog at all. ## Where this is heading McKesson's announced spin-off of its Medical-Surgical unit into an independent public company and Owens & Minor's split into Accendra Health both point the same direction: the pharmaceutical wholesale core, the part that will never run a public storefront because of contract pricing and controlled-substance handling, is being separated from the medical-surgical and home-care businesses that could plausibly build one. If that separation continues across the vertical, the next edition of this index may have more companies to measure, not because the giants changed their model, but because their catalog-adjacent businesses stopped being folded inside them. --- # The Chefs' Warehouse: Winning by Refusing to Go Broadline Source: https://www.anglera.com/blog/chefs-warehouse-distributor-playbook Published: 2026-09-01 Industries: grocery-cpg ![The Chefs' Warehouse: Winning by Refusing to Go Broadline](/og/hero-chefs-warehouse-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* The Chefs' Warehouse lands on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) in the Food & Beverage category at $4.1 billion in revenue, a number dwarfed on the same list by Sysco's $81.4 billion and US Foods' $39.4 billion. That gap is the point. Chefs' Warehouse was never built to out-scale the broadliners. It was built to serve the one customer they serve badly: the independent chef who needs six cases of Wagyu short rib, a case of imported Grana Padano, and a flat of ramps by 6 a.m. tomorrow, not a truckload of anything. ## A dairy business became a specialty ingredient network The company's roots go back to 1956 and a business called Veterans Butter & Egg Company, but the company as it exists today started in August 1985, when brothers Christopher and John Pappas launched Dairyland USA in New York City to sell specialty dairy and perishables to fine-dining kitchens. For roughly two decades the business stayed almost entirely family-owned, which gave the Pappases room to make a bet most distributors don't get to make quietly: instead of growing by adding volume to existing categories, they grew by adding categories chefs couldn't easily source elsewhere ([company history](https://investors.chefswarehouse.com/management/john-pappas)). That bet became a company. The Chefs' Warehouse went public on NASDAQ under the ticker CHEF on July 28, 2011, pricing its IPO at $15 a share and raising about $63.1 million in net proceeds ([IPO pricing announcement](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-inc-announces-pricing-its-initial-public)). Fifteen years later, Christopher Pappas is still chairman and CEO. That continuity is the first thing worth naming plainly: specialty foodservice distribution has been a magnet for private equity roll-ups for a decade, and Chefs' Warehouse took the opposite path, using public capital markets to keep expanding while keeping the founders in control. Going public didn't dilute the culture out of the business, it funded more of it. ## How they win: category depth over drop size The operating model is a straightforward but hard-to-copy sequence. Buy a respected regional or category specialist, keep its relationships and expertise intact, and plug it into the national purchasing and logistics network. The company calls this out explicitly in its own segment reporting, and the acquisition list reads like a tour of American specialty food: | Year | Acquisition | What it added | |---|---|---| | 2013 | Allen Brothers | Premium beef processing and distribution, founded 1893 ([deal announcement](https://investors.chefswarehouse.com/static-files/68e89857-7224-4da3-9e25-a402b4ab63fa)) | | 2015 | Del Monte Capitol Meat Co. | Northern California protein distribution, ~$191.2M deal ([acquisition release](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-completes-acquisition-del-monte-meat-company)) | | 2015 | Michael's Finer Meats & Seafoods | Midwest center-of-the-plate reach | | 2025 | Italco Food Products | Denver-based specialty distribution, ~$16.5M deal, Rocky Mountain expansion ([10-Q filing](https://investors.chefswarehouse.com/static-files/f26341e6-1d75-4f7c-80da-9683270af81b)) | Each deal did two things at once: it added a category (premium protein, in Allen Brothers' and Del Monte's case) and it added density in a market the company didn't yet reach at scale. That combination is why the company can now claim more than 55,000 core customer locations, north of 90,000 SKUs, and 44 distribution centers across the US, Canada, and the Middle East ([Q4 2025 results](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-reports-fourth-quarter-2025-financial-results)) while still delivering to menu-driven independent restaurants, hotels, casinos, cruise lines, and culinary schools in the small, frequent, mixed-case drops those kitchens actually need. That last part is the trade-off, and it's worth being honest about it. Small, frequent drops of perishable, hard-to-source products cost more to fulfill per case than a pallet of canned goods moving through a broadline warehouse. Chefs' Warehouse has effectively decided that the premium chefs pay for curation, sourcing expertise, and reliability on hard-to-find items is worth more than the efficiency it gives up by not chasing commodity volume. Fiscal 2025 net sales reached $4.2 billion, up 9.4% year over year, with organic growth doing most of the work rather than acquisitions alone ([Q4 2025 financial results](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-reports-fourth-quarter-2025-financial-results)) — a sign the core specialty-and-protein model is still compounding, not just the M&A engine. ## The unglamorous discipline underneath the growth None of this works without knowing, at the SKU level, what's actually moving through 44 distribution centers and which regional acquisition owns which supplier relationship. A company assembled from a dozen-plus specialty and protein businesses over two decades inherits a dozen-plus ways of describing the same product, and reconciling that quietly becomes as important to the model as the next acquisition. It's a less visible part of the story than the Wagyu and the imported cheese, but it's the part that lets a curated specialty distributor actually behave like one company at $4 billion in scale instead of a loose federation of the businesses it bought. The insight worth naming directly: Chefs' Warehouse proved that "go public" and "stay family-run and category-obsessed" aren't opposites in this industry. Most specialty foodservice distributors that reach this size get bought by private equity and get flattened into someone else's playbook. This one used the public markets to keep buying the businesses it wanted, on its own terms, without ever becoming the broadliner it was founded to be an alternative to. Every distributor on MDM's list is, underneath the branch counts and truck fleets, running on a catalog. The companies that win long-term are usually the ones that treat that catalog as seriously as they treat the trucks. Sources: [MDM Top Distributors](https://www.mdm.com/top_distributors), [investors.chefswarehouse.com](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-reports-fourth-quarter-2025-financial-results), [Chefs' Warehouse IPO pricing release](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-inc-announces-pricing-its-initial-public), [Allen Brothers acquisition announcement](https://investors.chefswarehouse.com/static-files/68e89857-7224-4da3-9e25-a402b4ab63fa), [Del Monte Meat Co. acquisition release](https://investors.chefswarehouse.com/news-releases/news-release-details/chefs-warehouse-completes-acquisition-del-monte-meat-company), [Q1 2026 10-Q (Italco)](https://investors.chefswarehouse.com/static-files/f26341e6-1d75-4f7c-80da-9683270af81b) --- # United Natural Foods: The Distributor Behind Whole Foods Source: https://www.anglera.com/blog/unfi-distributor-playbook Published: 2026-08-31 Industries: grocery-cpg ![United Natural Foods: The Distributor Behind Whole Foods](/og/hero-unfi-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* United Natural Foods lands on [MDM's 2026 Top Distributors](https://www.mdm.com/top_distributors/) Food & Beverage list at $31.8 billion in revenue, a number that puts it behind only Sysco, Performance Food Group and US Foods among the country's grocery haulers. But UNFI did not start as a full-line grocery giant. It started as two counterculture warehouses on opposite coasts, and the way it got from there to here explains both its scale and its most unusual risk. ## Two co-ops, one merger In 1976, Michael Funk started Mountain People's Warehouse out of a barn in Auburn, California, stocking the bulk bins of natural food co-ops. A year later, on the other coast, Norman Cloutier launched Cornucopia Natural Foods in Connecticut and Rhode Island to do the same for New England's health-food stores. Neither company set out to build a national distribution network. They were regional plumbing for a niche the mainstream grocery trade did not yet take seriously. The two operations merged in 1996 to form United Natural Foods, immediately creating a bi-coastal distributor with reach no single natural-foods warehouse could match, and the combined company went public on Nasdaq that same year to fund a buying spree of smaller regional distributors. That pattern, roll up the fragmented natural-foods supply chain one warehouse at a time, defined UNFI for the next two decades, according to [Wikipedia's summary of the company's history](https://en.wikipedia.org/wiki/United_Natural_Foods) and the company's own [About page](https://www.unfi.com/about-us.html). By the late 1990s, a small Austin chain called Whole Foods Market had become UNFI's anchor customer, riding the same organic-food wave upmarket into the mainstream. ## The bet that doubled the company overnight The defining move came in 2018, when UNFI agreed to buy Supervalu, a struggling conventional grocery wholesaler and retailer, for $2.9 billion. It was a strange marriage on paper: a specialty natural-foods distributor absorbing a company built on fast-turning conventional groceries and legacy retail banners like Cub Foods. [Grocery Dive's coverage at the time](https://www.grocerydive.com/news/grocery--with-supervalu-acquisition-unfi-gets-a-company-in-transition/533819/) noted that UNFI was buying a company still finding its footing in wholesale, betting it could out-execute where Supervalu's own management hadn't. The deal closed that October, and it reset what UNFI was. Combined, the two companies ran more than 60 distribution centers, carried roughly 250,000 SKUs and served over 45,000 customers, per [Grocery Dive's report on the deal's completion](https://www.grocerydive.com/news/unfi-completes-transformative-29b-supervalu-acquisition/540291/). UNFI stopped being the country's biggest organic specialist and became something closer to a universal grocery utility, stocking everything from kombucha to canned soup for independent grocers, regional chains and national retailers like Kroger, Target and Costco. The natural-foods roots never disappeared, but the center of gravity shifted to full-line conventional distribution almost overnight. ## Betting the company on one customer, on purpose Here is the insight that does not show up on UNFI's About page: this company has built its entire modern growth strategy around deepening, not diversifying away from, one customer relationship. Whole Foods Market, now owned by Amazon, has been UNFI's largest account since the 1990s, and reporting on the company's SEC filings has put that single customer at somewhere between 18% and 25% of net sales depending on the year, easily the largest concentration in the distributor's book. Most companies would treat that as a vulnerability to hedge. UNFI has instead leaned in. In 2024 it extended its primary distribution agreement with Whole Foods all the way to May 2032, an eight-year extension announced well ahead of the prior deal's 2027 expiration, according to the [company's own press release](https://www.unfi.com/news-and-resources/articles/news/unfi-contract-renewal-whole-foods-market.html) and [Grocery Dive's coverage of the extension](https://www.grocerydive.com/news/unfi-extends-whole-foods-distribution-deal-2032/716818/). The stock jumped nearly 5% on the news. Locking in a customer that large, that far out, is a statement that UNFI sees itself less as one vendor among several and more as Whole Foods' outsourced supply chain department. That posture paid off for years. Then in June 2025 it showed its cost. A cyberattack forced UNFI to shut down its entire ordering and distribution network, and because Whole Foods and dozens of other retailers route so much volume through UNFI's systems, shelves across the country went empty within days. [CNN's coverage of the incident](https://www.cnn.com/2025/06/10/business/whole-foods-cyber-attack-unfi) and [Cybersecurity Dive's reporting on the earnings impact](https://www.cybersecuritydive.com/news/unfi-cyberattack-reduce-quarterly-earnings/751849/) both traced a straight line from one company's network outage to a national supply disruption, with UNFI telling the SEC the incident would measurably dent quarterly sales and raise costs. CEO Sandy Douglas's response was candid rather than defensive: a distributor at this scale, he said, has to be "both high capability and humble when it relates to cybersecurity." That is the real strategic tension in UNFI's story. The same concentration that makes the Whole Foods relationship a growth engine also makes UNFI a single point of failure for a meaningful slice of the American grocery supply chain. Diversify the customer base and you dilute the moat that makes you indispensable to your biggest partner. Deepen the dependency and one bad week in IT becomes a national news story about empty produce aisles. UNFI has chosen depth, and by fiscal 2025 it was still hitting its free cash flow targets despite the disruption, which suggests the bet is holding, at least for now. ## A distributor built twice UNFI has essentially been built twice: once by two regional co-op warehouses merging to cover a coast-to-coast niche, and again by absorbing Supervalu to become full-line grocery infrastructure. Both rebuilds were driven by the same instinct, that scale and breadth beat specialization in a business where margin comes from moving cases efficiently, not from any single hot product line. Every company in this series wins or loses on unglamorous infrastructure: the branches, the fleets, the catalogs, and, for a company whose network outage can empty a nation's produce aisles, the data pipes that keep the whole system talking to itself. --- # Top JanSan, Packaging & Disposables Distributors 2026 Source: https://www.anglera.com/blog/top-jansan-packaging-distributors-2026 Published: 2026-08-31 Industries: plumbing, jan-san, mro-industrial ![Top JanSan, Packaging & Disposables Distributors 2026](/og/hero-top-jansan-packaging-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Three separate mergers changed who owns the top of this vertical in the space of about eighteen months, which makes 2026 a strange year to try to rank it: some of the biggest names on this list didn't exist in their current form a year ago. Layered onto that churn is a Digital Readiness Index spread that runs from 54 to 70 among the seven companies we could measure, with the smallest revenue figure in that group posting the top score. See the [full Top Distributors 2026 index](/top-distributors-2026) for how this cut fits the other nineteen. ## The 2026 ranking | Rank | Company | Revenue | Archetype | Digital Readiness Index | |---|---|---|---|---| | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | $31.3B (CY2025) | scale-aggregator / branch-density | 58 | | 13 | [Network Distribution](/blog/network-distribution-distributor-playbook) | $28B (systemwide, global) (FY2026) | scale-aggregator / program-supplier | not measured (not-in-set) | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B (FY2025) | scale-aggregator | 66 | | 29 | [Imperial Dade](/blog/imperial-dade-distributor-playbook) | $10B+ (FY2025) | pe-rollup / branch-density | 54 | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B (FY2025) | program-supplier / branch-density | 55 | | 36 | [Uline](/blog/uline-distributor-playbook) | $8.1B (est.) (CY2025, est.) | catalog-native / scale-aggregator | 56 | | 50 | [Veritiv](/blog/veritiv-distributor-playbook) | $5.9B (FY2023, dated) | pe-rollup / scale-aggregator | 61 | | 66 | [NFI Industries](/blog/nfi-industries-distributor-playbook) | $3.6B (FY2025, est.) | Program-supplier / scale-aggregator | not sampled | | 80 | [UFP Industries](/blog/ufp-industries-distributor-playbook) | $2.00B (FY2025, segment) | scale-aggregator / program-supplier | not measured (not-in-set) | | 89 | [TricorBraun](/blog/tricorbraun-distributor-playbook) | $1.4B (stale, FY2020 TTM) (FY2020, dated) | scale-aggregator / technical-specialist | 70 | | 90 | [Global Industrial](/blog/global-industrial-distributor-playbook) | $1.38B (FY2025) | catalog-native | not measured (not-in-set) | | — | [Aramsco](/blog/aramsco-distributor-playbook) | not disclosed | pe-rollup / branch-density | not measured (not-in-set) | | — | [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) | not disclosed | catalog-native | not measured (no public catalog) | | — | [Pollock Orora](/blog/pollock-orora-distributor-playbook) | not disclosed | technical-specialist / program-supplier | not measured (not-in-set) | | — | [The Home Depot (Pro)](/blog/home-depot-pro-distributor-playbook) | not disclosed | branch-density / scale-aggregator | not measured (not observable) | ![Digital Readiness Index pillar breakdown for measured JanSan, Packaging & Disposables distributors](/charts/top-2026/jansan-packaging.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* ## Who leads, and why the ownership map keeps moving The consolidation this cycle is not incremental. [Imperial Dade](/blog/imperial-dade-distributor-playbook) completed its merger with BradyPlus on March 12, 2026, combining two PE-sponsored roll-ups into a single JanSan, foodservice and industrial packaging distributor north of $10B in revenue and 13,000-plus employees, financed in part by a $2.8B JPMorgan term loan. That deal caps 97 acquisitions Imperial Dade has done since the Tillis family took control in 2007 under Advent International and Bain Capital, and it folds in BradyPlus's own history as three sequential PE mergers (Brady Industries plus IFS, then Envoy Solutions, then Imperial Dade), each sponsor keeping a board seat rather than cashing out. [Network Distribution](/blog/network-distribution-distributor-playbook) ran a parallel play, allying with Packaging Distributors of America on March 27, 2026 to push its 75-plus independently owned regional distributors into industrial packaging alongside legacy JanSan and foodservice lines, reporting 850-plus distribution centers across 52 countries and roughly $28B in systemwide revenue (reported as systemwide and global, not a single company's consolidated total, per our data). Full PDA integration is targeted for July 1, 2026. [Veritiv](/blog/veritiv-distributor-playbook) is running the same strategy from the packaging-manufacturing side. Since CD&R took it private in 2023, Veritiv has closed at least six acquisitions, the largest being the roughly $1.2B purchase of Orora Limited's North American packaging arm in December 2024, which brought the [Pollock Orora](/blog/pollock-orora-distributor-playbook) brand and its in-house corrugated manufacturing under the Veritiv roof. Veritiv then sold its Rigid Containers business to [TricorBraun](/blog/tricorbraun-distributor-playbook) in 2025 to sharpen its focus, and TricorBraun installed a new CEO, former FleetPride and Grainger/Zoro executive Kevin Weadick, in May 2025. Three of the largest names in this vertical changed hands or absorbed a competitor within the last eighteen months. The archetype mix explains why roll-ups dominate here rather than technical specialists. JanSan supplies, packaging materials and disposables are high-volume, comparatively undifferentiated categories where national-account buying power and delivery density matter more than engineering depth, which is exactly what [Ferguson's](/blog/ferguson-distributor-playbook) steady tuck-in cadence and [Grainger's](/blog/grainger-distributor-playbook) centralized national-account model are built to sell. The exceptions prove the point: Pollock Orora is classified technical-specialist outright and TricorBraun carries it as a secondary tag, both tied to custom packaging engineering, and [Uline](/blog/uline-distributor-playbook) and McMaster-Carr sit in the catalog-native camp, self-serve operations built around published stock and next-day delivery rather than a field sales force. ## What the Digital Readiness Index found We measured seven of the fifteen companies in this cut against the [Digital Readiness Index methodology](/top-distributors-2026/methodology): five live product pages, pulled from the middle of five different category listings on each company's own public catalog ([Uline's](/blog/uline-distributor-playbook), whose pages block standard clients, was read through a full browser session, disclosed on its scorecard). This vertical's median score of 58 matches the full index's median exactly, but the seven-company range (54 to 70) hides more than it shows. Grainger's product-data pillar is the standout number in the cut: 31 of 35 points, built on a median of 47 structured attributes per sampled page, roughly triple what any other measured company here returned. For a buyer trying to match a specific mop head, liner gauge or glove size against what's already on a shelf, that depth is the difference between filtering and reading. But Grainger's agent-readiness score, 9 of 20, is the lowest in the group, because its robots directives explicitly block AI crawlers, the one clear block in this cut and the reason its overall score (66) trails TricorBraun despite a stronger catalog. TricorBraun's 70 is the cut's high score, carried by a maxed-out commerce transparency pillar (20 of 20) and the only agent-readiness score above 18, built on the cut's only confirmed product structured data (JSON-LD) and a robots stance our data records as a partial AI-crawler accommodation rather than silence. Its median attribute count, 14, is unremarkable next to Grainger's, but its consistency spread, the gap between its richest and thinnest sampled page, is just 4, the tightest in the cut: what a buyer finds on one product page they can expect on the next. Ferguson is the odd result: an overall 58, driven almost entirely by a strong answerability pillar (19.5 of 25) and full marks on public pricing, but a median attribute count of 0 and a product-data pillar of just 11, second-lowest here after Uline's 10.5. A page can show a clean photo, prose and a price and still withhold the structured spec table a buyer needs to filter by size or material, or that an agent needs to match the SKU elsewhere — exactly what the product-data pillar catches. Imperial Dade shows the inverse: an 80 percent GTIN rate, the cut's highest, but a public-pricing rate of 0, every sampled page gated behind an account, the lowest transparency score (6 of 20) here. Packaging and disposables buyers typically need to compare mil thickness, case-pack count, ply or environmental certification across vendors before ordering; a median attribute count in the low teens, where most of this cut lands outside Grainger, leaves real filtering gaps, and Fastenal's missing sitemap compounds that by making its product URLs harder for a crawler to find at all. ## Where this settles The interesting fact for 2026 is that scale and digital shelf quality are not moving together. Imperial Dade, freshly combined into a $10B-plus platform, posts this cut's lowest measured score; TricorBraun, the smallest revenue figure in the measured group and reported off a stale FY2020 figure, posts the highest. As Imperial Dade's rebrand finishes resolving (imperialdade.com now redirects to imperialbrady.com while the storefront still mixes both names) and Network Distribution completes PDA integration, the open question for the next cycle is whether digital catalog investment gets folded into these consolidation efforts, or stays a slower-moving project layered on top of the branch and SKU work consuming 2026. --- # Top Safety Distributors 2026: Programs Beat Catalogs Source: https://www.anglera.com/blog/top-safety-distributors-2026 Published: 2026-08-29 Industries: electrical, mro-industrial, fasteners ![Top Safety Distributors 2026: Programs Beat Catalogs](/og/hero-top-safety-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* [Wesco International](/blog/wesco-distributor-playbook), the largest company in this vertical by revenue at $23.5B (FY2025), scored a 40 — the lowest measured number here, and one that took a full browser session to obtain because its catalog blocks standard clients — while [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook), roughly a sixth its size, finished one point behind the vertical's best measured score. Seven of the twenty companies here run some version of the same play: bundle PPE into a managed program sold on compliance risk, not unit price. That concentration is what this data set is actually about. ## The vertical, ranked | Rank | Company | Revenue | Archetype | DRI | |---|---|---|---|---| | 15 | [Wesco International](/blog/wesco-distributor-playbook) | $23.5B (FY2025) | Scale-aggregator | 40 | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B (FY2025) | Scale-aggregator | 66 | | 31 | [Motion (Genuine Parts Company)](/blog/motion-distributor-playbook) | ~$9.0B (FY2025, segment) | Branch-density / scale-aggregator | 62 | | 32 | [Winsupply](/blog/winsupply-distributor-playbook) | $8.4B (FY2026) | Branch-density | not measured (no public catalog) | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B (FY2025) | Program-supplier / branch-density | 55 | | 40 | [Airgas, an Air Liquide company](/blog/airgas-distributor-playbook) | $7.5B (FY2024, NA, est.) | Scale-aggregator / branch-density | 46 | | 47 | [White Cap](/blog/white-cap-distributor-playbook) | $6.1B (FY2025) | PE-rollup / branch-density | not sampled | | 65 | [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) | $3.77B (FY2025) | Program-supplier / catalog-native | 65 | | 83 | [Vallen Distribution](/blog/vallen-distributor-playbook) | $1.9B (FY2021, NA, est.) | Program-supplier / technical-specialist | not sampled | | 90 | [Global Industrial Company](/blog/global-industrial-distributor-playbook) | $1.38B (FY2025) | Catalog-native | not sampled | | 126 | [Martin Supply](/blog/martin-supply-distributor-playbook) | $279M+ (FY2024) | Branch-density | not sampled | | 131 | [Mallory Safety and Supply](/blog/mallory-safety-distributor-playbook) | $200M (FY2021, est.) | Branch-density | not sampled | | — | [Aramsco](/blog/aramsco-distributor-playbook) | not disclosed | PE-rollup / branch-density | not sampled | | — | [EWIE Group](/blog/ewie-group-distributor-playbook) | not disclosed | Program-supplier | not sampled | | — | [Magid Glove & Safety](/blog/magid-distributor-playbook) | not disclosed | Program-supplier / catalog-native | not sampled | | — | [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) | not disclosed | Catalog-native | not measured (no public catalog) | | — | [SPI Health and Safety](/blog/spi-health-safety-distributor-playbook) | not disclosed | Branch-density / PE-rollup | not sampled | | — | [Stauffer Glove and Safety](/blog/stauffer-glove-distributor-playbook) | not disclosed | Branch-density / program-supplier | not sampled | | — | [Würth Industry North America](/blog/wurth-industry-distributor-playbook) | not disclosed | Program-supplier / branch-density | not yet measured (catalog verified live) | | — | [Total Safety Supplies & Solutions](/blog/total-safety-supplies-distributor-playbook) | not disclosed | Program-supplier / catalog-native | not sampled | ![Digital Readiness Index pillar breakdown for measured Safety distributors](/charts/top-2026/safety.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Ranks and revenue come from Anglera's [full Top Distributors 2026 index](/top-distributors-2026); scores use the [Digital Readiness Index methodology](/top-distributors-2026/methodology). Six of twenty companies here were measured; the rest sat outside this round's sample. Three unmeasured companies hit distinct obstacles worth separating from the rest: a live catalog verified at Würth but not yet sampled, and no reachable per-product catalog at Winsupply and McMaster-Carr. Neither is a statement about how the company runs its business. ## Program suppliers own this vertical Program-supplier is the primary archetype for seven of the twenty companies here, more than any other model, ahead of branch-density (six) and scale-aggregator (three: Wesco, Grainger, and Airgas). The logic is category-specific: safety and PPE purchasing carries OSHA compliance exposure a purchasing manager often can't own alone, so vendors sell the program upward instead of the SKU. Arbill's positioning made this explicit while it still ranked in this cut: its EHS Managed Services business was sold "to CFOs on risk-cost avoidance rather than to purchasing managers on unit price," and its 2025 TruSense wearable proximity-sensing system extended that into plant-floor safety. Würth's Northern Safety & Industrial division bought ORR Safety in 2025 for a similar reason, a $125M-plus PPE distributor expanding private-label programs into rail, automotive, and government accounts. Magid Glove & Safety pairs the model with in-house manufacturing at a 700,000-square-foot Illinois campus, private label alongside 700-plus third-party brands. Branch-density is the second most common model, which tracks with how safety products physically move: gloves, respirators, and gas cylinders are inventory customers want close by, not shipped overnight from one national hub. Mallory Safety and Supply built a 16-to-22-branch network across nine Western states through 20 acquisitions since 2005, self-funded, no private equity, no stock listing. SPI Health and Safety took a similar path, 24 acquisitions since 1972 to reach 18 Canadian locations. Scale-aggregator status belongs to Grainger, Wesco, and Airgas for a reason: each runs national-account and purchasing scale a regional operator can't match, whether that's Grainger's large distribution centers, Wesco's national business units, or Airgas's nearly 800 branches and fill and production plants. Private equity has a foothold but hasn't remade this category the way it has elsewhere in the index; only Aramsco and White Cap carry pe-rollup as a primary label, and White Cap's February 2026 combination with Colony Hardware, following roughly 17 tuck-ins in 2024 and 2025, is the more active of the two. ## What the Digital Readiness Index found Six companies were measured, and the spread between them is more instructive than any single number. Grainger's 66 leads, built on the strongest product-data pillar here (31 of 35) and full public pricing, but it's also the only company that explicitly blocks AI crawlers rather than staying silent. Under this methodology silence scores full marks, so Grainger's agent-readiness pillar (9 of 20) reflects a stated policy, not an oversight. MSC sits one point behind at 65, with a perfect commerce-transparency score (20 of 20) and the best identifier match rate, 75% GTIN coverage against Grainger's zero, even though its buyer-answerability pillar (7.8 of 25) is the second-weakest of the six. Below that pair, revenue stops predicting score. Motion, the GPC subsidiary heading toward its own public listing under the planned NAPA and Industrial split, scores 62 with every sampled page fully public: price, availability, complete spec table, no login. But its consistency spread of 45 points is the widest in the sample, more than three times Grainger's 14, meaning Motion's catalog treats some categories like a modern storefront and others like an afterthought. Fastenal, at 55, inverts the usual shape: its buyer-answerability pillar (16.6 of 25) is the strongest of the six, but median attributes sit at just 11 and its sitemap failed the discoverability check, consistent with growth built on onsite and vending rather than catalog browsing. Airgas, at 46, is the number to sit with: a median of 4 attributes per sampled page, zero GTIN matches, only 80% of pages showing a price. A buyer filtering for cylinder size, CGA fitting type, or gas purity grade can't do that with four attributes. And Wesco's 40, the floor of the measured set, exists at all only because buy.wesco.com — the real catalog, a portal also now serving former Anixter customers, behind a corporate site that funnels to a lead-capture form — serves an error to standard clients and had to be read through a full browser session, as its scorecard discloses. What a logged-out buyer sees there carries a respectable product-data pillar (21.1 of 35), but no sampled page showed a price and the machine-and-agent pillar is scored from what a standard client can retrieve, which for this site is nothing. The other fourteen companies have no score to compare. Würth's own site has category pages for PPE and MRO supplies but no product-level pages behind them; its Northern Safety banner, though, runs full per-product e-commerce, verified live this edition, so Würth's status is now "not yet measured (catalog verified live)" and it is queued for the next run. McMaster-Carr keeps its no-public-catalog status despite an archetype rationale calling its site "the industry's widely-cited reference standard for digital-shelf product data": the family-level pages found were genuinely rich, full spec tables, published stock, no login, but structured around SKU families rather than per-product URLs. ## Where the vertical is heading The near-term motion in Safety is expansion of the program-supplier model, not a shift away from it. Würth folding ORR Safety into a private-label PPE push, Arbill extending EHS Managed Services into wearable sensing, and Levitt-Safety's 2025 NIOSH approval for its own N95 respirator line all point the same direction: distributors are adding bundled capability rather than building the richest public product page. A program-supplier selling compliance risk to a CFO has less obvious incentive to invest in public product data than a catalog-native operator does, and the 26-point range across six measured companies here, with wildly different consistency spreads, suggests this vertical hasn't decided that a managed program and a strong digital shelf have to be the same investment. --- # Tricon Energy: The Chemical Trader Betting on Full Ownership Source: https://www.anglera.com/blog/tricon-energy-distributor-playbook Published: 2026-08-28 Industries: oilfield-energy ![Tricon Energy: The Chemical Trader Betting on Full Ownership](/og/hero-tricon-energy-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Tricon Energy lands on two of Modern Distribution Management's [2026 Top Distributors](https://www.mdm.com/top_distributors) lists, Plastics and Lubricants & Fuels, with $14.0 billion in revenue per MDM's report. That places a Houston commodities house founded by a Barcelona-born trader with four employees and a phone line ahead of most household-name industrial distributors on the same list. The story of how it got there runs through a decision most of its peers made in the opposite direction. ## The four-person start Ignacio Torras founded Tricon in Houston in 1996, trading liquid caustic soda and acetone with a handful of colleagues. The company opened its first overseas office in Korea in 1999, in the middle of the Asian financial crisis, then added Shanghai and Istanbul in 2004. It crossed one million metric tons handled in 2002 and $1 billion in sales in 2006, the same year it launched Tricon Plastics. Tricon Dry Chemicals followed in 2008, and Liquid Fuels and Raw Materials units arrived between 2015 and 2017, per the company's own [history page](https://www.triconenergy.com/en-us/who-we-are/history/). By 2024 the firm was moving roughly 24 million tons of chemicals a year out of more than 28 offices in over 100 countries, according to [Forbes](https://www.forbes.com/sites/christopherhelman/2025/12/18/how-this-billionaire-ignacio-torras-commodities-trader-built-the-walmart-of-chemicals/). ICIS now ranks Tricon the [second-largest chemical distributor in the world](https://www.triconenergy.com/en-us/news/tricon-ranked-2nd-largest-chemical-distributor-by-icis/), behind only Germany's Brenntag. ## The insight: Tricon buys the risk everyone else sells off Chemical distribution has spent two decades drifting toward asset-light brokerage: take a fee, move title fast, keep inventory and price exposure off the balance sheet. Tricon runs the opposite playbook. Torras describes it to Forbes as the "Walmart of chemicals": the company buys commodity volumes outright, five thousand tons of polyethylene resin at a time, warehouses them in Houston or another hub, and carries the price and inventory risk itself before breaking the lot into smaller shipments, three hundred tons to Algeria, five hundred to Nigeria, sold to manufacturers who could never place an order at bulk scale. That is a real bet, not a slogan. Taking physical possession means Tricon eats commodity price swings, storage costs, and shipping risk that a pure broker would pass through. The payoff is a role brokers cannot fill: Tricon becomes the buffer between volatile bulk commodity markets and manufacturers who need reliable, right-sized supply regardless of what polyethylene or xylene did that week. It is also why the company needs serious balance sheet muscle. Tricon operates on roughly $2.7 billion in credit lines from banks including Societe Generale and Mitsui Marubeni, per Forbes, capital that funds inventory most of its lean, fee-based competitors never touch. ## Buying when the cycle turns down That credit capacity does double duty as an acquisition engine, and Tricon has used it specifically during industry downturns rather than waiting for better conditions. Q-Logistics and Mexican polymer distributor Polymat joined in 2023, giving Tricon three terminal shipment centers and five-plus warehouses across Mexico, per the company's [announcement](https://www.triconenergy.com/news/tricon-energy-expands-in-mexico-with-acquisition-of-polymat-q-logistics/). eXsource followed in 2024. In Africa, Tricon took an initial strategic stake in West African International Group in March 2025, then converted it to a full acquisition roughly a year later, a two-step structure the company's own release frames as validating the regional partnership before committing fully, per [Tricon's announcement](https://www.triconenergy.com/en-us/news/tricon-strengthens-presence-in-africa-with-full-acquisition-of-west-african-international-group/). Torras told Forbes that larger rival Brenntag "sees us in the rear view mirror" and is closing the gap. Buying distribution assets while competitors retrench is a strategy with an obvious trade-off: it works only if the balance sheet can absorb a downturn that runs longer or deeper than planned, and Tricon's entire model leans on the credit lines holding up through that stretch. ## Staying private in a sector that keeps consolidating into public roll-ups The other quiet tension in Tricon's story is ownership structure. Brenntag, Univar, and most of the scaled chemical distributors are public companies or private-equity roll-ups answering to shareholders on quarterly cycles. Tricon, at $14 billion in revenue, remains privately held and founder-controlled, which is precisely what lets it fund inventory-heavy, countercyclical acquisitions on bank credit rather than managing to a stock price. Torras landed on the 2026 Forbes World Billionaires List with a $1.5 billion net worth, and the company was Forbes' highest-ranking newcomer on its 2025 Top Private Companies list at No. 35. Staying private at that scale, in a sector where nearly every serious competitor has gone public or been rolled up, is itself a strategic choice, one that trades access to public capital markets for the freedom to run a physical, capital-intensive trading book on its own timeline. Tricon also uses that trading flexibility defensively. When new tariffs hit specific import lanes, such as duties on Korean benzene, the company has substituted duty-free alternatives like acetone or styrene monomer that serve similar manufacturing purposes, insulating customers from a policy shock a pure broker would simply pass along, per Forbes. Internally, Torras leans on a blunt operating mantra employees call W2MTC, work two more hours than the competition, and frames the business in cyclical terms: day follows night, and the trader who prepares for the turn is the one still standing when it comes. For a company that has grown from four people trading caustic soda to a $14 billion operation spanning 28 offices, the discipline behind that line is doing more work than the slogan lets on. Distribution rewards the companies willing to hold the inventory, run the warehouse, and own the risk that others structure their way around, and Tricon Energy's rise is a reminder that the unglamorous middle of a supply chain, the tank farm, the credit line, the terminal in Veracruz, is where competitive advantage actually gets built. --- # Top Fasteners Distributors 2026: Why Few Have a Catalog Source: https://www.anglera.com/blog/top-fasteners-distributors-2026 Published: 2026-08-28 Industries: mro-industrial, fasteners, electronic-components ![Top Fasteners Distributors 2026: Why Few Have a Catalog](/og/hero-top-fasteners-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Eleven of the twenty companies in this cut are classified primary archetype program-supplier, more than any other model, which is also why our Digital Readiness Index could only measure five of them. [W.W. Grainger](/blog/grainger-distributor-playbook), [Fastenal](/blog/fastenal-distributor-playbook), and three others ran an open, sampleable public catalog. The rest run vendor-managed inventory, vending fleets, and gated portals built for an embedded sales rep, not a search bar, and that split is the real story here. ## The measured five, and the fifteen that fell outside the sample | Rank | Company | Revenue | Archetype | DRI | |---|---|---|---|---| | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B (FY2025) | scale-aggregator | 66 | | 31 | [Motion (Genuine Parts Company)](/blog/motion-distributor-playbook) | ~$9.0B (FY2025, segment) | branch-density / scale-aggregator | 62 | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B (FY2025) | program-supplier / branch-density | 55 | | 57 | [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) | $4.56B (FY2025) | technical-specialist / scale-aggregator | not measured (not observable) | | 65 | [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) | $3.77B (FY2025) | program-supplier / catalog-native | 65 | | 82 | [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) | $1.98B (FY2025) | pe-rollup / program-supplier | 58 | | 85 | [The Hillman Group](/blog/hillman-group-distributor-playbook) | $1.55B (FY2025) | program-supplier | not measured (not observable) | | 102 | [AFC Industries](/blog/afc-industries-distributor-playbook) | $700M (FY2024) | program-supplier / pe-rollup | unmeasured | | 104 | [Optimas OE Solutions](/blog/optimas-distributor-playbook) | $577M (FY2025) | program-supplier / technical-specialist | unmeasured | | 106 | [Kimball Midwest](/blog/kimball-midwest-distributor-playbook) | $565M (FY2025) | program-supplier | unmeasured | | 110 | [Endries International](/blog/endries-distributor-playbook) | $500M+ (FY2024) | pe-rollup / catalog-native | unmeasured | | 117 | [Bisco Industries](/blog/bisco-industries-distributor-playbook) | $427.9M (FY2025) | branch-density | unmeasured | | 127 | [Bossard (Americas)](/blog/bossard-americas-distributor-playbook) | $275M (approx.) (FY2025, NA, est.) | program-supplier / technical-specialist | unmeasured | | 132 | [Field Fastener](/blog/field-fastener-distributor-playbook) | ~$160M (FY2023, est.) | program-supplier / technical-specialist | unmeasured | | — | [Boeing Distribution](/blog/boeing-distribution-distributor-playbook) | not disclosed | program-supplier | unmeasured | | — | [Copper State Bolt & Nut](/blog/copper-state-distributor-playbook) | not disclosed | branch-density / technical-specialist | unmeasured | | — | [EFC International](/blog/efc-international-distributor-playbook) | not disclosed | pe-rollup / program-supplier | unmeasured | | — | [Incora](/blog/incora-distributor-playbook) | not disclosed | program-supplier / pe-rollup | unmeasured | | — | [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) | not disclosed | catalog-native | not measured (no public catalog) | | — | [Würth Industry North America](/blog/wurth-industry-distributor-playbook) | not disclosed | program-supplier / branch-density | not yet measured (catalog verified live) | ![Digital Readiness Index pillar breakdown for measured Fasteners distributors](/charts/top-2026/fasteners.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Rank is this company's position in Anglera's full [Top Distributors 2026](/top-distributors-2026) index, not a fasteners-only ordering. Only five companies carry a score; the other statuses mean something different for each company, and none of them is a zero, as explained in the [DRI methodology](/top-distributors-2026/methodology). ## Why one archetype owns half this category Fasteners is the clearest case in the index of a product category shaping the businesses that sell it. A bolt or a rivet is cheap per unit, consumed constantly, and stops a production line if it runs out at the wrong moment. That combination rewards a rep who restocks a bin at the customer's facility over a website a buyer has to remember to visit, and eleven of the twenty companies here are built around exactly that: vendor-managed inventory, vending machines, and in-plant programs. Kimball Midwest's rationale is the starkest version of it: "almost no customer-facing branches, instead running a very large outside sales force that restocks maintenance bins... directly at customer facilities." Field Fastener names the same idea as its flagship offer, "Data-Driven VMI Programs," ahead of catalog sourcing. Bossard's own annual report calls the company "a leading distributor of fasteners and a provider of related engineering and logistics services" under what it brands a "Proximity" model. The other archetypes read as exceptions that prove the rule. [W.W. Grainger](/blog/grainger-distributor-playbook) leads on revenue and DRI as a scale-aggregator, but it is less a fasteners specialist than an MRO generalist that happens to carry them, centralizing national-account purchasing from a few large distribution centers rather than running the branch or embedded-rep model most of this list uses. Branch-density shows up in [Motion](/blog/motion-distributor-playbook), where roughly 80% of segment revenue still runs through a physical branch network, and in [Bisco Industries](/blog/bisco-industries-distributor-playbook), whose FY2025 growth is credited to its 51-office sales network rather than SKU count. [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) is the vertical's lone catalog-native, and its own archetype rationale calls it "the industry's widely-cited reference standard for digital-shelf product data." Consolidation runs underneath all of it: [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) is being taken private by majority owner LKCM Headwater at an 81% premium, [The Hillman Group](/blog/hillman-group-distributor-playbook) has a $315M deal for Kanebridge in flight on top of a Campbell Chain & Fittings acquisition, and [Endries International](/blog/endries-distributor-playbook), an MSD Partners-backed platform, just added Blue Chip Engineered Products to its own acquisition cadence. ## What five public catalogs actually showed The program-supplier model explains the small sample directly. [The Hillman Group](/blog/hillman-group-distributor-playbook)'s real catalog, shop.hillmangroup.com, greets visitors with "Register today to begin ordering" and gates every price behind a login, and its pages defeated our standard extractor, which is why its entry reads not observable rather than a score. [Würth Industry North America](/blog/wurth-industry-distributor-playbook)'s own site stops at category landing pages, but a verification pass found a live public catalog it does run — Northern Safety, the e-commerce storefront Würth has owned since 2015 — so its entry now reads not yet measured: the catalog is verified live but hasn't been sampled under the index's rules, and no score is published without a sample. Eleven more companies, from Boeing Distribution to Kimball Midwest, sit outside this cut's five-company measurement scope entirely, a scoping fact, not a mark against how any of them runs its business. That leaves five companies running open, sampleable catalogs, and the range between them (55 to 66, against this vertical's median of 62 and the full index's median of [58](/top-distributors-2026/methodology)) is where the real signal is. [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) posts the best identifier match rate in the group at 75% GTIN coverage, the number that lets a buyer confirm a fastener page here is the same part as a page anywhere else, alongside a full 20-of-20 on commerce transparency. [Motion](/blog/motion-distributor-playbook) scores close behind at 62 and ties MSC on transparency, but its consistency spread of 45, the widest here, means the five sampled pages ranged from thin to genuinely deep depending on which category the crawler landed in. That is a more useful number than the median-attribute count of 34 sitting next to it: the gap isn't between Motion and its competitors, it's between Motion's own pages. [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook)'s 58 splits in an unusual way: a perfect 20-of-20 on machine and agent readiness, meaning structured data, sitemap coverage, and crawler access are in order, against a 6-of-20 on commerce transparency, because the operating-company storefront sampled here publishes 0% public pricing. A crawler can read the page; a buyer still can't see a price without logging in. [Fastenal](/blog/fastenal-distributor-playbook), the name most synonymous with this category, scores lowest at 55, with a median attribute count of just 11 and no discoverable sitemap. For a buyer matching a fastener by thread pitch, drive type, head style, grade, or coating, an 11-attribute page is thin, though Fastenal's spread of 6 is the tightest in the group: whatever depth it has, it applies evenly. Only Grainger loses points here, for an explicit AI crawler block; the other four are simply silent on the question, and silence scores full marks under the methodology. ## Where this settles The measurement gap here is unlikely to close on its own. A vertical where 11 of 20 competitors are built around an embedded rep restocking a bin has little commercial reason to publish an open catalog, and the roll-up wave now underway, DSG going private, Endries and EFC still bolting on niche fastener distributors, only concentrates more volume inside that model. The more interesting question for 2026 is whether the buyers who do shop in the open, maintenance techs and OEM engineers cross-referencing a part number, keep drifting toward the five companies willing to show them a page at all. --- # Charbone: The Hydrogen Startup That Became a Gas Distributor Source: https://www.anglera.com/blog/charbone-distributor-playbook Published: 2026-08-27 Industries: welding-gas ![Charbone: The Hydrogen Startup That Became a Gas Distributor](/og/hero-charbone-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Charbone Corporation shows up in the Gases & Welding Supplies column of [MDM's 2026 Top Distributors report](https://www.mdm.com/top_distributors/), the closest thing the channel has to a scoreboard. It sits there next to companies with decades of branch networks and fleets of thousands of cylinders. Charbone has neither. It has an electrolyzer plant in Sorel-Tracy, Quebec, five helium trailers, and a business plan that was, until about eighteen months ago, entirely about a different molecule. ## A hydrogen company that hadn't sold hydrogen yet Charbone was incorporated in 2018 as a green-hydrogen developer, betting that Quebec's cheap, low-carbon hydroelectric power made it an unusually good place to run electrolyzers and produce ultra-high-purity (UHP) hydrogen without shipping it across a continent first. The company listed on the TSX Venture Exchange in May 2022 under the ticker CH, later adding an OTCQB line (CHHYF) and a Frankfurt listing, and spent the years that followed building its flagship modular plant at Sorel-Tracy. That plant didn't reach commercial production until December 2025, per the company's own updates — nearly four years after the public listing. For most of its life as a public company, Charbone was a construction story, not a distribution story. ## The pivot the name change made official In March 2025, shareholders approved dropping "Hydrogen" from the corporate name. The change became effective in June 2026, and the company has been explicit about why: it wanted the name to match a business that had grown past single-molecule production into what it calls a full-stack industrial gases platform, spanning hydrogen, helium, oxygen, nitrogen and argon across production, purification, compression, storage and distribution, according to [Industrial Distribution](https://www.inddist.com/operations/news/22968357/charbone-shortens-name-to-reflect-a-broader-industrial-gases-platform). The rebrand wasn't cosmetic. It tracked a real operating shift: while Sorel-Tracy was still commissioning, Charbone launched an Industrial Gases Distribution Division built on gas it doesn't make itself, contracting supply from third-party producers and reselling it into welding, metal processing, manufacturing and lab accounts across Quebec and Ontario. ## Riding someone else's shortage The timing lines up with a genuine supply shock. Disruptions tied to Qatar's Ras Laffan complex, historically the source of roughly a third of the world's helium, combined with shipping constraints through the Strait of Hormuz to squeeze North American helium markets through 2025 and into 2026, per reporting summarized by [Indian Chemical News](https://www.indianchemicalnews.com/chemical/charbone-expands-helium-fleet-fivefold-as-global-supply-crunch-fuels-demand-31170). Major industrial gas suppliers, optimized for volume contracts with the largest accounts, rationed supply. Charbone's read on the moment was that customers locked out of primary allocations are often contractually free to source from a secondary supplier, and it built a delivery fleet to catch that overflow: one dedicated helium trailer in the fourth quarter of 2025, five by mid-2026, with capacity to add five more within months. In one stretch the company added 22 new helium customers across Quebec spanning welding, metal processing, advanced manufacturing and lab services, and CEO Dave Gagnon called it confirmation of "our diversification strategy" in a company release distributed via [NewMediaWire](https://www.newmediawire.com/news/charbone-announces-the-addition-of-22-new-helium-customers-in-quebec-and-continues-the-expansion-of-its-industrial-gas-platform-7087163). ## The insight: a distributor built backwards Most names on MDM's gases list earned their spot by scaling a production-and-fill network over decades, then layering distribution on top. Charbone did it in the opposite order. It spent years and most of its capital on a single production asset that wasn't shipping product, then used the distribution arm, gas it sources rather than makes, as the fast path to revenue and market presence while the production side caught up. That's an unusual sequence for a "top distributor" entrant: the plant came first and the customer base came second, but the customer base showed up before the plant was contributing meaningfully to what gets sold. Charbone is, in effect, renting its way into distribution relationships it hopes its own hubs will eventually supply. The company frames its target customer as the mid-tier industrial account that the majors have stopped prioritizing: welding shops, regional manufacturers, labs, and specialty technical services that a global supplier optimized for hyperscale contracts is structurally less interested in serving well, according to the strategic rationale laid out in coverage from [StockTitan](https://www.stocktitan.net/news/CHHYF/the-supply-gap-no-one-is-filling-how-charbone-is-building-the-uhp-icdrqkcxn460.html). That's a real underserved segment. It's also the segment every regional gas distributor already claims. ## The tension worth naming The numbers keep this in perspective. First-quarter 2026 revenue came in around C$245,000, a large percentage jump off a near-zero prior-year base rather than evidence of scale, and the company posted a net loss of roughly C$2.7 million for 2025, an improvement year over year but still a company funding growth through private placements and a secured convertible loan rather than operating cash flow, per the StockTitan summary. Charbone's helium business also depends on supply agreements with producers it doesn't control, which is exactly the fragility that created its opening in the first place. The bet is that by the time competitors' allocations normalize, Charbone's own hubs, six to eight planned across North America by 2027, will have converted borrowed supply relationships into owned production. Until then, the company is selling other people's molecules to build the customer list its plants are meant to eventually serve. It's a distribution strategy assembled under pressure rather than designed from a blank sheet, and whether that sequence holds up depends on execution nobody outside Charbone can verify yet. What's clear is that a shortage in someone else's supply chain is the reason a hydrogen-production startup now shows up on a welding-gas distributor list at all. This series exists because distribution runs on the unglamorous stuff, catalogs, branches, fleets, and the data behind all three, and Charbone's entry is a reminder that sometimes the fastest way onto that list is to fill a gap the incumbents left open. --- # Top Electronics Distributors 2026: Depth Loses to Access Source: https://www.anglera.com/blog/top-electronics-distributors-2026 Published: 2026-08-26 Industries: electronic-components ![Top Electronics Distributors 2026: Depth Loses to Access](/og/hero-top-electronics-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Component distribution is an eight-company field this cut, and five of them now carry measured Digital Readiness Index scores. The most useful data point in this vertical: the company with eleven times the median product attributes did not win the Digital Readiness Index. It lost, by seven points, to a distributor whose product pages carry almost nothing at all. ## The ranking | Rank | Company | Revenue (fiscal year) | Archetype | DRI Score | DRI Status | |---|---|---|---|---|---| | 11 | [Arrow Electronics](/blog/arrow-electronics-distributor-playbook) | $30.9B | Scale-aggregator | 49 | Measured | | 17 | [Avnet](/blog/avnet-distributor-playbook) | $22.2B | Scale-aggregator / catalog-native | 57 | Measured | | 42 | [D&H Distributing](/blog/dh-distributing-distributor-playbook) | ~$7.0B | Catalog-native / program-supplier | — | Not scored — not sampled | | 52 | [Future Electronics](/blog/future-electronics-distributor-playbook) | $5.17B (est.) | Technical-specialist / scale-aggregator | 68 | Measured | | 61 | [Mouser Electronics](/blog/mouser-distributor-playbook) | $4.1B (dated) | Catalog-native | — | Not in measurement set | | 63 | [DigiKey](/blog/digikey-distributor-playbook) | $3.96B (est.) | Catalog-native | 53 | Measured | | 64 | [TTI Inc.](/blog/tti-distributor-playbook) | $3.78B (dated) | Scale-aggregator / program-supplier | — | Not in measurement set | | 120 | [WPG Americas](/blog/wpg-americas-distributor-playbook) | ~$390M (NA, est.) | Scale-aggregator / technical-specialist | 60 | Measured | ![Digital Readiness Index pillar breakdown for measured Electronics distributors](/charts/top-2026/electronics.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Full index and methodology at [/top-distributors-2026](/top-distributors-2026); the [scoring methodology](/top-distributors-2026/methodology) explains how the four-pillar, 100-point Digital Readiness Index is built from five sampled product pages per site. ## Scale runs this vertical, for a structural reason Four of the eight companies here carry scale-aggregator as their primary archetype, and a fifth, [Future Electronics](/blog/future-electronics-distributor-playbook), lists it as secondary. That concentration makes sense once you look at how the business actually works. Component distribution isn't won by owning the closest branch to a buyer, it's won by owning the widest supplier line card and the deepest inventory buffer, so a customer can source thousands of disparate parts through one relationship instead of hundreds. [Arrow Electronics](/blog/arrow-electronics-distributor-playbook) runs the model at global scale: over 140 sales facilities but only 39 distribution and value-added centers across more than 85 countries, per its archetype rationale, concentrating fulfillment in a small number of large hubs rather than spreading it thin. [TTI Inc.](/blog/tti-distributor-playbook) runs the same logic domestically, with 13 major distribution centers and over 3 million square feet of warehouse space standing in for a branch network, feeding its "available-to-sell inventory" promise to production-volume aerospace and defense manufacturers. [DigiKey](/blog/digikey-distributor-playbook) and [Mouser Electronics](/blog/mouser-distributor-playbook) — two of the cut's three catalog-native distributors, alongside newly added [D&H Distributing](/blog/dh-distributing-distributor-playbook) — compete on a different axis entirely: the low-quantity prototype order that scale-driven distributors are structurally bad at filling profitably. DigiKey ships same-day from a published in-stock catalog of more than 17.5 million components across nearly 3,000 manufacturers, with no salesperson required to place an order. [WPG Americas](/blog/wpg-americas-distributor-playbook) sits in an odd third position: a subsidiary of WPG Holdings, Asia's largest electronics distributor and franchise partner to nearly 250 suppliers, it inherits scale-aggregator economics from its parent's centralized purchasing rather than building local branch density of its own, with a technical-specialist streak layered on top. The two largest companies by revenue in this vertical, Arrow ($30.9B) and Avnet ($22.2B), both block standard clients, so their catalogs were measured through a full browser session, disclosed on their scorecards: Arrow scored 49, Avnet 57. Future Electronics, re-measured with the standard pipeline after a transient failure in the first run, posted a 68, the vertical's top score, on an FY2023 revenue figure that predates its full absorption into WT Microelectronics, which credited "Future's recovery" for helping push its own consolidated FY2025 results to record highs. ## What the index actually found The sharpest contrast among the five measured companies is [DigiKey](/blog/digikey-distributor-playbook) against [WPG Americas](/blog/wpg-americas-distributor-playbook), and the pillar breakdown is where it gets interesting. DigiKey wins product data depth comfortably, 23 of 35 points against WPG's 10.1, and its median attribute count of 34 per sampled page is what you'd expect from a company whose entire pitch is parametric search across millions of components. WPG's median is 3. Three attributes is barely enough to tell one product from another, let alone let a buyer filter by package type, tolerance, voltage rating, or mounting style, which is the kind of screening any real component search has to support. The gap tracks the underlying catalogs: DigiKey's stated 17.5 million SKUs against the roughly 3,394 SKUs on WPG Americas' public storefront, a much smaller and more general-purpose site. Yet WPG still finishes ahead on the overall score, 60 to 53, because the other two pillars invert the picture. WPG scored 19.6 of 20 on commerce transparency against DigiKey's 12, with a 100 percent price-visibility rate on its sampled pages versus 0 percent for DigiKey. And WPG posted a clean 20 of 20 on machine and agent readiness, with confirmed product structured data and a working sitemap, against DigiKey's 9 of 20, where the sitemap check failed. Worth noting on that pillar: WPG's AI-crawler stance reads as "unaddressed" in our data, and under this index's scoring that means no explicit block was found, which scores full marks rather than a penalty. DigiKey's stance reads as "partial." Neither company's product pages were flagged for containing a GTIN in either sample. DigiKey's consistency spread of 29 points, against WPG's spread of just 2, tells the more granular story: DigiKey's pages vary widely in how much a given manufacturer's listing gets filled out, a plausible byproduct of aggregating data from nearly 3,000 different suppliers, while WPG's five sampled pages were treated almost identically to one another, for better and worse. The practical read for a buyer: DigiKey's catalog will actually answer "what part is this and will it fit," but a buyer has to work harder to see the price and stock status without contacting someone. WPG's storefront tells you the price instantly and a crawler can index it cleanly, but the page itself won't tell a design engineer much about the part. ## Where this settles The measured companies are demonstrating variations on the same unfinished job: rich product data and open commerce data haven't fully landed on the same page at any of them. The vertical's biggest revenue holders now have scores, and neither leads: Arrow's 49 is the lowest measured score in the cut and Avnet's 57 sits mid-pack, which is itself worth tracking as Arrow works through its Dell ECS wind-down and leadership transition alongside Avnet's new Chief Digital Officer mandate. If digital readiness in electronics distribution converges toward WPG's transparency-and-structure profile without losing DigiKey's attribute depth, that's the version of this catalog an AI shopping agent could actually shop from without a phone call. --- # NFI Industries: The Jan-San Distributor With No Products Source: https://www.anglera.com/blog/nfi-industries-distributor-playbook Published: 2026-08-26 Industries: jan-san ![NFI Industries: The Jan-San Distributor With No Products](/og/hero-nfi-industries-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* NFI Industries lands at #14 on the jan-san list in [Modern Distribution Management's 2026 Top Distributors report](https://www.mdm.com/top_distributors), the annual ranking of North America's largest distribution companies, with more than $3.7 billion in total company revenue. Scroll the rest of that jan-san list and every other name sells cleaning chemicals, paper, or equipment under its own account. NFI does not. It is a 94-year-old, fourth-generation, family-owned trucking and warehousing company from Cherry Hill, New Jersey, and its presence on a product-category ranking is itself the story worth telling. ## The company that shows up without inventory NFI never takes title to a case of degreaser or a pallet of hand soap. What it sells jan-san manufacturers and distributors is the infrastructure around the product: warehouse space, labor, transportation, and the systems that move goods from a plant to a retail shelf. Its [consumer packaged goods logistics unit](https://www.nfiindustries.com/consumer-packaged-goods-logistics/) runs inventory management, co-packing, display builds, and multichannel distribution for CPG brands, with a stated ability to get product into major retail chains within one to two days of an order. That is a fee-for-service business, not a margin-on-goods-sold business, and it is why NFI's revenue in MDM's ranking comes from a completely different mechanism than the wholesaler two spots above it on the list. That is the unique wrinkle in this profile: MDM's jan-san ranking, built to compare distributors by product revenue, has to fold in a company whose entire model is refusing to own the product. NFI is not competing with WAXIE or Network Services on price sheets or private-label chemistry. It is competing to be the outsourced supply chain that those companies, and the manufacturers behind them, would otherwise have to build themselves. ## How the infrastructure got built The company's roots have nothing to do with cleaning supplies. Israel Brown started National Hauling in 1932 in Vineland, New Jersey, with a single truck hauling gravel, according to [NFI's own company history](https://www.nfiindustries.com/about-nfi/our-story/). His son Bernard "Bernie" Brown joined in the 1940s, won government freight contracts during World War II, and spent the next four decades pushing the business past trucking alone. Bernie lobbied for high-cube trailers, championed federal deregulation of the trucking industry in the 1980s, and put capital into warehousing and real estate at a time when most regional truckers stayed truckers. That decision to own dirt and buildings, not just trailers, is the hinge the modern company still turns on. The third generation, brothers Sid, Ike, and Jeff Brown, took that warehousing bet and industrialized it. Sid Brown now serves as CEO. Under their run NFI stacked acquisitions to widen what it could offer a CPG or jan-san client under one contract: California Cartage in 2017 for port drayage, G&P Trucking in 2019 for Southeast density, [SDR Distribution in 2023](https://www.roi-nj.com/2024/03/13/industry/logistics/nfi-continues-expansion-and-commitment-to-canada/), which doubled the company's Canadian distribution footprint, and the freight brokerage arm of Transfix in 2024, which added roughly 15,000 carriers to NFI's network. The company now operates more than 70 million square feet of warehouse space and employs over 17,000 people, still fully owned by the Brown family. A fourth generation is already inside the business, required to work outside NFI first and to rotate through operating roles before touching strategy, the same apprenticeship model the company used on generation three. ## The bet on volume over margin That family-ownership fact matters more in trucking and 3PL than it would almost anywhere else in distribution, because NFI's direct public peers — XPO, Ryder, C.H. Robinson — are all publicly traded or private-equity-backed at scale. Staying independent across four generations while competing against capital markets for warehouse buildouts and automation spend is a harder trick than it looks, and it is one most logistics companies NFI's size have not pulled off. The most recent evidence of where that capital is going is eCommerce. NFI told the trade press in [a July 2026 announcement](https://www.nfiindustries.com/about-nfi/news/nfi-expands-ecommerce-leadership-to-support-growing-customer-demand/) that it now processes more than 30 million eCommerce orders a year across direct-to-consumer, retail, B2B, marketplace, and returns channels, backed by more than 100 technology integrations, and it hired two new regional vice presidents to run that growth. Pair that with the automation already in its CPG warehouses, Frazier pallet mole systems, gantry racking, and automated guided vehicles, and the strategic picture is a company betting that jan-san and CPG brands will keep choosing to rent supply chain capacity rather than build it, especially as omnichannel order patterns get harder to forecast in-house. The trade-off is real. Fee-for-service logistics scales with volume and labor cost, not with product margin, which means NFI's economics move differently than a traditional wholesaler's when freight rates or warehouse labor costs spike. It also means NFI has no pricing power over the products moving through its buildings, only over the service of moving them. That is a bet on being indispensable infrastructure rather than a bet on category expertise, and it is the opposite of how most names on the jan-san list compete. ## Where that leaves the list NFI's appearance at #14 is less a statement about jan-san market share and more a signal about how blurred the line between distributor and logistics provider has gotten in a category built on thin margins and heavy freight costs. A company that started with one truck hauling gravel in 1932 now shows up on a cleaning-products ranking having never sold a bottle of anything, because it figured out that the warehouse and the truck were the more durable business all along. This series exists because distribution runs on the parts nobody outside the industry sees: the branch network, the catalog, the truck route, the data behind the order. NFI Industries is a reminder that sometimes the whole business is that infrastructure, with nothing else attached. --- # Total Safety Supplies & Solutions: A Distributor Set Free Source: https://www.anglera.com/blog/total-safety-supplies-distributor-playbook Published: 2026-08-25 Industries: safety-ppe ![Total Safety Supplies & Solutions: A Distributor Set Free](/og/hero-total-safety-supplies-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Total Safety Supplies & Solutions lands at #17 on the Safety list in [MDM's 2026 Top Distributors report](https://www.mdm.com/top_distributors), the annual ranking from Modern Distribution Management. What makes the placement notable is timing: the company earned it in the same year it stopped being a division and became, for the first time in its 43-year history, a standalone business. ## A distribution arm bolted onto a services company Total Safety Supplies & Solutions (TSSS) traces to 1983 in Fairfield, California, built to move PPE, fall protection gear, and MRO consumables into utility, transportation, refining, and industrial-services accounts. For decades that business lived as one piece of a larger parent, Total Safety U.S., a company whose core identity was rental and service: gas detection equipment, fire watch, confined-space monitoring, inspection crews sent to refineries and pipelines. TSSS was the warehouse-and-catalog half of that operation, distribution bolted onto a services-and-rental engine. That structure is common enough in industrial safety. What is less common is unwinding it. On June 5, 2026, [Mill Point Capital signed a definitive agreement](https://millpoint.com/mill-point-capital-signs-definitive-agreement-to-acquire-total-safetys-supplies-solutions-division/) to acquire the Supplies & Solutions division outright, and the deal closed in July, per [Distribution Strategy Group's coverage](https://distributionstrategy.com/2026/07/mill-point-capital-completes-acquisition-of-total-safety-supplies-solutions/). Total Safety U.S. keeps the services and rental fleet. TSSS becomes its own company, with its own balance sheet, for the first time since Reagan's first term. ## The unbundling is the story Here is the observation worth naming plainly: most safety distributors on the MDM list were built as pure-play distribution businesses from day one, buying and reselling PPE and consumables at scale. TSSS was not. It spent four decades as the transactional half of a hybrid model, subsidizing and being subsidized by a services business with a completely different cost structure, asset base, and sales motion. Distribution runs on inventory turns and fill rates. Rental and inspection services run on technician headcount and asset utilization. Bundling the two under one roof made sense when the parent was chasing wallet share across a refinery's entire safety spend. It makes less sense to a buyer who wants a clean, valuable distribution platform to scale. That is effectively what happened. [Total Safety's CEO Brad Clark framed the split](https://millpoint.com/mill-point-capital-signs-definitive-agreement-to-acquire-total-safetys-supplies-solutions-division/) as letting the remaining services business "increase our focus on providing quality safety and compliance services," which is the polite version of saying the two businesses were pulling in different directions and both would be worth more apart. TSSS President Sean Nacey, who becomes CEO on close, put it from the other side: Mill Point's "domain knowledge of value-add distribution" and "operational resources" were the fit his half of the business needed and wasn't getting as a division. ## The distribution mechanics it kept Whatever else changes under new ownership, the physical network is what MDM ranked. TSSS runs 13 distribution centers, 20 on-site customer stores embedded inside client facilities, and more than 850 vendor-managed inventory and vending installations, according to [MDM's company profile](https://www.mdm.com/top_distributors/total-safety-supplies-solutions/). That VMI and vending density is the real moat in industrial PPE: a refinery or utility crew that has to requisition gloves and respirators through a central purchasing system will burn hours a week doing it, so a distributor that puts a stocked machine or a dedicated on-site store inside the plant gate wins the reorder before the customer ever opens a browser. Grainger and Airgas compete on the same logic at far larger scale; TSSS's bet is that a leaner, more customer-embedded version of it, focused on utility, transportation, and refining accounts specifically, is defensible against generalists. SKU counts vary by source and by which slice of the catalog is being measured. The acquisition announcements cite more than 65,000 MRO, safety, and PPE products across the combined catalog; MDM's own writeup separately describes a safety-and-equipment assortment of over 130,000 SKUs of PPE, tools, and consumables. Either figure puts TSSS well into the range of a serious category-depth player rather than a niche PPE reseller. ## What the carve-out signals For Mill Point Capital, a New York private equity firm focused on lower-middle-market industrials, this was its [20th corporate carve-out](https://pulse2.com/mill-point-capital-acquires-total-safetys-supplies-and-solutions-division-in-20th-corporate-carve-out/), a repeatable playbook of buying business units out of larger parents and running them standalone. Mill Point founder Michael Duran called TSSS "a high-quality distribution platform with deeply embedded customer relationships," language that reads like every PE press release until you notice what it is actually praising: not growth rate, not margin, but the stickiness of the VMI and vending relationships built up over four decades inside a bigger company's shadow. The plan from here, per Mill Point, is to expand wallet share, broaden the geographic footprint, and build out digital commerce, the standard moves for a newly independent platform with a fresh capital sponsor and no more services division to share overhead with. That last part is the trade-off worth watching. TSSS now has to build or buy the back-office functions, brand identity, and digital capability that came for free as part of a larger parent. A company that spent 43 years as someone else's distribution arm is, this year, finding out what it costs to run its own. Every company on this list runs on the parts of the business nobody sees on the label: the catalog data, the branch network, the reorder logic, the inventory that makes distribution work. This series looks at how they built it. --- # Top Hose & Accessories Distributors 2026 Ranked Source: https://www.anglera.com/blog/top-hose-accessories-distributors-2026 Published: 2026-08-25 Industries: mro-industrial, pumps-fluid-power ![Top Hose & Accessories Distributors 2026 Ranked](/og/hero-top-hose-accessories-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Of the eight distributors in this cut, only two have a public product catalog measured and scored. The rest build hose assemblies to spec on a service truck, or run their business as a holding company of locally branded units with no unified storefront — though in one case a verification pass found live product pages tucked under one of those local banners. That split, not a leaderboard gap, is the story in [Top Distributors 2026](/top-distributors-2026) this vertical tells. ## The ranking | Rank | Company | Revenue | Archetype | DRI Score | |---|---|---|---|---| | 31 | [Motion (Genuine Parts Company)](/blog/motion-distributor-playbook) | ~$9.0B (FY2025, segment) | Branch-density / scale-aggregator | 62 | | 81 | [SunSource](/blog/sunsource-distributor-playbook) | $2B+ (FY2025, est.) | PE roll-up / technical-specialist | 52 | | 103 | [Singer Industrial](/blog/singer-industrial-distributor-playbook) | $593M (FY2025) | PE roll-up / technical-specialist | — | | 106 | [Kimball Midwest](/blog/kimball-midwest-distributor-playbook) | $565M (FY2025) | Program-supplier | — | | 125 | [Bridgestone HosePower](/blog/bridgestone-hosepower-distributor-playbook) | $287M (FY2024, segment, est.) | Technical-specialist / branch-density | — | | 128 | [Motion & Flow Control Products](/blog/motion-flow-control-distributor-playbook) | ~$272M (FY2025, est.) | Technical-specialist / branch-density | — | | — | [Echelon Supply and Service](/blog/echelon-supply-distributor-playbook) | not disclosed | PE roll-up | — | | — | [LGG Industrial](/blog/lgg-industrial-distributor-playbook) | not disclosed | PE roll-up / branch-density | — | Only Motion and SunSource carry a measured [Digital Readiness Index](/top-distributors-2026/methodology) score. Kimball Midwest and Motion & Flow Control Products simply weren't part of this measurement round. Bridgestone HosePower and LGG Industrial were measured and came back with no public catalog to score — a finding about how each company sells, not a technical failure of extraction. Singer Industrial is this edition's correction: an adversarial verification pass found live public product pages on its locally branded storefronts (Watts Steam Store among them), so its status is now not yet measured (catalog verified live) — no score is published until a rule-compliant sample is taken. ## Why fabrication crowds out catalogs here Hose is a fitted product. A buyer rarely wants "a hose" off a shelf; they want a specific inside diameter, fitting configuration, pressure rating, and cut length assembled to fit a machine that is down right now. That single fact shapes the vertical more than revenue does. [Motion](/blog/motion-distributor-playbook), the GPC subsidiary that anchors the top of this list, is the exception that proves the rule. Its archetype rationale calls out that roughly 80% of its segment revenue runs through MRO sales via a dense North American branch network — a stocked-parts business, not a made-to-order one, which is exactly why it is the only company here running a full public catalog with price and spec on every page. Motion is also the vertical's freshest headline: GPC announced in February 2026 that it will split into two independent public companies, separating Global Automotive (NAPA) from Global Industrial (Motion), targeted to close in Q1 2027. A branch-density model built on parts availability is what that standalone company will take public. [SunSource](/blog/sunsource-distributor-playbook) sits at the other pole: a CD&R-backed platform built by acquisition, most recently closing the purchase of Vytl Controls Group (32 branches, flow-control products for marine, chemical, and downstream energy) on January 30, 2026. SunSource's rationale is explicit that its network was built through deals — Vytl, and before it Ryan Herco Flow Solutions — rather than organic branch growth, which is the pe-rollup archetype in miniature. The two companies with no catalog to score make the pattern sharper. [Bridgestone HosePower](/blog/bridgestone-hosepower-distributor-playbook)'s differentiator is a fleet of mobile service trucks that fabricate and install hose assemblies on-site — an engineered-repair service, and its "ALL PRODUCTS" navigation leads to a marketing page describing hose and fitting families with no individual SKUs or part numbers behind it. [LGG Industrial](/blog/lgg-industrial-distributor-playbook) is brochureware layered over a base built from ERIKS North America plus bolt-ons (DeeTag, Branham, Rubber Belting & Hose, Mill & Elevator Supply). [Singer Industrial](/blog/singer-industrial-distributor-playbook) describes itself as a portfolio of 45-plus locally branded distribution business units, added most recently by acquiring Wilmington Rubber & Gasket and Fluid Tech Hydraulics in 2025, and while its corporate site is not a unified e-commerce storefront, individual banners like Watts Steam Store do serve public, spec-rich product pages — quote-driven rather than priced, and verified live but not yet sampled. [Echelon Supply and Service](/blog/echelon-supply-distributor-playbook) tells the same consolidation story from a different angle: HCI Equity Partners bolted three separately branded hose distributors onto JGB Enterprises in under fifteen months and dissolved all four names into one platform, with a CFO promoted to President in January 2025 and a debt refinancing from Bluehenge Capital Partners in July 2025 to fund the next stage. Five of the eight companies here carry a pe-rollup or technical-specialist tag; two of those five have no catalog to measure, and a third's catalog surfaced only under a local banner. That is not a coincidence. A roll-up integrating newly acquired branches under one brand, or a specialist selling engineered fabrication instead of stocked parts, has little reason to build a unified public product database — the thing a Digital Readiness Index measures barely exists as a concept in that model yet. ## What the two measured catalogs show Where a public catalog does exist, the [Digital Readiness Index](/top-distributors-2026/methodology) shows two very different shapes of "good enough." Motion scores 62 against SunSource's 52, both above the vertical's median of 62 and close to the index-wide median of 58, but the pillar breakdown tells the real story. Motion is close to perfect on commerce transparency (20 of 20): every product page it publishes carries price and availability, with a 100% price rate in the sample, no login wall. SunSource's price rate is 40%, pulling its transparency pillar down to 11.6 of 20. On product data depth, Motion also leads, 21.9 versus 18.1 of 35, backed by a median of 34 structured attributes per page against SunSource's 15, and a GTIN identifier rate of 40% versus 0%. But flip to buyer answerability and the gap nearly closes: Motion scores 8.6 of 25, SunSource 9.4 of 25 — SunSource's descriptive content and imagery edge out Motion's despite Motion's much richer spec tables. And on machine and agent readiness, SunSource actually leads, 13 of 20 against Motion's 11, even though SunSource's sample showed no product structured data (`productJsonLd: false`) versus Motion's undetermined status. Neither company's robots.txt addresses AI crawlers one way or the other, which under this index's scoring is silence, not a penalty — both are read as open to AI shopping agents by default. The attribute counts matter most for what a buyer in this category actually needs. A hose or fitting purchase lives or dies on inside diameter, outside diameter, working pressure, burst pressure, fitting thread type and size, temperature rating, and material compatibility — a longer list of pass/fail specs than most industrial categories carry. Motion's median of 34 attributes per page can plausibly carry that list; SunSource's median of 15 likely cannot, and its consistency spread of 24 points (versus Motion's 45) means the shortfall is at least evenly distributed rather than concentrated in a few thin categories. Motion's wider 45-point spread is the less comfortable number: some of its product pages are carrying real depth and others clearly are not, which is a harder thing for a buyer to predict page to page than a uniformly thinner catalog. ## Where this goes The vertical's near-term trajectory is written into the moves already on record: SunSource, LGG, Singer, and Echelon are all still buying, and Motion is heading toward a standalone public listing built on the one model in this group that actually runs a catalog. None of that points toward more companies publishing structured product data soon — a roll-up integrating four brands into one has bigger priorities than a spec table, and a fabrication business selling made-to-order assemblies may never need a SKU-level catalog at all. The interesting question for 2027 isn't whether the rest of this list catches up to Motion's score. It's whether "catalog" stays the right unit of measurement for a category built increasingly on service trucks and bolt-on integration rather than stocked parts. --- # D&H Distributing: How a Tire Shop Outlasted IT's PE Wave Source: https://www.anglera.com/blog/dh-distributing-distributor-playbook Published: 2026-08-24 Industries: electronic-components ![D&H Distributing: How a Tire Shop Outlasted IT's PE Wave](/og/hero-dh-distributing-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* D&H Distributing lands at #5 in Electronics on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors/), the trade publication's annual ranking of North America's largest wholesale distributors across 20 verticals. The company started in 1918 repairing tires in Williamsport, Pennsylvania. It now moves servers, networking gear, cybersecurity software and AI infrastructure through six North American distribution centers, and it is still owned by the family that founded it — a rarity in a channel where the two biggest players spent 2020 and 2021 getting bought by private equity. ## From retreads to radios D&H did not start as a technology company. Brothers-in-law David Schwab and Harry Spector opened Economy Tire and Rubber to retread worn tires, a practical trade for the era. The pivot came in the 1920s, when the pair started stocking crystal radios and struck a partnership with Philco. By November 8, 1929, the business had renamed itself D&H Distributing, and the tire operation was history. That founding swerve, jumping from rubber to radios inside a decade, set a pattern the company has repeated: chase the next consumption category rather than defend the current one. Electronics gave way to consumer appliances, then to PCs, then to the broader IT stack the company sells today, according to the [company's own history](https://www.dandh.com/media/pdf/pages/anniversary/DH-History-Book-2023.pdf) and [Wikipedia's account](https://en.wikipedia.org/wiki/D%26H_Distributing) of the founding. ## The insight: staying independent while the industry consolidated around it Here is the part that does not show up on the About page. Between 2020 and 2021, the two distributors that dwarf D&H in scale both changed hands. Platinum Equity bought Ingram Micro in December 2020. Apollo Global Management bought Tech Data in June 2020, then folded it into Synnex in a $7.2 billion deal that created TD Synnex, the world's largest IT distributor, with Apollo retaining 45 percent ownership of the combined company, per [Channelnomics' coverage of the merger](https://www.channelnomics.com/insights/synnex-tech-data-merger-reflects-distributions-evolution). That is the sector D&H competes in: a channel where scale increasingly means a financial sponsor on the cap table and an eventual exit on the roadmap. D&H took the opposite structure. Third-generation co-presidents Michael and Dan Schwab, grandsons of founder David Schwab, run the company today, and it remains privately held by the family. Layered on top since the 1990s is an Employee Stock Ownership Plan that gives D&H's roughly 1,600 employees a direct ownership stake, a structure the company credits with its retention and its regular appearances on best-places-to-work lists, according to the [Central Penn Business Journal](https://www.cpbj.com/dh-distributing-co-4/). A management quote captures the logic plainly: because team members own a piece of the company, they are wired to think like owners rather than headcount. Family control plus broad employee ownership is a combination almost nobody else in a PE-consolidated IT distribution channel is running, and it changes the incentive math: no sponsor pushing for a levered recap or a five-year flip, just a leadership team that answers to relatives and to the people stocking the warehouse. That structure has not made D&H slow. Revenue grew from roughly $1.45 billion in 2008, when the Schwab brothers took the co-president seats, to $5.9 billion by 2024, landing the company at #106 on Forbes' list of America's largest private companies, per [Wikipedia](https://en.wikipedia.org/wiki/D%26H_Distributing) and [Forbes' company profile](https://www.forbes.com/companies/dh-distributing/). D&H reported double-digit growth again in 2025, with cloud infrastructure sales up 70 percent and security solutions up 63 percent inside its Advanced Solutions+ business unit, outpacing a broader IT distribution channel that grew a more modest 6 percent by the fourth quarter, according to the company's [March 2026 growth announcement](https://www.globenewswire.com/news-release/2026/03/16/3256334/0/en/D-H-Distributing-Outpaces-Market-Continues-Rapid-Growth-Trajectory-Aligned-to-AI-Driven-Market-Shifts.html). ## Buying scale without selling control The independence has not meant standing still on the acquisition front either, it just means D&H buys instead of getting bought. In January 2026, the company acquired Fulfillment.com, a multi-site ecommerce fulfillment and cross-border logistics platform founded in 2011, folding it into D&H's SCALE division, its third-party logistics arm. The deal added international fulfillment capacity and technology to a unit built to serve both B2B resellers and direct-to-consumer brands, with Fulfillment.com's existing management staying in place, per [Digital Commerce 360's reporting](https://www.digitalcommerce360.com/2026/01/20/dh-expands-logistics-unit-with-acquisition-of-fulfillment-com/). Around the same window, D&H struck an expanded U.S. partnership with Fortinet and widened its Dell authorization to the full storage and server portfolio across the U.S. and Canada, moves aimed squarely at AI infrastructure demand rather than the legacy PC-and-peripherals business that built the company's early scale. That is the tension worth naming plainly: a distributor built on a century of incremental category pivots, still governed by the family that made the first one, now has to keep pivoting fast enough to serve AI-era infrastructure buyers against rivals with private-equity balance sheets behind them. So far the numbers say D&H is managing it without giving up the ownership structure that makes it unusual in its own channel. Distribution's biggest strategic bets rarely happen on the sales floor. They happen in the ownership structure, the catalog discipline and the logistics network a company chooses to build, or refuses to sell. --- # Top Fluid Power Distributors 2026: Rollups vs Readiness Source: https://www.anglera.com/blog/top-fluid-power-distributors-2026 Published: 2026-08-23 Industries: mro-industrial, fasteners, oilfield-energy ![Top Fluid Power Distributors 2026: Rollups vs Readiness](/og/hero-top-fluid-power-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Fifteen companies make up this cut of the index, and eleven of them recorded an acquisition in the 2025-2026 window alone. Fluid power is a vertical being bought and re-bought in real time, from a $1.5B merger at the top to a fourth private-equity platform quietly rolling up hose and hydraulics shops at the bottom. The six companies we could measure landed in a tight 48-to-66 band on the Digital Readiness Index, and the company sitting exactly on the vertical's median score is also the one growing the old-fashioned way: by opening branches. ## The ranking | Rank | Company | Revenue (FY) | Archetype | DRI Score | |---|---|---|---|---| | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B | Scale Aggregator | 66 | | 31 | [Motion (Genuine Parts Company)](/blog/motion-distributor-playbook) | ~$9.0B (segment) | Branch Density / Scale Aggregator | 62 | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B | Program Supplier / Branch Density | 55 | | 57 | [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) | $4.56B | Technical Specialist / Scale Aggregator | — | | 70 | [DNOW](/blog/dnow-distributor-playbook) | $2.8B | Scale Aggregator / Branch Density | — | | 79 | [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) | $2.0B | Technical Specialist / Program Supplier | 48 | | 81 | [SunSource](/blog/sunsource-distributor-playbook) | $2B+ (est.) | PE Roll-up / Technical Specialist | 52 | | 94 | [Bearing Distributors Inc. (BDI)](/blog/bdi-distributor-playbook) | $1.0B | Branch Density | 58 | | 103 | [Singer Industrial](/blog/singer-industrial-distributor-playbook) | $593M | PE Roll-up / Technical Specialist | — | | 114 | [Motion & Control Enterprises](/blog/motion-control-enterprises-distributor-playbook) | $488M | PE Roll-up / Technical Specialist | — | | — | [Berendsen Fluid Power](/blog/berendsen-distributor-playbook) | not disclosed | Technical Specialist / Branch Density | — | | — | [Evolution Motion Solutions](/blog/evolution-motion-distributor-playbook) | not disclosed | Technical Specialist / PE Roll-up | — | | — | [Hydraquip](/blog/hydraquip-distributor-playbook) | not disclosed | Technical Specialist | — | | — | [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) | not disclosed | Catalog Native | — | | — | [OTC Industrial Technologies](/blog/otc-industrial-distributor-playbook) | not disclosed | PE Roll-up / Technical Specialist | — | ![Digital Readiness Index pillar breakdown for measured Fluid Power distributors](/charts/top-2026/fluid-power.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Six of fifteen were measured for the Digital Readiness Index. Applied Industrial's catalog is known to run millions of SKUs but bot protection stopped verification; DNOW's entire storefront sits behind a login wall; the four companies marked "Not in DRI set" fall outside this cut's measured sample rather than having failed anything. None of these is a zero, and none is a judgment about the underlying business — see the [methodology](/top-distributors-2026/methodology) for how the score is built. ## Technical specialists set the vertical's shape Fluid power reads differently from a general MRO or fastener vertical the moment you look at the archetypes. Technical Specialist is the primary or secondary classification for nine of the fifteen companies here, more than any other model, and PE Roll-up shows up as primary for four: [SunSource](/blog/sunsource-distributor-playbook), [Motion & Control Enterprises](/blog/motion-control-enterprises-distributor-playbook), [OTC Industrial Technologies](/blog/otc-industrial-distributor-playbook), and [Singer Industrial](/blog/singer-industrial-distributor-playbook). That pairing is not a coincidence. Hydraulic cylinders, valve packages, and custom power units need application engineering, not just a warehouse and a truck, so the natural roll-up target in this category is a specialist shop with a repair bay and a field-engineering staff attached, not a generic branch. SunSource closed the acquisition of Vytl Controls Group in January 2026, adding 32 branches of flow-control products under its CD&R-backed platform. OTC closed Fleetwood Industrial Products and P-M Industrial in August 2025 on top of two February 2025 deals, part of what Tracxn counts as 23-plus acquisitions under Genstar's ownership. Singer pushed past 100 locations after picking up Wilmington Rubber & Gasket and Fluid Tech Hydraulics in 2025. Motion & Control Enterprises just ran a continuation-vehicle transaction to fund its next phase after roughly ten deals since 2021, most recently Tripp Electric Motors in May 2026. The public companies are running the same playbook with their own balance sheets. Applied Industrial spent $293.4M on FY2025 M&A, folding in IRIS Factory Automation and the earlier Hydradyne fluid-power acquisition, and announced Thompson Industrial Supply in January 2026. DXP Enterprises made six acquisitions in FY2025 (about $61.7M combined) building a water and wastewater platform, then added three more through mid-2026. And DNOW's move dwarfs all of it: a $1.5B all-stock combination with MRC Global that closed November 6, 2025, more than doubling DNOW's footprint to 350-plus locations across 20-plus countries. [Grainger](/blog/grainger-distributor-playbook) and [Fastenal](/blog/fastenal-distributor-playbook) are the outliers precisely because they aren't chasing deals here — Grainger's rationale is built on centralized purchasing scale from a small number of large distribution centers, and Fastenal reported zero acquisitions between 2020 and 2025, growing instead through onsite and vending placements at customer facilities. ## What the Digital Readiness Index found The measured group's scores cluster tighter than the archetypes would suggest: Grainger 66, Motion 62, BDI 58, Fastenal 55, SunSource 52, DXP 48. That's a 48-to-66 spread against a vertical median of 58 — a number BDI happens to land on exactly, which is a tidy coincidence for a company whose growth story is 200-plus branches opened the old way rather than bought. Grainger's lead comes almost entirely from product data depth (31 of 35 points), which tracks with running one of the deepest structured catalogs in industrial distribution — though it's worth noting Grainger's breadth spans all of MRO, not fluid power specifically. Motion is close behind at 62 but carries the largest consistency spread in the group, 45 points between its richest and thinnest sampled page, even though every one of the five pages we pulled was independently confirmed as a fully public, single-product page with price, availability, and a spec table. That's a company treating some of its own products far more carefully than others, not a company hiding data behind a login. The more useful number for a fluid power buyer is median attribute count, and here the range is stark: Grainger 47, Motion and BDI both 34, SunSource 15, and Fastenal and DXP tied at 11. A hydraulic cylinder or flow-control valve page needs to answer bore diameter, stroke length, port thread type, pressure rating, and flow capacity before a buyer can even confirm fit, let alone cross-reference it against a competing part. Eleven attributes is thin for that job. BDI is the one measured company with full GTIN coverage in its sample (100%), which matters for a bearings and power-transmission catalog where the same part often ships under several manufacturer numbers. Fastenal also stands out on the machine-readiness side for the wrong reason: its sitemap check failed, which is a real gap in crawler discoverability for an $8.2B company, distinct from its AI crawler stance, which the data shows as simply unaddressed rather than restrictive. ## Where this settles The next twelve months in fluid power look like more of the same story on two tracks. The roll-up track keeps compounding: four PE platforms with fresh capital and open acquisition pipelines, plus two public companies (Applied, DXP) doing the same thing without a sponsor. The digital-shelf track is barely moving in comparison — five of six measured companies sit under 62, and the two thinnest catalogs by attribute count, Fastenal and DXP, belong to a $8.2B public company and a platform mid-build on a water and wastewater expansion, not to small private shops with an excuse. As application engineering keeps getting bought and bundled, the product page itself remains the part of the business least touched by all that deal activity. Full rankings across every vertical are in the [Top Distributors 2026 index](/top-distributors-2026). --- # Top Power Transmission & Bearings Distributors 2026 Source: https://www.anglera.com/blog/top-power-transmission-bearings-distributors-2026 Published: 2026-08-22 Industries: mro-industrial, pumps-fluid-power ![Top Power Transmission & Bearings Distributors 2026](/og/hero-top-power-transmission-bearings-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Genuine Parts Company told investors in February 2026 that Motion, its industrial distribution arm, will split from NAPA into its own publicly traded company, a tax-free separation targeted to close in the first quarter of 2027. That single fact reframes most of this year in Power Transmission & Bearings: the vertical's second-largest company by revenue is about to trade on its own digital-shelf performance, without an automotive-retail business to average against. Ten companies make up this cut of the [Top Distributors 2026](/top-distributors-2026) index; only four carry a measured Digital Readiness score this edition. ## The ranking | Company | Archetype | Revenue | Fiscal Year | Overall Rank | DRI Score | |---|---|---|---|---|---| | [W.W. Grainger](/blog/grainger-distributor-playbook) | Scale-Aggregator | $17.9B | FY2025 | 20 | 66 | | [Motion (Genuine Parts Company)](/blog/motion-distributor-playbook) | Branch-Density / Scale-Aggregator | ~$9.0B (segment) | FY2025 | 31 | 62 | | [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) | Technical-Specialist / Scale-Aggregator | $4.56B | FY2025 | 57 | — | | [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) | Technical-Specialist / Program-Supplier | $2.0B | FY2025 | 79 | 48 | | [Wajax Corp](/blog/wajax-distributor-playbook) | Technical-Specialist / Branch-Density | $1.5B | FY2025 | 86 | — | | [Bearing Distributors Inc. (BDI)](/blog/bdi-distributor-playbook) | Branch-Density | $1.0B | FY2024 | 94 | 58 | | [IBT Industrial Solutions](/blog/ibt-industrial-distributor-playbook) | Technical-Specialist | $135M (est.) | FY2022 | 133 | — | | [Bearing Headquarters Company (HeadCo)](/blog/headco-distributor-playbook) | Technical-Specialist | not disclosed | — | Not ranked | — | | [OTC Industrial Technologies](/blog/otc-industrial-distributor-playbook) | PE-Rollup / Technical-Specialist | not disclosed | — | Not ranked | — | | [Purvis Industries](/blog/purvis-industries-distributor-playbook) | Branch-Density | not disclosed | — | Not ranked | — | ![Digital Readiness Index pillar breakdown for measured Power Transmission & Bearings distributors](/charts/top-2026/power-transmission-bearings.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* ## A vertical built on repair, not just SKUs Half of the ten companies here are classified primary technical-specialist: Applied, DXP, Wajax, HeadCo, and IBT. That is not a coincidence of who happened to be in the data set — bearings and power transmission is one of the few distribution categories where the repair shop is as much the business as the shelf. HeadCo runs five in-house metalworking shops and Timken-certified gearbox and bearing rebuild operations. Wajax reports Product Support and Engineered Repair Services as its own roughly $385M FY2025 line, layered on 125 Canadian branches. DXP's Innovative Pumping Solutions segment engineers and fabricates pump packages rather than just stocking parts. IBT closed its acquisition of Indesco, a Charlotte hydraulics and power-transmission distributor, in June 2026 specifically to extend its gearbox-rebuild and specialty-machining footprint into the Southeast. Applied spent FY2025's $293.4M M&A budget on Hydradyne and IRIS Factory Automation, both application-engineering plays, then announced Thompson Industrial Supply in January 2026. The other half splits between branch-density and one straightforward roll-up. Motion runs roughly 80% of its segment revenue through a dense North American branch network built for local parts availability — the model it is about to defend as a standalone public company. BDI got to 200-plus locations through organic branch openings, including a first Oklahoma site and expanded Atlanta and Charlotte facilities through 2025, and its own account of that strategy explicitly contrasts it with rivals' "headline-grabbing mega-acquisitions." Purvis operates over 100 branches across 18 states and just added two more through the 2025 acquisitions of A&A Resources and Johnson Bearing & Supply. OTC is the vertical's clearest financial-sponsor story: Genstar Capital has taken it through 23-plus bolt-ons, most recently Fleetwood Industrial Products, P-M Industrial, Premier Equipment Corporation, and Premier Control Systems in 2025. Grainger is the outlier by design. It centralizes national-account coverage and purchasing scale from a small number of large distribution centers rather than a dense branch count, which is why it tops MDM's broader Industrial Supply and MRO rankings — but power transmission and bearings is one slice of a much wider catalog for a company that just exited the UK market entirely, closing Zoro UK and selling Cromwell to AURELIUS at a roughly $196M loss on exit. ## What the Digital Readiness Index found The [Digital Readiness Index](/top-distributors-2026/methodology) scores four measured companies here, and the spread tells a sharper story than the rankings alone. Grainger leads at 66, built on the vertical's strongest product-data pillar (31 of 35) — the deepest identity, identifiers, and attribute data of the group. But its machine and agent readiness pillar is the group's weakest at 9 of 20, because Grainger's robots.txt explicitly blocks AI crawlers. That is a real deduction, not an oversight: Motion, DXP, and BDI all left AI crawler access unaddressed, which under this methodology reads as silence and scores full marks, while Grainger's explicit block costs it points the other three keep. Motion comes second at 62, anchored by a perfect commerce-transparency score of 20 out of 20 — every sampled product carried open pricing and stock visibility with no login gate, confirmed across all five URLs pulled from the now fully rebranded motion.com storefront. What holds Motion back is consistency: a median of 34 attributes sounds respectable, but the 45-point gap between its richest and thinnest sampled page is the largest in this cut. A buyer hitting the wrong category gets a page that reads nothing like the one two clicks away, which is a harder problem to fix than a low average and the one Motion inherits into its 2027 spin-off. BDI sits at 58, the only measured company with a 100% GTIN match rate on sampled products — a direct reflection of the same organic, branch-by-branch discipline that shapes its growth strategy. DXP is lowest among the measured at 48, with a median of just 11 attributes per page, roughly a quarter of Grainger's depth, and public pricing on only 40% of sampled products. Its real storefront lives at store.dxpe.com; the corporate site at dxpe.com is brochureware whose category links dead-end in contact forms. For a buyer in this category, the attribute list that matters is specific: bore diameter, outer diameter and width, load and RPM rating, seal or shield type, lubrication spec, shaft size for couplings, belt pitch or type, and a manufacturer part number or GTIN clean enough to cross-reference against a competitor's SKU. An 11-attribute median page rarely carries more than three or four of those, pushing the buyer back to a phone call or a spec-sheet PDF exactly where a faceted search or shopping agent should have closed the loop. Grainger's 47-attribute median has room for most of them. The rest of the vertical didn't produce a score, for reasons worth keeping separate. Applied's catalog is real and large, with a bearings category at applied.com carrying millions of SKUs reachable without login, but bot protection stopped the measurement itself, so "not verifiable" describes our tooling, not Applied's site. Wajax and OTC sit in a different bucket: a later verification pass found live public product pages for both, so their status is now "not yet measured (catalog verified live)" — scores are only published from rule-compliant samples, and neither had one this edition. HeadCo, IBT, and Purvis weren't in the measured set, and none of the three publish revenue. ## Where this settles Ownership structure doesn't predict digital investment here — a public company (Grainger) leads, a soon-to-be-independent subsidiary (Motion) is close behind, a family-owned branch network (BDI) is a clear third, and another public company (DXP) trails the measured group. The real divide is between the two operating models: technical-specialist companies built around repair and engineering capability are either unmeasured — blocked by bot protection or awaiting a first catalog sample — or scored at the bottom of those that could be measured, while the branch-density and scale generalists sit at the top of the readiness table. Motion is the name to watch through 2027 — once it reports as an independent public company, a 45-point consistency spread stops being a rounding error inside a diversified parts conglomerate and becomes a metric investors can ask about directly. --- # The Macomb Group: Built by Owners, Grown by Acquisition Source: https://www.anglera.com/blog/macomb-group-distributor-playbook Published: 2026-08-21 Industries: mro-industrial ![The Macomb Group: Built by Owners, Grown by Acquisition](/og/hero-macomb-group-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* In January 1991, two childhood friends from Harper Woods, Michigan, who had grown up playing Little League together, took out a leveraged loan and bought the small pipe shop where they'd both swept floors and packed orders years earlier. Thirty-five years later, that company, [The Macomb Group](https://www.mdm.com/news/top-distributor-sectors/plumbing-products-pvf-distribution/pvf-distributor-macomb-group-expands-in-indianapolis/), lands at No. 8 on the pipe, valves and fittings list in [Modern Distribution Management's 2026 Top Distributors report](https://www.mdm.com/top_distributors), the annual ranking of North America's largest wholesale distributors. That is the hook. The story underneath it is a lesson in how a founder-owned company competes in a sector that private equity has been rolling up for a decade. ## From warehouse floor to leveraged buyout Bill McGivern and Keith Schatko did not inherit The Macomb Group. They earned their way into owning it. Both started at the bottom of what was then called Macomb Pipe & Supply, founded in 1977, working the sales counter and packing orders while they finished college. In January 1991, McGivern, Schatko and a third partner, Doug Howe, structured a leveraged buyout of the company, according to [PHCP Pros' account of the milestone](https://www.phcppros.com/articles/12971-thirty-and-counting-the-macomb-group-achieves-milestone). That is a meaningfully different starting point than most companies on the MDM list, which tend to be either multigenerational family holdings or portfolio companies of a private equity sponsor. Macomb is neither. It is an operator-led buyout that never sold control. The breakthrough came in 1999, when the company won the bulk-materials contract on Detroit Metro Airport's McNamara Passenger Terminal, a project McGivern later called "the catapult that defied the competition and put us in the big leagues." Winning a marquee infrastructure job as a small regional PVF house forced Macomb to prove it could handle scale, logistics and schedule risk that larger competitors assumed only they could manage. It is the kind of reference project that changes what a distributor is allowed to bid on next. ## The insight: independent ownership, cooperative scale Here is the part of the Macomb story that does not show up on the company's About page. PVF distribution has consolidated hard over the past ten years, with private equity platforms and strategic acquirers buying up regional pipe houses to build national footprints. Macomb has grown just as aggressively, adding acquisitions like Woodhill Supply in Ohio, Trident Fire & Fabrication in New Jersey and Leonhardt Pipe & Supply in the Southeast, plus a merger with Pennsylvania's Deacon Industrial Supply. But it has done all of that while staying privately held by the operators who bought it in 1991. The mechanism that lets a founder-owned company compete against PE-backed scale is membership in [Affiliated Distributors (AD)](https://www.digitaljournal.com/pr/news/access-newswire/macomb-group-named-ad-pvf-1355059749.html), the buying and marketing cooperative that pools purchasing power across independently owned distributors so members get vendor terms closer to what a national chain would command, without giving up equity to get there. Macomb was named AD's PVF Division 2025 Member of the Year and leads one of AD's Executive Network peer groups, a role that puts its operators in the room shaping how the cooperative itself runs. That combination, owner-operated plus cooperative-scaled, is the non-obvious structural bet: Macomb gets the purchasing leverage of a much larger company without the debt load or the sponsor exit clock that comes with a PE-backed roll-up. It can acquire on its own timeline instead of a fund's. ## What the acquisitions actually bought The pattern in Macomb's recent deals is not simply "more branches." Each acquisition added a specific capability layer on top of straight PVF distribution: | Acquisition | What it added | |---|---| | Woodhill Supply (Willoughby, OH) | A 300,000-square-foot, 25-acre distribution hub and HVAC/kitchen-and-bath lines | | Deacon Industrial Supply (PA) | Mid-Atlantic distribution center supporting fabrication | | Trident Fire & Fabrication (Carlstadt, NJ) | East Coast fire-protection fabrication capacity | | Leonhardt Pipe & Supply (Southeast) | Fire-protection production capability across GA, NC, SC | Keith Schatko, EVP and owner, described the Woodhill deal's logic plainly: the Willoughby facility would let Macomb "more quickly and efficiently serve our growing customer base" across a footprint that now "stretch[es] from the Midwest through the Mid-Atlantic and down through the Southeast," per [Distribution Strategy Group's coverage](https://archive.distributionstrategy.com/macomb-group-acquires-woodhill-supply/). Fire protection and fabrication, not just commodity pipe, are the through-line. That is a deliberate move up the value chain: fabricated and coated pipe carries better margin and stickier customer relationships than reselling standard fittings, and it is much harder for a pure-play buying-group competitor to replicate on short notice. ## Scale, without losing the name on the door The operating footprint backs up the strategy. By 2026, [The Macomb Group](https://blog.macombgroup.com/macomb-group-fifth-pvf-2026/) runs 32 branches across 11 states, employs more than 700 people, and operates a private fleet of over 200 trucks, up from 18 locations in seven states just five years earlier at the company's 30th anniversary. COO Scott Henegar credited the growth to unglamorous fundamentals: "doing the little things right, having correct material, delivering accurately, and delivering on time." The company also climbed to No. 5 nationally among industrial PVF distributors in Supply House Times' 2026 Premier 150 survey, its highest ranking yet, and posted a second consecutive year of double-digit growth heading into 2025. McGivern's own description of the culture, staying "small enough to be nimble" even as the branch count triples, is the tension worth naming honestly. Buying-group scale and acquisitive growth are real advantages, but they also test whether an owner-operated culture forged by two guys who packed orders in Harper Woods can hold together across 11 states and 700 employees. So far the AD cooperative structure and the deliberate focus on fabrication and fire protection, rather than chasing every commodity PVF deal available, look like the mechanism keeping that promise intact. Every distributor on the MDM list is, underneath the branch counts and truck fleets, a bet on how well a company can move the right part to the right job site on time. The Macomb Group's version of that bet still has the same two names on the paperwork from 1991. --- # Top Industrial PVF Distributors 2026: Scale Meets Closed Catalogs Source: https://www.anglera.com/blog/top-pvf-distributors-2026 Published: 2026-08-20 Industries: plumbing, waterworks, mro-industrial ![Top Industrial PVF Distributors 2026: Scale Meets Closed Catalogs](/og/hero-top-pvf-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Industrial PVF is a vertical where the biggest headline of the year produced no scored digital shelf. [DNOW](/blog/dnow-distributor-playbook) closed its combination with [MRC Global](/blog/mrc-global-distributor-playbook) on November 6, 2025, more than doubling DNOW's footprint to over 350 locations in 20-plus countries. Neither company carries a score this edition: DNOW's storefront sits entirely behind a login wall, and while MRC's corporate site describes eight product category groups with no individual SKUs, a verification pass found its MRCGO storefront serving live public product pages — catalog verified live, not yet sampled. Of the eight distributors in this cut, only two — [Ferguson](/blog/ferguson-distributor-playbook) and [Core & Main](/blog/core-main-distributor-playbook) — carry a measured score. ## The ranking | Company | Archetype | Revenue | Global Rank | Digital Readiness | |---|---|---|---|---| | Ferguson | scale-aggregator / branch-density | $31.3B (CY2025) | #10 | 58 | | Winsupply | branch-density | $8.4B (FY2026) | #32 | not measured (no public catalog) | | Core & Main | scale-aggregator / pe-rollup | $7.65B (FY2025) | #39 | 63 | | Applied Industrial Technologies | technical-specialist / scale-aggregator | $4.56B (FY2025) | #57 | not measured (not observable) | | DNOW | scale-aggregator / branch-density | $2.8B (FY2025) | #70 | not measured (no public catalog) | | Edgen Murray | technical-specialist | not disclosed | unranked | not measured (no public catalog) | | [Industrial Piping Specialists](/blog/industrial-piping-specialists-distributor-playbook) | Technical-specialist / branch-density | not disclosed | — | not sampled | | [The Macomb Group](/blog/macomb-group-distributor-playbook) | Branch-density / program-supplier | not disclosed | — | not sampled | All revenue figures are total-company as reported; fiscal years vary by filer. Full methodology for the [Digital Readiness Index is explained here](/top-distributors-2026/methodology), and the complete list of every vertical is in the [Top Distributors 2026 index](/top-distributors-2026). ## A vertical built on two different kinds of scale Four of the eight companies here carry scale-aggregator as a primary or secondary archetype, and that is not a coincidence — PVF (pipe, valve, and fitting) distribution spans everything from residential plumbing to oil-country tubular goods, and buying leverage across that breadth compounds. But the DATA shows two distinct routes to that scale, and they explain most of the ranking. Ferguson gets there through acquisition cadence layered on a national branch network: nine tuck-in deals in FY2025 alone, adding roughly $300M in annualized revenue through names like HPS Specialties and Water Resources Inc., on top of a branch footprint dense enough to out-buy regional plumbing and PVF rivals. Core & Main runs the same playbook narrower and deeper, concentrated in waterworks: it puts its own net sales at roughly 17% of the $44B US/Canada waterworks market, the largest single share, and keeps closing bolt-ons — the January 2026 acquisition of Pioneer Supply is the latest. Then there's the branch-equity route. [Winsupply](/blog/winsupply-distributor-playbook) is not one storefront but a federation of 680-plus "Local Companies," each with a branch president holding real local equity and P&L ownership, and its 2025-2026 growth plan is stated in the most literal terms possible: 20 new Local Company openings plus 1.6 million square feet of added distribution capacity. That structure is also exactly why Winsupply has no scoreable digital catalog — the sample checked a representative Local Company site and found brochureware, because the model was never built around a unified e-commerce front end. That is a finding about the model, not a shortfall against it. The third route is technical specialization. [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) grows through engineered-capability acquisitions — Hydradyne for fluid power, IRIS Factory Automation in May 2025, and the announced Thompson Industrial Supply deal in January 2026, $293.4M in FY2025 M&A spend in total — buying application engineering rather than catalog breadth. [Edgen Murray](/blog/edgen-murray-distributor-playbook), a Sumitomo subsidiary that does not disclose revenue, sells "Comprehensive Pipeline Solutions" for midstream projects the same way: value-added engineering, not a catalog to browse. ## What the Digital Readiness Index actually found Only Ferguson and Core & Main returned a measurable score, at 58 and 63 respectively — Ferguson matching and Core & Main above the index-wide median of 58, and this vertical's own median sits at 63. That two-company sample is itself the headline: of the other six major PVF distributors, three have no unified public catalog by design (Winsupply, DNOW, Edgen Murray), two have not yet been sampled this edition (Industrial Piping Specialists, The Macomb Group), and one is simply not observable. Applied is the one to watch — its site is known to run a full public e-commerce catalog across millions of SKUs (a bearings category, for instance, sits openly at applied.com/categories/bearings), but bot protection keeps it from being read by the sample, which is a "not observable" finding, not a zero. Between the two companies we could measure, the split is instructive. Core & Main wins on commerce transparency, a clean 20 of 20 — its real storefront, [supply.coreandmain.com](https://supply.coreandmain.com), is open browsing with visible pricing and an Add to Cart flow, no login required. Ferguson scores lower there, 14 of 20, because pricing and stock were gated behind login in some of the five sampled categories even though product pages themselves — name, specs, images, reviews — were publicly viewable across all five. Ferguson actually wins the buyer-answerability pillar, 19.5 of 25 against Core & Main's 14.2, which tells you its content team is doing the descriptive work; the gap is that none of it is coming through as structured data on the extraction side, where Ferguson's median attribute count landed at 0 against Core & Main's 11. That attribute gap matters more in PVF than in almost any other category, because a buyer specifying a fitting or a valve is filtering on things a generic spec sheet doesn't capture well in prose: nominal pipe size, schedule, end connection (threaded, socket-weld, flanged), pressure class, material grade, and applicable ASME or ANSI standard. A median of 11 structured attributes is thin for that job; a median of 0 means a faceted search or a shopping agent has almost nothing machine-readable to work with on a typical Ferguson page, no matter how complete the human-readable spec is. GTIN identifier rates tell the same story from a different angle — 0% for Ferguson, 20% for Core & Main — meaning most PVF product pages in this sample can't be cross-matched to the same item on another distributor's site by identifier alone. On the agent-readiness pillar, both companies score 13 of 20 and neither has published an AI-crawler policy; under the index's rules that silence scores full marks on the crawler-stance signal, so the shortfall for both sits in unverified product-level structured data (JSON-LD) rather than in any stance toward AI crawlers. ## Where this settles The consolidation story in PVF is not slowing down — DNOW-MRC alone reset the competitive map in one transaction, and Core & Main and Applied are both still closing bolt-ons into 2026. But the digital-shelf story is running well behind the M&A story. Most of this vertical's revenue currently sits behind a login wall, inside a brochureware corporate site, or distributed across hundreds of independently run local storefronts that were never built to be crawled. The two companies that do publish an open catalog are already showing the two failure modes that will matter most as buyers and agents start relying on structured data instead of a rep: rich descriptions with nothing structured behind them, or a clean transparent storefront with attribute depth still in the low teens. Neither is disqualifying today. Both are exactly the gap a faceted search or a shopping agent will notice first. --- # Industrial Piping Specialists: PVF Without a Parent Company Source: https://www.anglera.com/blog/industrial-piping-specialists-distributor-playbook Published: 2026-08-20 Industries: oilfield-energy ![Industrial Piping Specialists: PVF Without a Parent Company](/og/hero-industrial-piping-specialists-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Industrial Piping Specialists lands at #6 in pipe, valves and fittings on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors/), the annual ranking from Modern Distribution Management that sizes up North America's largest wholesale distributors across 20 product categories. IPS didn't get there through an IPO or a private-equity roll-up. It got there from a single Tulsa facility opened in 1986, still privately held, still running the same oilfield-energy playbook four decades later. ## The unglamorous math of PVF Pipe, valves and fittings is not a category that rewards a thin catalog. A distributor either has the right flange, in the right pressure class, in the right material grade, sitting on a shelf when a well pad or a midstream job needs it today, or the customer calls someone else. [IPS's own materials](https://www.ipipes.com/about/) describe the founding logic plainly: reduce the customer's total cost from spec to delivery, which in PVF means carrying inventory depth most competitors won't bother to stock, then doing the cutting and machining in-house so a distributor doesn't have to become a second phone call. That's the business IPS built. According to [the company's site](https://www.ipipes.com/), it now runs 16 distribution facilities across nine states, stocking pipe, valves, fittings and flanges for upstream, midstream and downstream energy work alongside general construction. Layered on top of the stocking function is a real fabrication shop: cutting, beveling, threading, mitering, plasma five-axis profiling, boring, grooving and CNC machining, done to ASTM, ASME and API specs rather than farmed out. Vendors on the line card include Bonney Forge, KF Valves, Tenaris, Vallourec and Warren Valve — mill-grade names that put IPS in the same supply chain as the majors, just without the balance sheet. ## The insight: everyone around them sold out, IPS didn't Here's the part that doesn't show up on the About page. PVF distribution is one of the more consolidated corners of industrial distribution, and the consolidation has a specific shape: either go public backed by a strategic parent, or go public backed by a financial sponsor. DistributionNOW, the PVF giant that trades as DNOW, exists today because [National Oilwell Varco spun it off onto the NYSE in May 2014](https://ir.dnow.com/news-releases/news-release-details/now-inc-spins-national-oilwell-varco-inc), handing NOV shareholders one DNOW share for every four NOV shares they held. MRC Global, the other name that dominates PVF rankings, took a different but equally financial-engineering path: Goldman Sachs took a private stake in McJunkin Red Man starting in 2007, and [the combined company IPO'd on the NYSE in 2012](https://www.mdm.com/articles/31160-goldman-sachs-sells-stake-in-mrc-global) as MRC Global, with Goldman as the exiting sponsor. Ferguson, the third name that shows up at the top of most PVF lists, is a multibillion-dollar public company with a market cap most industrial distributors will never approach. Against that field, a company still privately held since its 1986 incorporation, with no spinoff, no sponsor exit and no public filing history, cracking the top six on revenue is the strategic tell of this profile. IPS competes in a category where the largest players answer to a stock price or a fund's return timeline, and it does so as a company that answers to neither. That's not a small thing in a business this cyclical. Oilfield PVF demand swings hard with rig counts and commodity prices, and a private balance sheet can hold inventory through a downturn on a decision timeline a quarterly earnings call doesn't allow. ## Betting the model on one commodity cycle The trade-off is real, and worth naming rather than glossing over. IPS's vertical focus is upstream, midstream and downstream energy. That focus is the source of its expertise and its inventory precision, but it also means the company's fortunes move with drilling activity and pipeline capex more directly than a diversified MRO distributor's would. A public competitor like DNOW can lean on scale and capital markets access to ride out a slow patch in oil and gas. A private, regionally concentrated distributor rides the same cycle with a smaller cushion, and its 201-to-500-person workforce (per [the company's LinkedIn listing](https://www.linkedin.com/company/industrial-piping-specialists-inc.)) is a fraction of the headcount its public rivals carry into a downturn. That's the bet IPS has been making since 1986: stay narrow, stay private, stay close to the wellhead, and let inventory depth and in-house processing do the differentiation that scale would otherwise buy. Forty years and a top-six national ranking in its category suggest the bet has held up through more than one commodity cycle already. ## Where the branch network actually sits The nine-state footprint isn't arbitrary. It clusters around the basins and corridors where upstream and midstream work concentrates, extending as far as a Loveland, Colorado location serving Rocky Mountain energy customers, per [a regional business directory listing](https://www.ogdirectory.com/listing/industrial-piping-specialists--your-pvf-connection.html). That's the branch-density logic every PVF distributor runs on: a truck that can make a same-day delivery from a stocked local branch beats a national distribution center every time a rig needs a fitting by end of shift. IPS just runs that logic without a public parent telling it how fast to grow. Distribution rankings like MDM's measure revenue, but the more durable story underneath the number is usually about what a company chose not to become. IPS chose to stay a private, regionally dense, process-integrated pipe house instead of an acquisition target or an IPO story, and that choice is as much a part of its 2026 ranking as any single branch or vendor relationship. --- # ASAP Network, honestly: what the aftermarket data network covers, what it costs, and where it stops Source: https://www.anglera.com/blog/asap-network-alternative Published: 2026-08-20 Industries: automotive-aftermarket Platforms: shopify A dealer with 14,000 SKUs on Shopify and no data person joins ASAP Network on a Tuesday, requests eight brands, gets approved on six, and by Friday has product pages with real titles, spec blocks, image links, install PDFs, and a year/make/model picker that actually validates fit before checkout. Total spend: nothing. That is a genuinely good week, and anyone telling you otherwise is selling something. The interesting question is what happens in month four, when the same dealer notices that the SKUs converting are not the ones the network filled, and the ones the network filled are not ranking for anything. ## What the network is [ASAP Network](https://www.asapnetwork.org/) has been running since 2014 as a data layer between aftermarket parts brands and the dealers who sell them. The mechanism is simple and it is the whole product: a brand submits its line, ASAP stores and structures it against Auto Care Association standards, and any member dealer can request that brand and — once the manufacturer approves — pull the entire line into a storefront with one click. What arrives is not a raw standards file. ASAP's pitch to brands is explicit that it goes past PIES into what it calls ecommerce-ready output: consumer-friendly titles, HTML descriptions, feature and benefit bullets, spec sections, verified fitment, image links, and installation documents, formatted so an import does not break. The fitment drives year/make/model, VIN lookup, and on-page fit validation. Delivery runs through a Shopify app and an [X-Cart integration](https://www.x-cart.com/blog/asap-network-integration.html) that takes an authorization token and syncs brands and categories on a button press. When a brand pushes an edit, the manufacturer FAQ says updates index overnight and members who requested that brand get an email. Pricing is the part people get wrong. Dealer membership is free — the FAQ says there is no current membership fee — and direct-brand data unlocks per brand on manufacturer approval. Alongside that runs the [Community Sponsored Brand program](https://www.asapnetwork.org/aftermarket_parts/community_sponsored_brand_section), which flips the funding: dealers subscribe at $18/month billed quarterly or $15/month billed annually, and ASAP builds files for brands that are not direct partners, with no manufacturer approval to wait on. The line card runs [303 brands](https://www.asapnetwork.org/brands) — 219 direct, 84 community-sponsored — and it is weighted toward performance, off-road, diesel, and restoration. Holley, Bilstein, Fox Factory, Banks Power, BDS, ICON, AEM. If that is your business, the fit is excellent. ## What it is genuinely good at Three things, and they are not small. **It kills the spreadsheet step.** The single largest hidden cost in a small dealer's catalog operation is a person transforming supplier exports into something the platform will accept without mangling the HTML. That work is tedious, unrewarding, error-prone, and it recurs. Removing it for 303 brands is worth more than most dealers estimate. **Fit validation prevents returns.** A wrong-part return in the aftermarket is not a restocking fee, it is a shipping cost both directions, a labor hour, and usually a customer who does not come back. Validated ACA fitment checking fit before checkout is the rare data investment with a directly attributable payback. **Overnight re-index is real freshness.** Most shared content is stale content. A brand edit landing in member catalogs the next day, with a notification, is better change propagation than a lot of far more expensive systems manage. ## Where it structurally stops Not "where it is weak" — where the architecture prevents it from going. Two places. ### Every receiver receives the same thing ASAP's own word for its dealers, in its Community Sponsored Brand copy, is *receivers*. That is an accurate word and it describes the ceiling precisely. A brand's file is built once and delivered identically to every member who requests it. The description on your Fox 2.0 shock page is the description on the page of every other network dealer stocking that shock. The bullets match. The spec block matches. That sameness is not a defect — it is the mechanism that makes the file cost fifteen dollars instead of fifteen thousand. But follow it downstream. A search engine ranking four thousand pages with identical body copy has no content signal to separate them, so it falls back on what it can measure: domain authority, link profile, price, and behavioral data. The dealer with the biggest ad budget wins the query. An answer engine summarizing "best coilovers for a 2018 WRX" has no reason to cite you rather than anyone else who published the same paragraph, because there is nothing in your page that is not in theirs. The network's own homepage argues that search platforms and AI assistants now reward complete, structured, differentiated product data. That argument is correct. It just does not resolve in favor of a file everyone has. ### Coverage stops at the line card 303 brands is a real roster and it is not your roster. Count what you actually stock, then count the overlap. What falls outside is predictable: - **Private label and house brands.** Nobody submitted a file, because you are the manufacturer. These are also, usually, where the margin is. - **Regional lines** you took on in the last year or two that have not gone through the direct-brand process. - **Hard parts** outside the performance and off-road weighting — the undercar and driveline numbers your counter sells all day. - **Legacy part numbers** customers still call in by, superseded three times, that no current file references. Direct-brand access also runs through manufacturer approval, so a slice of your catalog completeness is a function of which brands said yes to whom. ## The attribute layer nobody's file contains There is a third gap, quieter than the other two, and it is the one that decides purchases. The network distributes what the brand wrote down. Brands write down what goes on the box. The facts that actually close an aftermarket sale are frequently facts no brand ever put in a field: | The question the buyer is actually asking | Where the answer lives today | | --- | --- | | Will this clear a 2-inch level and 35s? | A forum thread | | Is this 50-state legal, and what's the CARB EO number? | The brand's PDF, sometimes | | Does the hub assembly include the ABS tone ring? | The one-star reviews | | Are longer U-bolts included, or do I need to source them? | Page 3 of the install manual | | Does this reuse the factory sending unit? | A Facebook group | None of these are in an ACES application table, because ACES answers *does it fit the vehicle*, and every one of these questions is *will it work for my vehicle, as it currently sits, for what I do with it*. Those are different questions, and the second one is the one with a credit card behind it. ## What to do about it Take the files. Seriously — free-to-$180-a-year for import-safe titles, spec blocks, fit validation, and overnight freshness across 303 brands is the cheapest publishable baseline available in this industry, and rebuilding it by hand is not a defensible use of anyone's time. Then treat it as raw material rather than as a finished catalog, and put your effort where the network cannot reach: 1. **Fill the tail the roster misses** — private label, house brands, regional lines, legacy numbers — from the manufacturer's own cut sheets, install manuals, and spec drawings, with a source citation on every value so a disputed spec is settleable. 2. **Extract the deciding attributes out of prose and PDFs** into real fields — emissions legality, lift requirement, tone ring, included hardware, re-torque interval — so a filter can use them and a machine can read them. 3. **Rewrite the shared baseline for your buyer.** Not spun, not paraphrased — [written for a specific person](/blog/aftermarket-buyer-personas-product-data), because a lift kit sold to a weekend trail rider and the same lift kit sold to a commercial upfitter are not the same listing. That is the work [Anglera](/) automates across a whole item file: mining specs from source documents, proposing the attributes your schema never had, governing the vocabulary so *1/2"*, *0.50 IN*, and *half-inch* stop being three values, and writing all of it back to your PIM as content you own. The network gets you publishable. Owning the rest is what gets you chosen. --- # Top Plumbing Distributors 2026: Size Doesn't Predict the Shelf Source: https://www.anglera.com/blog/top-plumbing-distributors-2026 Published: 2026-08-19 Industries: plumbing, mro-industrial ![Top Plumbing Distributors 2026: Size Doesn't Predict the Shelf](/og/hero-top-plumbing-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Plumbing distribution's six largest players split almost evenly by operating model, but not by digital performance: the smallest revenue company we measured in this vertical, F.W. Webb at $2.6B, posted a Digital Readiness Index score one point off the vertical's top and seven points ahead of the group leader by revenue. Size and shelf quality are not the same axis here, and the gap between them is the story. ## The 2026 Plumbing Distributor Ranking | Rank | Company | Revenue | Fiscal Year | Archetype | DRI | |---|---|---|---|---|---| | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | $31.3B | CY2025 | Scale-aggregator / branch-density | 58 | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B | FY2025 | Scale-aggregator | 66 | | 32 | [Winsupply](/blog/winsupply-distributor-playbook) | $8.4B | FY2026 | Branch-density | not measured (no public catalog) | | 59 | [Hajoca](/blog/hajoca-distributor-playbook) | $4.2B | FY2025 | Branch-density | not yet measured (catalog verified live) | | 67 | [Reece USA](/blog/reece-usa-distributor-playbook) | $3.3B (NA) | FY2025 | Branch-density | 51 | | 72 | [F.W. Webb](/blog/fw-webb-distributor-playbook) | $2.6B | FY2025 | Branch-density | 65 | ![Digital Readiness Index pillar breakdown for measured Plumbing distributors](/charts/top-2026/plumbing.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Ranks are positions in Anglera's full [Top Distributors 2026](/top-distributors-2026) list, where Ferguson and Grainger place among the largest distributors in North America across any category and F.W. Webb and Hajoca compete on regional depth rather than national scale. Digital Readiness Index scores and methodology are explained in full at [/top-distributors-2026/methodology](/top-distributors-2026/methodology). ## A vertical built on local ownership, with two exceptions Four of the six companies here run on the same operating logic: branch-density, meaning growth and competitive advantage come from a dense local footprint rather than centralized scale. Winsupply's rationale describes 680+ hyper-local "Local Companies" with real equity and P&L held by branch presidents. Hajoca runs 450+ "Profit Centers" under more than 60 retained regional trade names, each manager controlling local inventory, pricing, and hiring. Reece USA grew its US network to 267 branches in FY25 through six bolt-on acquisitions plus organic openings. F.W. Webb has built regional dominance across the Northeast through more than 100 locations, explicitly framing continued greenfield openings as a contrast to PE-backed roll-ups. Ferguson and Grainger sit apart. Ferguson is classified as scale-aggregator with branch-density as a secondary trait: it layers a steady cadence of tuck-in acquisitions (nine in FY2025 alone, adding roughly $300M in annualized revenue through deals like HPS Specialties and Water Resources Inc.) onto an already-large, centrally managed distribution network. Grainger is a pure scale-aggregator, centralizing national-account coverage and purchasing scale from a small number of large distribution centers rather than competing on branch count. That split explains the revenue gap at the top of the table: the two companies built for national purchasing scale and acquisitive growth are also the two largest by revenue, while the branch-density operators cluster lower on the size axis even as several of them, per their own 2025-2026 moves, keep adding branches. Hajoca's acquisition of American Refrigeration Supplies, a 34-branch, two-DC HVAC/refrigeration distributor closing January 30, 2026, pushed its North American location count past 450 and marks its first entry into the Southwest — branch-density growth executed through M&A rather than greenfield openings, a variant on the model worth watching. Two of the four branch-density companies, Winsupply and Hajoca, carry no score, and both for reasons rooted in how far they push local autonomy. Winsupply has no public catalog to sample: its local-company sites are brochureware. Hajoca's corporate site is brochureware too, but a verification pass found live per-branch storefronts under its regional trade names — public product pages with pricing and branch stock — so its entry reads not yet measured: the catalog is verified live but hasn't been sampled under the index's rules, and no score is published without a sample. Reece USA and F.W. Webb, also branch-density by classification, both run centralized e-commerce storefronts our probe could measure — proof that branch-density as an ownership structure doesn't force a company away from a unified digital catalog. It's a choice, and here the two oldest, most locally federated operators made the opposite one. ## What the measured pages actually showed The vertical's median DRI is 61.5, ahead of 58 for the full index, and driven almost entirely by two companies bunched at the top: Grainger at 66 and F.W. Webb at 65, one point apart despite a revenue gap of roughly $15.3 billion. Ferguson sits at 58 and Reece USA at 51. The pillar breakdown is where this gets specific. Grainger's 66 rests on the strongest product data depth score in the group, 31 of 35, with a median of 47 structured attributes per sampled page — comfortably the richest catalog measured in this vertical. For a buyer trying to cross-reference a specific fitting by pipe diameter, thread type, material, and pressure rating, 47 attributes is enough room to actually filter on those specs rather than guess from a title. But Grainger's answerability pillar is comparatively weak at 12 of 25, and its agent-readiness score, 9 of 20, is dragged down by an explicit block on AI crawlers. Ferguson is the inverse case, and the more surprising one given its size. Its answerability pillar scores 19.5 of 25, the strongest in the vertical — descriptive content, imagery, and catalog consistency are solid. But its product data pillar is just 11 of 35, with a median attribute count of 0 across the sampled pages. For the largest plumbing distributor in the country by a wide margin, that means the sampled product pages read well to a human buyer but hand a machine or shopping agent almost nothing to match a SKU against. Pricing and stock were visible without login on bathroom faucets and residential water heaters but gated on other sampled categories, per our probe notes. Reece USA scores lowest at 51, but not uniformly. Its transparency pillar is the best in the group, 17.5 of 20 — real branch-based pricing and stock visible while browsing as a guest, no account required. It also posts the only meaningful GTIN match rate among the four measured companies, 75%, which matters more than any other single number here: a GTIN is the identifier that lets a buyer or a marketplace confirm two listings are the same physical product. Where Reece falls down is answerability, 8.8 of 25, and agent readiness, 6 of 20 — the lowest of either pillar in the vertical, with no sitemap coverage found for product URLs. F.W. Webb's 65 is the most balanced showing: a perfect transparency score, 20 of 20, and the vertical's highest agent-readiness score, 14 of 20, built substantially on being the only company in this group with confirmed product structured data (JSON-LD) on its pages — even though F.W. Webb, like Grainger, explicitly blocks AI crawlers. That pairing is worth sitting with: a company can lock the front door to AI agents while still leaving well-marked product data behind it, and on this measure, machine-readable markup counted for more than the robots.txt stance. F.W. Webb's median attribute count, 16, sits between Reece's 9 and Grainger's 47, but its consistency spread, 21 points between richest and thinnest sampled page, is the widest gap of the four — a sign that quality depends heavily on which category a buyer happens to land in. ## Where this settles Plumbing distribution's 2025-2026 moves are almost all about branch footprint: Ferguson's tuck-ins, Winsupply's 20 planned Local Company openings, Reece's completed rebrand under one banner, F.W. Webb's Somerdale, NJ location, Hajoca's push into the Southwest via the ARS deal. None of it is aimed at the digital catalog directly, and the DRI results show it: even the vertical's best score, Grainger's 66, leaves real room on answerability and agent readiness, and the two companies built most tightly around local branch autonomy don't have a central catalog to score at all. The distributors here compete on where their trucks and counters are. The next round of separation may come from whether that local density gets attached to a catalog a machine can actually read. --- # Mingledorff's: The Carrier Loyalist Home Depot Just Bought Source: https://www.anglera.com/blog/mingledorffs-distributor-playbook Published: 2026-08-19 Industries: hvacr ![Mingledorff's: The Carrier Loyalist Home Depot Just Bought](/og/hero-mingledorffs-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Mingledorff's ranks #7 among HVACR wholesalers on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the last ranking it will make as an independent, family-run company. In May 2026, [SRS Distribution — the Home Depot subsidiary — completed its acquisition of the 87-year-old Peachtree Corners, Georgia distributor](https://www.prnewswire.com/news-releases/srs-distribution-completes-acquisition-of-hvac-distributor-mingledorffs-302767796.html). The story of how a single-family, single-manufacturer HVAC house built something the largest home-improvement retailer in the country wanted to own is a better lesson than most exits in the channel. ## A contractor that became the wholesaler Mingledorff's did not start as a distributor. Walter Lee Mingledorff Jr., a 25-year-old engineering graduate, founded the company in 1939 in Savannah as a franchised Carrier installation contractor. His first job was air-conditioning his own father-in-law's house, reportedly the first air-conditioned home in the city, according to [the company's own history page](https://www.mingledorffs.com/company-history/). The business went dark during World War II while Mingledorff built minesweepers for the Navy and employees scattered into the defense industry and the service. The pivotal decision came in 1958, and it wasn't Mingledorff's idea. Carrier Corporation asked him to leave contracting and become a wholesale distributor instead — handing product to the installers rather than competing with them. That single request set the company's shape for the next 68 years: an exclusive, single-line loyalty to one manufacturer that most distributors in a fragmented, multi-brand channel never take on. ## Growth by acquiring the trading area, not diluting the line For decades Mingledorff's stayed a Georgia-and-South-Carolina operation. The expansion era started in 1999 with the purchase of George Holden & Associates, a commercial HVAC house founded in Atlanta in 1952, and accelerated hard after 2009, when Mingledorff's bought Equipment Sales Corp. and picked up Bryant distribution rights across Alabama and the Gulf Coast — its first real move outside a 70-year home footprint, per [PHCP Pros' account of the decade that followed](https://www.phcppros.com/articles/10539-mingledorffs-distributors-celebrates-10th-anniversary-of-major-acquisitions-in-new-territory). What followed was not a scattershot roll-up. Every acquisition extended the same Carrier/Bryant franchise into adjacent geography rather than adding competing lines: George Wheelock Co., a 123-year-old Birmingham commercial house, in 2011; ductless and VRF product lines the same year; a Gulf Coast expansion for subsidiary Commercial Controls Group in 2014; and in 2016, Carrier itself handed Mingledorff's exclusive rights to distribute applied products across the Gulf Coast. By the company's own accounting, sales in the territories acquired since 2009 more than tripled, backed by over $17 million in facility investment and $23 million in dealer development and marketing. That is the opposite of the multi-brand, private-equity roll-up playbook that dominates HVAC distribution today — Mingledorff's grew by deepening one relationship across more geography, not by broadening its supplier base. ## The culture that made the trading area worth buying Here is the part that does not show up in a deal filing. Chairman Bud Mingledorff — reportedly the founder's descendant — hand-writes an anniversary note to every one of the company's roughly 415 employees across five states, a detail one general manager relayed to [PHCP Pros with a story about a retiree who saved every card for her grandchildren](https://www.phcppros.com/articles/3447-empowerment-gratitude-build-loyalty-at-mingledorff-s). Branch managers run their stores with real autonomy: "They trust us, give us the power to make decisions and then back us up," one told the same outlet. That decentralization is easy to say and rare to actually run at 42 locations, and it is a plausible reason contractor relationships at Mingledorff's reportedly span 60-plus years and multiple generations of the same trade families. That combination — one supplier, decades of trust, a branch network that runs itself — is the unique insight worth naming plainly: Mingledorff's spent 87 years building the single asset a national platform values most in a roll-up era, deep, durable trading-area relationships, by refusing to do the thing roll-ups usually do, which is diversify the supplier list. The loyalty that looked like risk concentration for most of the company's history became the exact reason it was worth acquiring intact rather than broken up for territory. ## Why Home Depot wanted this instead of building it SRS Distribution had never sold HVAC before this deal. [Home Depot CEO Ted Decker framed the acquisition as extending the company's addressable market to roughly $1.2 trillion](https://www.prnewswire.com/news-releases/the-home-depot-subsidiary-srs-distribution-enters-into-agreement-to-acquire-wholesale-hvac-distributor-mingledorffs-302722559.html), with HVAC distribution alone representing close to $100 billion of that. SRS CEO Dan Tinker described the logic as bringing "deep HVAC expertise into our national network" for Pro customers who already buy roofing, landscaping, and pool supplies through SRS's other specialty banners. Financial terms were not disclosed. What Home Depot bought was not 42 branches and a Carrier badge. It bought an exclusive trading-area franchise with a manufacturer relationship going back to 1958, a management team under President and CEO David Kesterton that has run the company since 2008, and a base of multi-generational contractor accounts that a fresh HVAC entrant could not assemble at any price. The company's independence ends here, but the model that built its value — supplier loyalty, geographic depth, and a branch culture strong enough to survive four ownership generations — is the same model every family distributor watching this deal is now measuring itself against. ## A timeline of the company's shape | Year | Event | |---|---| | 1939 | Founded in Savannah as a Carrier installation contractor | | 1958 | Carrier asks the company to become a wholesale distributor | | 1999 | Acquires George Holden & Associates | | 2009 | Expands into Alabama and the Gulf Coast via Equipment Sales Corp. | | 2011 | Acquires George Wheelock Co.; adds ductless/VRF lines | | 2016 | Carrier grants exclusive applied-products rights for Gulf Coast | | 2026 | Acquired by SRS Distribution (Home Depot) | Distributor playbooks like this one keep coming back to the same unglamorous inputs: which catalog you commit to, how many branches you're willing to run yourself, and how long you're willing to hold one supplier relationship while the rest of the channel diversifies. Mingledorff's is the latest reminder that those choices, made decades before anyone is watching, are what a national buyer eventually pays for. --- # Half of the Largest Distributor Catalogs Refuse a Plain Web Request. We Only Found Out Because We Tried to Read Them. Source: https://www.anglera.com/blog/distributor-catalogs-machine-hostile-2026 Published: 2026-08-19 ![Half of the largest distributor catalogs refuse a plain web request](/og/hero-digital-readiness-index-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America's largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* We have [argued before](/blog/agentic-commerce-machine-readable-catalog-2026) that agent-mediated buying is a parsing problem: an AI agent issues a query against structured data, filters on attributes, and selects the first candidate that satisfies the spec. Either your SKU survives the parse or it doesn't. That argument contains an assumption we never examined. It assumes the agent gets the page. This month we rebuilt the retrieval side of our own measurement pipeline, because the previous one was failing quietly. Nineteen of seventy-three storefronts returned `403` to it. Thirty-seven never reached a search results page. We had been publishing those as unknowns, which was generous to us and unfair to everyone else: a column that reads "unknown" because we never successfully asked is not a measurement, it is a filing error. Fixing it meant escalating through four tiers of retrieval — a plain HTTP client, commercial proxy egress, a headless browser that executes JavaScript, and a second unblocking vendor for the sites that defeat the first one. Along the way we accidentally produced a more interesting number than the one we set out to collect. ## The number Of 73 distributor storefronts, **37 let a plain HTTP client reach both a homepage and a product page.** The other 36 did not. | What it took to reach a product page | Storefronts | |---|---| | A plain HTTP client | **37** | | Commercial proxy egress | 15 | | A headless browser | 6 | | A second unblocking vendor | 4 | | No product page reachable at all | 11 | Four sites required a *second* commercial unblocking vendor because the first one was itself blocked. On two of them — Wesco and MSC Industrial — our proxy provider tripped its own circuit breaker after consecutive failures before another vendor's residential egress walked in. Now hold that against what these same companies publish about themselves. **Nine of the twenty-six that publish an XML sitemap refuse a plain client.** A sitemap exists for one purpose: to tell an automated visitor where the products are. Publishing one and then blocking the visitor is not a security posture, it is a contradiction. ## What actually stops a machine The aggregate hides the interesting part. These are not sites that are merely slow or badly built. Each of the following is a specific, identifiable decision: **Hillman's product tiles are not links.** Every one renders as `href="javascript:void(0)"` and navigates in JavaScript. A crawler following links through that catalog finds **zero products**. The company's own sitemaps carry roughly **64,590 product URLs**. The inventory is published and the path to it is severed. **CED has no national storefront.** Not a blocked one — none. The root domain refuses every client we have. The internal portal sits behind Microsoft SSO. The actual catalog is a Salesforce B2B storefront replicated **per profit center** across 700-plus separate subdomains, sharing one product master with no canonical entry point. No crawler, and no agent, arrives at that by inference. **Henry Schein runs a bot wall in front of pages that are entirely public.** Login gates pricing, not the pages. The product pages carry structured data. The wall's only measurable effect is to stop machines from reading what any person can read freely. **McNaughton-McKay serves an empty shell.** Its category grids render client-side, so the delivered HTML says "loading content." The same data is available from the storefront's own public API — which we found only because we were watching network traffic, which an agent is not. **Border States' top-level categories contain no products.** They list subcategories. A crawler that samples top-level categories concludes the catalog is empty. **Optimas's webstore is dead.** Its NetSuite storefront times out from a plain client, from our proxy vendor, and from the unblocker alike, while Google still serves stale index entries pointing at it. Three independent providers failing identically is what distinguishes a dead host from a blocked one. And one that is a legitimate choice rather than an accident: **Vallen is deliberately gated.** Its own JavaScript bundle sets guest browsing to false and the route guard redirects anonymous visitors to a login page. Roughly 488,000 SKUs, none publicly reachable. That is a strategy, not a bug — but it is a strategy with a consequence, and the consequence is that agents cannot see the catalog at all. ## Two traps for anyone measuring this Two findings are worth passing on to anyone attempting the same exercise, because both silently corrupt results. **Kimball Midwest's mid-level category pages render only a shared thirteen-SKU "popular bought" carousel, byte-identical across Abrasives, Paint and Electrical.** A crawler sampling three categories collects the same promoted SKUs three times and believes it has category spread. Anything measured from that sample describes the company's merchandising, not its catalog. **Medline's product pages are family pages** — one title, one description, one specification block, over a table of many orderable item numbers. Scoring that against a rubric built around one page per purchasable SKU produces a number that means something different from every other number in the set. ## Why we are not folding this into the score The Digital Readiness Index already has a Machine and Agent Readiness pillar. Every signal in it is a *declaration*: structured data present, sitemap present, robots.txt stance toward AI crawlers. Those measure what a site says. None of them measure what a site does to a machine that shows up. A company can publish flawless `Product` JSON-LD behind a wall that refuses the crawler which would have read it — and one of the companies here does exactly that. So this ships as its own axis, reported next to the DRI rather than inside it. Folding it in would move published scores for reasons unrelated to anything the companies changed, and the index's entire claim is that the same site scores the same number twice. Accessibility is measured, published, and kept separate. There is a directional relationship worth noting carefully. Median DRI runs 59 for storefronts a plain client can read, 58 where a proxy was needed, 56 where a browser was needed, and 43 for the four that needed a second unblocking vendor. The measured subsets are small — 21, 7, 6 and 3 companies — so treat the top of that range as flat and only the bottom as suggestive. What it hints at is that hostile retrieval and thin product data tend to travel together, which is what you would expect if both come from the same underinvestment. ## What this is and is not Difficulty here is measured against our ladder, not against any particular AI agent. It is a proxy, and we would rather say so than imply we tested a specific model's browsing behaviour. What it does establish is a floor. This pipeline had commercial proxy egress, headless rendering, network-level request capture, XML sitemap parsing, and human reviewers who could work out that Hillman's real catalog lives on a different subdomain from its marketing site and that DESCOURS & CABAUD's North American flagship trades as Dillon Supply. It still needed all of it. An AI shopping agent has a fetch tool. Every barrier above sits upstream of the parsing problem. Attribute coverage, GTIN presence, schema markup — all of it is downstream of a request that has to succeed first. Half of these catalogs answer that request. The other half answer it only for someone willing to buy infrastructure to ask. If you are wondering which half you are in, the test costs nothing: fetch your own product page with `curl`, no browser, no headers beyond a user agent, and see what comes back. Then fetch your sitemap and try to follow three links out of it. That is approximately the experience your catalog offers a machine — and increasingly, the machine is the first thing that reads it. *Methodology, per-company grades and the full barrier list are published with the [Top Distributors 2026 index](/top-distributors-2026). Accessibility was measured in August 2026; sites change, and the next quarterly pass re-measures it.* --- # The same lift kit sells to five different buyers. Your catalog is written for none of them. Source: https://www.anglera.com/blog/aftermarket-buyer-personas-product-data Published: 2026-08-19 Industries: automotive-aftermarket A four-inch suspension lift for a 2021 F-250 gets bought by five people who share nothing except the part number. The **weekend trail rider** wants to know if it clears 37s and whether the ride quality on pavement goes to hell. The **commercial upfitter** wants to know if it voids the chassis warranty, what it does to the payload rating, and whether the DOT-relevant headlight aim is still adjustable. The **shop foreman** quoting the job wants book time, whether the pitman arm comes out with a puller or a press, and what else he has to order today so the truck is not in the bay on Friday. The **fleet manager** wants total installed cost across nine trucks and whether it changes the PM interval. The **restorer** is not in this market at all, but he is in the next one over, and he needs to know if the finish is period-correct. Now open the product page. It says the kit is engineered for superior off-road performance, includes premium components, and is designed to provide a comfortable ride on and off the road. It answered nobody. And if you pulled that description from a shared aftermarket data network, it answered nobody on four thousand other storefronts at the same time. ## The average buyer does not exist Shared product data has a structural constraint that is easy to miss because it sounds like a feature: one record, distributed everywhere. A brand writes the description once. A network like [ASAP](/compare/asap-network) formats it, validates the fitment, and delivers it to every member dealer who requests that line. Nobody re-keys a spreadsheet. Everyone publishes on Tuesday. The constraint is that a record written for everyone has to be written for the average, and the average aftermarket buyer is a statistical artifact. Real buyers arrive with a vehicle, a use case, a skill level, and a budget, and they are filtering hard on all four before they read a word of marketing copy. This is more acute in the aftermarket than almost anywhere else, because fit is binary and *suitability* is not. Four brake pad sets fit the truck. Which one is correct depends entirely on whether it tows 9,000 pounds twice a month, sits in stop-and-go delivery routes, or gets driven to Cars and Coffee. The fitment table says all four are right. Only one of them is. ## What each buyer is actually filtering on The useful exercise is to stop thinking about audience segments and start listing the specific fields each buyer needs to see before they will commit. Same category, same catalog, wildly different fields: | Buyer | Deciding question | Attribute that answers it | | --- | --- | --- | | DIY driver | Can I do this in my driveway? | Special tools required, press required, torque specs published | | Pro installer | What's my book time and what else do I need? | Labor time, included hardware, required-but-not-included parts | | Fleet / municipal | What does it cost me over 100k miles? | Service interval, warranty term, rebuild kit availability | | Enthusiast | Will it clear my setup? | Lift requirement, max tire diameter, backspacing, wheel offset | | Restorer | Is it correct for the year? | Finish, date-code correctness, OE casting number | | Commercial upfitter | Does it survive compliance? | GVWR impact, emissions legality, CARB EO number | Look at the right column. Almost none of those live as structured fields in a typical distributed record. Most exist in an install PDF, a footnote, a forum thread, or nowhere at all. Which means that on the specific question that decides the sale, your catalog is silent — and so is every competitor publishing the same file, which is why the whole category converts worse than it should. ## Persona work is really attribute discovery "Write for your persona" is advice that usually produces nothing but adjectives. The version that works is mechanical: for each buyer, find the questions they ask that your schema has no field for, then create the field. Those questions are already sitting in signals most catalogs never read: **Internal site search.** Queries that return zero results, or return a page of forty items, are a list of attributes your facets do not have. `fits leveled 2019 ram 1500`, `low dust pads for towing`, `no drill install`. Each one names a field. **Return reasons and one-star reviews.** The most honest attribute research available. *"Doesn't include the ABS tone ring"* appearing eleven times is not a customer service problem, it is a missing boolean. **Owners groups and platform forums.** Aftermarket buyers do their compatibility research in public. A thread where forty people argue about whether a lift pump kit reuses the factory sending unit is a specification the brand never published and every buyer needs. **The counter phone.** Your own people answer the same six questions all day. Every one of those is an attribute that should be on the page. **What a competitor added.** When one listing outranks three identical ones, look at what is different. Frequently it is a single field — a CARB EO number, a 50-state legality flag — that turned a generic page into the answer to a specific query. This is the same loop that decides whether an AI shopping engine cites you. Models expand a question like *"will this kit fit my leveled Ram"* into sub-questions about clearance, required hardware, and alignment, then compare sources fact by fact. A page that answers the sub-questions in labeled fields gets used. A page with a marketing paragraph does not, however good the part is. ## One record, more depth — not five pages The wrong implementation is a page per persona. That manufactures thin, near-duplicate content and makes the ranking problem worse. The right implementation is one product record carrying enough structured attributes that every surface can select what it needs: - The **category page facets** narrow on lift requirement and tire diameter for the enthusiast, and on labor time and included hardware for the shop. - The **product page** leads with the fact that buyer's traffic source implies — the query that brought them in tells you which question is live. - The **feed** exposes all of it, so marketplaces and answer engines can match on the specific attribute rather than on a title. - The **copy** is written once but written to be *decisive*, naming the vehicle, the use case, and the tradeoff, instead of gesturing at superior performance. That is a depth problem, not a duplication problem. And it is precisely the depth a shared network file cannot have, because a record built to be distributed identically to four thousand dealers cannot also be aimed at your buyer. ## The practical order of operations 1. **Take the shared baseline.** Fitment, spec blocks, image links, install PDFs. Do not rebuild what a network already delivers correctly. 2. **Pick your two real personas.** Not five. Most dealers make their money on two, and the honest answer is usually visible in order data. 3. **Mine their questions** from site search, returns, reviews, forums, and the counter, and turn each recurring question into a proposed attribute. 4. **Govern the values** before you fill them, so lift requirement does not arrive as `2"`, `2 in`, and `two inch` across three brands. 5. **Extract from source documents** — the install manual already contains the U-bolt length and the re-torque interval; it just is not in a field. 6. **Rewrite the baseline copy** for the buyer, and keep a citation on every value so a disputed spec is settleable instead of arguable. Steps three through six are the part that does not scale by hand across 14,000 SKUs, which is the work [Anglera](/) automates: reading the signals, proposing the attributes your schema never had, normalizing the vocabulary, mining specs out of supplier PDFs with per-value provenance, and writing all of it back to your PIM. The network hands you and four thousand competitors the same paragraph about superior off-road performance. The dealer who instead answers *will it clear 37s on a leveled truck, and do I need longer U-bolts* is the one the trail rider, the shop foreman, and the language model all end up choosing. --- # Johnstone Supply: HVACR's #2 Runs on Owners, Not Employees Source: https://www.anglera.com/blog/johnstone-supply-distributor-playbook Published: 2026-08-18 Industries: hvacr ![Johnstone Supply: HVACR's #2 Runs on Owners, Not Employees](/og/hero-johnstone-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Johnstone Supply lands at #2 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors/johnstone-supply-2/) for HVACR, with $4.5 billion-plus in fiscal 2025 revenue, behind only Watsco. What separates it from almost every other distributor at that scale is who actually owns the branches: not a corporate parent, but 60 individual operators running the network store by store. ## A cooperative that never fully stopped being one Most distributors that hit $4.5 billion have consolidated into a single operating company with regional managers reporting up a chain. Johnstone never did that. Roughly 350 of its approximately 470 locations are independently owned by local operators, with the remaining company-owned stores filling in territories where no independent buyer stepped up. That split is not a historical accident left over from a slower-growing era. It is the deliberate architecture the company still runs on. The arrangement traces to 1981, when founder John Shank converted the business into a member cooperative. Shank had opened the original store in Portland, Oregon in 1953 and spent the next three decades building out a product catalog contractors trusted more than any single manufacturer's line card. At launch, the co-op had 32 member-owners sharing warehousing, purchasing, and marketing while each ran their own store and kept the upside of running it well, according to [Johnstone's own history page](https://www.johnstonesupply.com/our-history). That structure compounded for forty years: member locations grew, distribution centers were added, and the catalog kept expanding, all without the center ever taking direct ownership of the stores doing the selling. ## The 2021 bet: sell the co-op to keep the model In September 2021, Johnstone's members voted to convert the cooperative into a Delaware LLC backed by capital from Redwood Capital Investments, a deal formally closed that November, per the [Business Wire announcement of the conversion agreement](https://www.businesswire.com/news/home/20210924005477/en/CORRECTING-and-REPLACING-Johnstone-Supply-Approves-Definitive-Conversion-Agreement-with-Redwood-Capital-Investments). On paper this looks like the standard move in a decade when HVACR distribution has been aggressively rolled up by private equity and public consolidators. In practice, the deal did something unusual: it brought in outside capital while preserving the owner-operator layer that made the co-op work. Johnstone Supply LLC still serves 60 individual Johnstone Business Owners rather than running a flat corporate hierarchy, and those owners still control day-to-day operations of their stores. That is the strategic tension worth naming plainly. Redwood's capital gives Johnstone the balance sheet to fund distribution centers, acquisitions, and shared infrastructure at a scale no member cooperative could self-finance. But every dollar of that capital has to be deployed without breaking the incentive structure that made local owners outperform salaried branch managers in the first place. Get the balance wrong in either direction, too much central control or too little coordination, and the model that built the company erodes. Four years in, the acquisition pace suggests they are still finding real estate to add rather than territory to consolidate: the company picked up Dunphey-Smith Supply's two New Jersey locations in February 2026, a bolt-on that added Garden State coverage rather than folding an existing owner's territory into corporate hands, per [MDM's coverage of the deal](https://www.mdm.com/news/top-distributor-sectors/hvacr/johnstone-supply-acquires-dunphey-smith-in-nj/). ## Why owner-operators still win on the counter The mechanism matters because HVACR distribution is a relationship business fought branch by branch. A contractor walking into a Johnstone counter at 6 a.m. for a compressor is usually dealing with someone who has equity in that specific store's performance, not a manager rotating through a territory on a two-year assignment. That alignment shows up in how deep individual Business Owners invest in their local markets: training, inventory depth on the parts contractors actually break, and relationships with the service techs who decide which counter gets the call at 6 a.m. next time. Training is the clearest example of that local investment compounding into a network advantage. Johnstone's Orion Group built a 3,000-square-foot live-fire training facility in 2023 so technicians could work hands-on with residential unitary equipment, VRF systems, and high-efficiency boilers rather than learning off spec sheets, a differentiator [HVACR Trends covered](https://hvacrtrends.com/johnstone-supply-orion-group-making-training-a-differentiator/) as part of a broader pattern across the network. Multiply that by 60 owners each running NATE-certified programs suited to their own market's mix of residential, commercial, and refrigeration work, and Johnstone effectively fields dozens of specialized training operations instead of one standardized curriculum handed down from Portland. ## The scoreboard against Watsco Watsco holds #1 in HVACR at $7.2 billion, built largely through direct ownership and an aggressive digital-commerce push. Johnstone's $4.5 billion-plus puts it a clear second, but the two companies are running different bets on the same problem: how do you make a distribution network feel local at national scale. Watsco leans on centralized systems and acquired-and-integrated branches. Johnstone leans on capitalized independence, funding shared infrastructure while leaving ownership, and the incentive to actually build a market, in the hands of the person behind the counter. Neither approach is obviously right. But Johnstone's 2021 conversion is a rare example of a distributor taking private equity capital and using it to reinforce a model other consolidators spend that same capital erasing. That is the bet worth watching as the next round of HVACR roll-ups plays out. Distribution rewards the companies that get the boring infrastructure right: catalogs deep enough to trust, branches close enough to matter, and the people running them incentivized to keep both that way. This profile is part of Anglera's Distributor Playbooks series. --- # ACES tells the buyer it fits. It never tells them why yours. Source: https://www.anglera.com/blog/fitment-is-not-merchandising Published: 2026-08-18 Industries: automotive-aftermarket A customer enters a 2018 Silverado 1500 in the year/make/model picker and asks for front brake pads. The catalog does its job perfectly: four sets come back, all validated, all genuinely correct for the vehicle. Fitment data worked. Then the page goes quiet. Nothing on it explains that one set is a low-dust ceramic for a commuter, one is a carbon-metallic built for a truck that tows 9,000 pounds twice a month, one is the value line, and one is the same compound as the value line with a longer warranty. The customer picks the cheapest, tows a trailer in August, cooks the pads, and returns them. Fitment did not fail. Fitment was never the layer that decides the sale. ## Two different jobs, one conflated The aftermarket built extraordinary infrastructure for the first job. The Auto Care Association's [ACES and PIES standards](https://automotiveaftermarket.org/aftermarket-industry-trends/aces-pies-data-explained/) encode vehicle application and product information respectively, sitting on shared reference databases — VCdb for vehicle configurations, PCdb for part terminology, PAdb for product attributes, Qdb for fitment qualifiers — and the association pushed [ACES 5.0 and PIES 8.0](https://apaengineering.com/technology-article/aces-5-0-pies-8-0-update-automotive-data-standards-2026) in March 2026 with expanded coverage and an API model supporting daily refresh. This is a genuine achievement and no other distribution vertical has anything as mature. It is also, by design, a **compatibility** standard. Its question is whether this part is applicable to this vehicle configuration. That question has a right answer, which is exactly why it could be standardized. The second job has no standard because it has no universal right answer. *Which of the four compatible parts should this particular buyer purchase?* depends on what the vehicle does, how long they plan to keep it, whether they are doing the work themselves, and what they are optimizing for. That question is merchandising, and it is where the money is. Data networks in this space distribute the first layer beautifully. [Shared aftermarket catalogs](/compare/asap-network) hand every member dealer validated ACA fitment, VIN lookup, on-page fit validation, spec blocks, and image links. What they cannot hand over is the second layer, because the second layer is different for your buyer than for the dealer two states away receiving the identical file. ## What the second layer actually contains Merchandising attributes are unglamorous and specific. They are the facts that make one compatible part obviously correct and the other three obviously wrong, for a stated use case: - **Compound and rating fields.** Friction compound, low-dust rated, tow/haul rated, load index. All four pad sets fit; only one is rated for the trailer. - **Included and not-included hardware.** Does the hub assembly integrate an ABS tone ring. Are longer U-bolts in the box. Is the sensor port present. These are the facts that turn into returns when absent. - **Installation reality.** Special tools, press required, book time, re-torque interval at 500 miles. The DIY buyer and the shop are both making a schedule decision, not a parts decision. - **Regulatory status.** CARB EO number, 50-state versus 49-state versus off-road-only. In several states this is the entire purchase decision, and it is frequently absent from distributed records. - **Fit under modification.** Lift requirement, max tire diameter, backspacing, clearance at stock ride height. ACES describes the factory vehicle. A large share of this industry sells to vehicles that are no longer factory. - **Longevity economics.** Warranty term, rebuild kit availability, service interval. The fleet buyer is not comparing prices, they are comparing cost per mile across nine trucks. Read that list against a typical distributed record and the pattern is consistent: these facts exist, but they exist in an install PDF, in a footnote, in a marketing sentence, or in a forum thread. They do not exist as fields. Anything that is not a field cannot be filtered on, cannot be compared, and cannot be read by a machine. ## Why this decides AI visibility, not just conversion The failure mode used to be a shopper bouncing. Now it is not being cited at all. Answer engines take a question like *"best front brake pads for a 2018 Silverado that tows"* and expand it into sub-questions — compound differences, fade resistance, dust, warranty — then compare candidate sources fact by fact rather than ranking whole pages. A catalog with perfect fitment and a generic description has nothing to contribute to that comparison. It is compatible with the vehicle and irrelevant to the question. Worse, if you and four thousand other dealers published the same network file, you are all equally irrelevant to it, and the model cites whoever added the one paragraph that addressed towing. That is a very cheap thing to lose on. ## Fixing it without rebuilding fitment The order matters, because most catalogs try to fix this by rewriting copy, which is the last step, not the first. **Start from questions, not fields.** Pull the site-search queries that return a wall of undifferentiated results. Pull the top ten return reasons by SKU family. Pull the recurring one-star themes. Each is a merchandising attribute your schema is missing, named by the buyer. **Propose the attribute before you fill it.** *Tow-rated (boolean)*, *friction compound (enum)*, *ABS tone ring integrated (enum)*, *lift required in inches*. This is a schema change, and treating it as one is what keeps it from becoming another free-text field that means three things. **Govern the values immediately.** Compound should be `ceramic | semi-metallic | organic | carbon-metallic` and nothing else, across every brand in the catalog, or the facet you just built returns partial results and buyers stop trusting it. **Mine the values from documents you already have.** The install manual has the re-torque interval. The submittal has the load rating. The brand's own PDF has the EO number. These are already in your possession, unreadable, attached to the record as links. Extraction is the cheapest fill available and it comes with a citable source. **Then** rewrite the copy, so the page leads with the decision the buyer is actually making rather than with superior performance and premium components. Across a full item file that loop does not scale by hand, which is what [Anglera](/) automates — reading the signals that name missing attributes, proposing and governing the fields, mining values out of supplier PDFs with a citation per value, and writing it back to your PIM so the next supplier reissue does not quietly undo it. Fitment is the price of admission and the aftermarket has solved it about as well as an industry can. It gets your part into the room with three others that fit just as well. Everything that happens after that is merchandising data, and it is still, for most catalogs, missing. --- # Top HVACR Distributors 2026: Scale vs. Branch Density Source: https://www.anglera.com/blog/top-hvacr-distributors-2026 Published: 2026-08-17 Industries: plumbing, electrical, mro-industrial ![Top HVACR Distributors 2026: Scale vs. Branch Density](/og/hero-top-hvacr-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* The company that scores highest on the Digital Readiness Index in this vertical is not a heating-and-cooling specialist at all. [W.W. Grainger](/blog/grainger-distributor-playbook) posts a 66, the top mark among six measured HVACR distributors, even though HVAC/R is one category among dozens on its shelves. [Ferguson](/blog/ferguson-distributor-playbook), the largest company in the cut at $31.3B in CY2025 revenue, lands at the bottom of the measured group with a 58 — exactly the median score across Anglera's entire index. Revenue rank and digital shelf quality are not the same list. ## The ranking | Rank | Company | Revenue | Fiscal Year | Archetype | Digital Readiness Index | |---|---|---|---|---|---| | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | $31.3B | CY2025 | Scale-aggregator / branch-density | 58 | | 19 | [Sonepar (North America)](/blog/sonepar-distributor-playbook) | $19.0B (NA) | FY2025 | Scale-aggregator / branch-density | 62 | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B | FY2025 | Scale-aggregator | 66 | | 32 | [Winsupply](/blog/winsupply-distributor-playbook) | $8.4B | FY2026 | Branch-density | not measured (no public catalog) | | 41 | [Watsco](/blog/watsco-distributor-playbook) | $7.24B | FY2025 | Scale-aggregator / branch-density | 62 | | 58 | [Johnstone Supply](/blog/johnstone-supply-distributor-playbook) | $4.5B+ | FY2025 | Branch-density | not sampled | | 72 | [F.W. Webb](/blog/fw-webb-distributor-playbook) | $2.6B | FY2025 | Branch-density | 65 | | 96 | [R.E. Michel Company](/blog/re-michel-distributor-playbook) | $1B+ (est.) | FY2024 | Branch-density | not measured (not observable) | | 100 | [The Master Group](/blog/master-group-distributor-playbook) | ~$0.8B (est.) | FY2021 | Branch-density | 60 | | — | [Mingledorff's](/blog/mingledorffs-distributor-playbook) | $1.0B | FY2024 | Branch-density | not sampled | ![Digital Readiness Index pillar breakdown for measured HVACR distributors](/charts/top-2026/hvacr.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Full methodology for how these scores are built is at [/top-distributors-2026/methodology](/top-distributors-2026/methodology); the complete cross-vertical index is at [/top-distributors-2026](/top-distributors-2026). ## Generalists at the top, specialists doing the actual work This vertical is really two businesses wearing one label. Ferguson, [Sonepar](/blog/sonepar-distributor-playbook), and Grainger are scale-aggregators — national buying power and centralized purchasing, with Ferguson layering on a fiscal-year change to calendar-year 2026 plus nine tuck-in acquisitions in FY2025 worth roughly $300M in annualized revenue, including HPS Specialties and Ritchie Environmental Solutions. HVAC/R is a category inside a much larger plumbing, electrical, or MRO catalog for all three. The other seven — [Watsco](/blog/watsco-distributor-playbook), [Winsupply](/blog/winsupply-distributor-playbook), [F.W. Webb](/blog/fw-webb-distributor-playbook), [R.E. Michel](/blog/re-michel-distributor-playbook), [The Master Group](/blog/master-group-distributor-playbook), [Johnstone Supply](/blog/johnstone-supply-distributor-playbook), and [Mingledorff's](/blog/mingledorffs-distributor-playbook) — are branch-density businesses for whom HVAC/R, or HVAC/R plus plumbing, is the entire business, built branch by branch. Watsco is the clearest specialist in the group: the archetype rationale calls it the product of "more than 70 acquisitions" since 1989 that made it the largest distributor in a fragmented North American HVAC market, pairing OEM joint ventures like Carrier Enterprise with a deliberate policy of leaving each acquired banner's local identity intact. That roll-up is still running — Watsco closed the acquisition of Jackson Supply Company in Q2 2026, a Sunbelt HVAC distributor with roughly $230 million in annualized sales across 25 locations. The Master Group is doing the same thing from the other side of the border: its June 2026 acquisition of Distributor Corporation of New England, an 8-branch Carrier distributor across Massachusetts, Maine, New Hampshire, and Rhode Island, is its first major push into the US and takes its North American branch count toward 100. Winsupply and R.E. Michel are pursuing the opposite motion — pure organic branch-building, with Winsupply targeting 20 new "Local Company" openings in 2025-2026 and R.E. Michel expanding its Southeast distribution footprint under a strategy it describes as "building, not buying." Two of the ten are unscored for genuinely different reasons that shouldn't be read as the same finding — a separate two, Johnstone Supply and Mingledorff's, are simply new to this cut and weren't sampled this edition. Winsupply has no single catalog to measure: it operates through 680-plus independently branded local operating companies, each with its own brochureware site, run by branch presidents who hold real local equity — a finding about the business model, not a failing grade. R.E. Michel is the opposite case: remichel.com carries a full 19-category public catalog spanning boilers, HVAC equipment, refrigeration, and valves with no login wall, but the product grid is injected client-side after the page loads, so no individual product page was observable to the measurement. One company has nothing to score; the other has something to score that the measurement couldn't reach. ## What the index actually found Among the six measured companies, the vertical's median Digital Readiness Index is 62, four points above the 58 median across Anglera's full index — a modest but real sign that HVAC/R's core operators treat their digital shelf at least as seriously as the average distributor. The pillar breakdowns are where the real differences show up. Grainger's 66 rests on a near-maxed product data pillar: 31 of 35 points, with a median of 47 structured attributes per sampled page — the richest catalog in this cut, tied with Watsco. But Grainger's identifier signal is a flat 0% GTIN rate, meaning that attribute depth isn't backed by a universal product code an outside system could match against. Watsco tells the opposite story on the same metric: also a median of 47 attributes, but a 100% GTIN rate on its sampled Carrier Enterprise pages — the only perfect identifier score in the group. Watsco's weakness is elsewhere: a consistency spread of 29, the widest gap between richest and thinnest sampled page of any measured company, and a transparency pillar of just 9.6 out of 20, dragged down by a price rate of only 20%. As a holding company for regional banners like Carrier Enterprise, Baker Distributing, and Gemaire, Watsco's flagship banner can build an excellent page and a thin one under the same corporate roof, and a buyer has no way to know in advance which one they've landed on. F.W. Webb, the second-smallest revenue company in the measured set at $2.6B, posts the only perfect transparency score in the cut — 20 out of 20 — with public pricing, stock visibility, and no login wall across every sampled category, disproving any assumption that transparency scales with size. Sonepar's agent-readiness pillar hits a perfect 20 out of 20, the only max pillar score in this vertical, built on public product structured data and a working sitemap even though its e-commerce presence is fragmented across 14 independently run regional banners like Capital Electric, Codale, and Irby, sitting behind a corporate site the data describes as brochureware. Its digital sales, per the company's own 2025 reporting, grew 50% to $13.9 billion through its unified Spark platform. For a buyer trying to spec a part — a condensing unit that must match on tonnage and refrigerant type, a coil that has to fit a specific cabinet depth, a compressor rated for a specific voltage and phase — a median attribute count in the high teens or twenties is the difference between a page that answers "will this work" and one that just shows a picture and a part number. Ferguson's median of 0 structured attributes stands out here: its sampled PDPs are publicly viewable with specs, images, and reviews, so the information exists for a human reader, it just isn't captured as filterable, machine-usable data. Master Group's median of 19 attributes comes with the tightest consistency spread in this vertical, just 5 points — the most even catalog treatment here, ahead of even Sonepar's 8. ## Where this is heading The M&A cadence in this vertical isn't slowing — Watsco's Jackson Supply close, Master Group's cross-border DCNE deal, and Ferguson's nine tuck-ins all landed within the same twelve months — but none of it is matched by comparable investment in how the resulting catalogs present themselves to a machine. Agent readiness is soft across the board: outside Sonepar's 20, no other measured company clears 16, and three explicitly block AI crawlers outright (Grainger, Watsco, and F.W. Webb). None of that silence is a violation; an unaddressed policy scores full marks precisely because nothing is blocked. But an explicit block is a choice, and as branch networks consolidate into fewer, larger banners, the gap between rich human-facing pages and genuinely structured, agent-readable ones looks like where this vertical differentiates next. --- # How McCoy's Building Supply Stayed Family-Owned in a Rolled-Up Trade Source: https://www.anglera.com/blog/mccoys-building-supply-distributor-playbook Published: 2026-08-17 Industries: building-materials ![How McCoy's Building Supply Stayed Family-Owned in a Rolled-Up Trade](/og/hero-mccoys-building-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* McCoy's Building Supply lands at BM #19 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual ranking from Modern Distribution Management of North America's largest wholesale distributors, with $1.2 billion in revenue across 85 stores in Texas, Oklahoma and New Mexico. That number alone doesn't explain much. What makes McCoy's worth studying is who still owns it: the same family that started it in Galveston in 1927, four generations later, in a sector where nearly every peer of comparable size has been bought by private equity or a public roll-up. ## A roofing crew that became a lumberyard Frank McCoy started as a contract roofer, moving the business from Houston to Galveston in 1927. It was his son Emmett who turned it into something else. After World War II, Emmett saw homeowners wanting to buy materials and do the work themselves, and in the 1940s he launched McCoy Supply Company to sell roofing and building materials directly to the public. He kept the roofing crews running alongside the new retail arm until 1964, when he dropped contract roofing entirely, added lumber, and turned the operation into what became McCoy's Building Supply Centers. The company's founding test came in 1961, when Hurricane Carla tore through the Texas Gulf Coast. Materials suppliers across the region raised prices on desperate homeowners. Emmett didn't. That decision, [according to Family Business Magazine](https://www.familybusinessmagazine.com/growth/supplied-for-success/), built the community trust that carried McCoy's through the rebuilding boom and pushed the company past $1 million in annual sales for the first time. It's a small episode, but it set a pattern the company still points to: hold the line on price discipline as a long-game asset, not a short-term lever. ## The near-death nobody puts on the About page By the mid-1970s, Emmett's three sons, Michael, Brian and Dennis, had joined the business and were driving an expansion that eventually topped 100 locations. Then, in 1985, Dennis McCoy died in a plane crash at 28, flying to a store location. Mike and Brian, the surviving brothers, restructured leadership around the loss and kept building. The real threat came a decade later. When Home Depot and Lowe's pushed into Texas in the mid-1990s, McCoy's lost roughly half its revenue within two years and had to close 29 of its 110 stores. For a regional lumberyard chain built on relationships and delivery trucks, big-box retail with national buying power was close to an extinction event. McCoy's survived it, but the strain reshaped the company. In 2000, Mike McCoy wanted to sell. The family split: Brian's branch bought the operating company in 2001 and leased facilities back from the extended family, while Mike retired after three decades running the business. It is the kind of internal fracture most "family legacy" narratives smooth over, but it's the hinge on which the modern McCoy's turns. What survived on the other side wasn't a united family conglomerate. It was one branch of the family, committed to running the company as an operator rather than a portfolio asset, at the exact moment competitors with deeper pockets were arriving in force. ## Why this matters more now than it did then That distinction is the piece's unique insight. Building materials distribution in North America has consolidated hard over the past fifteen years. Builders FirstSource and BMC merged into a public giant. US LBM rolled up dozens of regional yards under a private-equity sponsor before going public. Foundation Building Materials, SRS Distribution and a long list of others have changed hands between PE firms multiple times. Against that backdrop, an $1.2 billion, 85-store chain that is still privately held by descendants of the founder, with no PE sponsor and no public filing requirement, is the outlier, not the norm. McCoy's paid for that independence with a slower, in-house-everything model rather than acquisition-fueled scale. The company runs its own commercial credit program alongside a Synchrony-backed private-label card, rather than outsourcing contractor financing. It operates its own delivery fleet, a detail the company still markets in its green-and-yellow trucks, and by 2000 had already grown that fleet past 300 vehicles to guarantee same-day jobsite delivery. It built two millworks facilities and two distribution centers rather than relying purely on vendor drop-ship. And it diversified into farm and ranch equipment, a category adjacency that gives McCoy's a customer base independent of new-home construction cycles, useful insulation when residential building slows. ## The generational handoff, and the current bet Brian McCoy stepped down as CEO in 2022 after roughly two decades in the role, becoming board chairman. His daughter, Meagan McCoy Jones, became the company's first woman president and CEO, the fourth generation to lead it. Under her, McCoy's has kept expanding rather than consolidating defensively: a new store opened in New Caney, Texas in spring 2026, and the company closed the Rio Truss acquisition in December 2024, adding structural component manufacturing in the Rio Grande Valley, [per the company's press release](https://www.mccoys.com/press-releases/mccoys-acquires-rio-truss) and [trade coverage in LBM Journal](https://www.lbmjournal.com/home/featured/news/15786452/mccoys-building-supply-acquires-rio-truss). It also closed a store in Plainview in early 2026, a reminder that staying private doesn't mean staying static. The bet embedded in all of it is that a family that has already turned down a sale once, survived a big-box invasion, and split apart and reformed around a single operating branch, is better positioned to make patient, decades-long capital calls than a sponsor working a five-to-seven-year hold. Whether that holds as the next generation takes the wheel is the open question worth watching. Distribution is won in unglamorous places: the branch that stays open through a storm, the truck that shows up same-day, the catalog kept current enough that a contractor never has to call twice. McCoy's has spent a century proving that ownership structure is one more variable a distributor gets to choose. --- # You sent 4,000 dealers the same file. Now they compete on price for your part. Source: https://www.anglera.com/blog/aftermarket-brand-dealer-data-channel Published: 2026-08-17 Industries: automotive-aftermarket An aftermarket brand builds a genuinely better part. Better metallurgy, better tolerances, a real warranty. Marketing writes a description. Engineering hands over a spec sheet and an install manual. The data team packages it into a PIES file, pushes it into a [dealer data network](/compare/asap-network), and four thousand dealers pull it down and publish it. Six months later the brand's category manager notices that its parts are being discounted across the channel, that dealers are calling to ask for MAP enforcement, and that a search for the brand's own part number returns two pages of listings that are word-for-word identical, none of which is the brand's site. Nothing malfunctioned. This is the system working exactly as designed. ## Distribution and differentiation are opposed The instinct behind wide syndication is correct: a dealer who cannot load your line will not stock your line, and friction in that step costs shelf presence. Networks that hand dealers import-safe files with validated fitment genuinely accelerate adoption, and brands are right to use them. ASAP's own pitch to brands is exactly this — when brands deliver ready-to-load files, dealers publish weeks or months faster. The part that goes unexamined is what happens after everyone publishes. A product record is a *positioning* instrument. It says which buyer this part is for and why it beats the alternatives. When one record reaches every dealer unchanged, every dealer takes the same position, which means no dealer has a position. The comparison a shopper runs across six tabs shows six identical descriptions with six different prices, and the only variable presented is the one you least want them to optimize. The brand loses twice. Downstream, the channel competes on price for your part, which drags realized margin and eventually your dealer relationships. Upstream, your own brand.com page now has four thousand duplicates, and search engines consolidating near-identical pages have no obligation to pick yours. ## What you are actually shipping Open the file you send dealers and sort its contents into two buckets. **Bucket one — compliance and identity.** Part number, brand, GTIN, ACES application table, PCdb part terminology, packaging, dimensions, image links, install PDF. This should absolutely be syndicated wide, kept current, and standardized against the Auto Care Association's reference databases. Nobody gains anything from a dealer re-keying your fitment table. **Bucket two — the finished marketing paragraph.** The title, the HTML description, the feature bullets. This is what gets published identically everywhere, and it is doing less for you than you think, because it was written to be inoffensive across every possible buyer and every possible dealer. The gap is that there is no bucket three, and bucket three is where the value is: **the decision attributes**. Facts about the part, structured as fields, that let a dealer merchandise it to *their* buyer without inventing anything. ## Bucket three, specifically Most of this already exists inside your company. It is in the engineering release, the install manual, the validation report, the warranty policy. It has simply never been lifted into a field, because the field did not exist in the schema and the box did not have room to print it. - **Regulatory.** CARB EO number, 50-state / 49-state / off-road-only. If you make intake, exhaust, or tuning products this is the single most consequential field you are not shipping. - **Included and excluded hardware.** Whether U-bolts, tone rings, sensor ports, gaskets, or fasteners are in the box. Your warranty desk already knows which omission generates the most calls. - **Fit under modification.** Lift requirement, maximum tire diameter, clearance at stock ride height, required backspacing. ACES describes the factory vehicle; much of this industry sells to vehicles that stopped being factory years ago. - **Installation reality.** Book time, special tools, press required, torque and re-torque intervals. This is on page three of a PDF you already publish. - **Application suitability.** Tow-rated, low-dust, load index, duty cycle, operating temperature range. The fields that separate your part from the three cheaper ones with an identical fitment table. - **Longevity.** Warranty term, rebuild kit availability, service interval. What a fleet buyer is actually comparing, and what justifies your price. Ship these as governed fields — enums with defined allowed values, not free text — and you have given the channel something to sell on other than price. A dealer serving commercial upfitters surfaces GVWR impact and emissions status. A dealer serving trail riders surfaces tire clearance. Same record. Different position. Neither of them had to write fiction to differentiate, and both of them are selling suitability instead of discount. ## The machine-readability argument There is a second reason this matters now, and it is moving faster than the channel dynamics. AI shopping engines do not rank your description against a competitor's description. They decompose a buyer's question into sub-questions — will it fit a modified truck, is it legal in California, does it include the hardware — and compare candidate sources at the level of individual facts. A record whose distinguishing qualities live inside an adjective-heavy paragraph contributes nothing to that comparison. A record whose distinguishing qualities live in labeled fields gets selected on the specific query where it is genuinely the right answer. Which means the deeper attribute set is not only a channel-margin instrument. It is increasingly the determinant of whether your parts appear in the answer at all, on every one of your dealers' sites simultaneously. ## Where the work actually is The objection is always the same and it is fair: nobody has the headcount to retrofit forty new attributes across 30,000 SKUs, cross-referenced to source documents, governed, and kept current as lines get revised. That is true by hand. It is the specific thing [Anglera](/) automates — mining values out of the install manuals, engineering releases, and spec drawings you already have, proposing the attributes your schema never carried, normalizing the allowed values so *2 in* and *2"* stop being different, keeping a citation on every value so a disputed spec is settleable, and writing it all back into your PIM so the next revision does not quietly reopen the gap. Your PIM stores the record. The work is making the record worth distributing. Keep syndicating the fitment table everywhere — that is infrastructure and it should be free-flowing. But if the only thing your channel receives is one finished paragraph, you have not given four thousand dealers a way to sell your part. You have given them four thousand identical pages and one lever. --- # Top Building Materials & Construction Distributors 2026 Source: https://www.anglera.com/blog/top-building-materials-distributors-2026 Published: 2026-08-16 Industries: plumbing, building-materials ![Top Building Materials & Construction Distributors 2026](/og/hero-top-building-materials-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Of the twenty distributors in this cut, exactly one carries a Digital Readiness score. That is still the finding, though it is softer than it first measured: an adversarial verification pass found live public catalogs at three more (Builders FirstSource, SRS Distribution, and US LBM), verified but not yet sampled, so they carry no score this edition. Building materials and construction distribution remains the vertical in this index where the product mostly gets sold across a counter or through a rep's quote, not a search box, and the Digital Readiness Index numbers below say so plainly. ## The ranking | Rank | Company | Revenue | Archetype | DRI | |---|---|---|---|---| | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | $31.3B (CY2025) | scale-aggregator | 58 | | 18 | [ABC Supply Co.](/blog/abc-supply-distributor-playbook) | $20.2B (FY2025) | branch-density | not measured (no public catalog) | | 22 | [Builders FirstSource](/blog/builders-firstsource-distributor-playbook) | $15.2B (FY2025) | program-supplier | not yet measured (catalog verified live) | | 28 | [SRS Distribution](/blog/srs-distribution-distributor-playbook) | ~$10B (FY2023, est.) | branch-density | not yet measured (catalog verified live) | | 43 | [QXO (formerly Beacon)](/blog/qxo-distributor-playbook) | $6.84B (FY2025) | pe-rollup | not measured (not observable) | | 44 | [US LBM](/blog/us-lbm-distributor-playbook) | $6.8B (FY2025, est.) | pe-rollup | not yet measured (catalog verified live) | | 45 | [Foundation Building Materials](/blog/fbm-distributor-playbook) | $6.5B (FY2024) | pe-rollup | not measured | | 47 | [White Cap](/blog/white-cap-distributor-playbook) | $6.1B (FY2025) | pe-rollup | not measured | | 48 | [Boise Cascade (Distribution)](/blog/boise-cascade-distributor-playbook) | $5.9B (FY2025, segment) | scale-aggregator | not measured | | 49 | [84 Lumber](/blog/84-lumber-distributor-playbook) | $5.9B (FY2025) | branch-density | not measured | | 55 | [SiteOne Landscape Supply](/blog/siteone-distributor-playbook) | $4.7B (FY2025) | branch-density | not measured | | 69 | [BlueLinx Holdings](/blog/bluelinx-distributor-playbook) | $3.0B (FY2025) | scale-aggregator | not measured | | 71 | [Carter-Jones Lumber](/blog/carter-jones-lumber-distributor-playbook) | $2.7B (FY2025) | Branch-density | not sampled | | 73 | [TopBuild (Specialty Distribution)](/blog/topbuild-distributor-playbook) | $2.52B (FY2025, segment) | branch-density | not measured | | 77 | [Gulfeagle Supply](/blog/gulfeagle-supply-distributor-playbook) | $2.2B (FY2025, est.) | branch-density | not measured | | 80 | [UFP Industries](/blog/ufp-industries-distributor-playbook) | $2.00B (FY2025, segment) | scale-aggregator | not measured | | 87 | [Lansing Building Products](/blog/lansing-building-products-distributor-playbook) | $1.5B (FY2025, est.) | branch-density | not measured | | 88 | [Northern Tool + Equipment](/blog/northern-tool-distributor-playbook) | $1.5B (FY2025, est.) | program-supplier | not measured | | 91 | [McCoy's Building Supply](/blog/mccoys-building-supply-distributor-playbook) | $1.2B (FY2025) | Branch-density | not sampled | | 95 | [Richards Building Supply](/blog/richards-building-supply-distributor-playbook) | $1.0B (FY2025, est.) | branch-density | not measured | Figures are FY2025 unless noted; "est." marks a modeled figure, not a reported one. Full rankings and methodology live at [/top-distributors-2026](/top-distributors-2026); the scoring model is at [/top-distributors-2026/methodology](/top-distributors-2026/methodology). ## A roll-up in real time Read the moves column and this vertical looks less like twenty companies and more like one consolidation event still unfolding. QXO went from a $57M shell to $6.8B in eight months by tender-offering Beacon Roofing Supply, then bought Kodiak Building Partners for roughly $2.25B, a deal that closed April 1, 2026 and that QXO says triples its addressable market past $200B. Home Depot bought SRS Distribution in 2024 for $18.25B, and SRS then bought GMS for roughly $5.5B in September 2025, folding a 320-branch drywall distributor into a platform now running four business lines and 1,250-plus locations. Lowe's bought Foundation Building Materials for about $8.8B in October 2025. White Cap, sponsor-backed by CD&R and The Sterling Group, closed roughly 17 acquisitions in 2024-2025 and then combined with Colony Hardware in February 2026. Five of the twenty archetype assignments carry pe-rollup as primary or secondary, and three of the year's biggest headlines here (QXO-Kodiak, SRS-GMS, Lowe's-FBM) run the same roll-up logic through a big-box retailer, a former software company, and a PE sponsor respectively. Branch-density is the other dominant model, and it is not the losing strategy. ABC Supply, the only one of the three largest roofing distributors not to have sold (SRS to Home Depot in 2024, Beacon to QXO in 2025), opened 14 greenfield branches in 2025 on top of more than 1,000 existing locations and treats store count, not deal count, as its headline growth metric. 84 Lumber grows almost entirely through greenfield stores and new regional truss and wall-panel plants rather than acquisitions. Richards Building Supply and Gulfeagle Supply both keep adding branches the old way, one family-owned distributor at a time. Ferguson sits between the two camps: nine tuck-ins in FY2025 worth roughly $300M in annualized revenue, layered onto a national branch network that its [archetype rationale](/blog/ferguson-distributor-playbook) says lets it out-buy regional plumbing and PVF rivals on scale rather than density alone. ## What the Digital Readiness Index actually found Ferguson is the only company in this cut that could be scored, and its 58 sits almost exactly on the index median of 58 for the full study. That means the largest, most digitally mature distributor in this vertical performs like an average operator across the whole index, not a standout. The pillar breakdown explains why. Ferguson's [product data depth](/top-distributors-2026/methodology) pillar scored 11 out of 35, its weakest by a wide margin against buyer-answerability at 19.5 out of 25, commerce transparency at 14 out of 20, and machine and agent readiness at 13 out of 20. It can tell a shopper what a product is and show it to them; it struggles to tell a machine. The sharpest number in the whole record is the median attribute count on Ferguson's five sampled product pages: zero. The consistency spread between the richest and thinnest sampled page is also zero, meaning this was not one weak category dragging down a strong one, but a uniform result across five different categories, sampled from the middle of each listing rather than a featured item. For a buyer sourcing a specific bathroom faucet or residential water heater, that matters. Even a modest structured-attribute count lets a contractor filter by rough-in dimension, finish, or BTU rating and know at a glance whether a part fits before calling anyone. A median of zero means that filtering, if it exists at all on Ferguson's site, is not happening through the machine-readable layer our extraction reads; a buyer is working from photos and prose, or a call to a branch. The identifier signal tells the same story: a 0% GTIN match rate, meaning none of the five sampled pages carried a standard identifier a buyer or an AI agent could use to confirm the same product elsewhere. Pricing, by contrast, was visible without a login on 100% of the sampled pages, though the [underlying detail](/blog/ferguson-distributor-playbook) notes availability was gated for some categories even where price was not. On the AI crawler question, Ferguson's stance is simply unaddressed, which under this index's scoring is not a penalty; silence means the crawler is permitted, and there is no explicit block to find. The other giants split three ways. ABC Supply still comes back "no public catalog": its site lists manufacturer partner brands and category descriptions with links out to suppliers, but no individual product detail pages with per-item URLs. Builders FirstSource, SRS Distribution, and US LBM carried that same status until an adversarial verification pass found live public product pages each one operates — shop.bldr.com for Builders FirstSource, SRS's Horizon Distributors banner storefront, US LBM's Higginbotham Brothers catalog — so all three now read "not yet measured (catalog verified live)": no score this edition, because scores are only published from rule-compliant samples, but the catalogs are real. QXO is "not observable": the underlying Beacon platform has crawlable, login-free product pages, but the standard pipeline could not read them, a note about the measurement, not the storefront. None of this is a finding about competence, and the earlier read that the largest players here simply do not run e-commerce was too strong; several do, just not where the flagship domain points. ## Where this is heading The consolidation wave shows no sign of slowing, and it is reshaping who owns branch networks faster than it is reshaping how those branches sell online. QXO's path to $50B and its Kodiak deal, Home Depot's move from SRS into GMS, and Lowe's absorption of FBM into its Total Home Pro strategy are all bets that scale and branch density win this category, not digital shelf sophistication. That may be the right read of a business where products are bulky, project-specific, and spec'd by a contractor on a job site rather than browsed at a desk. But it leaves an open question for whichever roll-up platform competes on catalog depth next: in a vertical where the one measured company posts a median attribute count of zero, there is a wide, unclaimed lane for whoever builds the first real one. --- # Top MRO Industrial Distributors 2026: Scale vs. Digital Shelf Source: https://www.anglera.com/blog/top-mro-industrial-distributors-2026 Published: 2026-08-14 Industries: plumbing, mro-industrial, fasteners ![Top MRO Industrial Distributors 2026: Scale vs. Digital Shelf](/og/hero-top-mro-industrial-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* [Ferguson](/blog/ferguson-distributor-playbook) and [W.W. Grainger](/blog/grainger-distributor-playbook) are the two largest companies in this vertical by a wide margin, and they land on opposite ends of its digital shelf: Ferguson's typical product page carries zero structured attributes, Grainger's carries 47. Seven of the 25 companies in this MRO/industrial cut of Anglera's [Top Distributors 2026](/top-distributors-2026) index were measured for public product data, and the group's median score of 58 turns out to be two very differently built catalogs arriving at the same number by two different routes. ## The ranking | Rank | Company | Revenue | Archetype | DRI | |---|---|---|---|---| | 10 | Ferguson | $31.3B (CY2025) | scale-aggregator / branch-density | 58 | | 20 | W.W. Grainger | $17.9B (FY2025) | scale-aggregator | 66 | | 31 | Motion (Genuine Parts Company) | ~$9.0B (FY2025, segment) | branch-density / scale-aggregator | 62 | | 35 | Fastenal | $8.2B (FY2025) | program-supplier / branch-density | 55 | | 57 | Applied Industrial Technologies | $4.56B (FY2025) | technical-specialist / scale-aggregator | not measured (not observable) | | 65 | MSC Industrial Supply | $3.77B (FY2025) | program-supplier / catalog-native | 65 | | 70 | DNOW | $2.8B (FY2025) | scale-aggregator / branch-density | not measured (no public catalog) | | 79 | DXP Enterprises | $2.0B (FY2025) | technical-specialist / program-supplier | 48 | | 82 | Distribution Solutions Group | $1.98B (FY2025) | pe-rollup / program-supplier | 58 | | 83 | Vallen Distribution | $1.9B (FY2021, NA, est.) | program-supplier / technical-specialist | not in set | | 85 | The Hillman Group | $1.55B (FY2025) | program-supplier | not measured (not observable) | | 86 | Wajax Corp | $1.5B (FY2025) | technical-specialist / branch-density | not yet measured (catalog verified live) | | 90 | Global Industrial Company | $1.38B (FY2025) | catalog-native | not in set | | 92 | RS Group (Americas) | ~$1.09B (FY2026, NA) | catalog-native / program-supplier | not in set | | 106 | Kimball Midwest | $565M (FY2025) | program-supplier | not in set | | 107 | Descours & Cabaud (North America) | $545M (FY2024, NA) | pe-rollup / branch-density | not in set | | 109 | R.S. Hughes | $527M (FY2024) | technical-specialist | not in set | | 114 | [Motion & Control Enterprises](/blog/motion-control-enterprises-distributor-playbook) | $488M (FY2024) | Pe-rollup / technical-specialist | not sampled | | 115 | BlackHawk Industrial | $460M (FY2020, dated) | pe-rollup / technical-specialist | not in set | | — | Berkshire Tool Supply Group | not disclosed | catalog-native / program-supplier | not in set | | — | DGI Supply | not disclosed | technical-specialist | not in set | | — | McMaster-Carr | not disclosed | catalog-native | not measured (no public catalog) | | — | Tencarva Machinery | not disclosed | technical-specialist / pe-rollup | not in set | | — | The Home Depot (Pro) | not disclosed | branch-density / scale-aggregator | not measured (not observable) | | — | Würth Industry North America | not disclosed | program-supplier / branch-density | not yet measured (catalog verified live) | ![Digital Readiness Index pillar breakdown for measured MRO Industrial distributors](/charts/top-2026/mro-industrial.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* ## No single operating model owns this vertical Split the 25 companies by primary archetype and the channel doesn't consolidate around one playbook. Program-supplier and technical-specialist tie as the largest groups at six apiece; scale-aggregator and branch-density combine for five more; catalog-native and PE-rollup fill out the rest. [Fastenal](/blog/fastenal-distributor-playbook), [MSC Industrial](/blog/msc-industrial-distributor-playbook), Kimball Midwest, and [Würth Industry North America](/blog/wurth-industry-distributor-playbook) run on embedded people and managed inventory; [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook), [Wajax](/blog/wajax-distributor-playbook), R.S. Hughes, and DGI Supply sell engineering and repair capability layered on parts. Both answer the same problem: MRO buying often needs a person on-site, not just a SKU on a page. The revenue leaders sit in the scale/branch camp for a reason specific to this category. Ferguson's rationale cites nine tuck-in acquisitions in FY2025 alone, adding roughly $300 million in annualized revenue onto a nationally managed branch network. Grainger's rationale is the mirror image: it centralizes purchasing scale from a small number of large distribution centers rather than chasing branch count, which is why it tops MDM's breadth rankings for this category. [Motion](/blog/motion-distributor-playbook), GPC's industrial arm, is mid-transition: a dense branch network is its growth engine even as GPC preps a spinoff targeted to close in Q1 2027. Consolidation is the loudest signal in this year's moves. [DNOW](/blog/dnow-distributor-playbook) closed a $1.5 billion combination with MRC Global in November 2025, more than doubling its footprint. [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) is assembling a national water/wastewater platform acquisition by acquisition. [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook)'s largest 2026 event isn't a deal at all: its 79% owner agreed in July to take it private at $35.00 a share, an 81% premium. ## What the Digital Readiness Index found The [Digital Readiness Index](/top-distributors-2026/methodology) samples five product pages across five categories of a company's catalog and scores what a machine or buyer can extract, across product data depth, answerability, commerce transparency, and machine/agent readiness. Two companies here landed on an identical overall score of 58 — Ferguson and DSG — and each got there differently. Ferguson's 58 comes almost entirely from answerability (19.5 of 25) and transparency (14 of 20); its product-data pillar is just 11 of 35, and the median attribute count on a sampled page is zero. DSG's 58 is the opposite shape: a perfect 20 of 20 on machine and agent readiness against a transparency score of just 6, because pricing wasn't publicly visible on any sampled page. Grainger's 66 is the vertical's high score, and it's a product-data story: 31 of 35 on that pillar and a median of 47 structured attributes per page, more than four times Ferguson's zero and roughly double MSC's 25. For a buyer cross-matching a bearing, valve, or fastener against a spec sheet, that gap is the difference between a page that answers "will this fit" and one that doesn't. Grainger is also the only measured company here with an explicit AI-crawler block; every other measured distributor left the question unaddressed, which this methodology scores as full marks, not a penalty. MSC and Motion both posted perfect transparency scores. Fastenal's 55 carries the weakest machine-readiness pillar (6 of 20) and the only broken sitemap measured. DXP's 48 is the low score, held back by a transparency pillar of 8.4; price was public on only 40% of its sampled categories, gated on the rest. Three different reasons kept the rest of this cut unscored. Applied Industrial was not observable — bot protection stopped measurement even though applied.com is known to run millions of SKUs publicly. DNOW has no public catalog: its storefront sits behind a full account login before any browsing. Wajax and Würth were on that list until an August verification pass found live public product pages both companies operate — full-spec equipment pages on wajax.com, and complete e-commerce at Würth-owned Northern Safety — so each now reads not yet measured (catalog verified live), queued for the next run rather than scored off an unsampled catalog. [McMaster-Carr](/blog/mcmaster-carr-distributor-playbook) still carries a no-public-catalog status, notable since the site is widely cited as the category's reference standard for published specs on its family pages — a reminder this label describes the sample, not a verdict on the catalog. [Hillman](/blog/hillman-group-distributor-playbook) and [Home Depot Pro](/blog/home-depot-pro-distributor-playbook) were not observable, a tooling limit, not a statement about either site. ## Where this vertical is heading Every recent move points the same direction: MRO distribution is still consolidating, fast. DNOW just doubled through MRC Global, GPC is preparing to spin Motion out as a standalone public company, and Descours & Cabaud closed ten deals in 2024 with a further five-acquisition wave in 2025, keeping acquired brands under their own names. What the Digital Readiness Index adds is a second axis revenue rank won't show: several of the largest, most acquisitive names here are also running product pages a crawler or buyer can barely parse. Scale and digital shelf quality are on separate timelines, and nothing here suggests the two are converging yet. --- # Carter-Jones Lumber: The Holdout in a Rolled-Up Industry Source: https://www.anglera.com/blog/carter-jones-lumber-distributor-playbook Published: 2026-08-14 Industries: building-materials ![Carter-Jones Lumber: The Holdout in a Rolled-Up Industry](/og/hero-carter-jones-lumber-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Carter-Jones Lumber lands at BM #13 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) with $2.7 billion in revenue, in a building materials sector where the top nine names are increasingly the same handful of private-equity-backed and now publicly traded roll-ups. The company most people know by its retail name, Carter Lumber, is still owned by the family that founded it in 1932. That alone makes it worth a closer look at how it competes. ## A lumberyard bought off a foreclosure notice The founding story is Depression-era and specific. Warren E. Carter arrived in Akron, Ohio in 1927 to visit a brother working at Goodyear, and on the drive around town he stopped at a lumberyard on North Case Avenue in Kent owned by a man named Clyde Gough, who offered him a foreman's job at $22 a month. Five years later, with the bank having foreclosed on Gough's yard, Carter and a co-worker named T. Neil Jones pooled their savings and bought the assets out of foreclosure. The Carter-Jones Lumber Company opened in 1932, at the bottom of the Depression, with Carter and his family living above the store and taking a paycheck only when there was cash left over at the end of the week, according to [Zippia's company history](https://www.zippia.com/carter-lumber-careers-50864/history/) and [KPC News](https://www.kpcnews.com/article_053343f8-0e01-5450-9bc7-ceb8df584b9d.html). Carter died in 2000 at 101; the business he and Jones started is now run by his grandchildren's generation, with Neil Sackett as president and CEO. That original legal name is why MDM's list still shows Carter-Jones Lumber even though the stores have carried the Carter Lumber name for decades. It is a small detail, but it is the kind of thing that tells you the company has never felt pressure to clean up its cap table or its branding for an outside audience, because there has never been an outside audience to please. ## "Run the whole company like one store" Carter Lumber's own account of its operating philosophy, reported by [Smart Business Magazine](https://sbnonline.com/article/back-to-the-basics-to-bolster-its-standing-as-one-of-the-brawniest-privately-held-lumber-and-building-material-retailers-carter-lumber-has-reinstated-its-founder-s-keystone-business-strategies/), traces straight back to the founder. Sackett has described W.E. Carter's core belief this way: if you run the whole company like one store, your customers are better served, no matter how many locations you operate. In the late 1990s, as the chain grew past the size where every manager could still know Carter personally, the company found itself losing that discipline and losing sales to it. The fix was not a rebrand or a private equity recapitalization. It was a deliberate return to basics: on-site contractor sales reps, point-of-sale systems that gave every branch manager the same visibility Carter himself used to have from the counter, and a training program built around courtesy and speed for contractor customers who treat their time as billable. The campaign, built around the tagline "The Yard at Carter Lumber," reportedly delivered a 6 percent sales lift. It is a mundane-sounding fix, and that is the point: the lever was operational discipline, not financial engineering. ## Buying yards and leaving the sign alone The real strategic tension in this profile, and the thing worth naming directly, is how Carter Lumber grows against the backdrop of what is happening to the rest of its sector. Building materials distribution has consolidated hard over the past five years. SRS Distribution was built by private equity and then sold to Home Depot. QXO, run by Brad Jacobs, is explicitly executing a roll-up strategy across the space. Builders FirstSource itself grew through more than 20 mergers. Nearly every large peer on the MDM list is either PE-owned, publicly traded, or both, and the standard playbook is to acquire, integrate, and eventually fold the acquired name into the parent brand. Carter Lumber acquires too. In October 2024 it bought Townsend Building Supply, a six-location, family-owned dealer in the Florida Panhandle and southern Alabama founded in 1944, according to [LBM Journal](https://lbmjournal.com/carter-lumber-announces-acquisition-of-townsend-building-supply/). In 2025 it added Harvey Lumber, and in May 2026 it acquired Gaster Lumber and Hardware, a three-location, family-run supplier serving Savannah, Georgia since 1985, per [LBM Journal's coverage](https://www.lbmjournal.com/industry-news/mergers-acquisitions/press-release/15824080/carter-lumber-carter-lumber-acquires-gaster-lumber) and [Hardware Retailing](https://hardwareretailing.com/carter-lumber-expands-in-georgia/). What is different is what happens next. Carter Lumber's [Family of Companies](https://www.carterlumber.com/company-info/family-of-companies) page lists Holmes Lumber, Kempsville Building, Kight Home Center, and Townsend Building Supply as active brands alongside Carter Lumber itself, each still operating under its own local name and, in Townsend's case, with a stated commitment to invest in the acquired yards rather than absorb them. It is acquisition as a federation, not a rollup: buy a well-run local yard, keep the relationships and the sign that customers already trust, and add scale in the back office. That is a slower, less legible growth story than QXO's public roadshow, and it is also a model almost nobody else at this scale in building materials is running. ## Where that leaves it The tradeoff is real. A federated multi-brand structure is harder to run efficiently than a single integrated system, and Carter Lumber's public reporting is thin by design, since there are no shareholders to brief. What the MDM number shows is that the model scales anyway: 190-plus locations across 15 states and $2.7 billion in revenue, growing by greenfield openings, reinvestment in existing markets, and acquisitions concentrated in the South, per [LBM Journal's reporting on the company's growth strategy](https://www.lbmjournal.com/awards/dealer-of-the-year/news/15800993/carter-lumber-expands-while-keeping-people-at-forefront). Ninety-four years after a foreclosure sale in Kent, Ohio, the company is still privately held, still adding yards, and still betting that a customer trusts the name on the sign more than the name on the parent company. Every distributor on MDM's list runs on the same unglamorous infrastructure underneath the branch count and the revenue figure: the catalogs, the yards, the trucks, and the data that ties them together. This series looks at how the largest ones built that machinery, one company at a time. --- # Electrical & Security Distribution: Scale Isn't the Digital Shelf Source: https://www.anglera.com/blog/top-electrical-data-security-distributors-2026 Published: 2026-08-13 Industries: electrical, mro-industrial, plumbing ![Electrical & Security Distribution: Scale Isn't the Digital Shelf](/og/hero-top-electrical-data-security-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Of the 40 electrical, data, and security distributors in this cut, only six had a public catalog we could actually measure for the Digital Readiness Index. That's not a comment on how big or well-run the other 34 are; several are among the largest companies in the vertical by revenue. It's a comment on how this channel builds its digital shelf. [Wesco International](/blog/wesco-distributor-playbook), the largest company in the group at $23.5B (FY2025), has a corporate site that turned out to be brochureware with no scorable catalog attached; its real customer-facing storefront lives on a separate portal that blocks standard clients, so we measured it in a full browser session — disclosed on its scorecard — and it scored 40, the lowest mark in the cut. [Rexel North America](/blog/rexel-distributor-playbook) first came back with server errors, but an adversarial re-check found a live public catalog after all; it's verified live and not yet sampled, so it carries no score this edition. Among the six distributors we could actually score, [W.W. Grainger](/blog/grainger-distributor-playbook) leads at 66 out of 100 on the [Digital Readiness Index](/top-distributors-2026/methodology), and even its page is a study in contrast between attribute richness and machine-matchable identifiers. ## The ranking | Rank | Company | Revenue (FY) | Archetype | DRI | |---|---|---|---|---| | 15 | Wesco International | $23.5B | Scale-aggregator | 40 | | 19 | Sonepar (North America) | $19.0B (NA) | Scale-aggregator | 62 | | 20 | W.W. Grainger | $17.9B | Scale-aggregator | 66 | | 25 | Graybar | $12.9B | Scale-aggregator | 51 | | 27 | Rexel (North America) | $10.1B (NA) | Scale-aggregator | not yet measured (catalog verified live) | | 31 | Motion (Genuine Parts Company) | ~$9.0B (segment) | Branch-density | 62 | | 32 | Winsupply | $8.4B | Branch-density | not measured (no public catalog) | | 35 | Fastenal | $8.2B | Program-supplier | 55 | | 51 | Consolidated Electrical Distributors (CED) | ~$5.5B (est.) | Branch-density | not yet measured (catalog verified live) | | 54 | ADI Global Distribution | $4.78B (segment) | Catalog-native | not in this sample | | 62 | Border States | $4.0B+ (est.) | Scale-aggregator | not in this sample | | 76 | McNaughton-McKay Group | $2.2B (dated) | Technical-specialist | not in this sample | | 78 | Elliott Electric Supply | $2.12B | Branch-density | not in this sample | | 84 | Lonestar Electric Supply | $1.7B | Program-supplier | not in this sample | | 92 | RS Group (Americas) | ~$1.09B (NA) | Catalog-native | not in this sample | | 93 | Main Electric Supply Co. | just under $1.1B | Branch-density | not in this sample | | 98 | Van Meter Inc. | $928.5M (dated) | Branch-density | not in this sample | | 99 | Gresco Utility Supply | $846M | Technical-specialist | not in this sample | | 105 | Turtle | $572M (est.) | Technical-specialist | not in this sample | | 111 | IEWC | $500M+ (est.) | Technical-specialist | not in this sample | | 116 | Inline Electric Supply | $456M | Branch-density | not in this sample | | 118 | [Rural Electric Supply Cooperative (RESCO)](/blog/resco-distributor-playbook) | $404M | Program-supplier / branch-density | not sampled | | 122 | Granite City Electric Supply | $335M | Branch-density | not in this sample | | 124 | United Electric Supply | $300M+ (dated) | Branch-density | not in this sample | | — | City Electric Supply | not disclosed | Branch-density | not in this sample | | — | Colonial Electric Supply | not disclosed | Branch-density | not in this sample | | — | Crescent Electric Supply Company | not disclosed | Branch-density | not in this sample | | — | Dealers Electrical Supply Company | not disclosed | Branch-density | not in this sample | | — | Green Mountain Electric Supply | not disclosed | PE-rollup | not in this sample | | — | Kendall Electric | not disclosed | Branch-density | not in this sample | | — | Kirby Risk | not disclosed | Technical-specialist | not in this sample | | — | Scott Electric | not disclosed | Branch-density | not in this sample | | — | State Electric Supply Company | not disclosed | Branch-density | not in this sample | | — | U.S. Electrical Services | not disclosed | Branch-density | not in this sample | | — | Werner Electric Supply | not disclosed | Technical-specialist | not in this sample | | — | Wholesale Electric Supply | not disclosed | Branch-density | not in this sample | | — | Wholesale Electrical Supply Co. of Houston | not disclosed | Program-supplier | not in this sample | | — | [Dakota Supply Group (DSG)](/blog/dakota-supply-group-distributor-playbook) | not disclosed | Branch-density | not sampled | | — | [Eckart Supply](/blog/eckart-supply-distributor-playbook) | not disclosed | Branch-density | not sampled | | — | [Franklin Empire](/blog/franklin-empire-distributor-playbook) | not disclosed | Branch-density / technical-specialist | not sampled | ![Digital Readiness Index pillar breakdown for measured Electrical, Data & Security distributors](/charts/top-2026/electrical-data-security.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Full index: [Top Distributors 2026](/top-distributors-2026). ## Branch density carries the field; scale sits on top of it Count primary archetypes across the 40 companies and branch-density wins by a wide margin: 21 of 40, more than half the vertical. Scale-aggregator and technical-specialist tie for a distant second at six apiece, with program-suppliers, catalog-native operators, and a single PE-rollup filling out the rest. That split maps cleanly onto how the channel actually sells. This is a trade-counter business built on contractor relationships and local stock, and the model shows up at every size, not just among the small independents. [Winsupply](/blog/winsupply-distributor-playbook) does $8.4B (FY2026) through more than 680 "Local Companies," each with real local equity and P&L ownership held by its branch president rather than a national brand. [Consolidated Electrical Distributors (CED)](/blog/ced-distributor-playbook), at an estimated ~$5.5B, runs over 700 independently managed "profit centers" with branch-level pricing and purchasing autonomy; its old ced.com domain now redirects to an unrelated company, and the actual business lives across hundreds of separately branded local sites instead. The scale-aggregators sit at the top of the revenue list precisely because they've built the opposite of that: centralized buying power and, increasingly, a unified digital layer over an acquired branch footprint. [Sonepar](/blog/sonepar-distributor-playbook) is the clearest case: the world's number-one B2B electrical distributor by its own account, it posted record global sales of $37.9B in 2025 and grew digital sales 50% to $13.9B through its Spark omnichannel platform, even while its 14 U.S. operating-company banners (Capital Electric, Codale, Irby, and others) keep running locally under their own names. [Graybar](/blog/graybar-distributor-playbook) is doing something similar from the infrastructure side: it finished a SAP S/4HANA overhaul in 2025, opened three new STAR distribution centers built for large data-center and construction accounts, and kept up its acquisition pace with roughly its 20th deal in a decade. Wesco's fastest-growing line is data centers too, at $4.3B in 2025 sales, up about 50% year over year. And [Border States](/blog/border-states-distributor-playbook), at $4.0B+, made the opposite kind of move: it left the Affiliated Distributors buying group in December 2025 after 40 years, a step only a company with its own national-account-scale purchasing volume can take on its own. ## What the Digital Readiness Index found The six distributors we could measure split into distinct profiles rather than a tight cluster, and the pillar breakdown explains why more than the headline score does. The vertical's median DRI among measured companies is 62, running four points above the index-wide median of 58. Grainger's 66 is built on the deepest catalog in the group: a median of 47 structured attributes per sampled page, easily the richest of the six, and a product-data pillar score of 31 out of 35. But its GTIN rate on those same pages is 0%, meaning none of the sampled products carried a standard identifier a system elsewhere could use to confirm it's looking at the same item. Grainger also explicitly blocks AI crawlers, an active choice that cost it points on agent readiness (9 of 20) rather than a case of simply not having addressed the question. Sonepar's 62 comes from almost the opposite shape: a perfect agent-readiness score (20 of 20) and an 80% GTIN rate, but a median of just 9 attributes per page, tied with Wesco for the thinnest catalog of the six. Pricing is fully gated (0% public), consistent with a business selling through independently run regional banners to contractor accounts on quote. [Motion](/blog/motion-distributor-playbook), the Genuine Parts Company industrial arm, also scored 62, anchored by a perfect 20-of-20 transparency pillar, full public pricing, and no login wall on any product page. But it also posted the widest consistency spread in the sample, a 45-point gap between its richest and thinnest sampled category, the most uneven treatment of its own catalog among the six measured companies. [Fastenal](/blog/fastenal-distributor-playbook) scored 55, the group's best answerability pillar (16.6 of 25) undercut by the thinnest product-data score (16.7 of 35) and no working sitemap, which dragged its agent readiness down to 6 of 20, tied with Wesco for the lowest of the six. Graybar's 51 reflects gated pricing, an explicit AI-crawler block, and the group's widest spread outside Motion (15 points), even though its product pages themselves are publicly browsable without an account. Wesco's 40 rounds out the group at the bottom: a respectable product-data pillar (21.1 of 35) on the pages a logged-out buyer sees, but a median of just 9 attributes, gated pricing, and an agent-readiness score built from what a standard client sees — which, on buy.wesco.com, is an HTTP 403. For a buyer of this vertical's products, the attribute gap is the whole ballgame. Specifying a breaker means filtering on voltage and amperage rating and trip curve; specifying cable means wire gauge, conduit trade size, and plenum-versus-riser jacket rating; specifying an enclosure or a security camera means NEMA/IP rating, UL or ETL listing, or lens type and resolution. A median of 9 attributes, Sonepar's number, likely covers brand, model, and category, not enough to answer any of those questions without a call to a counter rep. A median of 47, Grainger's number, can support that kind of filtering directly on the page. The missing identifier is the catch: even a fully specified page can't be confidently matched to the same SKU in a buyer's own item master, or in a competitor's catalog, without one. ## Where this is heading The biggest names in this vertical are pulling in a direction the branch-density majority hasn't followed yet: Sonepar's Spark platform, Wesco and Graybar's data-center buildouts, and [ADI Global Distribution](/blog/adi-global-distributor-playbook)'s August 2026 spinoff from Resideo into a freestanding, NYSE-listed company all point toward treating a unified digital layer as core infrastructure rather than a website bolted onto branch operations. Border States leaving its buying group after 40 years to deal directly with vendors is a scale move in the same spirit. Underneath all of that, the majority of this vertical by company count is still running the branch-density model this measurement was never built to score at scale, and some of them are starting to close the gap through shared platforms rather than building their own: [Granite City Electric Supply](/blog/granite-city-electric-distributor-playbook) went live on Affiliated Distributors' eContent product-data platform on its webstore in mid-2026. That's likely the more common path for the long tail here than any of them building a national storefront from scratch. --- # RESCO: How a Member-Owned Co-op Beat the Transformer Shortage Source: https://www.anglera.com/blog/resco-distributor-playbook Published: 2026-08-13 Industries: electrical ![RESCO: How a Member-Owned Co-op Beat the Transformer Shortage](/og/hero-resco-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* In Modern Distribution Management's [2026 Top Distributors report](https://www.mdm.com/top_distributors/), RESCO ranks #37 among electrical distributors, with $404 million in revenue. That puts it well below the billion-dollar national chains that dominate that list. RESCO isn't trying to out-scale them. It is owned by the rural electric cooperatives it supplies, and that ownership structure, not branch count, is what makes it worth studying. ## A cooperative born to supply cooperatives On April 30, 1936, representatives of 14 rural electrification projects in Wisconsin organized the Wisconsin Rural Electric Cooperative Association, one year after the federal Rural Electrification Administration began pushing power lines into the parts of the country investor-owned utilities had decided weren't worth the wire. The new association's job was mundane and essential: buy poles, wire, transformers and hardware in bulk so the fledgling co-ops stringing lines across Wisconsin farmland didn't have to negotiate alone against manufacturers. In 1972, the organization renamed itself Rural Electric Supply Cooperative to reflect what it had become: a multistate wholesale distributor supplying the materials and equipment rural electric cooperatives need to run their operations, according to [RESCO's own history](https://www.resco1.com/resco-celebrates-its-90th-anniversary-in-2026/). The company marks its 90th anniversary in 2026, the same year it lands at #37 on MDM's Electrical list. ## The insight: a cooperative supply chain, top to bottom Here is the detail that most coverage of RESCO skips past. One of RESCO's key suppliers for distribution transformers, the single most supply-constrained category in electrical distribution for most of the last four years, is ERMCO, a transformer manufacturer wholly owned by Arkansas Electric Cooperatives Inc. RESCO president and CEO Matt Brandrup [told Cooperative.com in 2024](https://www.cooperative.com/news/Pages/QA-With-RESCO-CEO-How-Co-ops-Can-Plan-for-2024-Supply-Chain-Challenges.aspx) that during the worst of the transformer shortage, when for-profit manufacturers were quoting lead times stretching past two years, RESCO's relationship with ERMCO kept its own transformer fulfillment down to 14 to 20 weeks. That is not a vendor discount. It is a cooperative buying from a cooperative to supply cooperatives, and it held up precisely when the commercial market broke. Most electrical distributors compete on inventory depth and negotiating leverage built through purchase volume. RESCO's leverage runs through common ownership instead. The manufacturer, the distributor and the end customer are, in a real sense, drawn from the same membership. It is the kind of structural advantage that shows up in a crisis, not in a sales deck. ## Patronage, not profit RESCO is a not-for-profit cooperative. Margin above operating costs is returned to members as patronage capital rather than paid out to shareholders or plowed into growth for its own sake, per the company's [about page](https://www.resco1.com/about-resco/). Brandrup has described the model's real function as binding, not just financial: "The cooperative model bonds the employees of the cooperative to our owner-members in a very unique way," he said in comments posted on RESCO's site. That framing matters more than it sounds. Electrical and industrial distribution has spent a decade absorbing private equity roll-ups. RESCO's ownership structure is close to fireproof against that kind of consolidation, because its owners are electric cooperatives that need reliable supply, not investors looking for an exit. There is no cap table to sell. The trade-off is real too. A member-owned nonprofit with nine warehouses and $404 million in revenue does not have access to the capital markets that let a Sonepar or a WESCO fund acquisitions at national scale. RESCO grows by adding capacity where its members need it, not by buying market share. ## Building capacity for the next shortage, not the last one That shows up in RESCO's recent expansion. During the 2021 to 2024 inflation run, when Brandrup said material costs rose roughly 40 percent cumulatively since 2020, RESCO more than doubled its available inventory to over $50 million in stock, expanded warehouses in Michigan and Minnesota, added a distribution center in Iowa, and began work on a Wisconsin logistics facility adding 120,000 square feet of storage. In early 2026, RESCO broke ground on a new 72,000-square-foot facility in Dilworth, Minnesota, scheduled to open in 2027 and built specifically to serve member cooperatives and municipal utilities across Minnesota and the Dakotas. Across nine warehouses spanning 11 states, the pattern is a distributor investing ahead of the next supply disruption rather than reacting to the last one. Buy early, hold deep inventory, keep transformers moving even when the broader market can't. That is what a member-owned utility supplier is structurally built to do. Its owners are the ones who get hurt by a stockout, so the incentive to over-invest in resilience runs straight through the ownership. ## The technical layer RESCO also operates EUSCO, a manufacturer-representation arm that layers engineering support, technical assistance and certified meter technician services on top of the core distribution business, according to the company's about page. For member cooperatives making significant equipment purchases, that pairs procurement with technical judgment, a combination that larger investor-owned electrical distributors often outsource to manufacturer reps whose incentives don't fully match the buyer's. RESCO's 90 years say less about longevity for its own sake and more about what a cooperative can build when it answers only to the members it serves: warehouses stocked ahead of the crisis, a transformer supply chain that held during the worst shortage the industry has seen in a generation, and a catalog built for utilities rather than shareholders. In distribution, the plumbing, the inventory and the ownership structure matter as much as the brand on the truck. This profile is part of Anglera's Distributor Playbooks series, covering the operating models behind the companies on MDM's 2026 Top Distributors lists. --- # Eckart Supply: The Family Name That Outlived Its Family Source: https://www.anglera.com/blog/eckart-supply-distributor-playbook Published: 2026-08-12 Industries: electrical ![Eckart Supply: The Family Name That Outlived Its Family](/og/hero-eckart-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Eckart Supply lands at No. 29 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical, data and security category, a strong showing for a company that started as one contractor's answer to bad supply lines in southern Indiana. The more interesting story is what happened to the family name after the family sold the business, and what the company has done with that lesson ever since. ## A Contractor Gets Tired of Waiting on Parts Everett Eckart ran an electrical, plumbing and HVAC contracting outfit in southern Indiana called Eckart's Wiring & Plumbing. Sourcing material was the daily headache. In 1962 he flipped the problem and opened a supply house of his own, reasoning that if he could not reliably find parts as a contractor, other contractors in the region probably could not either. That single storefront in Corydon, Indiana became Eckart Supply, and the founding logic, stock the stuff contractors actually need and stand behind it, never really left the company. Its longstanding motto, "Stock It, Know It, and Stand By It," is close to a direct restatement of Everett's original complaint turned into a promise. ## The Ownership Change Nobody Would Guess From the Sign Here is the detail that does not show up on the About page: the Eckart family does not own Eckart Supply anymore, and has not for close to a quarter century. Mike Bennett took over leadership and majority ownership in 2001, roughly forty years after Everett Eckart opened the doors. Bennett kept the name, expanded into new markets, and joined [Affiliated Distributors](https://www.eckartsupply.com/aboutus) (AD), one of the largest independent buying groups in the country, giving a regional supply house purchasing leverage closer to what a national chain would carry. In 2014, leadership passed again, this time to Mike's son Philip Bennett, who now runs the company alongside a younger ownership group that includes Chad Coffman, Chris Kellem and Jeff Davis. That is two successions in one company's life, and only one of them kept the founding family in charge. Most distributors that still carry a founder's surname either never changed hands or got absorbed into a private-equity platform and renamed. Eckart did neither. A second family bought a first family's business, kept the name because the name had value in the market, and then built its own multi-generation succession on top of it. It is a small structural fact with a large implication: the brand equity in "Eckart Supply" now belongs to the Bennetts, not the Eckarts, and the company has effectively proven, twice, that it can hand itself down without losing the thread. ## Betting on Breadth Instead of a Single Product Line Most of the largest names in electrical distribution, Wesco, Sonepar, Rexel, compete as electrical specialists first. Eckart built the opposite model: electrical, plumbing, HVAC, lighting, data/cabling and both power and hand tools, sold out of the same branches to the same contractor customers. For a company this size, that breadth is a deliberate trade-off. A multi-line branch needs more SKUs on the shelf, more supplier relationships, and a sales force that can talk knowledgeably across trades, but it also means a single Eckart location can be the only call a residential or commercial contractor needs to make, rather than one stop among four. Electrical Wholesaling's Top 150 list put Eckart's electrical-only revenue at close to $200 million in 2022, a number that would rank the company around No. 62 if electrical were the whole business. The multi-line mix is a meaningful share of what Eckart actually sells. ## Growing by Buying the Companies Facing the Same Choice Everett's Buyers Once Faced Eckart's acquisition pattern is where the founding story loops back on itself. Every deal in the last several years has been a small, single-location, family- or founder-owned distributor in electrical's orbit, exactly the profile Eckart itself was in 2001 before Mike Bennett bought in. | Year | Acquisition | Location | |---|---|---| | 2021 | Radcliff Electric Supply | Radcliff, Kentucky | | 2022 | Chapman Electric | Noblesville, Indiana | | 2023 | Automated Controls and Electrical Supply (ACES) | Richmond, Indiana | | 2023 | Electrical Supplies Unlimited (ESU) | Buford, Georgia | The ESU deal is instructive. [Electrical Trends reported](https://electricaltrends.com/2023/08/29/distributor-acquisition-eckart-supply-enters-atlanta-market/) that ESU had multiple owners with "generational differences" among them, a polite trade-press way of describing exactly the succession question Eckart's own history answers. Buying ESU also flipped its Eaton switchgear line to Eckart, displacing a regional competitor from that supplier relationship in one move. [Distribution Strategy Group covered the ACES acquisition](https://archive.distributionstrategy.com/eckart-supply-to-acquire-automated-controls-and-electrical-supply/) the same year, putting Eckart's overall sales near $200 million at the time. Eckart is not chasing scale for its own sake. It is systematically becoming the buyer of last resort for small electrical houses that hit the same fork in the road the Eckart family hit in 2001, and it is doing so while staying outside the PE roll-up structures that dominate the rest of the sector. ## Building Ahead of the Map The growth has not been acquisition-only. In 2025, Eckart selected Jacksonville, Florida for a new [regional distribution center](https://jaxusa.org/news/eckart-supply-selects-jacksonville-for-regional-distribution-center/), a $1 million investment projected to add 45 jobs and give the company a real logistics foothold in the Southeast rather than a branch bolted onto an acquired book of business. Paired with the AD buying-group membership that Mike Bennett secured two decades ago, it is the infrastructure move of a company planning to keep absorbing smaller distributors for a while yet, and needing the warehouse capacity to back the purchasing leverage up. Companies like Eckart Supply prove that the unglamorous parts of distribution, the branch network, the catalog breadth, the supplier data behind every SKU, are the actual battleground, long after the founder's name stops meaning what it once did. --- # Top Industrial Supplies Distributors 2026: The Digital Shelf Gap Source: https://www.anglera.com/blog/top-industrial-supplies-distributors-2026 Published: 2026-08-11 Industries: plumbing, electrical, mro-industrial ![Top Industrial Supplies Distributors 2026: The Digital Shelf Gap](/og/hero-top-industrial-supplies-distributors-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* The biggest structural event in industrial supply this cycle was a merger neither side lets you shop without an account. [DNOW](/blog/dnow-distributor-playbook)'s November 2025 combination with [MRC Global](/blog/mrc-global-distributor-playbook) built a roughly 5,000-employee, 350-plus-location energy and industrial PVF distributor targeting $70M in annual cost synergies — and neither predecessor's storefront could be scored for this index. DNOW's catalog sits behind a full login wall at shop.dnow.com; MRC, it turns out, does run a live public storefront at connect.mrcgo.com — verified in a later check, but not yet sampled, so it carries no score this edition. That absence sets up the more interesting pattern in the group we could measure. [Ferguson](/blog/ferguson-distributor-playbook), the largest company scored in this vertical by a wide margin at $31.3B, posts the weakest product-data pillar of the fourteen companies with a Digital Readiness Index score — proof that revenue rank and digital shelf quality aren't the same axis. See the [full index](/top-distributors-2026) and the [DRI methodology](/top-distributors-2026/methodology) for how the score is built. ## The ranking | Rank | Company | Revenue | Archetype | DRI | |---|---|---|---|---| | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | $31.3B (CY2025) | Scale-aggregator | 58 | | 15 | [Wesco International](/blog/wesco-distributor-playbook) | $23.5B (FY2025) | Scale-aggregator | 40 | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | $17.9B (FY2025) | Scale-aggregator | 66 | | 25 | [Graybar](/blog/graybar-distributor-playbook) | $12.9B (FY2025) | Scale-aggregator | 51 | | 31 | [Motion (GPC)](/blog/motion-distributor-playbook) | ~$9.0B (FY2025, segment) | Branch-density | 62 | | 32 | [Winsupply](/blog/winsupply-distributor-playbook) | $8.4B (FY2026) | Branch-density | not measured (no public catalog) | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | $8.2B (FY2025) | Program-supplier | 55 | | 40 | [Airgas](/blog/airgas-distributor-playbook) | $7.5B (FY2024, NA, est.) | Scale-aggregator | 46 | | 57 | [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) | $4.56B (FY2025) | Technical-specialist | not measured (not observable) | | 65 | [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) | $3.77B (FY2025) | Program-supplier | 65 | | 70 | [DNOW](/blog/dnow-distributor-playbook) | $2.8B (FY2025) | Scale-aggregator | not measured (no public catalog) | | 72 | [F.W. Webb](/blog/fw-webb-distributor-playbook) | $2.6B (FY2025) | Branch-density | 65 | | 79 | [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) | $2.0B (FY2025) | Technical-specialist | 48 | | 81 | [SunSource](/blog/sunsource-distributor-playbook) | $2B+ (FY2025, est.) | PE-rollup | 52 | | 82 | [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) | $1.98B (FY2025) | PE-rollup | 58 | | 94 | [BDI](/blog/bdi-distributor-playbook) | $1.0B (FY2024) | Branch-density | 58 | | — | [EIS Inc.](/blog/eis-distributor-playbook) | not disclosed | Technical-specialist | 60 | ![Digital Readiness Index pillar breakdown for measured Industrial Supplies distributors](/charts/top-2026/industrial-supplies.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* Revenue bases vary — Motion's figure is its distribution segment only and Airgas's is an estimate — and MRC's last disclosed number, $3.01B for FY2024, no longer carries an independent rank now that it sits inside DNOW. ## Who leads, and why Scale-aggregator is the second-least common archetype among this vertical's fifty companies — six, ahead only of catalog-native's four, against twelve for program-supplier, ten each for technical-specialist and PE-rollup, and eight for branch-density — yet it fills five of the top eight spots in the table above. [Grainger](/blog/grainger-distributor-playbook)'s own rationale explains why: it centralizes national-account coverage and buying power from a handful of large distribution centers instead of a dense branch count, which lets it out-buy regional MRO rivals without matching their footprint. Below that top band, the vertical fragments. PE-rollup and technical-specialist together account for twenty of the fifty companies — SunSource, [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook), Descours & Cabaud, Endries International, Motion & Control Enterprises, BlackHawk Industrial, LGG Industrial, OTC Industrial Technologies, Singer Industrial and White Cap on the sponsor side; [DXP](/blog/dxp-enterprises-distributor-playbook), Wajax, R.S. Hughes, Berendsen Fluid Power, [EIS](/blog/eis-distributor-playbook) and Tencarva Machinery on the specialist side. That split fits the category: bearings, hose, fluid power and pumps are technical enough to reward an in-house repair shop, and fragmented enough that a sponsor can still buy share a few branches at a time — White Cap's February 2026 combination with Colony Hardware and OTC's 23-plus bolt-ons under Genstar Capital are both live versions of that playbook. Catalog-native is the rarest model at just four companies, including McMaster-Carr, which its own classification rationale calls the industry's reference standard for digital-shelf data — notable given McMaster-Carr wasn't part of this measurement round. ## What the Digital Readiness Index found This vertical's median DRI score, 58, lands exactly on the broader index's median. The range inside it is wide, and revenue explains almost none of that spread. [Grainger](/blog/grainger-distributor-playbook) tops the group at 66, carried by a product-data pillar of 31 out of 35 — nine points clear of anyone else — and a median of 47 attributes per sampled page, double or triple most of the field. That depth is what real faceted filtering needs: a buyer can narrow by thread size, load rating or coating without opening a page. Grainger gives some of it back on machine readiness, since it explicitly blocks AI crawlers — a deliberate choice, not an oversight, that costs points by design. [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) and [F.W. Webb](/blog/fw-webb-distributor-playbook) tie for second at 65, by different routes. MSC leans on transparency, a full 20 of 20 for public pricing and stock, plus a 75% GTIN match rate. F.W. Webb matches that transparency score and posts the highest machine-readiness result among the top four (14 of 20), helped by genuine Product structured data — one of only two companies in the measured set that has it. Distribution Solutions Group has the other, and posts a perfect 20 of 20 on machine and agent readiness even while its pricing sits fully gated at 0, the kind of split-pillar result the score exists to surface. Then there's Ferguson. Its answerability score, 19.5 of 25, and full public pricing put it near the top of the buyer-facing half of the score. But its product-data pillar is 11 of 35, the weakest of the fourteen measured companies, and its median attribute count across five sampled categories is zero — not thin, zero — with no spread between richest and thinnest page because there was nothing structured to compare. The specs are almost certainly on the page in prose or a table image; they simply aren't landing as machine-readable fields. Motion sits at the other extreme on consistency: a healthy 62 overall alongside a 45-point spread between its richest and thinnest sampled page, the widest gap measured, meaning which category a buyer lands on matters more at Motion than almost anywhere else in the group. Airgas has the next-thinnest attribute depth after Ferguson, a median of just four per page, even with four in five sampled pages showing a live price. For a buyer of these products, attribute depth isn't abstract. Fasteners need thread size and grade; bearings need bore, outside diameter and seal type; hose and fluid-power parts need pressure rating and fitting standard; electrical gear needs a UL or NSF listing. A median in the teens, which describes most of this field, covers identity and a headline spec or two but leaves compatibility and certification — the fields that decide fit — thin or missing. GTIN publication tells the same story differently: BDI publishes one on 100% of sampled pages and Graybar on 80%, but eight of the fourteen measured companies publish none at all, so a part can be fully priced and photographed and still be unmatchable to the same part listed anywhere else. ## Where this is heading Deal volume in this vertical hasn't slowed — DNOW-MRC, White Cap-Colony Hardware, Hajoca's Southwest push, GPC's planned split of Motion into its own public company — but almost none of that energy is landing on the storefront. The cycle's biggest merger produced a combined company that still carries no score — one storefront login-walled, the other's public catalog verified live but not yet sampled. The names actually pulling ahead on the DRI got there by treating product data as an asset, not a formality: Grainger's attribute depth, MSC's and Webb's unrestricted pricing, DSG's structured markup. None of that requires being the largest company in the vertical. It requires deciding the catalog deserves the same investment as the branch network. --- # Dakota Supply Group: Built by a Buyback, Not a Founder Source: https://www.anglera.com/blog/dakota-supply-group-distributor-playbook Published: 2026-08-11 Industries: electrical ![Dakota Supply Group: Built by a Buyback, Not a Founder](/og/hero-dakota-supply-group-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Dakota Supply Group lands at No. 27 on [Modern Distribution Management's 2026 Top Electrical Distributors list](https://www.mdm.com/top_distributors), a solid mid-pack showing for a company most of the country has never heard of. What the ranking does not capture is why DSG looks nothing like most of the companies around it on that list: it is not run by a founding family, a private equity platform, or a public parent. It is run by roughly a thousand people who bought it themselves after watching it get traded like a poker chip for most of the 1980s. ## Sold Eight Times in Four Years DSG traces back to 1898, when it opened in Fargo, North Dakota as Fargo Plumbing before becoming Dakota Electric Supply in 1929. It split into contracting and wholesale arms in 1948, took its first run at employee ownership in 1954, and consolidated to a single Fargo location by 1960. In 1976 it started a formal employee stock program, then expanded into Grand Forks and Bismarck in 1980. Then it stopped being anyone's company to run for the long term. Esmark acquired the distributor in 1981. Beatrice International bought Esmark shortly after. Between 1985 and 1989, ownership of the business changed hands eight separate times as it was passed among a rotating cast of electrical-distribution roll-ups, according to [Supply House Times](https://www.supplyht.com/articles/100808-supply-house-times-supply-house-of-the-year-2017-dakota-supply-group), which later named DSG its Supply House of the Year. Four years, eight owners. For branch managers and counter staff trying to keep customers supplied through the upheaval, that is not a footnote, it is a formative trauma. ## The Buyback In 1991, employees bought the company back. That decision hardened into structure over the following decade: a formal Employee Stock Ownership Plan in 1996, and 100% employee ownership by 2001. By 2014, when the ESOP Association named DSG its national ESOP Company of the Year, the company had grown to 595 employee-owners and more than $350 million in annual sales, per [Electrical Wholesaling](https://www.ewweb.com/news/news-watch/article/20921449/esop-association-names-dakota-supply-group-esop-company-of-the-year). That is the unique insight worth naming plainly: DSG's ownership structure is not a values statement bolted onto a normal distributor, it is a direct, deliberate reaction to having been someone else's asset for a decade. Most electrical distributors on MDM's list are either still controlled by the family that founded them or have been rolled up into a PE platform chasing scale. DSG did both, in sequence, and chose to opt back out. ## A Distributor That Refuses to Pick One Trade The second thing that separates DSG from most names on the electrical list: it does not primarily think of itself as an electrical distributor. The company describes its own product lines as electrical, plumbing, HVAC, communications, utility, automation, waterworks, and onsite sewer and well. That is eight adjacent trades under one ESOP, not one category run deep. For a single-vertical electrical house, a copper price swing or a construction slowdown in one segment hits the whole business. For DSG, a soft quarter in electrical can be offset by waterworks demand from a municipal project or HVAC volume from a mechanical contractor down the same street, often served out of the same branch. It is a hedge built into the org chart rather than the balance sheet, and it is the kind of structural choice that shows up in resilience over a full cycle rather than in any single year's growth rate. ## Growth Without Losing the Owners DSG has kept expanding through bolt-on acquisitions rather than a single transformative deal, each one adding a trade or a region without diluting the ESOP: [Brown Supply Company](https://distributionstrategy.com/dakota-supply-group-expands-in-south-dakota-iowa-and-michigan/), a four-location Iowa waterworks distributor; Western Steel and Plumbing, adding plumbing and HVAC positions in Bismarck and Minot; and Peoria Pump, a pump, pipe, and geothermal supplier to well drillers founded in 1947. None of these are the kind of headline-grabbing mega-mergers that reshape MDM's top ten. They are the unglamorous, category-adjacent tuck-ins that let an employee-owned company grow without taking on the kind of outside capital that would eventually force another sale. In March 2024 the company shortened its name to DSG and rolled out a new "One Team. Building Futures." identity, explicitly framed around outgrowing its regional Dakota name as it pushed into Minnesota, Iowa, Montana, and Michigan. | Year | Event | |---|---| | 1898 | Founded in Fargo as Fargo Plumbing | | 1981-1989 | Changes hands eight times under Esmark, Beatrice, and successor owners | | 1991 | Employees buy the company back | | 1996-2001 | Formal ESOP established; reaches 100% employee ownership | | 2024 | Rebrands as DSG, expanding beyond the Dakotas | | 2025 | Opens new 120,000-square-foot Fargo headquarters on its 127th anniversary | ## Still Fargo, After All This On May 7, 2025, DSG marked 127 years in business by opening a new 120,000-square-foot headquarters and warehouse back in Fargo, the city where it started as a plumbing shop. President Paul Kennedy noted the company now runs 62 locations across the Upper Midwest with roughly 1,000 employee-owners, but chose to anchor its newest, largest facility in the same city where the company nearly disappeared into a decade of flip sales, according to [InForum](https://www.inforum.com/news/fargo/dsg-celebrates-127-years-opens-new-fargo-headquarters). That is not nostalgia. It is a company that spent the 1980s learning what it costs to not own your own address, and has spent every year since making sure it never happens again. Distribution rarely rewards the flashiest strategy. More often it rewards the company that kept its branches stocked, its ownership stable, and its catalog current while everyone else was busy being bought and sold. --- # How Franklin Empire Stayed Independent as Rivals Consolidated Source: https://www.anglera.com/blog/franklin-empire-distributor-playbook Published: 2026-08-10 Industries: electrical ![How Franklin Empire Stayed Independent as Rivals Consolidated](/og/hero-franklin-empire-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors). New to the 2026 lists.* Franklin Empire lands at #23 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for electrical, one entry in a vertical MDM tracks across the biggest names in North American wholesale. What makes the Montreal company worth a closer look isn't its size relative to that list. It's that Franklin Empire is still there at all, competing as a privately held, family-run business in a Canadian electrical market that has been almost entirely swallowed by consolidators. ## The market it refused to sell into Canada's electrical distribution sector is roughly [98 percent consolidated](https://electricaltrends.com/2024/07/22/the-canadian-electrical-market-98-consolidated/), a figure that puts the country's independents in a smaller box every year. Wesco, Sonepar, and Rexel, three global platforms with European or American parent balance sheets, sit atop the market, with Guillevin close behind. Marketing groups and independents have been squeezed to roughly 16 percent share, the lowest in a decade. Against that backdrop, Franklin Empire is described in trade coverage as Canada's largest privately held independent electrical distributor, a title it has held onto while dozens of peer companies sold to national or global buyers. That is the insight worth naming plainly: Franklin Empire's competitive position is not a product line or a warehouse footprint. It is the fact that a fourth-generation family business chose to keep growing on its own balance sheet instead of taking a national's check, in a sector where almost nobody else made that choice and stuck with it. ## Roots in Montreal, ownership that never left the family Franklin Empire traces its history to 1942 in Montreal, and the company marked its [80th anniversary](https://electricalindustry.ca/latest-articles/9208-ad-member-franklin-empire-reaches-milestone-80th-anniversary/) still under the ownership of the family that started it. Today the business is run by co-presidents Bernie and Clifford Backman, with Cara Backman in marketing and Les Backman in administration, a leadership bench that reads more like a family office than a distributor competing head to head with Sonepar and Wesco for the same electrical contractors and industrial accounts. That continuity shows up in staff tenure as much as ownership. Franklin Empire points to employees retiring after 50 years with the company, a retention pattern that is unusual at any scale and particularly notable in a channel where consolidation often means new ownership, new systems, and turnover every few years. ## The buying-group workaround Staying independent while competing against platforms with continent-wide purchasing scale requires a substitute for that scale, and Franklin Empire built one early. The company has been a founding member of [AD Electrical Canada since 1993](https://adhq.com/news/ad-electrical-canada-member-franklin-empire-reaches-milestone-80th-anniversary), the buying and marketing alliance that pools volume across independent distributors, and has since added membership in AD Industrial & Safety Canada. Co-president Bernie Backman has credited that membership directly: it supplies the buying power to contend with the nationals along with networking and best-practice sharing the company would not generate alone. This is the mechanism, not just the sentiment. A buying group lets a family-owned regional player negotiate rebates and terms closer to what a Wesco or Sonepar gets from suppliers, without surrendering equity or decision rights to do it. It is the structural piece that makes the independence strategy viable rather than just admirable. ## Growth by bolt-on, not by greenfield blitz Where national competitors have been opening dozens of new branches a year, Franklin Empire's expansion has run through a small number of carefully chosen acquisitions of companies that share its ownership structure and culture. In 2012 it acquired [Electra Supply](https://www.electricalmarketing.com/mag/article/20908401/in-canada-franklin-empire-buys-electra), picking up Electra's Cambridge headquarters plus branches in London and Windsor, Ontario, and roughly 30 employees, a deal paired with an exclusive Siemens Automation and Control distribution appointment for southwestern Ontario. At the time Franklin Empire ran 20 branches across Quebec and Ontario with about 400 employees and $25 million in inventory. In February 2026 the company announced a definitive agreement to acquire [O'Neil Electric Supply](https://www.mdm.com/news/top-distributor-sectors/electrical/franklin-empire-boosts-toronto-area-footprint-with-oneil-electric-acquisition/), a Toronto-area distributor with three branches in Woodbridge, Scarborough, and Cambridge and about 150 employees. O'Neil, founded in 1965, is itself family-run and, like Franklin Empire, a member-owner of Affiliated Distributors. Franklin Empire's own materials framed the deal around preserving O'Neil's existing teams and local expertise rather than folding the company into a centralized operating model, and around succession planning for O'Neil's ownership, the kind of continuity pitch a national roll-up rarely makes credibly. | Year | Milestone | |---|---| | 1942 | Franklin Empire founded in Montreal | | 1993 | Founding member, AD Electrical Canada | | 2012 | Acquires Electra Supply (Cambridge, London, Windsor) | | 2026 | Acquires O'Neil Electric Supply (Woodbridge, Scarborough, Cambridge) | | 2026 | #23, MDM Top Distributors, Electrical | By 2026 the company operates 23 branches and five assembly and repair shops across Quebec and Ontario, with more than 600 employees and inventory investment exceeding $50 million. ## The trade-off worth naming Independence has a cost. Franklin Empire cannot fund expansion with a parent company's capital or a PE sponsor's acquisition war chest, so its growth is necessarily slower and more selective than a national's. While competitors have been opening greenfield branches at a fast clip across Canada, Franklin Empire's playbook leans on one or two acquisitions a decade, each chosen for cultural fit as much as geography. That is a real constraint on the pace of growth. It is also, on the evidence of an 84-year run under one family, the reason the company is still choosing its own path rather than executing someone else's integration plan. Franklin Empire's story is a reminder that distribution's biggest edges are rarely visible on a shelf: they live in who owns the branch network, who negotiates the buying terms, and who decides which company to buy next. --- # The Digital Readiness Index 2026: Scale Doesn't Predict Readiness Source: https://www.anglera.com/blog/digital-readiness-index-2026 Published: 2026-08-10 ![The Digital Readiness Index 2026: Scale Doesn't Predict Readiness](/og/hero-digital-readiness-index-2026.jpg) *Part of [Top Distributors 2026](/top-distributors-2026) — the Anglera Index: North America’s largest distributors ranked, classified into six operating archetypes, and scored on the measured [Digital Readiness Index](/top-distributors-2026/methodology).* Pick two product pages at random from Motion Industries' catalog and one of them is likely to carry up to 45 more structured attributes than the other. That's the widest spread we found anywhere in this round of the Digital Readiness Index, and it says more about how a distributor actually runs its catalog than its revenue ever will. ## What we measured, and why the middle of the shelf For each distributor we pulled five live product pages from five different categories of their own public catalog, always from the middle of the category listing, never a featured or promoted item. Featured products are a distributor's best foot forward; the middle of a category is what a buyer, or an AI shopping agent, actually lands on most of the time. We scored each sample against 100 points spread across four pillars: Product Data Depth, Buyer Answerability, Commerce Transparency, and Machine & Agent Readiness. The full scoring rubric, including how silence on AI crawler access is treated as permission rather than a penalty, is in the [methodology](/top-distributors-2026/methodology). This piece covers 32 of the 37 companies we were able to fully measure this round, out of the larger [Top Distributors 2026](/top-distributors-2026) index. ## The leaderboard | Rank | Company | Archetype | DRI Score | Median Attributes | Consistency Spread | |---|---|---|---|---|---| | 7 | [Thermo Fisher Scientific](/blog/thermo-fisher-distributor-playbook) | Catalog-native | 59 | 13 | 22 | | 10 | [Ferguson](/blog/ferguson-distributor-playbook) | Scale-aggregator | 58 | 0 | 0 | | 16 | [Gordon Food Service](/blog/gordon-food-service-distributor-playbook) | Scale-aggregator | 65 | 2 | 2 | | 19 | [Sonepar (North America)](/blog/sonepar-distributor-playbook) | Scale-aggregator | 62 | 9 | 8 | | 20 | [W.W. Grainger](/blog/grainger-distributor-playbook) | Scale-aggregator | 66 | 47 | 14 | | 25 | [Graybar](/blog/graybar-distributor-playbook) | Scale-aggregator | 51 | 16 | 15 | | 29 | [Imperial Dade](/blog/imperial-dade-distributor-playbook) | PE roll-up | 54 | 11 | 8 | | 30 | [Dole plc (North America)](/blog/dole-north-america-distributor-playbook) | Scale-aggregator | 41 | 5 | 1 | | 31 | [Motion](/blog/motion-distributor-playbook) | Branch-density | 62 | 34 | 45 | | 35 | [Fastenal](/blog/fastenal-distributor-playbook) | Program-supplier | 55 | 11 | 6 | | 39 | [Core & Main](/blog/core-main-distributor-playbook) | Scale-aggregator | 63 | 11 | 11 | | 40 | [Airgas](/blog/airgas-distributor-playbook) | Scale-aggregator | 46 | 4 | 9 | | 41 | [Watsco](/blog/watsco-distributor-playbook) | Scale-aggregator | 62 | 47 | 29 | | 50 | [Veritiv Corporation](/blog/veritiv-distributor-playbook) | PE roll-up | 61 | 18 | 12 | | 63 | [DigiKey](/blog/digikey-distributor-playbook) | Catalog-native | 53 | 34 | 29 | | 65 | [MSC Industrial Supply](/blog/msc-industrial-distributor-playbook) | Program-supplier | 65 | 25 | 25 | | 67 | [Reece USA](/blog/reece-usa-distributor-playbook) | Branch-density | 51 | 9 | 13 | | 72 | [F.W. Webb](/blog/fw-webb-distributor-playbook) | Branch-density | 65 | 16 | 21 | | 79 | [DXP Enterprises](/blog/dxp-enterprises-distributor-playbook) | Technical-specialist | 48 | 11 | 10 | | 81 | [SunSource](/blog/sunsource-distributor-playbook) | PE roll-up | 52 | 15 | 24 | | 82 | [Distribution Solutions Group](/blog/distribution-solutions-group-distributor-playbook) | PE roll-up | 58 | 17 | 14 | | 89 | [TricorBraun](/blog/tricorbraun-distributor-playbook) | Scale-aggregator | 70 | 14 | 4 | | 94 | [Bearing Distributors Inc.](/blog/bdi-distributor-playbook) | Branch-density | 58 | 34 | 22 | | 100 | [The Master Group](/blog/master-group-distributor-playbook) | Branch-density | 60 | 19 | 5 | | 112 | [Arc3 Gases](/blog/arc3-gases-distributor-playbook) | Branch-density | 43 | 3 | 2 | | 120 | [WPG Americas](/blog/wpg-americas-distributor-playbook) | Scale-aggregator | 60 | 3 | 2 | | 136 | [DH Sutherland](/blog/dh-sutherland-distributor-playbook) | Technical-specialist | 47 | 4 | 1 | | — | [E&T Plastics](/blog/et-plastics-distributor-playbook) | Branch-density | 68 | 3 | 5 | | — | [EIS Inc.](/blog/eis-distributor-playbook) | Technical-specialist | 60 | 18 | 24 | | — | [Interstate Plastics](/blog/interstate-plastics-distributor-playbook) | Catalog-native | 52 | 2 | 16 | | — | [Curbell Plastics](/blog/curbell-plastics-distributor-playbook) | Branch-density | 50 | 5 | 7 | | — | [American Welding & Gas](/blog/american-welding-gas-distributor-playbook) | Branch-density | 42 | 6 | 12 | ![Digital Readiness Index pillar breakdown for all measured distributors](/charts/top-2026/all-measured.svg) *Stacked bars: the four pillars of the [Digital Readiness Index](/top-distributors-2026/methodology) — segment lengths are pillar scores, the number is the company's total out of 100.* ## What the spread actually shows The median score across the group is 58, and the mean is close behind at 56 — a tight cluster, with the real story in the tails and in the pillar breakdowns rather than the overall number. The gap between the top score (TricorBraun, 70) and the bottom (Dole, 41) is 29 points, which sounds modest until you notice that most of that gap comes from the same two sub-scores, over and over: identifiers and structured content. Only 13 of the 32 companies attach a GTIN to any product in their sample, and identifier coverage doesn't track the leaderboard the way you'd expect. Five of the six highest scorers this round — TricorBraun, E&T Plastics, Grainger, F.W. Webb, and Gordon Food Service — return a 0% GTIN rate across their entire five-page sample. They're winning on pricing transparency, crawlability, and sitemap discipline, not on identity. That matters for a specific, narrow question a buyer or an agent actually asks: is this the same physical part a competitor is also selling? Without a GTIN or a comparable identifier, the honest answer a crawler can give is "unknown," no matter how clean the rest of the page is. The median product page in this sample carries 11 structured attributes, but that median hides an enormous range. Grainger and Watsco both post a median of 47 attributes per page — the deepest catalogs we measured, by a wide margin — while Ferguson's five sampled pages returned a median of zero, and a consistency spread of zero too, meaning none of the five had any. That's despite Ferguson posting the second-highest Buyer Answerability score in the group (19.5 of 25): the pages read well to a person, with photos, specs, and reviews, but return almost nothing a filter or an agent can parse as structured data. Ask "will this fit a 3/4-inch NPT connection" and a human reading the page can answer it; a machine reading the same page currently cannot. Consistency spread is the number that should worry a catalog owner more than any single score. Motion's 45-point swing means an agent sampling one category might conclude motion.com is one of the best-documented catalogs in distribution — which, in places, it is — and then hit a different category on the same site and find a fraction of the detail, with no way to predict in advance which one it'll get. Motion isn't alone: Watsco (29), DigiKey (29), and MSC (25) all post double-digit spreads while still scoring well overall. High spread travels with high scores about as often as it travels with low ones, which suggests depth and consistency are two different problems, and most of the group has solved only the first. Zoom out past the 37 measured companies and the picture gets starker. Of the 78 large North American distributors we attempted to measure this round, 17 run no public product catalog we could find at all — pharmaceutical giant [McKesson](/blog/mckesson-distributor-playbook) among them, alongside building-products players like [ABC Supply](/blog/abc-supply-distributor-playbook) and dozens of smaller specialty distributors whose entire ordering flow sits behind a login or a phone call. Another 16 — including [Cencora](/blog/cencora-distributor-playbook), [Cardinal Health](/blog/cardinal-health-distributor-playbook), and [Builders FirstSource](/blog/builders-firstsource-distributor-playbook) — turned out to have live public product pages after all, usually on an owned banner storefront rather than the corporate domain; their catalogs are verified live but not yet sampled, so they carry no score this edition. Two more sites we could confirm have genuine public catalogs — [Applied Industrial Technologies](/blog/applied-industrial-distributor-playbook) and [R.E. Michel](/blog/re-michel-distributor-playbook) — but bot protection stopped us from sampling them cleanly, so they're marked not-verifiable, not scored zero. Six others, [Medline](/blog/medline-distributor-playbook) among them, serve nothing readable even to a full browser session and are marked not observable — a limit of the measurement, not a claim about what sits behind the wall. ([Arrow Electronics](/blog/arrow-electronics-distributor-playbook), [Avnet](/blog/avnet-distributor-playbook), and [Uline](/blog/uline-distributor-playbook), whose sites also block standard clients, were measured this round in a full browser session instead, which their scorecards disclose.) None of those 41 companies has a digital readiness score, and none of the four statuses is a verdict on the business — only "no public catalog" says anything about the company itself, and even there it usually reflects a rep-driven or account-gated sales model that has worked for decades, not neglect. ## Size didn't buy the top of the list The two largest companies in this measurement by revenue, Thermo Fisher Scientific ($44.6B) and Ferguson ($31.3B), land at 59 and 58 — right at the group median. The top of the leaderboard belongs to TricorBraun, a packaging distributor whose most recent disclosed revenue is a stale FY2020 figure, and E&T Plastics, a ten-branch regional plastics distributor that doesn't disclose revenue at all. Between them they hold two of the top three scores. Revenue rank simply isn't doing much predictive work here: the businesses that show up in quarterly earnings calls are not, on this evidence, the ones building the cleanest digital shelf. A tightly run catalog looks like a deliberate, page-by-page decision, independent of how big the company behind it is. ## What would move these numbers None of what separates the top of this list from the bottom requires rebuilding a business. GTIN coverage doesn't need a new sourcing relationship — the identifier already exists on the manufacturer's side; someone just has to attach it consistently at the SKU level instead of leaving it blank on most categories. Closing a 45-point consistency spread means auditing the categories that get the least attention, not rebuilding the ones that already work. An AI crawler stance is a couple of lines in a robots.txt file, and the data treats silence as permission, not as a gap to apologize for — only an explicit block costs points. What the leaders in this list share isn't size or technical sophistication. It's that the tenth category in their catalog gets treated the same as the first. --- # Your Pricing Problem Is a Product-Data Problem: Reps Override When the Catalog Can't Defend the Price Source: https://www.anglera.com/blog/pricing-overrides-catalog-quality-2026 Published: 2026-08-02 ![Your Pricing Problem Is a Product-Data Problem: Reps Override When the Catalog Can't Defend the Price](/og/hero-pricing-overrides-catalog-quality-2026.jpg) Your reps aren't overriding list price because they're undisciplined, and a pricing engine won't fix what's actually broken. They override because the product page behind the price gives them nothing to sell against — and a spec-thin SKU is, functionally, a commodity. Before you shop for pricing software, pull your top 50 override lines and look at the catalog pages underneath them. You'll find the real problem. ## The exception layer is a symptom, not the disease Distribution Strategy Group has spent the back half of 2026 on this exact pain point, and it's the right pain point. Their [June piece on the exception layer](https://distributionstrategy.com/2026/06/when-the-exception-layer-becomes-the-pricing-system/) makes a sharp observation: temporary discounts don't get reviewed, they just age into policy, until the exception list quietly becomes the real price book. Their fix is procedural — an aging report, a 60-day renewal clock, a cross-functional council that has to actively bless every holdover discount. That's good hygiene. It will claw back some margin. It will not touch the reason the exceptions started. Their January piece gets closer to the root cause and then swerves away from it. It argues reps override system pricing with their own cost-plus math because the pricing strategy ["lacks credibility"](https://distributionstrategy.com/2026/01/how-better-pricing-can-improve-your-margins-in-2026/) — and the prescription is executive sponsorship, a dedicated pricing hire, AI tooling to manage special-pricing authorizations. All defensible. But "lacks credibility" is doing a lot of work in that sentence, and the piece never asks the more uncomfortable question: credible to whom, and defended with what? A rep doesn't lose confidence in a price because leadership failed to hold a kickoff meeting. A rep loses confidence in a price when a customer pulls up a competitor's page mid-call and the two listings look identical — same generic title, four spec fields, one stock photo — except the other guy is $4 cheaper. At that moment the rep isn't defending a strategy. They're defending a blank page. And a blank page loses every time. ## What the override actually measures Run this test on your own catalog. Pick the SKUs with the highest override frequency over the last two quarters. Now pull up those product pages. Our bet — and it's a testable one, not a hunch — is that they cluster hard on thin data: bare part numbers instead of descriptive titles, five or six attributes where a comparable line has thirty, no application or compatibility language, one image. That's not a coincidence, and it's not really about discipline. When a page can't tell a buyer *why* this SKU is worth the number on it — the tolerance, the certification, the compatibility with the exact system they're installing it into — the buyer treats it as interchangeable with the cheapest interchangeable thing they can find. The rep feels that pressure on the phone before finance ever sees it in the margin report. The override is the rep pricing the SKU the way the page priced it: as a commodity. [McKinsey has called pricing distributors' single most powerful value-creation lever](https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/pricing-distributors-most-powerful-value-creation-lever), and the arithmetic explains why override culture is so expensive to ignore: at an 18% gross margin, a 1% price concession requires roughly 6% more volume just to break even, while distributors that build real pricing capability have captured 200 to 500 basis points of margin uplift. That math is the entire business case for fixing this. It says nothing about which lever to pull first. Separately, industry pricing analyses put override volume at [20% to 50% of revenue at a typical distributor, at a 500-to-1,000-basis-point margin delta versus system price](https://centerprism.com/feeds/blog/distributor-price-management) — which is a bigger number than most finance teams admit to a board. If your exception rate is in that range, you don't have a discipline problem confined to a handful of reps. You have a structural one, and it's worth asking what's structurally different about the SKUs that get overridden versus the ones that don't. ## Catalog consistency is the tell There's a second layer to this that pricing-software vendors never mention, because it isn't in their product: consistency. A catalog where the flagship SKUs are richly specced and the long tail is nearly blank doesn't just under-price the long tail — it teaches every rep working that catalog that data quality is negotiable, and negotiable data quality trains negotiable pricing behavior. We built a signal for exactly this into the Digital Readiness Index behind our [Top Distributors 2026](https://anglera.com/blog/top-distributors-2026) index: it measures the spread between a company's richest and thinnest product page, on the theory that internal variance is as diagnostic as the average. A three-attribute spread scores full marks. A twenty-attribute spread scores zero. Distributors that hold that spread tight tend to be the same ones whose reps aren't improvising prices SKU by SKU — because the catalog isn't improvising the SKU's identity either. The index's Product Data Depth pillar scores attribute count directly, half a point per structured attribute up to thirty, precisely because attribute count is [the number the channel most consistently under-invests in](https://anglera.com/blog/top-distributors-2026/methodology). We didn't build that signal with pricing in mind. But watch what happens when you cross-reference it against override behavior at any distributor willing to share both numbers: the correlation is not subtle. Thin-attribute catalogs and high override rates travel together, for the same reason cheap-looking product pages and price shopping travel together everywhere else in commerce. ## Buy the engine second None of this is an argument against pricing software. Good pricing tooling — segmentation, guardrails, approval workflows — is real infrastructure, and most distributors under-invest in it. But sequence matters. A pricing engine layered on top of a catalog that can't defend its own SKUs just automates the override at machine speed: same guessed price, faster approval, better-looking dashboard, same margin leak. The exception-aging report DSG proposes will catch some of that leakage after the fact. It won't stop a rep from needing an exception in the first place. The cheaper, faster fix runs the other direction. Fix attribute coverage and description depth on your highest-override SKUs before you shop for a pricing platform, and re-run the override report. If the catalog fix moves the number — and in our experience with distributor data it moves fast — you've just learned your pricing problem was a data problem wearing a pricing problem's clothes, and you saved yourself a platform migration to find that out. Anglera's whole job is that fix: adding the attributes, spec depth, and structured data a PIM already stores space for but never gets filled in, without replacing whatever pricing or catalog system runs on top of it. Your reps aren't the exception layer. Your catalog is. Fix the page, and watch what happens to the override rate before you sign anything else. --- # The product content stack has six layers. Most teams shop the wrong one. Source: https://www.anglera.com/blog/product-content-stack-six-layers Published: 2026-07-30 There is a specific conversation I have had enough times to recognise it from the first sentence. A distributor or a retailer has decided their product data is a problem. They have a shortlist. On it: a PIM, an AI copywriting tool, and a feed management platform. They want to know which one to pick. The honest answer is that those three products solve three unrelated problems, and the shortlist was assembled from search results rather than from a diagnosis. It is the equivalent of shortlisting a plumber, an electrician and a roofer because the house feels wrong. ## Six layers, one vocabulary The product content market looks like one category because every vendor in it uses the same forty words. It is really six, and they stack: | Layer | What it does | Representative vendors | | --- | --- | --- | | **Storage** | Models, governs and versions product data | Akeneo, Salsify, inriver, Stibo, Pimberly | | **Production** | Creates attribute values that don't exist yet | Anglera, Trustana, Pumice.ai, BPO providers | | **Distribution** | Moves finished content to trading partners | Syndigo, 1WorldSync, Icecat, content pools | | **Channel shaping** | Reformats per destination and its rules | Feedonomics, Productsup, Channable, Rithum | | **Expression** | Writes prose from structured data | Hypotenuse, Jasper, Writer, PIM-native tools | | **Measurement** | Grades the result and ranks what's broken | Profitero, DataWeave, NIQ, Salsify Insights | Every one of these is a real category with real leaders, and each of them will describe itself as solving "product content." They aren't lying. They're describing their own layer, and the buyer is the only person in the conversation who has to work out which layer they're standing in. We wrote up the full vendor set for each of them in a set of [market maps](/best) — including the categories where the answer is somebody other than us, because a map that only leads to one place isn't a map. ## The diagnosis takes an afternoon You can identify your layer from the shape of the failure, not from the shape of the vendor's demo. **Two teams have different values for the same SKU and nobody knows which is right.** That's storage. You need a system of record, and you need it before anything else, because the other five layers all assume one exists. **The fields are simply empty.** Thirty thousand SKUs with no material, no dimensions, no certification, because nobody ever typed them in and the supplier's PDF is a scan. That's production, and it is the layer most often misdiagnosed as storage, because it is the one that looks solved in every demo — demo catalogs are complete. **A retailer keeps rejecting your submissions.** That's distribution. Their schema, their validation rules, their network. **Google disapproves 8% of your items every week.** Export the reasons and sort them. If they're mostly missing GTIN, missing size, missing colour — that's production surfacing at the channel-shaping layer. A feed rule can rename `colour` to `color`. It cannot invent a colour that no field records. **The specs are complete and the copy reads like a parts list.** That's expression, and it's the cheapest problem on this list to fix. **You suspect content is costing you money and can't prove it.** That's measurement, and it's often the right first purchase, because it converts a vague complaint into a ranked queue with a number attached. ## The mistake that costs the most By some distance, it is buying storage to solve production. It's an easy mistake to make. PIM vendors demo beautifully. The data model is elegant, the workflow is clean, the governance is genuinely good, and the catalog on screen is complete. Nobody in the room notices that the completeness was a property of the demo data rather than of the software. Eighteen months and a seven-figure programme later, the catalog is in a much better system and the [attribute fill rate](/glossary/attribute-fill-rate) has moved by two points. Not because the PIM failed — it did exactly what it says on the tin. Because filling in 400,000 empty fields was scoped as a phase inside the migration, and when the timeline slipped, the phase without a dedicated owner is the one that got deferred to next year. A PIM stores product data. It does not go and find it. Those are different verbs and they need separate budgets. ## The other mistake: generating over nothing The second most expensive error runs the stack in the wrong order — buying expression before production. Point any description generator at a SKU that reads `BR120 · Eaton · circuit breaker` and it will return a confident, fluent paragraph about amperage, mounting style and typical application. Some of it will be right. The model cannot mark which parts it read and which it inferred, because from inside the generation there is no difference between the two. An empty description field is a visible gap that someone can be assigned to fix. A confident, wrong description is a silent liability that syndicates to every channel you're connected to. In B2B, a wrong thread pitch doesn't read as a typo. It reads as a returned pallet and a call to your rep. Fill the attributes, then write. It is a slower first month and a materially different year. ## What a coherent stack looks like For a mid-size distributor, the shape that works is usually: 1. **A PIM** as the system of record, sized to the catalog rather than to the sales deck 2. **An enrichment practice** — not a project — producing sourced attribute values into it continuously 3. **A feed or syndication layer** appropriate to how you actually sell 4. **Generation** derived from the enriched record, canonical first and per-channel second 5. **Measurement** with enough remediation capacity behind it that the queue can actually be worked The word doing the work in that list is *practice*. Catalogs don't hold still. Suppliers revise specs, new SKUs arrive weekly, certifications lapse, channels change required fields. A one-time backfill produces a completeness number that peaks the day it lands and decays from there — which is why the same organisation runs the same cleanup project every few years, usually with a different vendor and the same outcome. ## Where we sit, and where we don't Anglera is layer two. We build the attribute schema a category actually needs, fill it SKU by SKU against supplier documents and how buyers in that category search, cite where each value came from, and write the result back into whatever system you already run. Implementation lands around 30 days because there's no front end to replace. We are not a PIM and have no ambition to become one — we work alongside Akeneo, Salsify, Syndigo, inriver, Pimberly and the rest. We're not a content network, not a feed manager, and not a digital shelf platform. If your problem is one of those, the [market maps](/best) name the vendors who lead each one, and we'll say the same thing on a call. The problem we do own is the one nobody's software solves on its own: the values were never captured, the team that would capture them doesn't exist, and every system downstream is only as good as the completeness underneath it. If you're not sure which layer you're in, bring one category you're losing in. That diagnosis is free and it takes about an hour — and if the answer is that you need a feed tool, we'll tell you which one. --- # Nobody searches for the name you gave the category Source: https://www.anglera.com/blog/nobody-searches-your-category-name Published: 2026-07-30 A distributor I spoke with had a category called **Fluid Handling — Rotary**. Their buyers searched for "pump." Not once, not occasionally. It was the top query on their site, and it returned a page of results assembled from whatever the search engine could scrape out of product titles, ranked by nothing in particular. Nobody had done anything wrong. **Fluid Handling — Rotary** is a perfectly reasonable name. It matches how the ERP is structured, how the buying group organises its content, and how the supplier's own catalog is laid out. It is precise, it is defensible, and it appears in exactly zero customer searches. ## Catalogs are written in the language of the people who stock them This is close to universal, and it isn't a failure of taste. Product data enters a catalog from suppliers, and suppliers write for their own distribution network. Categories inherit ERP structure because that's where the SKUs come from. Attribute names inherit whatever the first supplier called them. The vocabulary is internally consistent and completely disconnected from the phrasing of the person trying to buy. Some examples that recur across catalogs: | What the catalog says | What the buyer types | | --- | --- | | Fluid Handling — Rotary | pump | | Overcurrent Protective Devices | breaker | | Personal Protective Equipment — Hand | work gloves | | Threaded Fasteners — Hex Head | bolts | | Luminaires — Linear Recessed | shop light | | Facility Maintenance — Absorbents | spill kit | The right side isn't more correct. It's more searched. And when your catalog only contains the left side, a search for the right side either returns nothing or returns whatever fuzzy match the engine can manage — which is how a null-result rate ends up at 15% while everyone believes the catalog is complete. ## Three places the gap shows up **Site search.** Null-result queries are the most under-read report in commerce. They are a literal transcript of demand you failed to serve, written by the customer, timestamped. Most teams look at them once a year. **Facets.** A facet nobody clicks is usually not a useless facet — it's a facet labelled in vocabulary the buyer doesn't recognise, or one populated so sparsely that filtering on it removes most of the assortment. Both are fixable and both are invisible in a conversion dashboard. **AI retrieval.** This is the newer and sharper version. When someone asks an answer engine "what do I need to seal a 2-inch threaded joint on a gas line," the model is matching that question against product attributes. It is not matching against **Pipe Sealants — Anaerobic**. If your record contains only the manufacturer's vocabulary and none of the application language, the match is weaker for reasons that have nothing to do with whether your product is the right one. ## The fix is structural, not editorial The instinct is to rewrite descriptions with more customer-friendly words. That helps a little and misses most of the value, because the systems that decide whether a product is *findable* read fields, not paragraphs. What actually moves the numbers: **A synonym layer on the taxonomy.** Keep **Fluid Handling — Rotary** as the internal node — it's load-bearing for purchasing. Attach `pump`, `centrifugal pump`, `transfer pump` as searchable alternates. Nothing about the ERP relationship changes; the search index gains the words people use. **Application attributes as structured values.** Not prose about what the product is for, but fields: `Application`, `Used With`, `Replaces`, `Compatible With`. These are what turn a question phrased as a task into a match against a specification. **Buyer-facing attribute labels.** The field can be `AMPS_RTG` in the source system and display as "Amperage" with a unit. One is for the integration, one is for the human. **Cross-references and supersessions.** In trade categories, a large share of searches are for a competitor's part number or a discontinued one. A catalog that can't resolve those is answering "no" to a customer who was ready to buy. Every item on that list is [attribute work](/glossary/product-attributes). Which is the point: the vocabulary problem looks like a merchandising or SEO problem and lives in the data layer. ## Where the words come from You don't have to guess, and you shouldn't. The vocabulary is already sitting in systems you own: - **Null-result site searches** — the highest-signal source, already collected, rarely read - **Quote and RFQ text** — how customers describe what they want when a human is reading - **Inbound call and chat logs** — the same, less filtered - **Marketplace search suggestions** — Amazon's and Grainger's autocomplete is a demand map for your categories - **Competitor facet labels** — someone else already did this research and published the answer Collect a few hundred phrases per category and the pattern is obvious within an afternoon. The hard part was never discovering the words. It's getting them into structured fields across a hundred thousand SKUs, which is where this stops being a workshop and becomes an [enrichment](/glossary/product-data-enrichment) programme. ## Don't rename. Add. One caution, because the overcorrection is worse than the original problem. Teams who discover this sometimes restructure the whole taxonomy into customer language. That breaks supplier alignment, confuses purchasing, complicates ERP integration, and irritates the internal users who navigate the catalog fifty times a day and knew exactly where everything was. The internal taxonomy usually exists for good reasons. What's missing is a layer alongside it. Keep the structure, add the vocabulary, and let search resolve between them. The measurement is straightforward: null-result rate on site search, facet engagement, and the share of top queries that land on a relevant category page. Baseline them before you start, because this is one of the few catalog investments where the before-and-after is unambiguous within a quarter. If you want to see it on your own data, the market maps for [enrichment platforms](/best/product-data-enrichment-platforms) cover who does this kind of work and how the models differ. And the fastest diagnostic costs nothing: pull last quarter's null-result searches and read the top fifty. The list is usually a very direct message from your customers about the words missing from your catalog. --- # The Marketplace Decision Is Really a Catalog Decision Source: https://www.anglera.com/blog/marketplace-question-is-a-catalog-question-2026 Published: 2026-07-30 ![The Marketplace Decision Is Really a Catalog Decision](/og/hero-marketplace-question-is-a-catalog-question-2026.jpg) Every distributor board deck on marketplaces eventually lands on the same three boxes: build one, join one, or sit this out. That framing is a distraction. The real question underneath all three options is whether your catalog can produce a complete, machine-readable product record — because whoever can, wins the customer relationship regardless of which box gets checked, and our own measurement of the industry says most distributors currently can't. ## The costume Marketplace strategy gets discussed like a business-model choice: take rate versus owned margin, platform risk versus platform reach, build cost versus time-to-market. Those are real tradeoffs. But underneath every one sits a data question asked far less often: can this company produce, for every SKU it wants to sell, a record complete enough that a matching engine — or an AI shopping agent, increasingly doing the same job — can find it, understand it, and trust it's the same part a rival is also listing? That capability doesn't change based on whether the marketplace is yours or someone else's. A distributor that can't produce clean identifiers and attributes on its own product pages won't magically produce them in a third-party feed. The catalog is the constraint; the marketplace is just where it becomes visible to a buyer with other options. [Distribution Strategy Group has argued](https://distributionstrategy.com/2023/12/how-to-build-a-business-case-for-your-b2b-marketplace/) that a marketplace business case should weigh commission economics, incremental volume, and channel conflict against the cost of the platform build. All fair inputs. None of them asks the prior question: does the catalog behind the business case actually exist yet in a form a marketplace can ingest. ## What our own numbers say We didn't have to speculate about this. Anglera runs the [Digital Readiness Index](/top-distributors-2026/methodology), a measured scorecard across four pillars — product data depth, buyer answerability, commerce transparency, and machine and agent readiness — sampled from live product pages at more than 30 of the largest North American distributors as part of the [Top Distributors 2026 index](/top-distributors-2026). The catalog pillar is where the industry is weakest, and the gap isn't subtle. Only 13 of 32 fully-measured distributors attach a GTIN or comparable identifier to any product in their sample. The median product page carries 11 structured attributes — a figure that hides an enormous range, from Grainger and Watsco posting medians near 47 down to Ferguson, whose five sampled pages returned a median of zero despite Ferguson scoring near the top of the group on buyer answerability. Those pages read well to a person: photos, specs, reviews. They return almost nothing a filter, a marketplace ingestion job, or an AI agent can parse as structured data. That's the tell. A syndication-grade record isn't "a page that looks good." It's a page a machine can consume without a human translating it first. Most of the distributors we measured — including some of the largest, best-capitalized ones in the country — don't clear that bar on their own primary channel. Joining a marketplace doesn't fix that gap; it just moves the gap somewhere a competitor's clean record can outrank you for the exact same part. ## Third-party onboarding is a data-ops problem wearing a platform-feature costume The build-your-own-marketplace case has the identical problem, just relocated to onboarding. [Distribution Strategy Group's "3 Rules" piece](https://distributionstrategy.com/2022/10/3-rules-for-building-a-successful-distributor-marketplace/) lists catalog and content governance as one of three success factors, alongside curation and merchant experience. We'd put it more bluntly: it isn't one of three co-equal factors, it's the gate the other two sit behind. A marketplace with poor merchant experience but a clean, governed catalog is annoying to sell on. A marketplace with a slick merchant experience and no catalog governance is unusable — buyers can't compare, can't filter, can't trust that two listings are the same part. Mirakl, which runs syndication infrastructure for a large share of the B2B and B2C marketplace market, put a number on this in its [2026 seller report](https://www.mirakl.com/blog/the-marketplace-revolution-key-insights-from-our-2026-seller-report): sellers using its AI-assisted catalog transformation tool generate 88% more GMV than sellers who don't, and even inside that mature, purpose-built ecosystem, median onboarding still takes 28 days — the fastest sellers clear it in under two weeks, which means most don't. Distributors standing up an owned marketplace and asking third-party sellers to self-serve a catalog upload without comparable infrastructure should expect onboarding measured in months, not weeks, and a long tail who never finish. The stall point in nearly every owned-marketplace build we've seen described isn't the storefront, the checkout, or the seller agreements. It's the queue of incomplete product records nobody has staffed to fix. That's not a platform gap you close by buying better marketplace software. It's a data-operations capability: someone has to own getting supplier and seller data into a consistent, machine-readable state, continuously, as the catalog grows. Most distributors have never built that muscle because a rep-driven sales model tolerates a messy catalog in a way a self-service marketplace cannot. ## Listing on someone else's marketplace doesn't skip the requirement The "just list on Amazon Business or a vertical marketplace" option looks like it avoids the catalog problem, since someone else owns the platform. It doesn't. Amazon Business alone now runs more than [$35 billion in annualized GMV](https://www.digitalcommerce360.com/2025/08/20/amazon-business-gmv-35-billion-10th-year/) across 8 million business customers — real volume, but volume a matching engine allocates to whichever listing has the cleaner record for that part number. Bad product data isn't cosmetic on a shared marketplace; [research cited by Inriver](https://www.inriver.com/resources/why-bad-product-data-is-sabotaging-your-brand/) found 66% of shoppers have abandoned a purchase over missing or inaccurate product information, and 40% have returned a product because the data was wrong. A distributor that lists a part with a thin record isn't neutral there — it's donating that sale to whichever seller, private-label or competitor, filled the record out properly. [Distribution Strategy Group's most recent piece on marketplaces](https://distributionstrategy.com/2025/09/the-real-impact-of-b2b-marketplaces-lies-in-the-near-future/) frames the format as still under-built relative to its ultimate size, with specialized vertical platforms as the likely winners over horizontal ones. We don't disagree with the trajectory. But "under-built" cuts both ways — it also means the catalog advantage available to whoever shows up with a complete record right now is larger than it will be once the format matures and every seller has caught up. ## The move that actually matters None of this argues for or against building, joining, or abstaining — that's a genuine business-model call, and reasonable operators will land differently on it. What it argues against is treating the catalog as a downstream detail of whichever choice gets made. Fix the catalog first, and all three paths get cheaper: an owned marketplace onboards sellers faster, a listing on someone else's platform actually wins the buy box, and staying out becomes a deliberate choice instead of a default born of not being ready anywhere. This is squarely Anglera's lane. Your PIM stores the record; Anglera does the work of getting every SKU to a syndication-grade state — identifiers attached, attributes complete, consistent across the whole catalog rather than just the featured items — usually inside 30 days from a flat file, no rip-and-replace required. The marketplace decision can wait a quarter. The catalog gap can't, because every quarter it stays open is share someone with a cleaner record is already taking. --- # AI Pilots Don't Die From Bad Models. They Die From Uncountable Output. Source: https://www.anglera.com/blog/ai-pilots-auditable-output-2026 Published: 2026-07-28 ![AI Pilots Don't Die From Bad Models. They Die From Uncountable Output.](/og/hero-ai-pilots-auditable-output-2026.jpg) The keynote advice going around distribution conferences this year is "stop experimenting, move to production." It's not wrong, but it's incomplete, and the gap is expensive. It skips the one question that actually predicts whether a pilot ships: can you count what the model produces? Pilots don't die from bad models. They die from output nobody can audit, price, or defend in a budget meeting. ## What the keynote got right, and what it left out At the Applied AI for Distributors keynote in June, [Graybar executives urged distributors to move AI projects into production](https://distributionstrategy.com/2026/06/keynote-graybar-executives-urge-distributors-to-move-ai-projects-into-production/), arguing that the real blockers are organizational, not technical — "your data, your processes and your people," not model quality. [Distribution Strategy Group's takeaways piece](https://distributionstrategy.com/2026/06/applied-ai-for-distributors-keynote-takeaways-execution-is-replacing-experimentation/) framed it as execution replacing experimentation, a clean rhetorical turn that's been repeated at half the conferences since. Both pieces are right that change management, not model capability, is usually the binding constraint. Neither says how to pick which pilot gets the change-management budget in the first place. "Move to production" is an instruction with no selection criterion attached, and distributors have taken it as license to promote whatever pilot had the best demo. That's the wrong filter. The right one is narrower and less exciting: does this AI application produce a discrete, checkable unit of output, or does it produce a vibe? ## The divide is real, and it isn't about model quality MIT's widely cited "State of AI in Business 2025" research — reviewing 300+ enterprise initiatives and 153 executive interviews — found that [95% of generative AI pilots show zero measurable return](https://www.forbes.com/sites/andreahill/2025/08/21/why-95-of-ai-pilots-fail-and-what-business-leaders-should-do-instead/), despite $30–40 billion in enterprise spend. The researchers called it the "GenAI Divide": over 80% of companies have piloted something, nearly 40% report some deployment, and almost none of it moves an enterprise P&L. The tools that stall are general-purpose ones — chat assistants, copilots — because they hand a flexible instrument to a worker and ask the organization to somehow instrument the resulting judgment calls. Separate 2026 research on enterprise AI agents found a similar pattern split by use case, not by industry: [back-office automation delivered the biggest, most dependable wins](https://www.verticaledgeai.ai/resources/2026-workflow-automation-demand-map.html) — the same connected agent trimming the same hours every day, consistently — while sales- and marketing-facing bets, where most of the budget actually goes, produced the least reliable returns. [Forrester's read on Copilot adoption](https://www.forrester.com/blogs/the-copilot-reality-check-what-enterprise-adoption-data-reveals-about-the-ai-boom/) lands on the same fault line: only 20–30% of licensed seats get weekly use, because the tool doesn't change anyone's workflow, it just sits next to it. Distribution's own numbers confirm the pattern from the demand side. DSG's own [inventory survey found 81% of warehouse and operations professionals want to implement AI, but only 11% currently use it](https://distributionstrategy.com/2026/07/inventory-survey-finds-strong-interest-in-ai-but-adoption-remains-limited/) day to day — and tellingly, chatbots and general-purpose applications ranked lowest in stated interest, well behind demand forecasting and replenishment. Operators are already voting, with their attention if not their budgets, for AI that produces a number they can check against a shelf. ## Countability is the selection criterion, not ambition Here's the mechanism. A sales copilot's output is a suggestion embedded inside a human conversation. To know if it worked, you'd have to instrument the whole call, the whole quote cycle, the whole relationship — separate the AI's contribution from the rep's skill, the customer's mood, the competitor's price that week. Nobody actually builds that instrumentation, so six months in, the project has a Net Promoter Score anecdote and no board-ready ROI line. That's not a data problem. It's a shape-of-the-work problem: the output was never a discrete unit to begin with. Compare that to a product-content pipeline: a spec pulled off a manufacturer PDF, a UNSPSC code assigned, a duplicate SKU matched across two supplier feeds, a missing attribute filled from a datasheet. Each of those is a row. Each row is right or wrong — check it against the source document, the manufacturer's own spec sheet, the competing distributor's listing. You can sample 200 rows, measure the error rate, and know by Friday whether the model is production-grade. You can price it, because "cost per enriched SKU" is a number that existed before the AI project and still means something after. Anglera's [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026) measured this gap directly: the distributors furthest ahead on the [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) aren't the ones with the flashiest chat interface, they're the ones whose catalogs simply have fewer holes in them — a boring, countable outcome that compounds. This is why product-content operations keeps quietly reaching production while sales copilots sit in demo purgatory. It was never about which use case is more strategically important — inventory forecasting and quote assist are both defensible bets on paper. It's about which one produces an artifact a human can audit in isolation, without first solving the much harder problem of measuring an entire workflow. ## The test to apply before you fund the next pilot Before greenlighting an AI project this quarter, ask three questions instead of one. Does the model's output land as a discrete row — a field, a match, a code — or as advice buried in a conversation? Can a reviewer check that row against an independent source in under a minute, without reconstructing the context that produced it? And can you name the unit cost today, before the project starts, in a way that still means something after? If the answers are yes, fund it and move fast — Graybar's two-month quote-extraction build is the right cadence for that kind of project. If the answers are no, the pilot isn't dying because the model is bad or the org isn't ready for AI. It's dying because nobody could ever have counted what it produced. Fix the selection criterion before the next keynote tells you to fix your culture. That's the same discipline behind how we built Anglera: your PIM stores the data, we do the enrichment work as auditable, per-row output — the kind you can QA and price before you ever have to defend it in a board deck. --- # AI Agents Don't Get Sold To — They Parse. We Measured Which Distributor Catalogs They Can Actually Read Source: https://www.anglera.com/blog/agentic-commerce-machine-readable-catalog-2026 Published: 2026-07-28 ![AI Agents Don't Get Sold To — They Parse. We Measured Which Distributor Catalogs They Can Actually Read](/og/hero-agentic-commerce-machine-readable-catalog-2026.jpg) Agent-mediated buying is not a new sales channel — it is a parsing problem, and most distributors are failing the parse. We measured 37 distributor catalogs against the signals an AI agent actually reads before it selects a SKU, and the median score was 58 out of 100. The fix nobody wants to hear is also the cheapest one: stop building storefronts and start finishing the catalog. ## The debate is happening at the wrong altitude [Distribution Strategy Group has argued](https://distributionstrategy.com/2026/02/googles-ai-commerce-push-signals-a-new-gatekeeper-for-distributors-the-algorithmic-buyer/) that Google's AI Mode and the emerging Universal Commerce Protocol create a new gatekeeper for distributors — "the algorithmic buyer" — and that distributors need a channel strategy built around it. Their [companion piece on AI search](https://distributionstrategy.com/2026/02/ai-search-rewrites-distributor-discovery-as-google-turns-buying-into-an-agent-experience/) frames this as a discovery problem: side-by-side comparisons and sponsored placement inside AI Mode are replacing the click-through to a distributor's own site. That framing treats agent commerce as a marketing question — where do we show up, how do we bid, what's our presence strategy. It's the wrong altitude. An agent executing a purchase order for pneumatic fittings or safety gloves isn't browsing a results page and forming a preference the way a procurement buyer does. It's issuing a query against structured data, filtering on attributes, and selecting the first candidate that satisfies the spec. There's no impression to win, no brand story to land, no funnel. There's a parse, and either your SKU survives it or it doesn't. [DSG's reporting on agentic commerce reaching wholesale distribution](https://distributionstrategy.com/2026/02/how-agentic-commerce-is-starting-to-reach-wholesale-distribution/) gets closer to this, and their November piece on the [Amazon-Perplexity dispute](https://distributionstrategy.com/2025/11/amazon-perplexity-showdown-signals-a-turning-point-for-distributors/) correctly reads that fight as a proxy war over who controls the data layer an agent is allowed to touch. But the operator takeaway keeps landing on strategy — protocols to watch, platforms to court — rather than on the unglamorous work sitting underneath all of it: does the product page actually contain the data an agent needs, in a form an agent can read. ## What an agent is actually reading Strip away the protocol talk and an AI shopping agent needs the same twelve or so things a marketplace feed has always demanded — title, brand, GTIN or MPN, category, price, availability, and a real attribute set, ideally exposed as schema.org `Product` markup in the HTML a crawler receives, not just rendered client-side after JavaScript runs. Guides aimed at exactly this problem now put the bar at a fully attribute-rich, schema-tagged record per SKU, and warn that a mismatch between what's in the structured data and what's on the page is enough to get a listing dropped from consideration — [Google's own shopping infrastructure already enforces that consistency check](https://www.rewarx.com/blogs/ai-shopping-agents-read-schema-2026), and agents built on top of it inherit the same intolerance for contradictory data. The volume argument is no longer hypothetical. Google is processing over a billion AI-shopping-related queries a month, and [Gartner's own survey research puts AI use in a recent B2B purchase at 45% of buyers already](https://www.demandgenreport.com/industry-news/news-brief/gartner-ai-is-reshaping-b2b-buying-but-human-sellers-still-close-the-confidence-gap/53046/), with Gartner separately projecting agents will handle a majority of B2B buying process steps within a few years. Buyers still validate with a rep before signing — [Gartner's own numbers put that at 69%](https://www.gartner.com/en/newsroom/press-releases/2026-05-20-gartner-survey-finds-sixty-nine-percent-of-b-two-b-buyers-turn-to-sales-reps-to-validate-ai-generated-insights) — but the shortlist the rep is validating gets assembled by the parse, not the pitch. If your SKU never enters that shortlist, the rep never gets the call. ## What we actually measured This is the argument Anglera built the Digital Readiness Index to test. Rather than survey distributors about their digital strategy, we measured their live sites directly — four pillars, fourteen signals, 100 points, no self-reported input, scored the way a crawler or an agent would encounter the page. Product Data Depth and structured Machine & Agent Readiness together carry more than half the score, because those are the two pillars that determine whether a SKU is parseable at all. The results, published in the [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026), are not flattering. Across the distributors we could measure, the median score was 58 out of 100. Only about one in five carried `Product` schema.org markup in the server-rendered HTML a crawler actually gets — the majority render it client-side, if at all, which means most agent-facing tools never see it. Roughly a third exposed a GTIN or standard identifier an agent could match against a manufacturer catalog. A number of otherwise-large distributors failed the cheapest signal in the entire framework: a sitemap that resolves. That's not a strategy gap. That's a site that a crawler, let alone a purchasing agent, cannot fully find. None of this required guessing at anyone's internal roadmap. It's what's sitting on the public page today, and the [full methodology](https://anglera.com/blog/top-distributors-2026/methodology) is published so any distributor can check its own score against the same fourteen signals. ## The move is not a new storefront The instinct DSG's coverage tends to provoke — a UCP integration project, an AI-commerce task force, a rebuilt PDP template — is a bigger initiative than the problem requires. An agent doesn't care about your storefront's design system. It cares whether SKU 4471-B has a real name instead of a part number, a published price, a complete attribute set, and schema markup that says so in the HTML. That's a catalog-completeness problem, and it's solvable SKU by SKU without touching the site's front end at all. Practically, that means treating this quarter as a data sprint, not a platform migration: audit attribute depth against the pages that are actually thin, add `Product` JSON-LD to the templates that are missing it, publish the sitemap that's silently broken, and stop gating pricing behind a login where the product itself isn't restricted. None of it requires ripping out the commerce platform or the PIM already in place. That's the wedge Anglera is built around — a layer that sits on top of whatever PIM a distributor already runs and does the SKU-level enrichment work of getting attributes, identifiers, and structured markup complete, without a rip-and-replace project. Most distributors can get a flat file moving through it in about a month. The agents are already parsing. The only question this quarter is whether there's anything for them to read. --- # Before You Buy the Sales Copilot, Audit What It Will Read Source: https://www.anglera.com/blog/sales-copilot-retrieval-audit-2026 Published: 2026-07-27 ![Before You Buy the Sales Copilot, Audit What It Will Read](/og/hero-sales-copilot-retrieval-audit-2026.jpg) MSC is rebuilding its sales model around AI, and the trade press is cheering the org chart and the task lists. Nobody is asking the more useful question: what is the model actually reading when a rep asks it for help? A sales copilot is a retrieval system laid on top of your product data, and it can only be as good as the catalog underneath it. For most of the industry, that catalog is not good enough yet. ## What MSC actually said, versus what got covered Read [Distribution Strategy Group's writeup](https://distributionstrategy.com/2026/04/msc-resets-sales-model-builds-ai-driven-growth-pipeline/) of MSC's reset closely and the AI claims are thinner than the headline suggests. MSC consolidated overlapping sales coverage (accounts that had "2, 3, 4 or even 5" reps calling on them, down to one) and pointed to AI adoption in planning, procurement, and distribution-center operations. No specific rep-facing copilot is named. The growth numbers cited, a supplier forum generating roughly $500 million in near- and long-term opportunity and a 10-basis-point margin gain, are attributed to sales process discipline, not to a model. That distinction matters, because the surrounding coverage fills in the gap with enthusiasm. Distribution Strategy Group's [2024 piece on inside-sales "superheroes"](https://distributionstrategy.com/2024/11/how-ai-can-turn-inside-sales-reps-into-superheroes-one-daily-task-list-at-a-time/) describes AI generating daily task lists — cross-sell prompts, churn flags, reorder reminders — that turn order-takers into "trusted advisors." It's a clean pitch. It's also entirely about the interface. Every one of those six functions is a query against product and account data that has to already exist in usable form. The article never asks whether it does. That's the pattern across most of this coverage, ours included until we started measuring it: intense focus on what the rep sees, no interest in what the system is querying to produce it. ## A copilot is a retrieval system, not a brain Strip the marketing layer off any sales AI tool and what's underneath is retrieval-augmented generation: a model that looks up structured facts and composes an answer around them. Ask it "what's a comparable bearing if this SKU is backordered," and it isn't reasoning from first principles — it's cross-referencing attributes like bore diameter, load rating, and seal type across your catalog. If those attributes aren't captured as structured fields, there is nothing to cross-reference. The model either hallucinates a plausible-sounding substitute or, worse, states something false with total confidence. This isn't a hypothetical failure mode. One [industry analysis](https://tendem.ai/blog/true-cost-ai-hallucinations-business-data) put the global cost of AI hallucinations at roughly $67 billion in 2024, headed toward $112 billion in 2025, and pointed to a case where hallucinated product specifications drove a 25% spike in returns for an electronics brand. Gartner has been blunter about the root cause: it expects [60% of AI projects to be abandoned through 2026](https://www.gartner.com/en/newsroom/press-releases/2025-02-26-lack-of-ai-ready-data-puts-ai-projects-at-risk) for lack of AI-ready data. The same gap shows up wherever AI meets a messy system of record. [McKinsey's 2025 State of AI survey found](https://www.optrua.com/post/88-vs-6-ai-adoption-meets-crm-reality) that 88% of organizations now use AI in at least one business function, but only 6% report meaningful bottom-line impact, and CRM vendors trace a real chunk of that gap to incomplete records with nothing for the model to work from. A product catalog is a harder retrieval surface than a CRM pipeline. It has more fields, more variance across supplier feeds, and a buyer on the other end who notices immediately if the "equivalent" part doesn't fit. ## What we measured, and why it matters here This is exactly the gap our [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) was built to catch. We score four pillars and fourteen signals off each distributor's own live site — not self-reported claims, not a survey. One of those pillars is structured spec depth: how much of the catalog carries the kind of machine-readable attribute data a retrieval layer needs to actually answer a question, versus a PDF spec sheet or a product name and a price. Across the [Top Distributors 2026](https://anglera.com/blog/top-distributors-2026) field — 200-plus distributors, six operating archetypes, from national full-liners to regional specialists — the majority score short on that pillar. Not because these companies are careless. Because structured attribute data is expensive to build and has historically had a thin business case: a human buyer squints at a spec sheet and figures it out, a rep calls the vendor when they're unsure. AI removes that slack. It doesn't squint, and it doesn't call the vendor — it answers from whatever's in the field, or it doesn't answer at all. ## The audit, before the contract So the sequencing question an operator should be asking isn't "which copilot." It's: can I pull ten SKUs at random from my top-selling category and get complete, structured specs — not marketing copy, not a PDF — for every field a rep would need to answer "what's the alternative to this"? Do my supplier feeds populate attributes consistently, or does completeness depend on which vendor sent the data last? If the honest answer is no, a copilot built on top of that catalog is a very confident intern with nothing to read. It will sound right up until the moment a customer catches the substitution that doesn't actually fit — and by then the trust cost lands on the rep who repeated it, not on the software vendor who sold it. I'm not arguing against AI in sales. I'm arguing about sequencing. The catalog is the retrieval layer whether or not anyone thought of it that way going in, and it's worth auditing before you buy the interface that sits on top of it. That's the layer we work in. Anglera sits on top of whatever PIM a distributor already runs and does the enrichment work to get catalog data to the structured depth an AI layer actually needs, without asking anyone to rip out what they have. --- # How to structure product data for AI agents (the B2B version) Source: https://www.anglera.com/blog/structure-product-data-for-ai-agents Published: 2026-07-24 ![How to structure product data for AI agents (the B2B version)](/og/hero-structure-product-data-for-ai-agents.jpg) An agent asked to source "150-watt LED high bays for a 30-foot warehouse ceiling, DLC listed, forty of them, on the floor this week" does not browse. It decomposes the phrase into constraints, queries whatever catalogs it can reach, and discards every candidate that fails a filter. A SKU that genuinely meets that spec but keeps its wattage inside a supplier PDF fails in exactly the same way as a SKU that doesn't meet the spec at all. There is no partial credit for having the answer somewhere. Most published guidance on structuring product data for agents was written for direct-to-consumer retail — sneakers, sizing, dietary claims, Google Shopping feeds. Very little of it survives contact with a distributor running 400,000 SKUs across 900 suppliers, where the GTIN is frequently absent, the "product" is really a set of dimensional and electrical constraints, and stock is a per-branch number rather than a single national one. This is the version of that guide for people who sell bearings, breakers, valves, and fasteners. The underlying behavior is worth taking seriously. Forrester's *State of Business Buying, 2026* reports that generative AI tools were the single most-cited meaningful interaction type for researching purchases — and that while 36% of buyers felt more confident in their decision for having used them, [20% said they were *less* confident because they hit unreliable or inaccurate information](https://www.digitalcommerce360.com/2026/01/22/forrester-b2b-buying-ai-2026/). Some meaningful share of that inaccuracy is catalogs answering badly. ## What does an AI agent actually need from a product record? It needs to answer four questions in sequence: is this the same part, is it the right kind of thing, does it satisfy the stated constraints, and can you actually deliver it. Each question is answered by a different layer of the record, and a null in an early layer means the later layers never get read. ![Diagram: the five layers of a B2B product record an agent reads in order — identity, classification, spec attributes, commercial shape, availability and proof](/diagrams/agent-readable-record-layers.svg) The ordering matters more than any individual field. Teams invest in the layer they can see (description copy, images, a bullet list) and leave identity and specs thin. The agent works in the opposite direction: resolve identity, narrow by class, then filter on values. Good copy on an unidentifiable part gets dropped before anything reads it. ## Why is B2B product data harder to structure than a DTC catalog? Because the volume is an order of magnitude larger, the source material is unstructured, and the attributes that decide the sale are the ones nobody typed into a field. A Shopify merchant with 2,000 SKUs and manufacturer-supplied content has a content problem. A distributor with 400,000 SKUs and a shared drive of supplier PDFs has an extraction problem. Four differences do most of the damage. The identity spine is weaker: plenty of industrial SKUs never receive a manufacturer-assigned [GTIN](/glossary/gtin-global-trade-item-number), so the [MPN](/glossary/mpn-manufacturer-part-number) and manufacturer name carry the whole load, and MPNs get mangled by dashes, spaces, and leading zeros as they move between the ERP, the PIM, and the web catalog. The spec *is* the product. Nobody searches for a "great" pillow block bearing. They search for a two-bolt flange, 1-7/16 inch bore, cast iron housing, set screw locking. Those values are the identity in practice, and in most catalogs they live in a cut sheet rather than a field. The commercial shape is messier: sold by the each, priced by the hundred, packed in a box of 50 inside a case of 500, with kit SKUs containing six different components. And availability is plural. "In stock" means nothing without a branch, and an agent quoting national stock against a job shipping out of one warehouse makes a promise that branch can't keep. ## Which attributes actually matter, and what goes wrong with each? Below is the working set for an industrial or wholesale catalog. It is not a universal twelve-field list; the spec block changes by category. What doesn't change is the job each field does for the agent and the specific way each one tends to rot. | Field | What the agent does with it | What actually goes wrong | |---|---|---| | Manufacturer + MPN | Resolves identity; dedupes you against everyone else selling the same part | Dashes stripped in the ERP and kept in the PIM; house-brand name overwrites the actual manufacturer | | GTIN, where one exists | Matches to a known product record across feeds and marketplaces | A case-level UPC pasted onto an each-level SKU, so quantity math silently breaks | | Your SKU / `productID` | Stable handle for reorder, history, and repeat citation | Reassigned during an ERP migration or a warehouse re-rack | | Classification code | Narrows the candidate set before any spec comparison runs | Filed two levels too shallow, or classified once at onboarding and never revisited | | Spec attributes | The literal filter conditions in the query | Trapped in a PDF, or free-text: `1/2 in`, `0.5"`, and `12.7mm` treated as three different values | | Unit of measure | Computes real price and real quantity | Price is per case, quantity is per each, and nothing in the record says so | | Pack / case hierarchy | Works out how many to order to hit forty units | One flat "pack size" column doing the work of three levels | | Kit / bundle components | Decides whether one SKU satisfies a whole request | The kit inherits one component's attributes, so a six-piece set shows a single thread size | | Parent / child variants | Presents one product with options instead of 40 orphan listings | Every variant published as a top-level product with near-identical copy | | Cross-reference / supersession | Answers "what replaces this discontinued part" | Lives in a sales rep's spreadsheet, not the catalog | | Certifications | Hard gate on regulated and spec'd work | Written as marketing text — "UL listed" — with no standard number and no issuing body | | Linked documents | Grounds and verifies the claims you're making | A PDF sitting on a CDN with nothing tying it to the SKU | | Branch availability + lead time | Decides whether you're recommendable for this week | A single national number no branch can honor | | Application / fitment content | Answers "will this work for my situation" | The highest-value content in the catalog and the least likely to exist | That last row is where the consumer playbook and the B2B one diverge hardest. The DTC equivalent of enrichment is "does it run small" and "is it dishwasher safe." The B2B equivalent is *what does this fit, what is it rated for, what supersedes it, and what else do I need to install it*. Same instinct, entirely different content, and it is almost never in the supplier's feed. Which of those actually swing a recommendation, and how to publish compatibility and certifications so a machine can use them, is worked through in [the attributes that decide the recommendation](/blog/attributes-that-decide-the-recommendation). ## What identity should a record carry when there's no GTIN? Manufacturer plus MPN, treated as a single composite key and normalized to one canonical form everywhere. Google's product data guidance is explicit that GTIN is strongly recommended for products the manufacturer assigned one to, and that where a product genuinely lacks one you should [submit the brand and MPN attributes instead](https://support.google.com/merchants/answer/6324461). Normalization is the whole job. Decide once whether `HB-150-50K-U` or `HB150 50K U` is canonical, store the raw supplier string alongside it, and index both so a buyer typing either one still lands on the SKU. Add the [cross-reference](/glossary/part-number-cross-reference) chain — competitor equivalents, superseded predecessors, the part that replaced it — as structured relations rather than free text in a description. `isSimilarTo` and `isAccessoryOrSparePartFor` exist in schema.org for exactly this, and an agent trying to answer "what replaces a discontinued XYZ-40" has nothing else to work with. The identifier side gets deeper treatment in [GTIN and UPC hygiene](/blog/gtin-upc-identifier-hygiene) and [identifiers in structured data](/blog/identifiers-in-structured-data). The short version: consistency beats coverage. An MPN that's identical in every system is worth more than a GTIN you sourced from three different places. For the full argument, including what GS1's own allocation rules say about when a GTIN is even appropriate and how to publish a supersession chain a machine can follow, see [the identity spine](/blog/mpn-identity-spine-b2b-catalogs). ## How should classification work when a shopping category isn't enough? Run one internal spine and map outward. A retail category tree tells an agent the product is a light fixture. [UNSPSC](/glossary/unspsc-classification) tells a procurement system how to code the spend. [ETIM](/glossary/etim-classification) tells a filter engine which features that class is even supposed to have, and in which units. UNSPSC is a four-level hierarchy (segment, family, class, commodity) expressed as an [eight-digit code](https://www.commerce.gov/oam/resources/united-nations-standard-products-and-services-codes-unspsc), which makes it good for spend rollups and useless for filtering. ETIM does the opposite: every class carries a defined feature set with types (alphanumeric, logical, numeric, range) and required units. [ETIM 10.0](https://www.etim-international.com/new-release-etim-10-0-available/), released in December 2024, added 119 new classes and introduced feature groups so features can be sectioned into material, electrical, and dimensional blocks. [eCl@ss](/glossary/eclass-classification) plays a similar role in European industrial supply. So classify against whichever standard governs your category's attribute model, usually ETIM or eCl@ss in electrical, HVAC, plumbing and industrial goods, then derive [Google Product Category](/glossary/google-product-category) and UNSPSC from it. Maintaining three hand-curated trees is how they drift apart. More on that in [category taxonomy that scales](/blog/category-taxonomy-that-scales). ## How do you express UOM, packs, kits, and variants without lying to the agent? Split the selling unit from the pack, and say which is which. Almost every wrong-quantity and wrong-price failure in agentic B2B traces back to one column trying to carry two meanings. In schema.org, quantities belong in a `QuantitativeValue` with a `unitCode` drawn from the [UN/CEFACT common code list](https://schema.org/QuantitativeValue) — three-character codes like `WTT` for watt, `FOT` for foot, `EA` for each. Use `unitText` only when no standard code exists. In shopping feeds, Google keeps these concepts deliberately separate: [`unit_pricing_measure`](https://support.google.com/merchants/answer/6324455) carries the measure and dimension so a cost-per-unit can be computed, [`multipack`](https://support.google.com/merchants/answer/6324488) means identical items you grouped yourself, and [`is_bundle`](https://support.google.com/merchants/answer/6324449) means different items sold together for one price. Getting [kit and bundle SKUs](/glossary/kit-and-bundle-sku) wrong is worse than leaving them out, because the agent will confidently compute the wrong total. For [parent/child variants](/glossary/parent-child-product-variants), Google's structured data supports a `ProductGroup` with nested `hasVariant` products, a `productGroupID` acting as the parent SKU, and `variesBy` naming the differentiating properties by their full schema.org URL ([product variant structured data](https://developers.google.com/search/docs/appearance/structured-data/product-variants)). Forty near-identical listings compete with each other; one group with forty options doesn't. ## What does agent-ready markup look like for an industrial SKU? Like a spec sheet that a parser can read. No GTIN, brand and MPN carrying identity, classification codes as typed properties, every spec value with a unit attached, and certifications naming their issuer. ```json { "@context": "https://schema.org", "@type": "Product", "name": "150W LED High Bay, 5000K, 120-277V, 0-10V Dimming", "sku": "LGT-HB150-50K", "mpn": "HB-150-50K-U", "brand": { "@type": "Brand", "name": "Northmark Lighting" }, "manufacturer": { "@type": "Organization", "name": "Northmark Lighting" }, "description": "Round LED high bay for 25-35 ft mounting heights in warehouse and manufacturing space. Replaces 400W metal halide.", "additionalProperty": [ { "@type": "PropertyValue", "propertyID": "UNSPSC", "name": "UNSPSC", "value": "39111524" }, { "@type": "PropertyValue", "propertyID": "ETIM", "name": "ETIM class", "value": "EC002892" }, { "@type": "PropertyValue", "name": "Input power", "value": 150, "unitCode": "WTT" }, { "@type": "PropertyValue", "name": "Luminous flux", "value": 21000, "unitCode": "LUM" }, { "@type": "PropertyValue", "name": "Correlated color temperature", "value": 5000, "unitCode": "KEL" }, { "@type": "PropertyValue", "name": "Input voltage", "value": "120-277 V AC" }, { "@type": "PropertyValue", "name": "Dimming protocol", "value": "0-10V" }, { "@type": "PropertyValue", "name": "Mounting height", "minValue": 25, "maxValue": 35, "unitCode": "FOT" }, { "@type": "PropertyValue", "name": "Ingress protection", "value": "IP65" } ], "hasCertification": [ { "@type": "Certification", "name": "UL 1598", "issuedBy": { "@type": "Organization", "name": "UL Solutions" } }, { "@type": "Certification", "name": "DLC Premium", "issuedBy": { "@type": "Organization", "name": "DesignLights Consortium" } } ], "isSimilarTo": { "@type": "Product", "mpn": "HB-150-40K-U", "name": "150W LED High Bay, 4000K" }, "subjectOf": { "@type": "DigitalDocument", "name": "Specification sheet", "url": "https://example.com/docs/HB-150-50K-U.pdf" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "184.00", "eligibleQuantity": { "@type": "QuantitativeValue", "value": 1, "unitCode": "EA" }, "availability": "https://schema.org/InStock", "inventoryLevel": { "@type": "QuantitativeValue", "value": 62, "unitCode": "EA" }, "availableAtOrFrom": { "@type": "Place", "name": "Houston Branch" } } } ``` Two honest caveats. Google's Product rich-result documentation doesn't consume `additionalProperty`, so don't expect a spec table in a search snippet from this. It's still valid schema.org, and still the cleanest way to hand a model a typed, unit-bearing fact instead of a sentence it has to parse. And the property names need governing: a hundred SKUs using "Input power," "Wattage," and "Power (W)" for one concept reproduce the free-text problem inside your structured data. Delivery is not negotiable. Google runs crawl, render, and index as distinct phases and will execute your JavaScript before indexing ([JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)). Most AI crawlers won't: analysis of large-scale crawl logs found [no evidence that GPTBot executes JavaScript](https://vercel.com/blog/the-rise-of-the-ai-crawler). Injected client-side, this block does not exist. See [SSR vs CSR vs pre-rendering](/blog/ssr-vs-csr-prerender-agent-readable) for the rendering choice and [validating agent-readable product data](/blog/validate-agent-readable-product-data) for how to check what you're shipping. ## Where do the agentic protocols fit? Three separate layers, often conflated. One handles checkout, one handles the whole merchant surface, one handles how an agent reaches tools and data at all. None of them fixes a thin product record; they just determine who gets to read it. The [Agentic Commerce Protocol](https://github.com/agentic-commerce-protocol/agentic-commerce-protocol), maintained by OpenAI and Stripe as founding maintainers, standardizes the buyer-agent-merchant checkout interaction. It's still labeled beta, with the current stable spec dated 2026-04-17 and the repo pointing toward neutral foundation stewardship as the ecosystem matures. OpenAI separately publishes a [product feed specification](https://developers.openai.com/commerce/specs/spec) covering how merchants hand over structured product data, including a hard requirement that product and variant identifiers stay stable over time. That's exactly the rule an ERP migration breaks. Google's [Universal Commerce Protocol](https://ucp.dev/), published on 11 January 2026 with Shopify, Etsy, Wayfair, Target, Walmart and twenty-odd other partners, is broader. Businesses advertise capabilities at a `/.well-known/ucp` discovery endpoint, and the protocol covers catalog search and lookup, cart building, identity linking, checkout, and order management ([under the hood](https://developers.googleblog.com/under-the-hood-universal-commerce-protocol-ucp/)). It runs on REST and JSON-RPC with AP2, A2A, and MCP support built in, and has begun extending past retail into lodging and food. Model Context Protocol sits underneath both, connecting agents to tools and data sources. Anthropic donated it in December 2025 to the Agentic AI Foundation, [a directed fund under the Linux Foundation](https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation) co-founded with Block and OpenAI, so it now sits under neutral governance rather than one vendor's roadmap. Catalog lookup being a named, specified capability is the part that matters for a distributor: the quality of your product record is now directly queryable. Spend the integration effort on the record, not the wire format. Wire formats keep changing. The record doesn't. Which of the four is worth your integration budget is a narrower question than it looks, and for most industrial catalogs the honest answer is not the consumer shopping feed. [Feeds, checkout, and live data](/blog/agent-feeds-protocols-what-to-ship-first) takes each one apart and ranks them. ## Do structured Q&A blocks and llms.txt actually help? Q&A blocks help a lot; llms.txt currently doesn't. The distinction is worth drawing sharply, because one of these is cheap busywork and the other is the highest-leverage content you can add to a technical PDP. Buyers ask application questions, not attribute questions. "Will this pump handle 180°F glycol?" "What size breaker does this need?" "Does this replace a 400W metal halide?" Those map to facts already scattered across your spec sheet, your ETIM features, and your reps' heads. Written as explicit question-and-answer pairs with self-contained answers, they give a retrieval system a passage it can lift wholesale, and give your own site search something to match. Same move as [answer engine optimization](/blog/answer-engine-optimization), applied at SKU level. [llms.txt](/glossary/llms-txt) is a different story, and the evidence has gotten clearer. Ahrefs analyzed 137,210 domains with traffic in May 2026: 28% published an llms.txt file, but [97% of those files got zero traffic that month](https://ahrefs.com/blog/llmstxt-study/), with retrieval bots like PerplexityBot and OAI-SearchBot accounting for about 1.1% of the requests that did land. It costs an afternoon and it does no harm. It just isn't the reason your SKUs aren't being cited. Fix the [fill rate](/glossary/attribute-fill-rate) first. ## In what order should you actually do this? Narrowest-first, in a loop, with revenue as the scoping rule. The mistake is trying to raise every attribute on every SKU to the same standard simultaneously, which produces a two-year program that reports percentage complete and never ships a readable page. Audit before you enrich. Pull the actual counts: how many SKUs carry a manufacturer *and* a normalized MPN, how many have a classification code below the family level, how many have values for the five attributes buyers filter on in that category. The missing data is almost never evenly distributed. It concentrates in a handful of suppliers and categories, and that concentration tells you where to start. You don't need to scan the whole catalog to find that out either — [auditing on a stratified sample](/blog/catalog-readiness-audit-before-you-spend) gets you a fundable answer in days rather than a quarter. Fix the identity spine next, at full catalog breadth, because every later join depends on it. Normalize MPNs, reconcile manufacturers to a controlled list, freeze SKU IDs, capture cross-references. It's the one layer worth completing everywhere before going deep anywhere. Depth comes category by category, ordered by revenue or quote volume. Define ten to fifteen attributes per category rather than sixty, starting from the ETIM or eCl@ss feature set instead of inventing a vocabulary. High fill rate on the right fifteen beats partial coverage of sixty, and the [fill rate versus accuracy](/blog/fill-rate-vs-accuracy) trap is real: a populated field with a wrong value is worse than a null. Rendering and distribution only pay off once that exists. Server-rendered JSON-LD, spec values visible on the page as well as in the markup, Q&A blocks, documents joined to the SKU, and every feed reading from the same enriched record instead of a separate export nobody maintains. Shopping feeds have somewhere to put specs: Google's [`product_detail`](https://support.google.com/merchants/answer/9218260) attribute takes `section_name : attribute_name : attribute_value` triples for technical details no other field covers. Then keep it. That step gets skipped and it decides whether the rest holds, because suppliers reissue spec sheets, supersede parts, and change pack quantities without telling anyone. A first category live in weeks is realistic, and that's the shape of implementation we work to. Whole-catalog coverage is not a project with an end date. It's a standing operation, and pretending otherwise is how these programs die in month nine. ## What actually blocks distributors from getting there? Rarely the technology. Almost always the source material, the ownership, and the fact that the catalog is downstream of systems that were never designed to hold attributes. The source data is unstructured on purpose. Suppliers publish PDFs because PDFs are what their engineering team already produces. One 40-page cut sheet may cover twelve SKUs, with the distinguishing values sitting in a table cell across three merged columns. That's an extraction problem, and it's why so many enrichment initiatives stall right after the pilot: the demo used the fifty products with clean data. The ERP has no attribute model. Item master gives you a description field, a class code, a UOM, and pricing. Everything a buyer filters on has to live somewhere else, and if that somewhere else isn't wired back into the storefront and the feed, it becomes a second version of the truth ([more on that here](/blog/erp-migration-attributes)). Nobody owns it. Merchandising owns assortment, ecommerce owns the site, IT owns the integrations, and product data falls in the gap between them. The catalogs that get this right have a named owner with a budget, which sounds trivial and is the best single predictor of whether anything ships. Then there's the arithmetic. Fifteen attributes across 400,000 SKUs is six million values; at a generous thirty seconds each that's roughly fifty thousand hours of typing, before anything supersedes and before anyone checks accuracy. That number is why "we'll get to it" becomes a permanent condition, and why the gaps in [five product-data gaps that get your SKUs filtered out](/blog/5-gaps-that-filter-you-out) keep reappearing in catalog after catalog. --- Anglera does the completing. Your PIM, ERP, or commerce platform stores the record; we fill the missing attributes at catalog scale, pulling values out of supplier spec sheets, cut sheets, and manufacturer sources, normalizing them against your schema, and writing them back into the system you already run. Typical implementation is 30 days. The rendering and feed work stays with your team, where it belongs. Sources: - [Digital Commerce 360: Forrester — B2B buying groups expand as they question AI](https://www.digitalcommerce360.com/2026/01/22/forrester-b2b-buying-ai-2026/) - [Google Merchant Center: GTIN attribute](https://support.google.com/merchants/answer/6324461) - [Google Merchant Center: product detail, unit pricing measure, multipack, bundle](https://support.google.com/merchants/answer/9218260) - [Google Search Central: product variant structured data](https://developers.google.com/search/docs/appearance/structured-data/product-variants) - [Google Search Central: JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) - [Schema.org: QuantitativeValue and the UN/CEFACT common code](https://schema.org/QuantitativeValue) - [ETIM International: ETIM 10.0 release](https://www.etim-international.com/new-release-etim-10-0-available/) - [US Department of Commerce: UNSPSC structure](https://www.commerce.gov/oam/resources/united-nations-standard-products-and-services-codes-unspsc) - [Agentic Commerce Protocol repository](https://github.com/agentic-commerce-protocol/agentic-commerce-protocol) - [OpenAI: product feed specification](https://developers.openai.com/commerce/specs/spec) - [Universal Commerce Protocol](https://ucp.dev/) and [Google Developers Blog: under the hood](https://developers.googleblog.com/under-the-hood-universal-commerce-protocol-ucp/) - [Linux Foundation: formation of the Agentic AI Foundation](https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation) - [Vercel: the rise of the AI crawler](https://vercel.com/blog/the-rise-of-the-ai-crawler) - [Ahrefs: we analyzed 137K sites — 97% of llms.txt files never get read](https://ahrefs.com/blog/llmstxt-study/) --- # The identity spine: why MPN and manufacturer, not GTIN, is the real primary key in B2B catalogs Source: https://www.anglera.com/blog/mpn-identity-spine-b2b-catalogs Published: 2026-07-24 ![The identity spine: why MPN and manufacturer, not GTIN, is the real primary key in B2B catalogs](/og/hero-mpn-identity-spine-b2b-catalogs.jpg) A maintenance planner emails a photo of a nameplate. It came off a rotary screw compressor installed in 2011, and the number stamped on the inlet filter housing reads `E1-4230`. He wants two of them by Friday. Your system returns nothing. The manufacturer superseded `E1-4230` to `E1-4230A` in 2018, and in 2023 rolled the element into a service kit with its own number. Somewhere in your ERP all three exist as separate records with no relationship between them, and the customer-facing catalog only carries the newest one. Nothing in that story involves a barcode, which is the first clue about what a B2B catalog's primary key actually is. This is the identifier layer beneath [how to structure product data for AI agents](/blog/structure-product-data-for-ai-agents). Get it wrong and everything above it — attributes, feeds, protocols — is attached to a record nothing else in the world can point at. ## Why isn't the GTIN the primary key here? Because in industrial distribution most items never get one, and you are not allowed to invent one. The [GTIN](/glossary/gtin-global-trade-item-number) is allocated by the party that warrants the product's declarations, which is the brand owner, and the number space is licensed through GS1 company prefixes. A distributor sits downstream of both facts. GS1's General Specifications are blunt about this. Section 4.2.3 states that ["no downstream party (e.g., distributor, wholesaler, importer, merchant) may assign a different GTIN to a trade item that already has a GTIN"](https://documents.gs1us.org/adobe/assets/deliver/urn:aaid:aem:afbf55ad-0151-4a0c-8454-d494c0dc9527/GS1-General-Specifications.pdf), and that allocation "is the responsibility of the party that warrants the trade item declarations, known as the GTIN allocator." GS1's own support portal puts it more plainly still: [the brand owner "is normally responsible for the allocation"](https://support.gs1.org/support/solutions/articles/43000734414-who-is-responsible-for-numbering-trade-items-). Google says the same thing from the other end. Its Merchant Center guidance on the GTIN attribute reads: ["Only provide a GTIN if you are sure it is correct. When in doubt do not provide a GTIN (for example, do not guess or make up a value)"](https://support.google.com/merchants/answer/6324461), and it acknowledges directly that "some products don't have a GTIN assigned, and so you don't need to submit one." Which means the recurring instinct to "just generate GTINs for the catalog so the feed validates" is not a shortcut. It is fabricating identity for someone else's product, and it will eventually collide with a real allocation. ## What is the key, then? Brand plus [manufacturer part number](/glossary/mpn-manufacturer-part-number). That pair is the sanctioned fallback in Google's identifier hierarchy: MPN becomes [required specifically when a product has no manufacturer-assigned GTIN](https://support.google.com/merchants/answer/7052112), and Google's overview states that ["to help identify your products without a GTIN, you can use the MPN and brand attributes"](https://support.google.com/merchants/answer/160161). Schema.org carries `mpn`, `brand`, and `manufacturer` as first-class `Product` properties. The pair has one failure mode, and it is almost always the brand side rather than the number side. `E1-4230` is unambiguous once you know whose part it is. But if your catalog holds that manufacturer as "Ingersoll Rand" in one record, "Ingersoll-Rand" in another, and "IR" in a third, the pair resolves to three different manufacturers and matching quietly fails. Manufacturer belongs in a controlled vocabulary with an ID, not in a free-text column that inside sales can type into. The other half of the discipline is not overloading MPN with your own numbering. Google is explicit: ["Use the MPN assigned by the manufacturer. Unless you're the manufacturer, don't use a value that you've created."](https://support.google.com/merchants/answer/6324482) Your internal SKU has a home. It is the `sku` field, and it identifies your record, not the product. ## What happens when the manufacturer supersedes the part? The identity moves, and if you have modeled part numbers as immutable strings, your catalog silently stops tracking the item. Supersession is not an edge case in distribution — it is the normal lifecycle of anything with a service history, and it is where most identifier hygiene actually breaks. GS1's GTIN Management Standard frames these as replacement products: ["Changes to existing products are considered 'replacement products' (the previous version will no longer exist once the replacement product has flowed through, as determined by the brand owner)."](https://ref.gs1.org/standards/gtin-management/) The standard then enumerates what forces a new number. A new product, obviously. But also a change to declared net content, a change of more than 20% to a physical dimension or gross weight, a change to the primary brand, and — the one that catches industrial parts constantly — adding or removing a certification mark. That last rule is why supersession events cluster around regulatory cycles. When a component picks up or loses a UL or CE mark, the manufacturer is required to issue a new number, which means a wave of superseded parts arrives in your feed with no obvious trigger. The element in our compressor story went from `E1-4230` to `E1-4230A` for exactly this kind of reason. ## Why does the old GTIN keep mattering after it's retired? Because it does not get recycled, and because the field still refers to it. GS1's non-reuse rule is unambiguous: ["An allocated GTIN SHALL NOT be reallocated to another trade item."](https://documents.gs1us.org/adobe/assets/deliver/urn:aaid:aem:afbf55ad-0151-4a0c-8454-d494c0dc9527/GS1-General-Specifications.pdf) The exceptions are narrow — numbers never published outside your own systems, and withdrawn products reintroduced with no qualifying changes. Worth flagging, because it is one of the most-repeated stale facts in product-data writing: the old forty-eight-month GTIN reuse window is deprecated. It has been since 1 January 2019, and it now survives in the General Specifications only in a section explicitly labelled as deprecated. Plenty of guidance published since then still repeats it as live practice. GS1's own rationale for permanence is the useful part for a distributor. The specification notes that data associated with the original GTIN gets used by trading partners "for statistical analysis or service records, which may continue long after the original trade item was last supplied," and gives the example of steel beams sitting in storage for years before entering the supply chain. That is precisely our compressor. The nameplate is not going to update itself because the manufacturer issued a new number in 2018. So retired identifiers are permanent search keys. Treat them as data to keep, not data to clean up. ## How do you publish a chain a machine can follow? Two moves. Keep the retired numbers as fields on the current product, and make sure a query for a retired number resolves to a live page rather than a 404. Neither is exotic. Both are skipped constantly, because the retired numbers usually live in the ERP and never make it to the catalog. The automotive aftermarket is the one corner of distribution that formalized this. Auto Care's PIES standard — ["the aftermarket industry data standard for the management and communication of product information"](https://www.autocare.org/data-standards/product-information-exchange-standard-%28pies%29) — includes interchanges among the data it transmits, and handles the one-to-many shape properly. Auto Care describes it directly: when a product interchanges with several OEM or competitor parts, ["you are looping the PIES™ element `` multiple times for each interchange you provide for the product"](https://www.autocare.org/detail-pages/blog/what-the-tech/2023/04/10/the-scoop-on-the-loop-in-pies). Stibo's public implementation docs describe the same segment as relaying ["interchange data for the PIES Item in relation to alternative Brand Owner Part Numbers"](https://doc.stibosystems.com/doc/version/latest/web/content/solenabl/auto/reference_guide/importers/standard_ac/pies/sample_autocare_pies_file_structure.html), each entry carrying a brand identifier alongside the part number. Note the shape: brand plus number, repeated. Not a comma-separated string in a notes field. Two things worth separating that most catalogs merge. Supersession is vertical — same manufacturer, this part replaced that one, and only the current number is in production. [Cross-reference](/glossary/part-number-cross-reference) is horizontal — a different manufacturer's part that does the same job. Collapsing both into one "related items" bucket is how a customer ends up quoted a competitor's discontinued number as a current replacement. Schema.org will not solve this for you. It offers `isSimilarTo`, `isAccessoryOrSparePartFor`, and `isConsumableFor`, and none of them mean "replaced by." There is no supersession property. That is a real gap in the vocabulary, and the practical workaround is a named attribute on the product carrying the retired numbers, published as text a crawler can read, plus `isSimilarTo` for genuine equivalents. ## When should you go source a GTIN? When a channel you actually sell through requires one, and not otherwise. GDSN publication, most grocery and retail POS integrations, and some marketplace listings are built on GS1 keys and will reject you without them. Industrial and MRO channels largely are not. If the manufacturer assigned a GTIN, get it from the manufacturer or from GS1's registry — Google notes that products with an assigned GTIN submitted without one ["may have limited visibility"](https://support.google.com/merchants/answer/160161). If no GTIN exists, use brand and MPN and move on. If a product genuinely has no identifiers at all — a fabricated assembly, a cut-to-length item, a private-label good you manufacture — Google's `identifier_exists` attribute exists to say so honestly, and self-assignment is permitted in the MPN field only when you are the manufacturer. One thing that is not a substitute: classification. UNSPSC, ETIM, and eCl@ss codes answer what kind of thing a product is, and by design every competitor in the class shares the code. ETIM says so about its own model, which is [not a final product in itself but a structure for "standardized (technical) product data exchange between parties"](https://www.etim-international.com/classification/). Classification makes a catalog filterable. Identity makes it matchable. You need both, and one will not stand in for the other. ## What can an agent do without a GTIN? More than the panic suggests. Given a clean manufacturer name and a correct MPN, a retrieval system can identify the part, line it up against the manufacturer's own datasheet, compare it on attributes, and follow a published cross-reference to an equivalent. [Product matching](/glossary/product-matching) on brand plus part number is how technical buyers have always worked, and it is how a well-built agent works too. What it cannot do without a GTIN is match your listing to the same physical item at another seller with certainty, or clear the identifier gates on channels that are built on GS1 keys. Those are real limits and worth naming for your own team. They are also, for most industrial distributors, not the constraint that is costing money this quarter. The thing costing money this quarter is that `E1-4230` returns nothing. Sources: - [GS1 General Specifications (Release 25.0) — GTIN allocation and non-reuse](https://documents.gs1us.org/adobe/assets/deliver/urn:aaid:aem:afbf55ad-0151-4a0c-8454-d494c0dc9527/GS1-General-Specifications.pdf) - [GS1 GTIN Management Standard](https://ref.gs1.org/standards/gtin-management/) - [GS1: Who is responsible for numbering trade items?](https://support.gs1.org/support/solutions/articles/43000734414-who-is-responsible-for-numbering-trade-items-) - [Google Merchant Center: GTIN attribute](https://support.google.com/merchants/answer/6324461) - [Google Merchant Center: MPN attribute](https://support.google.com/merchants/answer/6324482) - [Google Merchant Center: About unique product identifiers](https://support.google.com/merchants/answer/160161) - [Auto Care Association: Product Information Exchange Standard (PIES)](https://www.autocare.org/data-standards/product-information-exchange-standard-%28pies%29) - [ETIM International: Classification](https://www.etim-international.com/classification/) --- # The Long Tail Isn't Unprofitable. Your SKU Setup Cost Is. Source: https://www.anglera.com/blog/long-tail-sku-economics-2026 Published: 2026-07-24 ![The Long Tail Isn't Unprofitable. Your SKU Setup Cost Is.](/og/hero-long-tail-sku-economics-2026.jpg) Every distributor's annual review has the same line item: a long tail of SKUs and small accounts that never quite pays its way. The trade press treats this as a fact of physics, something to manage around with pricing tricks or a rationalization project. It isn't. The tail is unprofitable because setting up and enriching an item still costs a human thirty to forty-five minutes of work, and that cost — not the SKU itself — is what should be on the chopping block. ## The barrier that keeps coming back Distribution Strategy Group has spent years cataloging the profit barriers that "refuse to go away," and one of them is the long tail directly. In [its September 2025 piece](https://distributionstrategy.com/2025/09/the-profit-barriers-that-refuse-to-go-away/), the firm names a barrier it calls "No Big Deal": the bottom half of a distributor's SKU count generates roughly 5% of sales, and because customers who buy those items infrequently care more about availability than price, a distributor could raise prices on that tail by 10% and lift firm-wide gross margin by four-tenths of a point. That's a real lever, and we don't dispute the math. But it treats the tail's economics as fixed and asks how to extract a bit more margin from a bad hand. Nobody in that conversation asks why the hand is bad in the first place. The answer isn't customer behavior or price elasticity. It's that somebody on staff had to key in the UNSPSC code, write the description, pull the spec sheet, size the image, and map the attributes by hand — and that labor cost gets baked into every tail SKU whether or not the SKU ever sells enough to cover it. ## The cost nobody re-prices Distributors re-price freight, re-price warehousing, re-price sales comp. Almost nobody re-prices the cost of getting an item into the catalog in the first place, because it's treated as sunk overhead rather than a unit cost that scales with SKU count. Catalog outsourcing shops charge anywhere from [$0.20 to more than $11 per SKU](https://www.mercuryminds.com/blog/how-much-does-catalog-management-cost-per-sku/) depending on complexity — and that's the outsourced, already-optimized version of the job. In-house, with a merchandiser or category manager doing the work between other duties, thirty to forty-five minutes per SKU is a realistic floor once you count sourcing the spec, writing a compliant description, and pushing it through review. Run that math against a D-item that sells four units a year at a $40 margin. A single enrichment pass at even a modest loaded labor rate can exceed the item's entire annual contribution. The SKU isn't unprofitable. The one-time cost of admitting it into the catalog is larger than anything it will ever earn back, and that cost gets charged once but amortized against a demand curve that never catches up. Distributors read that math correctly — and then reach the wrong conclusion, which is to prune the SKU rather than fix the cost that made it look bad. ## What changes when setup cost collapses Independent industry estimates on AI-assisted enrichment put the swing at roughly [20 minutes down to 2 minutes per SKU](https://bluemeteor.com/ai-in-distribution-industry-2025/) for structured attribute work — an 80-90% reduction, not a marginal one. At Anglera we benchmark manual enrichment at the same 30-45 minutes per SKU distributors already know from experience, which is the number an automated pipeline needs to beat, and does. When the setup cost for a tail item drops by that much, the same D-item that lost money at 40 minutes of labor clears its cost easily. Nothing about the customer, the demand, or the margin changed. Only the denominator did. This is where the tail math actually inverts. Once the cost of carrying a SKU stops scaling with human hours, the calculus that made pruning look prudent runs in reverse: the tail becomes the cheapest share-of-wallet a distributor owns, because it's exactly the assortment a rationalization-minded competitor already walked away from. Grainger's own strategy leans on this directly — [analysts point to its roughly 1.4 million SKU "endless assortment" catalog](https://bizmodelmastery.substack.com/p/inside-graingers-14-million-sku-supply) as a structural moat precisely because search-optimized, well-enriched breadth is expensive for smaller rivals to replicate manually. Breadth isn't a cost center Grainger tolerates. It's infrastructure they built once the cost of maintaining it stopped scaling linearly with headcount. We measured this gap directly across 200+ distributors in the [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026): the [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) scores catalog depth and completeness as a live signal, not a self-reported claim, and the spread between top and bottom quartile is almost entirely explained by how much of the catalog got the enrichment pass at all — not by category, size, or age of the company. ## Two counterarguments worth taking seriously Some will point to [Portage Point Partners' "Long Tail Trap"](https://portagepointpartners.com/company-news/insights/the-long-tail-trap/) analysis, which found a slow-moving SKU can consume up to 20% of its wholesale value once warehousing, pick-pack, and markdown exposure are fully loaded. That's a real and separate cost — inventory carry, not catalog setup — and automating enrichment doesn't touch it. A distributor with genuine overstock and dead-stock problems still needs rationalization. Our argument is narrower: don't let a carrying-cost problem and a data-cost problem get diagnosed with the same prescription. Plenty of tail SKUs that never physically sit on a shelf — drop-ship, vendor-managed, made-to-order — carry zero warehousing penalty and were pruned anyway, because the catalog cost alone made them look unprofitable on paper. The other counter, from [Jonathan Byrnes' "Profit Creates Freedom"](https://distributionstrategy.com/2026/03/profit-creates-freedom-the-path-to-a-better-valuation-for-distributors/) and his earlier [profit-peaks framework](https://distributionstrategy.com/2022/06/the-solution-to-fixing-profitability-focus-on-profit-peaks-not-drains/), says stop trying to fix drains and go deepen relationships with your best customers instead. That's sound customer-portfolio advice, and it's not in conflict with ours — it's simply answering a different question. Byrnes is diagnosing which customers deserve attention. We're diagnosing why an entire category of items looks like a drain before a single customer relationship enters the picture. Fix the setup cost and some of what Byrnes classifies as "profit deserts" turns out to be perfectly good margin, just buried under a data-entry tax nobody had re-priced since the item master was built. ## The re-pricing exercise that's overdue The operator question at the top of every annual review — which drains are structural and which are just costs we've never revisited — has a cleaner answer than the trade press gives it credit for. Freight rates get renegotiated. Warehouse leases get renegotiated. The labor cost of getting a SKU into sellable condition almost never does, because it's invisible, buried in headcount rather than itemized as a line a CFO would recognize and question. That's the barrier we'd put back on the table. Anglera exists for exactly this piece of the P&L: your PIM stores the item once it's enriched, and we do the work of getting it there — live in weeks, starting from whatever flat file you already have, no rip-and-replace. The tail was never the problem. The bill for admitting it was. --- # Audit before you spend: scoring a catalog for AI readiness on a sample, not the whole thing Source: https://www.anglera.com/blog/catalog-readiness-audit-before-you-spend Published: 2026-07-24 ![Audit before you spend: scoring a catalog for AI readiness on a sample, not the whole thing](/og/hero-catalog-readiness-audit-before-you-spend.jpg) Someone has quoted you a number to enrich 400,000 SKUs. Maybe it came from a vendor, maybe from your own team's estimate of contractor hours. Either way you are being asked to approve spend against a problem nobody has measured. The catalog is "bad." How bad, where, and worth how much are all open questions. This post is about closing those questions in about a week, on a sample, before the first invoice. It is the diagnostic step under [how to structure product data for AI agents](/blog/structure-product-data-for-ai-agents) — you cannot decide what to restructure until you know what is actually broken. ## What are you auditing for, exactly? You are auditing for one thing: whether a machine that has never seen your business can identify a product in your catalog, understand its constraints, and rank it against alternatives. Everything else — tidy titles, consistent casing, image counts — is downstream of that. Score the machine's ability to act, not the catalog's tidiness. That reframing kills a lot of busywork. A description with three typos still retrieves. A description with no pressure rating does not answer the query it needs to answer. If your audit rubric can't tell those two apart, it will generate a long remediation list where the expensive items and the cosmetic items look the same. ## Why sample instead of scanning the whole catalog? Because you are making a funding decision, not a remediation plan, and a funding decision needs a shape rather than a census. A stratified sample of a few hundred SKUs will expose the same structural failures a full scan does, in days instead of a quarter, and without standing up tooling you may end up not needing. Full-catalog scoring is the right instrument later. It is the wrong instrument now, for a practical reason: a scan of 400,000 rows produces 400,000 rows of findings, and the first thing anyone does with that output is aggregate it back down to a summary. You can produce the summary directly. The sampling audit also survives a hostile reading. When a CFO asks how you know the number, "we hand-checked 300 items across every tier and supplier and found the same six failures in all of them" is a stronger answer than a fill-rate percentage from a query nobody can reproduce. ## Which SKUs belong in the sample? Not random ones. Stratify along three axes — revenue tier, data provenance, and product family — and pull a fixed count from each cell. A random draw from a long-tail catalog is dominated by items that haven't shipped in two years, and it will hand you a picture of a catalog you don't actually sell. The strata that matter in distribution: | Axis | Why it splits the catalog | Typical cells | |---|---|---| | Revenue tier | Gaps cost different amounts in different tiers | Top 5% by revenue, next 20%, tail | | Data provenance | Failures cluster by where the data came from | Manufacturer feed, scraped/keyed, legacy ERP conversion | | Product family | Attribute needs differ wildly by category | Commodity (fittings, fasteners) vs. configured (pumps, gear) | Twenty SKUs per cell is usually enough to see the pattern. What you are watching for is not the average score but the clustering: if every failure in the sample traces to one supplier's feed or one 2019 ERP migration, you have found a fix that costs one project rather than 400,000 line items. ## Which gaps block retrieval, and which only weaken it? A blocking gap keeps the product out of consideration entirely. A weakening gap lets it compete and lose. Blocking gaps are cheap to find, few in number, and non-negotiable. Weakening gaps are where most of the money goes, and they should be funded second, by revenue. Google enforces close to this distinction in its own systems. In Merchant Center, [products that receive warnings "will continue to show across Google, however their performance may be limited," while disapproved products "stop showing across Google"](https://support.google.com/merchants/answer/12153802?hl=en) until the issue is fixed. That is a usable line for an audit rubric, because it comes from a system that has to make the call at scale. Sorted the same way: | Gap | Effect | Why | |---|---|---| | No identifier beyond your internal SKU | Blocks | Nothing external can match the item | | Price or availability absent from the page response | Blocks | Google requires `offers` with `price` and `priceCurrency` on merchant listings | | Specs only in a rendered widget or a PDF | Blocks | Never reaches a crawler that doesn't execute JavaScript | | Category assigned but no attributes populated | Blocks filtering | Item is unreachable by any constrained query | | Missing rating, tolerance, or certification | Weakens | Item retrieves, then loses on the constraint | | No return policy or shipping detail | Weakens | Google lists both as recommended, not required | | Thin, supplier-identical description | Weakens | Nothing distinguishes the listing from ten others | Google's [merchant listing documentation](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) is worth reading against your own feed here: only `name`, `image`, and a nested `offers` with price and currency are required, while `sku`, `mpn`, `gtin`, `brand.name`, `availability`, `itemCondition`, `priceValidUntil`, `shippingDetails`, and `hasMerchantReturnPolicy` sit in the recommended tier. Required gets you eligible. Recommended is where the ranking happens. ## How do you score one SKU without inventing a rubric from scratch? Borrow the rubric from the channels that already publish theirs. Score each sampled SKU on identity, offer, retrievability, and constraint coverage, and record a binary per item rather than a subjective grade. Binary scores aggregate honestly. Five-point scales don't survive two reviewers. Four checks per SKU, in order: 1. **Identity.** Is there a manufacturer part number and a manufacturer name, or a GTIN? Google's identifier set is [GTIN, MPN, and brand](https://support.google.com/merchants/answer/6324478?hl=en), and brand plus MPN is an accepted pair where no manufacturer-assigned GTIN exists. Your internal SKU alone is not identity. 2. **Offer.** Price, currency, and availability present in the response the server sends, not assembled later. 3. **Retrievability.** Does the spec table exist as text in that same response? 4. **Constraint coverage.** Take the three attributes a buyer in this category actually filters on and check whether they are populated as fields. For a circuit breaker, that's frame size, interrupting rating, and pole count. For a centrifugal pump, flow, head, and port size. Pick them per family before you start, not per item while scoring. Four booleans per SKU across 300 SKUs is a spreadsheet, not a project. That is the point. ## What does an AI crawler actually see? Not what your browser sees. Request the page with a crawler's user agent, read the raw bytes, and search that response for the values a buyer would filter on. If a pressure rating is absent from the raw HTML, it is absent for every crawler that does not run JavaScript. ```bash curl -sA "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \ https://example.com/p/12345 | grep -i "pressure rating" ``` One correction worth making, because it changes what you conclude. GPTBot is OpenAI's *training* crawler. The crawler behind ChatGPT's search features is `OAI-SearchBot`, and OpenAI states plainly that sites blocking it [won't appear in ChatGPT search results](https://developers.openai.com/api/docs/bots). If you are auditing for discovery rather than for training exposure, test `OAI-SearchBot/1.4` as well — and check your robots.txt while you're there, because a blanket AI-bot block that someone added in 2024 will invalidate the whole audit. Anthropic splits its fleet the same way: [ClaudeBot for training, Claude-User for user-initiated fetches, and Claude-SearchBot to "improve search result quality"](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler). Three agents, three robots.txt decisions, and only some of them affect whether you get recommended. Then run a handful of the sampled URLs through the [Rich Results Test](https://search.google.com/test/rich-results) to confirm the structured data parses. Two failure modes look identical from a browser and completely different from a crawler: markup that isn't there, and markup that is there but invalid. The deeper mechanics of that check are covered in [validating that your product data is agent-readable](/blog/validate-agent-readable-product-data). ## What the audit hands you Three numbers, on one page. The first is the share of revenue sitting behind blocking gaps. Not the share of SKUs — the revenue. In most industrial catalogs those diverge sharply, because the tail holds the blanks and the top holds the money, and a SKU-count view will send you to fix the wrong end first. The second is the number of distinct fixes the gaps collapse into. Audits routinely find that six root causes explain nearly everything: one supplier feed that never carried attributes, one migration that dropped a field, one template that renders specs client-side, and so on. Six projects is fundable. Four hundred thousand line items is not. The third is the SKU volume each fix touches, which is what turns the first two into a price. That page is the deliverable. Not a scorecard, not a dashboard, not a maturity model — a decision about whether to spend, on what, first. Once the spend is approved, the sampling audit has done its job and should be retired in favor of continuous scoring across the full catalog, because completeness decays: suppliers revise specs, new items get set up in a hurry, and the number you fought for slides back down. Sources: - [Google Merchant Center: Issues in Merchant Center (warnings vs. disapprovals)](https://support.google.com/merchants/answer/12153802?hl=en) - [Google Search Central: How to add merchant listing structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) - [Google Merchant Center: Identifier exists [identifier_exists]](https://support.google.com/merchants/answer/6324478?hl=en) - [OpenAI: Bots and crawlers](https://developers.openai.com/api/docs/bots) - [Anthropic: Does Anthropic crawl data from the web, and how can site owners block the crawler?](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler) --- # The attributes that decide the recommendation, not the ones that get you listed Source: https://www.anglera.com/blog/attributes-that-decide-the-recommendation Published: 2026-07-24 ![The attributes that decide the recommendation, not the ones that get you listed](/og/hero-attributes-that-decide-the-recommendation.jpg) A service contractor types this into an assistant on the way to a job: > "I need a replacement definite purpose contactor for a 480V three-phase condenser pulling about 30 amps. Has to be UL listed. What coil do I need with it?" That is one sentence with five separate constraints in it, plus a follow-on purchase. Work out what a catalog has to contain to answer it and you have a much better attribute roadmap than any generic completeness checklist will give you. The pillar version of this argument lives in [how to structure product data for AI agents](/blog/structure-product-data-for-ai-agents); this post is the attribute layer underneath it. ## What do the required feed fields actually buy you? Eligibility, and nothing else. Google's merchant listing spec requires only `name`, `image`, and a nested `offers` carrying `price` and `priceCurrency`. Everything a technical buyer cares about — identifiers, condition, availability, shipping, returns — sits in the [recommended tier](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing). Required gets you into the room. It does not win the argument. Run our contactor query against a catalog that stops at required. Every contactor in it is equally eligible and equally unrankable. The agent has a hundred products called "definite purpose contactor" and no basis for preferring any of them, so it does what any reasonable system does with an unresolvable comparison: it falls back on whichever source has the constraint data, which is usually the manufacturer's own site or a competitor who published the specs. The uncomfortable version of this is that a fill-rate report can read 94% while the query still fails, because the 6% that's blank is the 6% that mattered. ## Which attributes actually carry the decision? Five families, roughly in the order a technical buyer applies them: application envelope, ratings and tolerances, certifications, install and utility requirements, and companion items. Every one of them is a filter the buyer applies before price ever comes up, and every one of them is commonly missing. For the contactor, the application envelope is the 480 V, the three phases, and the 30 amps. Those are not descriptive adjectives, they are a range test. A part rated 600 VAC max and 40 FLA passes; one rated 240 VAC does not. That test only runs if `coil voltage`, `max rated voltage`, `full load amps`, `poles`, and `horsepower rating` exist as numeric fields with units stored separately from the number. Stored as the string "600VAC 40A 3P", they are invisible to a range query and about as useful as a scanned catalog page. Ratings and tolerances behave the same way, one category over. A bearing has a bore, an OD, a width, a dynamic load rating and a speed limit. A valve has a pressure class, a temperature range, and a media compatibility list. In both cases the buyer's constraint is a comparison, not a keyword, and the comparison needs a number and a unit on both sides. The reason these fields go missing is rarely that nobody knows them. They are printed on the cut sheet. They are just printed *in the cut sheet*, in a PDF table, and the PDF is linked rather than parsed — which is the single most common shape of the "we have the data" problem in distribution. ## How do you publish compatibility when the product isn't a car part? As an envelope, not a table. The automotive aftermarket solved compatibility by agreeing on a shared vocabulary of vehicles, so a brake pad can enumerate every year, make, model and engine it fits. Almost no other category has that luxury, and trying to copy it produces a combinatorial mess. Auto Care's PIES standard also handles the adjacent problem — equivalence rather than fitment — with a repeating interchange structure. Auto Care describes it plainly: when a product interchanges with several OEM or competitor parts, ["you are looping the PIES™ element `` multiple times for each interchange you provide for the product"](https://www.autocare.org/detail-pages/blog/what-the-tech/2023/04/10/the-scoop-on-the-loop-in-pies). One product, many published equivalents, each with a brand and a part number. Outside automotive, the analogue is an envelope of ranges plus an explicit application list. A pump publishes flow, head, port size, seal material, and the fluids it is rated for. A luminaire publishes lumens, CCT, CRI, driver type, dimming protocol, and mounting. The buyer's real question is "will this work in my situation," and an envelope answers it for a situation nobody anticipated, which a fixed compatibility table never can. Where you *do* hold cross-reference data — the competitor part your item replaces, the OEM number it interchanges with — publish it as a field rather than a hidden keyword block. That's a big enough subject that it gets its own treatment in [the identity spine for B2B catalogs](/blog/mpn-identity-spine-b2b-catalogs), and it connects directly to [part number cross-reference](/glossary/part-number-cross-reference) as a discipline. ## Where do certifications go? Into structured fields with an issuer and a number attached. Schema.org defines a [`Certification`](https://schema.org/Certification) type — "an official and authoritative statement about a subject" — and a `hasCertification` property that applies to `Product`. It carries `issuedBy`, `certificationIdentification`, `validIn`, `validFrom`, and `expires`. That shape is worth taking seriously rather than collapsing to a "UL Listed: Yes" checkbox. "UL listed" with a file number, an issuing body and a validity window is a verifiable claim. "UL listed" as a bare boolean in a description is a claim that any listing can make, including the ones that shouldn't. Systems that have to weigh competing product data discount unverifiable claims, and they should. Back to the contractor. His "has to be UL listed" is a hard gate, and in safety-, code- or spec-driven categories it usually is: the NEMA rating on an enclosure, the AWWA approval on a waterworks fitting, the NSF listing on a foodservice component, the ANSI Z87 marking on eyewear. If it gates the purchase, it belongs in a field. ## What answers "what else do I need"? An explicit product relationship. Schema.org gives you [`isAccessoryOrSparePartFor`](https://schema.org/Product) ("a pointer to another product (or multiple products) for which this product is an accessory or spare part") and `isConsumableFor` for exactly this, plus `isRelatedTo` and `isSimilarTo` for looser links. The contactor's follow-on question is a coil voltage — 24 V, 120 V, or 208/240 V, depending on what the existing control circuit runs. A catalog that models the contactor family with coil voltage as a variant attribute answers it. A catalog that lists eleven separate contactor SKUs with the coil voltage buried in the title answers it by accident, at best. This is the same mechanic behind attachment rate, incidentally. A "frequently bought together" carousel assembled client-side at render time helps a human and is invisible to a crawler that doesn't run JavaScript. The relationship expressed in the data helps both. The human-conversion side of that argument is in [the last inch](/blog/last-inch-conversion-details). ## Is a Q&A block on a product page still worth shipping? Yes, but not for the reason it used to be. Google [removed FAQ rich results from Search starting May 7, 2026](https://developers.google.com/search/docs/appearance/structured-data/faqpage), and `QAPage` markup is explicitly not for this: Google lists "an FAQ page written by the site itself with no way for users to submit alternative answers" and "a product page where users can submit multiple questions and answers on a single page" as [invalid use cases](https://developers.google.com/search/docs/appearance/structured-data/qapage). So the rich-result payoff is gone. The retrieval payoff isn't. A short block of buyer questions answered in plain server-rendered text — "Will this contactor work on a 208 V control circuit?", "Does it include the mounting bracket?", "What's the difference between this and the 40 A version?" — gives a retrieval system passages phrased the way buyers actually ask, sitting next to the structured attributes that support the answer. Write them as prose that stands alone without the surrounding page, because that is how a chunk gets retrieved. The failure mode to avoid is padding: six generated questions per SKU that restate the spec table. That produces near-duplicate text across thousands of pages and helps nobody. Two or three real questions, drawn from what your inside-sales team actually gets asked, is the whole play. ## The contactor, before and after | | Before | After | |---|---|---| | Title | DP Contactor 3P 40A | Definite purpose contactor, 3-pole, 40 FLA, 600 VAC | | Coil voltage | (in title, sometimes) | 24 VAC, 120 VAC, 208/240 VAC (variant attribute) | | Max rated voltage | — | 600 V | | Full load amps | — | 40 A | | Horsepower rating | — | 10 HP @ 480 V, 3-phase | | Certification | "UL" in description | UL Listed, file number, issuer, valid in US/CA | | Auxiliary contacts | — | Field-installable, 2 available | | Replaces | — | 3 OEM part numbers, published as fields | Nothing in the "after" column is exotic. All of it is on the manufacturer's cut sheet. The work is getting it out of the PDF, into fields with units, and onto the page in a form a machine can read — at the scale of a catalog rather than a SKU. Sources: - [Google Search Central: How to add merchant listing structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) - [Google Search Central: Mark up FAQs with structured data (deprecation notice)](https://developers.google.com/search/docs/appearance/structured-data/faqpage) - [Google Search Central: Schema for Q&A pages (QAPage)](https://developers.google.com/search/docs/appearance/structured-data/qapage) - [Schema.org: Certification](https://schema.org/Certification) - [Schema.org: Product](https://schema.org/Product) - [Auto Care Association: The scoop on the "loop" in PIES](https://www.autocare.org/detail-pages/blog/what-the-tech/2023/04/10/the-scoop-on-the-loop-in-pies) --- # The AI search glossary for B2B catalogs, in ten layers Source: https://www.anglera.com/blog/ai-search-glossary-b2b-catalogs Published: 2026-07-24 ![The AI search glossary for B2B catalogs, in ten layers](/og/hero-ai-search-glossary-b2b-catalogs.jpg) Most AI search glossaries are alphabetical, which is the least useful possible order. Alphabetical puts `llms.txt` next to long-tail SKU and leaves you no idea that one of them will change your revenue and the other almost certainly will not. So this one is organized by where a term bites. Ten layers, roughly in the order a buyer's question travels through your catalog: can a crawler get in, does it receive anything, how does retrieval work on what it got, which surface is the buyer using, is the record good enough to survive the question, how does an agent transact, can anyone tell who you are, and finally, how would you know any of this is working. Every term links to a full definition. If you only read one section, make it the second and third — access and rendering are where most catalogs are quietly losing, and both are diagnosable in an afternoon. For the underlying argument about how a B2B product record should be built in the first place, start with [how to structure product data for AI agents](/blog/structure-product-data-for-ai-agents). ## 1. The names for the work Four acronyms, one discipline, and a great deal of confusion sold at a premium. Knowing which term has a real origin and which is a coinage tells you how much weight to put on anyone using it. - [Answer engine optimization (AEO)](/glossary/answer-engine-optimization) — predates LLMs, grew out of featured-snippet work - [Generative engine optimization (GEO)](/glossary/generative-engine-optimization-geo) — from a 2024 KDD paper; the only one with an academic origin - [LLMO and AISO](/glossary/llm-optimization-llmo) — vendor coinages, no canonical definition - [Share of search](/glossary/share-of-search) — the pre-AI measure this all descends from The honest summary: if a vendor's methodology differs from another's, it will show up in what they actually do to your data, not in which four letters they put on the deck. ## 2. Who gets in This is the layer with the highest ratio of consequence to effort, and the one most often configured by inheriting somebody's robots.txt from 2024. Training crawlers, retrieval crawlers and user-triggered fetchers are three different things with three different tokens, and the vendor names look deceptively similar. - [AI crawler](/glossary/ai-crawler) — the umbrella entry, with a reference table of every major agent - [GPTBot](/glossary/gptbot) — OpenAI's *training* crawler - [OAI-SearchBot](/glossary/oai-searchbot) — OpenAI's *retrieval* crawler, the one that decides ChatGPT citations - [ClaudeBot](/glossary/claudebot) — Anthropic's training crawler, alongside Claude-SearchBot and Claude-User - [PerplexityBot](/glossary/perplexitybot) — retrieval, honours robots.txt; Perplexity-User is user-initiated and documented as generally ignoring it - [Google-Extended](/glossary/google-extended) — not a crawler at all, and does not opt you out of AI Overviews - [llms.txt](/glossary/llms-txt) and [llms-full.txt](/glossary/llms-full-txt) — cheap, harmless, and not the reason you are not being cited Blocking GPTBot while leaving OAI-SearchBot open is a coherent position. Blocking both by accident, then commissioning an AI visibility audit, is a more common one. ## 3. What actually gets read The second diagnosable-in-an-afternoon layer, and the one that catches teams by surprise because Google has been covering for them. Google executes JavaScript before indexing. AI crawlers, on the available evidence, do not. - [Server-side rendering for AI crawlers](/glossary/server-side-rendering-ssr) — including the hydration gap and the one-line check - [JSON-LD](/glossary/json-ld) — the delivery format for machine-readable facts - [Product schema markup](/glossary/product-schema-markup) — what to put in it for an industrial SKU - [Structured data validation](/glossary/structured-data-validation) — and why passing the Rich Results Test proves less than you think A storefront that injects its spec table and JSON-LD client-side is serving an app shell to every agent in section 2. The markup validates perfectly in a tool that runs JavaScript. It is absent from what a crawler receives. ## 4. How retrieval works You cannot control any of this machinery, which is exactly why it is worth understanding: it explains *why* a thin record loses, in mechanical terms rather than as an article of faith. - [Retrieval-augmented generation (RAG)](/glossary/retrieval-augmented-generation-rag) — the architecture - [Vector embedding](/glossary/vector-embedding) — why a sparse record embeds to a generic point and wins nothing - [Vector database](/glossary/vector-database) — the index, and why hybrid search is non-negotiable for part numbers - [Content chunking](/glossary/content-chunking) — the chunk is the unit, not the page - [Semantic search](/glossary/semantic-search) — matching by meaning - [Grounding](/glossary/grounding) — sourced rather than remembered, and why it does not mean correct - [Query fan-out](/glossary/query-fan-out) — one buyer question becomes several retrievals The through-line: retrieval extracts passages and compares vectors. A specification that exists only in a PDF is not a weak signal, it is not a signal. And a passage that names a value without naming the product cannot be attributed back to your SKU no matter how accurate it is. ## 5. The surfaces Where the buyer actually is. Each behaves differently, and the differences matter more for a distributor than for a DTC brand, because most of these were designed around consumer retail assumptions that industrial catalogs violate. - [Google AI Overviews](/glossary/google-ai-overviews) — summaries above the results, no separate eligibility path - [Google AI Mode](/glossary/google-ai-mode) — conversational, so buyers add constraints one turn at a time - [Google Shopping Graph](/glossary/google-shopping-graph) — where identifier hygiene decides whether your offer attaches to anything - [Rufus, now Alexa for Shopping](/glossary/rufus-alexa-for-shopping) — renamed in May 2026; most published guidance still says Rufus - [The digital shelf](/glossary/digital-shelf) — the older framing this all extends AI Mode is the one to think hardest about. In a conversation, each additional constraint is a filter applied to what the system knows about you, and a null field is elimination rather than a lower rank. Categories where your fill rate is thin are categories where you drop out on turn three and never find out. ## 6. The record: identity and classification Now we are inside your own data, and the layer everything else depends on. An agent resolves identity first and narrows by class second. A product it cannot identify never gets its specs compared. - [GTIN](/glossary/gtin-global-trade-item-number) and [UPC](/glossary/upc-universal-product-code) — where they exist - [MPN](/glossary/mpn-manufacturer-part-number) — which in B2B usually carries the entire identity load alone - [Product matching](/glossary/product-matching) — how your offer attaches to a known product node - [Part number cross-reference](/glossary/part-number-cross-reference) — supersessions and competitor equivalents, usually trapped in a rep's spreadsheet - [UNSPSC](/glossary/unspsc-classification), [ETIM](/glossary/etim-classification), [eCl@ss](/glossary/eclass-classification) — classification with different jobs - [Google product category](/glossary/google-product-category) — required by shopping feeds - [Golden record](/glossary/golden-record) — one authoritative version, which is what stops a grounded answer being grounded in the wrong row The B2B-specific point: consistency beats coverage. An MPN formatted identically in the ERP, the PIM and the web catalog is worth more than a GTIN you sourced from three places and cannot reconcile. ## 7. Completeness: surviving the constraint The layer where most enrichment budget should go and where the least of it usually does. Every constraint in a buyer's question is a field you either have or do not. - [Attribute fill rate](/glossary/attribute-fill-rate) — the measurable thing, and the honest substitute for [semantic completeness](/glossary/semantic-completeness) - [Product attributes](/glossary/product-attributes) — the filter conditions themselves - [UOM](/glossary/uom-unit-of-measure) — separating the selling unit from the pack - [Kit and bundle SKU](/glossary/kit-and-bundle-sku) — and how a kit inheriting one component's attributes lies to an agent - [Parent-child variants](/glossary/parent-child-product-variants) — one product with options, not forty competing orphans - [Long-tail SKU](/glossary/long-tail-sku) — where the data is thinnest, by construction - [Product data enrichment](/glossary/product-data-enrichment) and [SKU enrichment](/glossary/sku-enrichment) — the work of closing the gap One note on [semantic completeness](/glossary/semantic-completeness), because it is circulating with a correlation coefficient attached to it. The underlying writing principle is sound. The number is not traceable to any published study, and fill rate against a defined per-category attribute set is the measurable version of the same idea. ## 8. Feeds, protocols, and transacting The layer that gets the most conference attention and warrants the least urgency for most distributors. It is worth tracking. It is rarely worth being early on. - [Product feed](/glossary/product-feed) and the [Google Shopping feed specification](/glossary/google-shopping-feed-specification) - [OpenAI product feed](/glossary/openai-product-feed) — including the identifier-stability requirement your next ERP migration will break - [Model Context Protocol (MCP)](/glossary/model-context-protocol-mcp) — the plumbing, now under Linux Foundation governance - [Agentic Commerce Protocol (ACP)](/glossary/agentic-commerce-protocol-acp) — checkout; still OpenAI and Stripe maintained, still beta - [Universal Commerce Protocol (UCP)](/glossary/universal-commerce-protocol-ucp) — broader, Google-led, with a discovery endpoint - [Agentic checkout](/glossary/agentic-checkout) — and the B2B assumptions it currently breaks - [PunchOut catalog](/glossary/punchout-catalog) — what already does this job in enterprise procurement Governance is worth reading carefully here, because it gets reported sloppily. MCP was donated to the Agentic AI Foundation, a Linux Foundation directed fund, in December 2025. ACP has not been donated to anything; its repository describes foundation stewardship as a future path. Those are different levels of commitment and they should inform different integration decisions. The part of this section that actually matters to a distributor is not checkout. It is that UCP names catalog search and lookup as a specified capability, which makes the quality of your product record directly queryable and directly comparable against a competitor's, inside a single agent turn. ## 9. Entity trust Smaller layer, frequently oversold, occasionally decisive. The question it answers is whether a machine can tell who you are and whether your claims are checkable. - [E-E-A-T](/glossary/e-e-a-t) — a rater framework, explicitly not a ranking factor, with trust as the load-bearing letter - [sameAs](/glossary/sameas-property) — disambiguation, not endorsement - [Wikidata](/glossary/wikidata) — useful for the manufacturers you carry, largely unavailable for your own company - [Data governance](/glossary/data-governance) — the unglamorous prerequisite The distributor version of E-E-A-T is not author bios. It is naming the standard number and issuing body on a certification instead of writing "UL listed," linking the manufacturer's spec sheet to the SKU so a claim can be checked, and leaving a field blank rather than guessing at it. First-hand application knowledge — what actually fails in coastal installations, which published supersession does not work in practice — is the content a competitor cannot copy and a model cannot synthesize from anywhere else. ## 10. Measurement Last, deliberately. Every instrument here is a proxy, all of them are noisy, and the vocabulary exists partly so vendors can put a number on something no provider reports. - [AI citation](/glossary/ai-citation) — the closest thing to a ranking position - [AI referral traffic](/glossary/ai-referral-traffic) — the only one that lands in your own analytics, and a floor rather than a measure - [Share of model](/glossary/share-of-model) — sampled, not reported; state the method beside the number - [Prompt testing](/glossary/prompt-testing) — how those numbers are produced - [Content health score](/glossary/content-health-score) — the internal data-quality counterpart Three instruments, three blind spots. Analytics sees clicks and misses every answer that resolved without one. Prompt panels see answers and sample a non-deterministic system. Server logs see retrieval and tell you nothing about what was said. Run all three, report trends across a quarter, and treat single-week movement as noise, because that is what it is. ## The short version If you read the whole list and want one sequence: check what your product pages return without JavaScript, check which crawlers you are actually allowing, then measure attribute fill rate on the ten to fifteen specs buyers filter on in your top categories. Everything in sections 4 through 10 is downstream of those three answers. The vocabulary is genuinely useful for reading vendor claims critically, which is most of what it will be used for this year. The work underneath it has not changed much: the facts have to exist, in fields, in HTML, tied to a part number that means the same thing in every system you run. Anglera does that middle part. Your PIM stores the record; we fill the missing attributes at catalog scale from supplier spec sheets and manufacturer sources, normalized against your schema and written back into the system you already run. The crawler configuration and the rendering stay with your team. --- # Feeds, checkout, and live data: what UCP, ACP, MCP and the ChatGPT product feed actually are Source: https://www.anglera.com/blog/agent-feeds-protocols-what-to-ship-first Published: 2026-07-24 ![Feeds, checkout, and live data: what UCP, ACP, MCP and the ChatGPT product feed actually are](/og/hero-agent-feeds-protocols-what-to-ship-first.jpg) Four acronyms show up in the same meeting and get treated as one decision that has to be made all at once. They are not one decision. They are not even the same kind of thing. One is a file you upload, one is a way to take payment, one is a description of what your commerce systems can do, and one is a way to answer a question in real time. Sorting them properly changes the roadmap, and for most industrial distributors it changes it in a direction nobody expects. This is the channel layer of [how to structure product data for AI agents](/blog/structure-product-data-for-ai-agents) — what you actually connect the data to once it is in shape. ## What are these four things, actually? Different layers of the same stack, not four competing options. One publishes a catalog on a schedule, one completes a purchase, one declares capabilities, and one answers live queries. The mistake that costs the most time is treating a checkout protocol and a feed spec as alternatives to each other. | | What it is | Kind | Governance | Status as of July 2026 | |---|---|---|---|---| | **ChatGPT product feed** | A structured catalog file (or API push) merchants supply so ChatGPT can index and display products | Feed | OpenAI, unilaterally | Approved partners only | | **ACP** (Agentic Commerce Protocol) | An API contract for an agent to create and complete a checkout session against the merchant's systems, with a scoped delegated payment token | Checkout | Technical Steering Committee; OpenAI, Stripe, Meta as lead maintainers | Date-versioned; `2026-04-17` latest stable | | **UCP** (Universal Commerce Protocol) | A machine-readable profile at `/.well-known/ucp` declaring which commerce capabilities a business supports — catalog, cart, checkout, order, identity | Capability profile spanning all three | Governing Council electing Domain Tech Councils; multi-vendor | Announced Jan 2026; spec version `2026-04-08` | | **MCP** (Model Context Protocol) | A JSON-RPC interface for exposing tools, resources and prompts to a model host | Live data / tool interface | Agentic AI Foundation, a directed fund under the Linux Foundation | Current revision `2025-11-25`; next revision due 28 July 2026 | Two of those four are open standards you can read in full without asking anyone. [ACP's repository](https://github.com/agentic-commerce-protocol/agentic-commerce-protocol) and [UCP's](https://github.com/universal-commerce-protocol/ucp) are both Apache-2.0. That matters more than it sounds: you can evaluate whether your business is expressible in the data model before committing engineering time, which is exactly the check most teams skip. ## Which one is the feed, and what does it cost to publish? OpenAI's Product Feed Spec is the feed. It is a daily full catalog file with intraday updates, and OpenAI's own guidance is to ["provide the entire feed once a day via file upload, and then send updates throughout the day via the API"](https://developers.openai.com/commerce/guides/get-started). The required fields are unsurprising — item ID, title, description, URL, brand, image, price, availability, seller name and URL, target countries — plus two eligibility flags that decide whether a product appears in search, in checkout, or both. Two constraints matter far more than the field list. The first is access. OpenAI states plainly that ["onboarding product feeds in ChatGPT is currently available to approved partners"](https://developers.openai.com/commerce/guides/get-started), with an application form. This is not a spec you implement over a weekend and go live with. The second is category. OpenAI's commerce documentation says it only allows ["products and services that are legal, safe, and appropriate for a general audience,"](https://developers.openai.com/commerce/llms-full.txt) with prohibited categories including "harmful or dangerous materials, weapons, prescription-only medications" and others. Read that against an MRO catalog. Solvents, aerosols, compressed gases, abrasives, cutting fluids, ammunition components in an ag-and-outdoor line — a meaningful share of an industrial assortment is not a general-audience product, and no amount of enrichment changes that. If you sell janitorial paper goods, foodservice smallwares, or office and packaging supplies, the consumer shopping feed may well be worth applying for. If your top revenue categories are welding gas, chemical, or industrial safety, it is honest to say the channel is not built for you yet and spend the quarter elsewhere. ## What does ACP actually cover? Checkout and payment, plus a feed schema. Its stated scope is ["an interaction model and open standard for connecting buyers, their AI agents, and businesses to complete purchases seamlessly."](https://github.com/agentic-commerce-protocol/agentic-commerce-protocol) The `2026-04-17` spec directory carries schemas for agentic checkout, delegated payment, delegated authentication, cart, discount, extensions, and a product feed. The B2B question comes up immediately, and the answer is narrow but real. ACP's checkout payload includes `purchase_order_number` and a `payment_terms` field with values from `immediate` through `net_90`. Those arrived in the January 2026 revision and persist into the current one. Note precisely what they are. They describe how a transaction settles. They do not describe how a price is arrived at. There is no field in the specification for a contract price, a customer price level, a quantity break, or a quote — the entire pricing model assumes the price was already fixed before the agent showed up. For a distributor whose customers each see different numbers on the same SKU, that is not a gap in the implementation. It is a structural property of publishing prices in a file. Stripe describes ACP as ["an open standard created by Stripe, OpenAI, and Meta that defines how AI agents interact with businesses to complete purchases on behalf of buyers."](https://docs.stripe.com/agentic-commerce/acp) Worth reading as written: purchases, on behalf of buyers, at a known price. ## What does UCP do differently? It moves the question to request time. Rather than publishing a catalog and hoping the values hold, a UCP-participating business hosts a profile declaring what it can do, and agents call it. Google describes UCP as ["an open-source standard designed to power the next generation of agentic commerce,"](https://developers.googleblog.com/under-the-hood-universal-commerce-protocol-ucp/) noting that it is compatible with the Agent Payments Protocol and offers integration ["via APIs, Agent2Agent (A2A), and the Model Context Protocol (MCP)."](https://developers.googleblog.com/under-the-hood-universal-commerce-protocol-ucp/) That last clause is the one to underline, because it means UCP and MCP are not alternatives. In production they are already the same stack: Shopify's documentation states that its ["Global Catalog MCP implements the UCP Catalog capability and its MCP binding,"](https://shopify.dev/docs/agents/catalog/global-catalog) with tool names and request shapes conforming to the UCP specification. UCP is also the only one of the four with a coherent answer on customer-specific pricing, and it gets there by refusing to model it as a field. Its identity-linking specification carries a worked B2B wholesaler example and states the principle directly: whether a user is B2B-eligible, what pricing they see, and what payment terms apply are ["user attributes the merchant resolves at runtime, not additional scopes."](https://github.com/universal-commerce-protocol/ucp) The catalog scopes follow the same logic, covering lookup and search on behalf of an authenticated user with "personalized pricing or availability." The limits are geographic and operational. Google's Merchant Center guidance on UCP checkout states it ["only applies to products with eligibility in the United States, Canada, and Australia, and for participating merchants and partners,"](https://support.google.com/merchants/answer/16837055) and requires a Google Pay and Wallet Console account, a PSP integrated with the Google Pay API, and a checkout-eligibility product attribute. It also confirms the thing every distributor asks about first: "You will remain the seller of record." ## Why MCP is the one that fits a distributor Because it is not a commerce protocol, and a distributor's business is not a consumer checkout. MCP defines how a server exposes ["Resources"](https://modelcontextprotocol.io/specification/2025-11-25) — context and data — along with prompts and tools, over JSON-RPC. It carries no opinion about carts, shipping options, or who the seller of record is. You expose the operations that describe your business and nothing else. For a catalog, that shape is close to ideal. A tool that looks up a part number and returns attributes. A tool that resolves a superseded number to its current replacement. A tool that returns availability across branches, or a price for an authenticated account. None of those are expressible in a static feed, and all of them are ordinary MCP tools. Governance is also now less of a bet than it was. Anthropic donated MCP to the [Agentic AI Foundation](https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/), a directed fund under the Linux Foundation, in December 2025 — [co-founded by Anthropic, Block and OpenAI with support from Google, Microsoft, AWS, Cloudflare and Bloomberg](https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation). The [current protocol revision is `2025-11-25`](https://modelcontextprotocol.io/specification/versioning), with the next revision scheduled for 28 July 2026, so pin a version rather than tracking the tip. On the consumption side, both major assistants already accept remote MCP servers from end users. Claude calls them [custom connectors](https://claude.com/docs/connectors/custom/remote-mcp). OpenAI now packages them as plugins, reserving "connectors" for its own [maintained MCP wrappers](https://developers.openai.com/api/docs/guides/tools-connectors-mcp.md). Either way, the artifact you build is an MCP server. ## What to ship, in order 1. **Server-rendered product data with correct structured markup.** This is not a protocol decision and it precedes all of them. Every interface above reads a catalog, and none of them repairs one. If your specs render client-side or live in linked PDFs, everything downstream inherits the hole. 2. **An MCP server over your catalog.** Broadest reach for the least commitment, works for authenticated B2B pricing, and — because UCP binds to MCP — it is not wasted work if you go further later. 3. **UCP, if you sell into US, Canada or Australia and your assortment is consumer-adjacent.** Read the specification first and check whether your pricing model survives the round trip. 4. **The ChatGPT product feed, if you are approved and your categories qualify.** For a pure industrial catalog, that is a real if. ## What to skip for now Anything that requires you to re-platform to reach an agent. Anything that asks you to publish contract prices in a static file, which the standards do not support and your customers would not want. And an `llms.txt` file, which has attracted [adoption in the neighborhood of one in ten large sites](https://www.rankability.com/data/llms-txt-adoption/) and is not yet fetched at meaningful volume by the crawlers that matter. The uncomfortable summary for an industrial distributor in mid-2026 is that the headline channel is not open to you, and the boring answer is the right one: complete attributes, correct identifiers, server-rendered pages, and a live interface over the top. That combination works for every reader in the table, including the ones that don't exist yet. Sources: - [OpenAI: Agentic commerce — get started](https://developers.openai.com/commerce/guides/get-started) - [OpenAI: Commerce documentation, full text](https://developers.openai.com/commerce/llms-full.txt) - [Agentic Commerce Protocol repository](https://github.com/agentic-commerce-protocol/agentic-commerce-protocol) - [Stripe: Agentic Commerce Protocol](https://docs.stripe.com/agentic-commerce/acp) - [Google Developers Blog: Under the hood — Universal Commerce Protocol](https://developers.googleblog.com/under-the-hood-universal-commerce-protocol-ucp/) - [Google Merchant Center: Checkout with UCP](https://support.google.com/merchants/answer/16837055) - [Universal Commerce Protocol repository](https://github.com/universal-commerce-protocol/ucp) - [Shopify: Global Catalog MCP](https://shopify.dev/docs/agents/catalog/global-catalog) - [Model Context Protocol: specification 2025-11-25](https://modelcontextprotocol.io/specification/2025-11-25) - [Model Context Protocol joins the Agentic AI Foundation](https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/) --- # Pimp my PIM: a stock PIM parks your data — it doesn't drive it Source: https://www.anglera.com/blog/pimp-your-pim Published: 2026-07-23 ![Pimp my PIM: a stock PIM parks your data — it doesn't drive it](/diagrams/pimp-your-pim.svg) Let's be honest about what a PIM is: a very nice garage. Climate-controlled, every bay labeled, one governed home for every SKU. You back your product data in, close the door, and admire how organized it all looks. Then a customer — or an AI shopping agent — asks it to actually *go somewhere*, and you remember the thing about a garage. It doesn't drive. It parks. That's not a knock on PIMs. Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore — they're excellent at what they were built for: storing product data, enforcing a schema, pushing feeds to channels. But somewhere along the way "system of record" got quietly sold as "the thing that makes your catalog good." Those are different jobs. One is a parking spot. The other is a pit crew. Your stock PIM shipped with the first and a sticker promising the second. So let's pimp it. ## The stock trim: looks great in the showroom A fresh PIM rollout feels like progress because it *is* progress. Before it, your product truth lived in a dozen spreadsheets and an ERP field nobody trusted. After it, everything has one home. The demo looked incredible. Then the real supplier feed shows up. A commodity vendor sends a flat file with `SS 1/4-20 X 1 HEX HD CAP SCR` jammed into the description, a third of the attribute columns blank, and a spec sheet PDF attached "for reference." Your PIM stores that string faithfully, forever. It does not know that `SS` means stainless steel, that `1/4-20` is a thread size, or that the thread pitch is missing entirely. It was never supposed to. Storing the mess correctly is the whole job — and the mess is still a mess. This is the part the showroom never mentions. A PIM assumes the data going in is already good. Real catalogs aren't. So you hire the enrichment work back in as headcount, or a BPO, or a quarterly "data cleanup project" that's never actually done, because next week six suppliers push updates and you're behind again. ## The AI button is a spoiler sticker Every PIM now ships an "AI" button. Generate a description. Auto-tag an image. Translate a title. Genuinely useful features — and roughly as transformative as a spoiler sticker on a minivan. They polish records that are already mostly complete. They were not built to run unattended against a raw, gap-riddled feed and *invent* the missing thread pitch from the scanned spec sheet that actually contains it. A "generate description" button is a feature. A pipeline that ingests the flat file, scores every SKU for completeness, extracts the missing values from the source docs, and re-runs itself when the feed changes — that's an operating model. Treating the first as a stand-in for the second is exactly how catalogs sit half-enriched two years into a rollout. ([Gartner has said](https://www.gartner.com/en/newsroom/press-releases/2025-02-26-lack-of-ai-ready-data-puts-ai-projects-at-risk) that through 2026 most organizations will abandon AI initiatives because the underlying data isn't ready — a PIM full of governed-but-empty records is that trap with a nicer paint job.) ## The build sheet Here's the difference between a stock PIM and one that's actually been pimped — same garage, real parts: | Part | Stock PIM | Pimped PIM | |---|---|---| | Engine | Stores whatever you put in | AI enrichment fills every empty attribute from the source docs | | Spoiler | Pushes the feed you already have | Syndication tuned to each channel's spec, from clean data | | Rims | Attributes as received (blank, abbreviated) | Chrome attributes — structured, normalized, machine-readable | | Nitrous | Enrich once, drift forever | Re-runs on every feed change so it never goes stale | | Dashboard | "Records: 40,000" | Fill-rate and accuracy scored per SKU, so you know what's actually done | The chassis — governance, one home per SKU, channel feeds — you keep. That part's good. What you're bolting on is the crew that makes the data correct, complete, and current, not once but every week. ## Why bother pimping it at all Because the shelf moved. A growing share of buying decisions now run through an AI agent that reads a product's structured data, weighs it against a few alternatives, and picks — before any human sees a page. Agents read schema, not hero images. The product that wins is the one whose attributes answer the question completely. A blank thread-pitch field isn't a cosmetic gap anymore; it's the reason you didn't get recommended. A stock PIM gets you a clean, empty, beautifully governed record of that loss. Enrichment is what fills the tank. ## Roll it into the shop None of this means ripping out your PIM. It means admitting the garage was never the car. [Your PIM stores the data — something still has to do the work](/blog/pim-stores-data-work-remains), and that something is a layer that sits in front of your PIM, ERP, or flat file: it ingests the raw feed, scores every SKU, gap-fills from the sources that hold the answers, and keeps re-running as suppliers change. That's the layer [Anglera](/) is. Keep the garage. We'll tune the car. Pimp my PIM. It's earned it. --- # The Page-1 Arms Race Is Over: AI Engines Cite Specs, Not Keywords Source: https://www.anglera.com/blog/ai-answer-engines-read-specs-not-keywords-2026 Published: 2026-07-22 ![The Page-1 Arms Race Is Over: AI Engines Cite Specs, Not Keywords](/og/hero-ai-answer-engines-read-specs-not-keywords-2026.jpg) The SEO playbook distributors spent a decade learning is being graded on a curve that no longer exists. AI answer engines don't return ten blue links for a buyer to click through — they return one answer, assembled from whichever source exposed the cleanest machine-readable product record. Ranking is a fading skill. Being citable is the new one, and almost nobody in distribution has built for it yet. ## The page-1 math stopped paying out [Distribution Strategy Group ran the definitive version of the old playbook](https://distributionstrategy.com/2019/04/the-seo-arms-race-how-to-get-your-website-on-page-1-of-google/) — keyword research, backlink building, local landing pages, the works. It was sound advice for the search engine that existed in 2019. That search engine is going away. Zero-click search — a query that ends without a visit to any website — has become the default outcome, not the edge case. Recent tracking puts overall zero-click search north of two-thirds of U.S. Google queries in early 2026, and when Google's AI Overview fires on a query, the click-through rate to any underlying site drops by roughly 60% against a query with no overview at all ([Search Engine Land](https://searchengineland.com/google-zero-click-searches-2026-study-479717)). Google's experimental AI Mode pushes that further still. The traffic a distributor used to earn by winning page one is being intercepted before the click ever happens. That changes what "optimizing" a page even means. The 2018-2020 playbook was written for a ranking algorithm that read pages and ordered links for a human to choose from. The 2026 reality is an answer engine that reads pages, extracts facts, and writes the answer itself. A page can be beautifully optimized for keyword relevance and still be structurally useless to a system that isn't ranking it — it's mining it for a spec value, an availability status, a compliance certification, and then moving on. ## Citation, not rank, is the object This is not a matter of degree. It's a different mechanism. A ranking algorithm cares about relevance signals aggregated across a page and a domain. A generation model answering "what's the temperature rating on this gasket" cares about one thing: can it find a clean, unambiguous, machine-parseable value for temperature rating, attached to the right SKU, on a page it's allowed to crawl. Product schema markup, complete spec tables, crawlable individual product detail pages, consistent attribute naming across the catalog — that's the raw material an answer engine cites from. A distributor's homepage copy about being "your trusted partner since 1987" has no citable value to a system extracting facts, no matter how well it once ranked. The evidence on how much markup alone moves the needle is genuinely mixed, and worth being honest about. [Ahrefs tracked nearly 1,900 pages that added JSON-LD schema](https://ahrefs.com/blog/schema-ai-citations/) against a control group and found no major citation lift from the markup wrapper by itself. Other analyses of citation sources across ChatGPT, Google AI Overviews, and Perplexity find a strong correlation between structured data presence and citation rate ([Analyzify](https://analyzify.com/hub/schema-markup-ai-citations-research)). Read together, the honest conclusion is that schema is necessary but not sufficient — it's the label on the box, not the box. What actually gets cited is the underlying completeness of the record: does the attribute exist at all, in a normalized form, on a page the crawler can reach. Wrapping incomplete or inconsistent data in ` ``` - **Keep JS-dependent content additive, not load-bearing.** If a spec table only renders after a client-side data fetch resolves, mirror that same data into server-rendered markup or the JSON-LD block, even redundantly. Redundancy costs little; invisibility costs the sale. - **Don't rely on dynamic rendering as a permanent fix.** Serving a pre-rendered snapshot to known bot user agents is a documented workaround, but it's brittle (new crawlers, spoofed user agents, maintenance overhead) and Google itself frames it as a stopgap, not a destination architecture. ## How to validate - **View-source, not DevTools.** Right-click → "View Page Source" (or `curl`) shows exactly what a non-JS crawler receives. If your price, spec table, or JSON-LD isn't there, it doesn't exist for GPTBot, ClaudeBot, or PerplexityBot, even if it looks perfect in the rendered DOM/Elements panel. - **`curl` the live URL** and grep for the facts that matter: ```bash curl -sA "GPTBot" https://example.com/products/example-product | grep -i "application/ld+json" ``` - **Diff rendered vs. raw.** Compare `curl` output against what DevTools shows post-hydration; any product fact present only in the latter is invisible to most AI crawlers. - **Run the page through Google's Rich Results Test** (`search.google.com/test/rich-results`) to confirm your JSON-LD parses and exposes the fields you expect — a useful proxy for "is this machine-readable," even though it's Google's own tool. - **Check server logs for bot user agents** (`GPTBot`, `ClaudeBot`, `PerplexityBot`, `OAI-SearchBot`, `Claude-SearchBot`) and confirm they're getting 200s with full content, not 404s, redirects, or bot-challenge pages. Verified as of July 2026 against OpenAI, Anthropic, and Perplexity's published crawler documentation and Google Search Central's JavaScript SEO guidance; user-agent strings and crawler behavior are subject to change, so revisit each vendor's bot page periodically. Getting the enriched attributes, specs, and identifiers into a server-rendered template or a JSON-LD block is a one-time engineering task — the harder, ongoing problem is keeping that data accurate and complete as catalogs change. That's the half of the problem Anglera is built for: it continuously enriches product data in your PIM or commerce platform, additively, without displacing it, so whatever templating approach your team lands on above always has something rich and current to render. Sources: - [OpenAI — Overview of OpenAI Crawlers](https://developers.openai.com/api/docs/bots) - [Anthropic — Does Anthropic crawl data from the web, and how can site owners block the crawler?](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler) - [Perplexity — Perplexity Crawlers](https://docs.perplexity.ai/docs/resources/perplexity-crawlers) - [Google Search Central — Understand JavaScript SEO Basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) - [Vercel — The rise of the AI crawler](https://vercel.com/blog/the-rise-of-the-ai-crawler) --- # Building an attribute schema for Grocery & CPG that shoppers and AI can actually use Source: https://www.anglera.com/blog/grocery-cpg-attributes Published: 2026-06-21 Industries: grocery-cpg ![Building an attribute schema for Grocery & CPG that shoppers and AI can actually use](/og/hero-grocery-cpg-attributes.jpg) Grocery and CPG catalogs live or die on a small set of attributes apparel and electronics never have to think about: allergens, dietary claims, pack configuration, net weight. Miss one on a single SKU and that product doesn't rank poorly in filtered search or AI shopping answers, it disappears from them entirely. Here's the schema that keeps it visible, worked through with a cereal box example. ## Grocery filters are pass/fail, not ranking signals In apparel, a missing "material" attribute costs you a little relevance. In grocery, a missing "contains tree nuts" attribute costs you the entire shopper who has a tree nut allergy, because faceted search and AI assistants treat allergen and diet fields as exclusion filters, not ranking boosts. [A high "filtered to zero" rate is a red flag that facets aren't dynamic enough or product data is incomplete](https://umbrex.com/resources/retail-industry-playbooks/on-site-search-navigation-optimization-playbook/filters-facets-attributes-and-product-data-quality/), and grocery shows that failure most: a shopper filters for "gluten-free" or "vegan," and a product without a populated diet attribute never enters the result set, regardless of whether it actually qualifies. A grocery attribute schema has to do two jobs at once: help a shopper narrow 40 cereal SKUs down to three, and help an AI agent answer "what's a low-sugar cereal without common allergens" without ever showing a list at all. ## The attributes that actually gate visibility Grocery facets cluster around a short list that shows up on nearly every retailer's shelf-page filters, and it maps closely to what regulators and standards bodies already require: | Attribute group | Examples | Why it gates search | |---|---|---| | Allergens | milk, egg, peanut, tree nut, soy, wheat, fish, shellfish, sesame | Exclusion filter; a blank field reads as "unknown," which many systems treat as "unsafe, hide it" | | Dietary claims | gluten-free, vegan, kosher, halal, organic, non-GMO | Exclusion filter, same failure mode as allergens | | Nutrition facts | calories, sugar (g), sodium (mg), protein (g), serving size | Range filters ("under 10g sugar"); AI agents parse these directly to answer comparison questions | | Pack & size | net weight, count per pack, unit size, case pack | Drives "size" facet and unit-price comparisons; also the field most often wrong across a retailer's own SKUs | | Ingredients | full ingredient list, in descending order by weight | Backs allergen/diet claims and lets AI agents verify claims instead of just trusting a badge | | Storage & prep | refrigerated, frozen, shelf-stable, cook time | Filters delivery/pickup eligibility and meal-planning queries | Since January 1, 2023, [sesame has been the ninth major food allergen the FDA requires on packaged food labels](https://www.fda.gov/food/food-allergies/faster-act-sesame-ninth-major-food-allergen), joining milk, eggs, fish, shellfish, tree nuts, peanuts, wheat, and soy. An allergen attribute list still stuck at eight fields makes every sesame-containing SKU technically mislabeled for search, even when the physical package is compliant. The underlying data model already exists. [GS1's GDSN nutrition and allergen attribute group](https://www.gs1.org/standards/gdsn) is built around this exact structure, ingredients, allergens, additives, nutrients, serving size, tied to a trade item at the lowest GTIN in the hierarchy. Retailers don't need a new taxonomy; they need to populate the one the industry already agreed on. ## What AI shopping agents need beyond the filter bar Ask an AI assistant to "recommend a whole-grain cereal under 8 grams of sugar with no tree nuts for a kid's lunch," and it isn't clicking checkboxes. It's reading structured fields, nutrition per serving, ingredient list, allergen flags, and reasoning across them. If any one of those fields is missing, the AI either drops the product from consideration or, worse, gives a wrong answer with confidence because it inferred an allergen status from a category default. This is now an explicit feed requirement, not a nice-to-have. [OpenAI's product feed specification for ChatGPT shopping](https://developers.openai.com/commerce/specs/file-upload/products) expects structured attributes delivered on a schedule as fast as every 15 minutes, and treats the feed as the source of truth rather than a supplement to on-page content. [Google's Merchant Center product data spec](https://support.google.com/merchants/answer/7052112?hl=en) requires GTIN for matching and disapproves listings with incorrect identifiers. Both are structurally allergic to blank or inferred fields in exactly the categories grocery cares about most. ## Cereal box, before and after Here's a raw supplier feed row for a store-brand cereal, next to what a properly enriched attribute set looks like. | Attribute | Raw feed (before) | Enriched (after) | |---|---|---| | Title | "Cereal 18oz" | "Honey Toasted Oats Cereal, Whole Grain, 18 oz Box" | | Net weight | missing | 18 oz (510 g) | | Servings per container | missing | 17 | | Sugar per serving | missing | 9g | | Allergens | missing | contains: wheat; may contain: tree nuts | | Dietary claims | missing | non-GMO; kosher | | Ingredients | missing | whole grain oats, sugar, corn syrup, honey, salt, vitamin/mineral blend | | Storage | missing | shelf-stable | The "before" row can still show up in a plain keyword search for "cereal." It cannot show up in a "gluten-free cereal under 10g sugar" filter, and it cannot be recommended by an AI agent comparing sugar content across three cereals, because there's nothing to compare. The "after" row does both, built entirely from fields that already exist in GDSN and on the physical Nutrition Facts panel; someone just has to extract, normalize, and attach them to the SKU. ## Structuring the schema without boiling the ocean Retailers don't need a 200-field grocery taxonomy on day one. A workable rollout order: 1. Allergens and dietary claims first, since they're pass/fail filters with regulatory backing. 2. Nutrition facts (sugar, sodium, calories, protein per serving), since they power range filters and AI comparison questions. 3. Pack, size, and unit-of-measure, since size mismatches are the most common cause of duplicate or conflicting listings across a chain's own stores. 4. Ingredients as free text, tied back to allergens so claims are auditable rather than asserted. 5. Storage and prep attributes last, since they affect fulfillment eligibility more than discovery. Finish each tier before starting the next. A catalog with allergens fully populated and nutrition half-done beats one that's 60% populated across all five tiers, because exclusion filters are what remove products from consideration entirely. Anglera plugs into whatever PIM or feed a grocery retailer already runs, or none, and continuously scores every SKU against a schema like this one: gap-filling allergens, nutrition, and pack data from source documents and feeds, flagging conflicts between ingredient lists and allergen claims, and keeping attributes current as suppliers reformulate. Your PIM stores the data; Anglera does the work of making sure every field a shopper or an AI agent needs is actually there. --- # EFC International Wins By Distributing to the Distributors Source: https://www.anglera.com/blog/efc-international-distributor-playbook Published: 2026-06-21 Industries: fasteners ![EFC International Wins By Distributing to the Distributors](/og/hero-efc-international-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* EFC International sits at #13 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for fasteners, a ranking most of its own customers never see because most of EFC's customers are other distributors. That fact is the whole story. Founded in St. Louis in 1983, EFC built a four-decade business on a layer of the supply chain almost nobody outside fasteners knows exists, and it has spent the last decade buying up smaller versions of itself to make that layer bigger. ## The tier between the manufacturer and everyone else Most fastener distribution stories are about branches: how many, how dense, how fast a counter clerk can find a bin of grade-8 hex bolts. EFC's story is about a tier most readers skip past entirely. It calls itself an "80/20 Master Distributor," a name borrowed straight from the Pareto principle: a manufacturer generates roughly 80 percent of its profit from 20 percent of its product line, so EFC's pitch to suppliers is to let EFC own the other 80 percent, according to [the company's own description of the model](https://www.efc-intl.com/about/80-20-strategy/). The manufacturer keeps its best-margin SKUs and its direct accounts. EFC takes on the long tail: the inventory carrying cost, the small-order fulfillment, the customer service calls, the geographic reach into regions the manufacturer doesn't want to staff. That is a different business than running retail counters. It means EFC's real customer is often not the factory floor buying fasteners but the regional distributor, OEM buyer, or industrial reseller who needs a rivetnut variant, a specialty clip, or a Class-C part that a manufacturer would rather not chase. EFC absorbs the complexity manufacturers want to shed, and it gets paid for absorbing it. The company now runs that model out of St. Louis, Atlanta, Chicago, Detroit, Guelph, Querétaro, Frankfurt, Shanghai, Seoul, and the UK, a footprint built to be wherever a supplier's "other 80 percent" needs to ship. ## Buying the long tail instead of growing it organically If the 80/20 model is the engine, acquisitions are how EFC has scaled it. In January 2016, EFC acquired Technology Components Southwest, a Texas-based distributor formed in 2004 around the sales and distribution rights to Rivetnut products across the U.S.–Mexico border region, according to [EFC's acquisition announcement](https://www.efc-intl.com/about/news-events/efc-international-acquires-technology-components-southwest/). TCS's partners framed the deal around scale and reach, not survival, language that fits how EFC uses M&A: buying regional specialists that already own a niche product line or geography, rather than displacing them. The pattern repeated in March 2023, when EFC acquired Inventory Sales Company, a St. Louis fastener distributor founded in 1972 that supplies Class-C parts and strut accessories with vendor-managed inventory and kitting services, per [the deal announcement](https://www.efc-intl.com/about/news-events/efc-international-acquires-inventory-sales-company/). EFC's CEO, Matt Dudenhoeffer, called it scale and diversification; ISC's president called it a platform to grow "beyond what we ever previously imagined." Two acquisitions, seven years apart, both aimed at the same target: niche master distributors and Class-C specialists who own a slice of the long tail EFC's model depends on. | Year | Event | |---|---| | 1983 | EFC International founded, St. Louis | | 2016 | Acquires Technology Components Southwest (Rivetnut products, Texas/Mexico border) | | 2021 | Recapitalized by Frontenac Company | | 2023 | Acquires Inventory Sales Company (Class-C parts, St. Louis) | | 2021–2026 | Appears on MDM's Top Fastener Distributors list five straight years, landing at #13 in 2026 | ## The unglamorous part nobody puts in the press release Here is the detail that doesn't show up on EFC's own site but does show up in the ISC deal coverage: EFC is described as "Frontenac-backed," a reference to [Frontenac Company's 2021 recapitalization of the business](https://www.frontenac.com/portfolio/efc-international/), a Chicago private equity firm. That is worth sitting with. EFC's entire commercial pitch to manufacturers is that it will absorb the low-margin, high-complexity 80 percent of a product line so the supplier doesn't have to. Absorbing that complexity means carrying inventory, staffing engineering support in a dozen markets, and integrating acquired distributors' systems, all of it capital-intensive work with thinner margins than the direct-sale business EFC's suppliers keep for themselves. Running that model at scale requires patient capital, and financial sponsors are exactly who supplies it. So the same recapitalization that let EFC buy Inventory Sales Company two years later is also a bet that the "master distributor" tier of fasteners, historically a fragmented collection of family and founder-owned regional players, can be consolidated the way retail MRO distribution already has been. EFC isn't rolling up branches the way Fastenal or Grainger has. It's rolling up the niche specialists sitting between manufacturers and everyone else, and using outside capital to do it faster than any single specialist could grow on its own. The tension in that bet is real. A model built on absorbing complexity for suppliers works only as long as EFC can integrate what it buys without becoming the same kind of unwieldy, hard-to-service organization its suppliers were trying to avoid in the first place. Five straight years on MDM's list, most recently at #13, suggests it has managed that so far. Distribution rewards the companies willing to own the parts of the supply chain everyone else finds tedious: the long-tail SKU, the small order, the regional warehouse nobody visits. EFC International built a business on being the company that wants that work, and this series exists to take that kind of unglamorous infrastructure seriously. --- # Copper State Bolt & Nut: The Family Firm That Never Sold Source: https://www.anglera.com/blog/copper-state-distributor-playbook Published: 2026-06-21 Industries: fasteners ![Copper State Bolt & Nut: The Family Firm That Never Sold](/og/hero-copper-state-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Robert Calfee III started peddling fasteners out of a 6,000-square-foot Phoenix warehouse in 1972, with six employees and no intention of ever answering to a private equity partner. Fifty-three years later, Copper State Bolt & Nut sits at No. 16 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) in the fasteners category, a ranking it has held within one spot for four straight years. In a channel where fastener distribution has spent the last decade consolidating hard, that steadiness is the story. ## The bolt house that never took a call from a banker Calfee founded the company as a straight distributor, then did something a lot of fastener houses skip: he bought a second Phoenix property and started making bolts himself. That decision, [reported by MDM in its obituary for Calfee](https://www.mdm.com/news/top-distributor-sectors/fasteners/obit-copper-state-bolt-nut-founder-robert-calfee-iii/) after his death in July 2024 at age 90, turned Copper State from a pass-through supplier into a manufacturer-distributor hybrid. Today traditional fasteners still make up close to half the business, sitting alongside a manufactured-products line, construction supplies, safety gear, and tools. Owning production gives Copper State a lever most distributors don't have: when a supplier's lead time slips, they can run a short order through their own shop instead of apologizing to a contractor. In 1982, Calfee also helped found the Western Association of Fastener Distributors, now the Pacific-West Fasteners Association. He saw the business as a trade to help professionalize, not a solo operation to build up and flip. ## Second-generation, women-owned, and proud of both Here is the detail that would surprise most people who picture a fastener warehouse: Copper State describes itself on its own site as [a second-generation, women-owned business](https://www.copperstate.com/), and it is not a branding flourish. Calfee's five daughters own the company outright. Sarah Shannon runs it as CEO. Gigi Calfee serves as distribution director and has sat on the National Fastener Distributors Association board. There is no male heir in the succession story, no outside buyer, no earnout. In an industrial distribution vertical that skews heavily male at the ownership table and has been an active hunting ground for strategic acquirers and private equity roll-ups for fifteen years, a fastener distributor that stayed both family-run and passed entirely to daughters is genuinely uncommon. Worth naming plainly: Copper State's real moat here is an ownership structure, and no competitor can replicate that by writing a check. Shannon has been explicit that this wasn't an accident. In comments to [GlobalFastenerNews](https://www.globalfastenernews.com/started-50-years-ago-copper-state-has-grown-to-30-branches-in-8-states/) marking the company's 50th anniversary, she credited her father's discipline directly: "My dad has protected the company by reinvesting in a long-term model." She also described the company's geographic growth as "almost all organic," crediting expansion to customer demand rather than acquisition: "Our customers created opportunities." ## Growth without an M&A engine That organic-growth claim shows up in the numbers. Copper State has grown from six employees to roughly 600, and from one warehouse to [39 locations across nine western and southwestern states](https://www.mdm.com/top_distributors/copper-state-nut-bolt/), according to MDM's company profile and the GlobalFastenerNews anniversary reporting. Most fastener distributors this size built their footprint by buying regional competitors and folding them in. Copper State built most of its branches from scratch, following customers into new markets rather than acquiring its way into them. It's a slower model, but it also means one culture and one system running underneath all 39 branches, instead of the integration mess that comes from bolting six acquired companies together under one name. The revenue picture backs up steady, unspectacular growth rather than a hockey-stick story: MDM's data shows Copper State at $120 million in fiscal 2020 and $154 million in fiscal 2021, a real jump, before the company stopped disclosing figures in more recent years, consistent with its private, family-held status. The rank history tells the same story of consistency rather than a sudden leap: | MDM Fasteners Rank | Year | |---|---| | 14 | 2022 | | 15 | 2023 | | 15 | 2024 | | 15 | 2025 | That is not a company sprinting up the list. It is a company that has found its altitude and is holding it, which for a family-owned distributor competing against consolidators with acquisition budgets is its own kind of achievement. ## The founder's letter still runs the culture Copper State still publishes a "Letter from the Founder" on its site, signed Martin Calfee, the name he went by. It reads less like corporate boilerplate and more like an operating manual: "If we do business today, like we did yesterday, we won't be around tomorrow." And: "Unsatisfied customers are the only customers I don't like." He listed himself as the company's "self-appointed Chairman of Customer Complaints," reachable at a phone number ending in NUTS. That voice, blunt and specific rather than polished, is presumably still the tone Shannon and her sisters are running the company by, since they chose to keep the letter live rather than replace it with something more sanitized after his death. The tension worth naming honestly: organic-only growth is slower and caps how fast a distributor can respond to a hot market, and family ownership means no capital infusion from a PE sponsor if a downturn hits working capital hard. Copper State has bet, for fifty-three years, that the trade-off is worth it. The MDM ranking suggests the bet has held. What Copper State actually sells, underneath the bolts, is trust in the catalog: that the bin has the part, the spec sheet is right, and the order ships today. Fifty years of family ownership bought them the patience to keep that promise. This is Distributor Playbooks, a series on the companies that run North America's distribution channel. --- # Burlington: From One New Jersey Coat Shop to a $11B Chain Source: https://www.anglera.com/blog/burlington-retailer-playbook Published: 2026-06-21 ![Burlington: From One New Jersey Coat Shop to a $11B Chain](/og/hero-burlington-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Burlington sits at #45 on the [National Retail Federation's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $11.48 billion in 2025 U.S. retail sales, compiled with Kantar. That number belongs to a company that started as a single leased factory building and a bet that a Brooklyn couple could out-negotiate the coat business. The path from there to here runs through a trademark fight, a private equity buyout, and a growth strategy that quietly depends on other retailers going out of business. ## A Librarian's Idea and a Factory Building Monroe Milstein had been running a wholesale and retail outerwear business with his father Abe since 1946, a trade the family had worked since Abe started it in 1924. In 1972, Monroe's wife Henrietta, a librarian by training, pushed him to buy a former coat factory and retail outlet in Burlington, New Jersey, for $675,050. She put in roughly $75,000 of the down payment from her own savings, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/burlington-coat-factory-warehouse-corporation-history/). The store sold winter overcoats at 30 to 40 percent below standard retail. First-year sales hit $1.5 million. Milstein saw the trap almost immediately: a store that only sells coats only sells well in cold months. The response became the template for the next fifty years. Burlington Coat Factory pushed into clothing, accessories, linens, a baby department, shoes, and eventually furniture, all while keeping the stripped-down "warehouse" feel of the original store and leasing existing buildings instead of constructing new ones. That combination, cheap real estate plus broad and opportunistic merchandise, is still the entire off-price playbook. ## Scaling Through the 1970s and 1980s A second store opened in Copiague, Long Island, in 1975, and Monroe's son Lazer, who became the legal owner, negotiated Saturday closures so the business could observe the Sabbath, an accommodation that mattered in an era when blue laws still shaped what stores could and couldn't do on weekends. Federal antitrust changes that same year eliminated manufacturer price-fixing on apparel, which handed off-price chains like Burlington a structural tailwind: brands could no longer dictate a floor price, and discounters could buy overstock and canceled orders at real discounts and pass them on. By 1983 the company had 31 stores and roughly $300 million in sales, and it went public as Burlington Coat Factory Warehouse Corporation. Growth compounded from there: a 438,000-square-foot national distribution center opened in 1990, sales crossed $1 billion in 1993 with 185 stores running, and that same year Burlington opened its first international location in Mexico. ## A Name It Didn't Get to Keep Clean For nearly three decades, Burlington Coat Factory's signage carried an odd disclaimer: "Not Affiliated with Burlington Industries." The textile manufacturer Burlington Industries had objected to the name overlap, and the settlement required the retailer to distance itself in print for years. The company finally shed both the disclaimer and the "Coat Factory" name in 2009, rebranding simply as Burlington, a tacit admission that coats hadn't been the point for a long time. ## Private Equity, a Round Trip to Wall Street, and a New CEO In 2006, Bain Capital bought the company for $2.06 billion. The Milstein family, who still held nearly 30 million shares, walked away with about $1.3 billion, and Monroe stepped back from the business he'd built. Tom Kingsbury took over as president and CEO in 2008 and ran the company through the leveraged-buyout years, guiding it back onto public markets in October 2013, when the stock jumped more than 40 percent on its first day of trading with 503 stores across 44 states and Puerto Rico. Burlington joined the Fortune 500 in 2016. Michael O'Sullivan, arriving from Ross Stores in 2019, has run the company since, through a pandemic that briefly closed every store and a subsequent boom in off-price shopping. ## The Growth Engine Nobody Puts on a Slide Here's the part that doesn't show up in a store tour: a meaningful share of Burlington's recent expansion has come from picking through the wreckage of other retailers' bankruptcies. When Bed Bath & Beyond liquidated every U.S. location in 2023, Burlington bought the leases on more than 40 of the shuttered stores. When Conn's collapsed in 2024, Burlington picked up 15 more. This isn't a side hustle, it's a real estate strategy: rather than compete for prime space at full market rent, Burlington waits for a big-box chain to fail and then absorbs its footprint at a fraction of the original cost. The company that survived by refusing to depend on one product category also refuses to depend on ordinary commercial real estate markets. It grows on the debris of retail failure, which is a genuinely strange and underappreciated position for a company with 1,115 stores and Fortune 500 status. That scavenging instinct, more than any single merchandising decision, explains how a coat outlet with $675,050 of borrowed and saved money became the third-largest off-price retailer in the country behind TJX and Ross Stores. Off-price retail runs on other people's inventory. Burlington figured out early that it could also run on other people's real estate. Retail history is full of companies that got big by building. Burlington got big, in part, by outlasting. --- # How Bossard Wins Fastener Distribution Without Chasing Scale Source: https://www.anglera.com/blog/bossard-americas-distributor-playbook Published: 2026-06-21 Industries: fasteners ![How Bossard Wins Fastener Distribution Without Chasing Scale](/og/hero-bossard-americas-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Bossard lands at #14 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for fasteners, with roughly $275 million in FY2025 revenue for its North American arm. That number is a rounding error next to the parent company's roughly CHF 1.07 billion in global sales. The gap between those two figures is the whole story: Bossard runs one of the more disciplined roll-up engines in fasteners, and it has pointed almost all of it at Europe and aerospace, leaving North America to grow on engineering relationships instead of acquisitions. ## A hardware store that narrowed itself into a specialist Bossard traces back to 1831, when Franz Kaspar Bossard-Kolin opened a hardware store in Zug, Switzerland, built on capital from a silk-trading business he'd married into. For roughly a century it stayed a local operation. It didn't start trading fasteners specifically until the 1930s and 1940s, then spent the postwar decades building out from regional to national reach before expanding internationally in the 1960s, according to the company's own history as summarized on [Wikipedia](https://en.wikipedia.org/wiki/Bossard_Group). It went public on the SIX Swiss Exchange in 1987. The pivotal decision came a few years later. The early-1990s recession hit Bossard's diversified portfolio hard, and management responded by cutting the business down to one thing: fastening technology. Tools, fittings, and handicraft divisions were sold off. That narrowing is the reason a 195-year-old hardware store is now a company that talks about itself in terms of C-parts management and Industry 4.0 rather than nuts and bolts on a shelf. ## The moat is the engineering, not the warehouse Bossard America's own positioning makes the model explicit: Swiss precision, engineering services, and Smart Factory Assembly sit alongside the more than 200,000 standard and branded parts available through its eShop, sourced from a supplier base the parent company puts at 4,600 manufacturers worldwide. The pitch to a manufacturing customer isn't just "we stock the part." It's inventory and C-parts management woven into the customer's own production line, aimed at cutting time to market and total cost of ownership rather than just quoting a unit price. That shows up in the industries Bossard chases in the Americas: aerospace, electric vehicles, data centers, robotics, semiconductors, medical devices. These are sectors where a fastener failure is a line-down event, not a shrug, and where a distributor that can co-design the fastening solution earns a different kind of relationship than one competing purely on price and delivery speed. Trade coverage from [Global Fastener News](https://www.globalfastenernews.com) has tracked this directly: Bossard's US sales growth in 2023 was explicitly tied to new customer projects at Tesla and other focus-industry accounts, not to opening more branches. ## An acquisition engine that mostly skips North America Bossard's growth-by-acquisition machine has been remarkably steady for over a decade, and remarkably concentrated in Europe and aerospace. | Year | Acquisition | Region / focus | |---|---|---| | 2019 | BRUMA Schraub- und Drehtechnik | Germany, fasteners | | 2020 | Torp Fasteners (to 100%) | Norway | | 2021 | Jeveka B.V. | Netherlands, Benelux | | 2022 | PennEngineering distribution business | Canada | | 2024 | Aero Negoce International | France, aerospace logistics | | 2024 | Dejond Fastening NV | Belgium, blind rivet nuts | | 2025 | Ferdinand Gross Group | Germany, Eastern Europe | Seven deals in six years, and only one of them, the 2022 PennEngineering Canadian distribution business, touches North America. Everything else has gone toward deepening Bossard's aerospace credentials and European density. [Global Fastener News](https://www.globalfastenernews.com) covered the North American deal under the headline "Bossard Looks to North America For Growth," which is notable mostly for how rarely that headline has needed writing since. The result is a two-speed company. The European and aerospace side compounds through bolt-on M&A. The roughly $275 million Americas business compounds, when it compounds, by winning engineering-led programs organically, which also means it swings harder with the industrial cycle. Bossard's own quarterly reporting has shown that split plainly: 2023 brought US sales growth running near double digits on Tesla-linked demand even as skilled-labor shortages bit into fulfillment; by late 2024, coverage described Americas sales as declining amid "subdued" demand while Europe held steady and Asia grew; by April 2026, both the US and EU were reported growing again despite ongoing trade tensions. North America is the volatile leg of the stool. ## The insight: a family name still on the door of a public company doing the rolling up The detail worth naming directly is who's running this. Bossard has been listed on the SIX Swiss Exchange since 1987, and its fastener-distribution peers, Bufab, SFS Group, Würth, Distribution Solutions Group, are themselves aggressive consolidators. Yet the person leading Bossard's M&A strategy today, CEO Daniel Bossard, still carries the founding family's surname, 195 years after Franz Kaspar Bossard-Kolin opened that first hardware store. In a sector where private-equity-backed platforms and public conglomerates are the ones doing most of the buying, Bossard is unusual for being a public company that is still, at the top, a family name, and one that is doing the consolidating rather than being consolidated. That combination, patient family-linked governance funding an active public-market acquisition strategy, is a large part of why Bossard can afford to let its smallest region grow slowly and organically while it builds share elsewhere. A company under quarterly activist pressure to hit a growth number in every geography every year would be far less comfortable with an Americas unit that occasionally shrinks. Bossard has stayed comfortable with it for at least three years running. Distribution's biggest advantages rarely announce themselves. They live in the branch network nobody sees, the catalog nobody reads cover to cover, and the ownership structure nobody asks about until the numbers stop making sense without it. --- # Amazon Business Isn't a Logistics Company. It's a Catalog. Source: https://www.anglera.com/blog/amazon-business-catalog-moat-2026 Published: 2026-06-21 ![Amazon Business Isn't a Logistics Company. It's a Catalog.](/og/hero-amazon-business-catalog-moat-2026.jpg) [Distribution Strategy Group has argued](https://distributionstrategy.com/2026/07/what-a-60-billion-amazon-business-means-for-the-8-trillion-distribution-industry/) that Amazon Business's climb past $60 billion is a scale-and-logistics story, and that distributors should concede simple orders while defending complex ones. We think that reads the balance sheet correctly and the moat wrong. The asset compounding underneath Amazon Business isn't the freight network. It's a catalog structured well enough that a buyer — human or machine — never has to ask it a second question. ## What the trade press got right DSG's framing is useful as far as it goes: Amazon Business grew from roughly $1 billion in 2015 to $35 billion four years ago to $60 billion now, more than half of it flowing through third-party sellers rather than Amazon's own inventory. Their prescription — cede commodity transactions, defend the technical and high-touch ones — is sound operator advice, and we'd sign our name to half of it. Distributors that try to out-Amazon Amazon on next-day delivery of commodity fasteners are fighting the wrong war. Where the argument stops short is in treating "complex" as a fixed category that belongs to humans by default. It doesn't. It belongs to whoever can parse the complexity fastest — and in 2026, that increasingly means a machine, not a counter rep. ## The moat is legibility, not logistics Here's the mechanism DSG's piece doesn't name: Amazon Business didn't get to $60 billion primarily by out-shipping distributors. It got there by making a catalog that both Google's shopping crawlers and its own AI systems could parse without friction — standardized GTINs, enforced attribute schemas, consistent categorization, structured spec tables — at a scale no single distributor's website can match. That catalog architecture is now the substrate every agentic-buying system is being built to read. Google's Universal Commerce Protocol went live with major retailers in January 2026. OpenAI's Agentic Commerce Protocol now powers Instant Checkout inside ChatGPT. Perplexity runs a Merchant Program that ingests structured catalogs directly. None of these systems care about your brand story or your homepage copy. They retrieve structured data, rank it, and buy against it. Forrester's own read on B2B is blunter: by the end of 2026, roughly one in five B2B sellers will be negotiating with AI-powered buyer agents that generate counteroffers dynamically rather than humans reading a quote PDF. Those agents don't call your sales rep to ask what a `1/4-20 x 1.5in stainless hex bolt, A2-70` cross-references to. They read the attribute table, or they move to the next listing that has one. ## Where distributors are actually losing the query Anglera's [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026) measures the Digital Readiness Index across four pillars and fourteen signals — pulled directly from each distributor's own live site, not self-reported. The pattern that shows up across the index is consistent: most distributor product pages are built for a human who already knows what they're looking for, not for a system trying to determine eligibility, fit, and compliance from scratch. Missing or inconsistent schema markup. Spec data buried in a PDF cut sheet instead of a structured field. GTINs and MPNs present on some SKUs and absent on others in the same category. None of that is visible to a human shopper scanning a page. All of it is disqualifying to a purchasing agent trying to decide, in milliseconds, whether your part matches the query. That's the part the "defend complexity" advice misses. A distributor can have the single best technical answer in a category — the right torque spec, the right substitution, the right lead time — and still lose the query before price or expertise ever enters the comparison, because the agent running the search couldn't confirm the match from the page. Amazon wins by default in that scenario, not because its answer is better, but because its catalog is the only one the agent could actually read. ## What "complex" means is also shrinking The deeper problem with DSG's concede-the-simple, defend-the-complex split is that AI is actively moving the line between the two categories, and it's moving in Amazon's direction. A cross-reference lookup that used to require a counter rep's tribal knowledge is "complex" only until someone publishes the compatibility data in a structured form an agent can retrieve. Once that happens, it's simple — and it's gone. Amazon's AI shopping tools are explicitly built to progressively absorb exactly this kind of transaction, which is the acceleration [Distribution Strategy Group flagged separately](https://distributionstrategy.com/2026/04/amazon-accelerates-ai-and-raises-competitive-pressure-on-distributors/) earlier this year. Standing still on "we handle the complex stuff" is not a defensible position if the definition of complex keeps eroding underneath you. ## The actual defensible move None of this means matching Amazon's fulfillment network. It means recognizing that Amazon's catalog, however vast, is shallow at the edges — in the technical, regionally sourced, third-party-seller-dependent categories where most industrial and specialty distribution actually lives. A distributor that makes its own niche's product data more complete, more structured, and more machine-parseable than Amazon's listing in that same niche does not need to win on price. It wins on being the only answer an AI agent can actually confirm. Roughly a third of catalogs across ecommerce carry the kind of gaps — missing identifiers, inconsistent attribute naming, stale specs — that cause AI systems to quietly downgrade or drop a listing rather than flag an error. That's not a marketing problem. It's a data problem, and it's fixable at a scale most distributors have never attempted, because it's never before been the thing standing between them and the sale. This is the work we built Anglera to do. Your PIM stores the data; Anglera closes the gaps that keep it from being machine-readable — structured attributes, GTIN/MPN completeness, spec tables an agent can actually parse — without ripping out what you already run, typically live in a matter of weeks. The Digital Readiness Index exists because we think this is the real battleground for 2026, and it's one where a focused distributor can out-complete Amazon inside its own category before Amazon even notices it's a fight. --- # How TTI Inc Built a Specialist Empire Inside Berkshire Hathaway Source: https://www.anglera.com/blog/tti-distributor-playbook Published: 2026-06-20 Industries: electronic-components ![How TTI Inc Built a Specialist Empire Inside Berkshire Hathaway](/og/hero-tti-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* TTI, Inc. lands at #4 on the [electronics vertical](https://www.mdm.com/top_distributors) of Modern Distribution Management's 2026 Top Distributors list, one of the largest names in a category most people outside the industry have never heard of: electronic components. No stores, no showrooms, just capacitors, resistors, connectors, and semiconductors moving by the million between manufacturers and the engineers who need them in stock, in spec, and yesterday. TTI has held that same narrow band on MDM's electronics list for years, which turns out to be the interesting part. ## A components broker becomes a Berkshire subsidiary Paul Andrews started the company in Fort Worth in 1971 as Tex-Tronics, Inc., a name it dropped two years later to dodge a trademark fight. Andrews was a former General Dynamics buyer who understood the defense and aerospace supply chain from the customer side, and he built TTI around a bet that was unfashionable at the time: carry deep, available-to-sell inventory of passive and interconnect components instead of running a pure broker model that waited on manufacturer allocation. That inventory bet, plus an early and serious commitment to formal quality management, is what let TTI become the vendor engineers trusted when a part absolutely had to be on the shelf. In December 2006, Andrews agreed to sell majority ownership to Warren Buffett's Berkshire Hathaway, with the deal closing on March 30, 2007, according to [Wikipedia's company history](https://en.wikipedia.org/wiki/TTI,_Inc.). TTI still appears on [Berkshire Hathaway's own subsidiary list](https://www.berkshirehathaway.com/subs/sublinks.html) today, one of dozens of operating companies Buffett has bought and then mostly left alone. Andrews stayed in charge for another 14 years, running the company until his death in February 2021, when Mike Morton, a 40-year company veteran, took over as CEO. No outside buyer, no private-equity operating partner parachuted in to "professionalize" the founder's shop. The succession moved sideways, from the founder to the person who had spent four decades learning the business under him. ## The unique insight: a federation, not a rollup Here is the thing that separates TTI from almost every other distributor of its size. Electronic components distribution has consolidated hard over the past two decades, and the standard playbook for a scaled acquirer is to buy competitors and fold them into one brand, one catalog, one sales force, to capture cost synergies. TTI does the opposite. Under the same Berkshire-owned parent, it operates what its own materials call the TTI Family of Specialists: TTI itself (branded as the interconnect, passive, and electromechanical specialist), Mouser Electronics, Sager Electronics, and Exponential Technology Group, each running as a distinct company with its own name, sales force, and customer relationships. Mouser is the clearest illustration of why this matters. Jerry Don Mouser founded it in El Cajon, California in 1964, TTI bought it in January 2000, and Berkshire picked up TTI (and by extension Mouser) seven years later, per [Wikipedia's account of Mouser's history](https://en.wikipedia.org/wiki/Mouser_Electronics). Mouser today runs a 100-acre campus in Mansfield, Texas, carries roughly 1.2 million SKUs from more than 1,200 manufacturers, and by 2020 ranked as the world's seventh-largest electronic component distributor in its own right, generating over $4 billion in annual revenue. It still competes in the market under its own name, still builds its own catalog and web experience, and most of its engineering customers have no reason to know it shares a parent with TTI. That is a deliberate choice: keep the specialist brands separate because the customer relationships, inventory philosophies, and even the parts of the market they serve (Mouser leans toward design engineers and smaller-quantity buyers, TTI's core business skews toward production-volume passive and interconnect supply) are different enough that merging them would destroy more value than it created. Permanent Berkshire capital is what makes that structure sustainable. A private-equity owner on a five-to-seven-year hold needs consolidation synergies to hit its return target before the exit. Berkshire has no exit. It can leave four separate, well-run specialist companies alone indefinitely, funding their inventory and acquisitions out of its own balance sheet, and collect the earnings without ever forcing a merger that would show up nicely on a slide deck but confuse the actual customer base. ## What the steady rank actually shows | MDM Electronics Rank | Year | |---|---| | #5 | 2022 | | #5 | 2023 | | #6 | 2024 | | #6 | 2025 | | #4 | 2026 | That table looks unremarkable until you place it against what happened in electronic components between 2021 and 2024: a historic semiconductor shortage that sent lead times past a year and prices soaring, followed by a brutal inventory correction as customers who had over-ordered during the panic worked down their stockpiles. Distributors who had leaned hardest into the shortage-era spot market took the hardest fall on the way back down. TTI holding a stable #5-to-#6 position through both halves of that cycle says its available-to-sell inventory model, the same discipline Andrews built the company on in the 1970s, did what it was designed to do: smooth out exactly this kind of demand whiplash rather than chase it. That plateau broke in the 2026 report, where TTI moved up to #4, its best electronics placement in the table above. The honest tension in the federation model is channel overlap. TTI, Mouser, and Sager sell into overlapping supplier lines and, at the margins, overlapping customers, and a manufacturer negotiating distribution terms can find itself dealing with three ostensibly separate sales organizations that ultimately report to the same parent. TTI has apparently decided that cost is worth paying to preserve each brand's distinct customer trust rather than force a single unified go-to-market that would be cleaner on paper and weaker in the field. Distribution rewards the companies willing to do the unglamorous work of stocking the right part, in the right catalog, before anyone asks for it, and TTI's federation of specialists is one answer to how that work gets organized without losing what made each piece of it good in the first place. --- # The Roll-Up Liability Nobody Diligences: Catalog Debt Source: https://www.anglera.com/blog/rollup-catalog-debt-diligence-2026 Published: 2026-06-20 ![The Roll-Up Liability Nobody Diligences: Catalog Debt](/og/hero-rollup-catalog-debt-diligence-2026.jpg) M&A diligence on a distributor prices EBITDA, branch density, and supplier overlap down to the decimal. It does not price what happens when two item masters, two taxonomies, and two duplicate SKU sets get pushed together and nobody owns the merge. We measured 29 PE-backed roll-ups for the Top Distributors 2026 index, and the pattern is visible in the data: the more a company grows by acquisition, the more likely its own catalog stops being something a buyer — or a customer, or a crawler — can actually see in one place. ## What diligence actually prices [QXO's $2.25 billion purchase of Kodiak Building Partners](https://distributionstrategy.com/2026/04/qxo-completes-2-25-billion-kodiak-deal-expands-into-lumber-distribution/), which closed April 1, came with a specific, quantified synergy claim: 16 of Kodiak's top 20 vendors already overlap with legacy Beacon, according to reporting on the deal from [HousingWire](https://www.housingwire.com/articles/qxo-kodiak-building-partners/). That is exactly the kind of number diligence teams are built to produce — supplier overlap, quantified to the vendor, disclosed to investors. No equivalent number exists for catalog overlap. Nobody discloses what percentage of Kodiak's SKUs already have a match in Beacon's item master, because almost nobody measures it before close. Distribution Strategy Group has covered both sides of this gap. Its ["What Private Equity Firms Want in a Distributor"](https://distributionstrategy.com/2021/07/what-private-equity-firms-want-in-a-distributor-a-look-behind-the-curtain/) piece lays out the standard platform checklist — cash conversion, management depth, ERP systems that can absorb 50 to 200 percent growth, vendor relationships without excessive concentration. Product data doesn't appear on that list. And in ["The Minefields of Building Companies through Acquisition,"](https://distributionstrategy.com/2020/11/the-minefields-of-building-companies-through-acquisition/) Bill Wade gets closer, naming "IT and accounting standardization" as one of ten integration failure points — different systems, different data quality, benefits that never materialize because nobody prioritized the merge. That's the right instinct, buried at number ten on a people-and-culture list, treated as an operational headache rather than something with a price tag before the deal closes. ## The measurable pattern We didn't set out to prove this thesis. It fell out of scoring the roll-up archetype on the same [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) we apply to every distributor in the index — four pillars, fourteen signals, all measured from a company's own live site, no self-reported claims. Of the 29 PE-backed roll-ups we classified, only four carry a published score at all. Three came back with no public catalog to sample from whatsoever. Four more looked the same way until a second verification pass found live product pages hiding one owned banner deep — the corporate parent's own site is brochure and recruiting content, and the actual catalog lives on a regional brand nobody outside the industry has heard of. US LBM is the clean example: the corporate site is spread across roughly 48 separate, locally branded building-materials sites, and the sampleable catalog we eventually found lives on one banner, Higginbotham Brothers. That's not a broken website. It's the direct, structural output of a strategy that keeps acquired brand names intact on purpose, because local reputation is worth more than a unified front end — a trade-off that's usually correct on the revenue side and invisible on the data side until someone tries to measure it. The four roll-ups that did score landed at a median of 56 — Imperial Dade at 54, Veritiv at 61, SunSource at 52, Distribution Solutions Group at 58 — barely under the 58 median across the full 200-plus-distributor index. On four data points that's not proof the model is fine; it's proof the sample is too small to know yet. What it does show, inside those four, is where roll-ups specifically bleed points. Identifier discipline split the hardest: Imperial Dade carries GTINs on 80 percent of its sampled products, against zero for the other three, despite all four running a broadly comparable acquire-and-integrate playbook. SunSource showed a 24-point spread between its richest and thinnest product page on a single storefront — triple Imperial Dade's spread — meaning even a roll-up that consolidated onto one platform can still be treating its own legacy SKUs unevenly underneath. ## Catalog debt compounds like real debt Every acquisition in a roll-up doesn't just add revenue and branches. It adds a taxonomy that classifies fasteners, or pipe fittings, or safety gear, differently from the acquirer's taxonomy. It adds attribute fields the parent's PIM doesn't have a column for. It adds duplicate SKUs under different part numbers for the same physical product, because the two companies never sold to overlapping customers before the deal made them siblings. None of that shows up on a balance sheet. All of it compounds, because the tenth acquisition inherits the reconciliation debt of the previous nine, unmerged, plus its own. That's the frame trade press coverage of these deals is missing: technical due diligence firms already price remediation cost and timeline directly into software M&A valuations and earn-outs when the target's codebase is a mess. Distribution roll-ups deserve the same discipline applied to the item master — a line item with a number, not a footnote about "system integration" buried in the 10-K's risk factors. A rough version of that number isn't hard to build: SKU overlap rate, taxonomy delta, percentage of the target's catalog that would need re-mapping before it can sit next to the parent's — an integration engineer could quote that in a week, the same way they'd quote a codebase's remediation cost. ## The payoff is real when someone does the work The counter-evidence sits inside our own four scored companies. Imperial Dade's 80 percent GTIN coverage after 97 acquisitions since 2007 isn't an accident — somebody made identifier discipline a standing integration requirement, deal after deal, rather than a one-time cleanup project. That's the difference between a roll-up whose cross-sell synergy is a slide in the investor deck and one where a shared customer can actually search both legacy catalogs and get one clean result. The item master is the thing that makes cross-sell real instead of aspirational, and it's the thing almost nobody diligences before they buy it. This is the exact gap Anglera sits in. Your PIM stores the merged catalog once you build one; we do the unglamorous work of reconciling SKUs, attributes, and taxonomies across acquired brands so that work doesn't wait for the next platform migration. For a roll-up already three or four deals into its thesis, that's not a rebuild — it's additive, and it can start from whatever flat files the last acquisition left behind. --- # New Reps Don't Have a Skills Gap. They Have a 40,000-SKU Vocabulary Gap Source: https://www.anglera.com/blog/rep-ramp-product-fluency-2026 Published: 2026-06-20 ![New Reps Don't Have a Skills Gap. They Have a 40,000-SKU Vocabulary Gap](/og/hero-rep-ramp-product-fluency-2026.jpg) Every distributor we talk to is running the same experiment: spend more on onboarding, coaching, and sales enablement, and watch ramp times barely budge. The trade press keeps prescribing better training systems. We think that's treating a symptom. The real bottleneck is that a new rep has to memorize tens of thousands of SKUs, fitments, and substitutes before a contractor will trust a word they say — and no coaching program compresses that; only better catalog data does. ## The training-industrial complex has an answer, and it's more training [Distribution Strategy Group's recent framework](https://distributionstrategy.com/2026/01/sales-onboarding-that-works-how-distributors-can-ramp-new-reps-faster-and-better/) for fixing distributor onboarding is built around three competencies: appointment setting, opportunity management, and account growth. It's a reasonable system for teaching someone how to run a sales process. It says almost nothing about teaching someone the product line they're selling. Read alongside the outlet's companion pieces on why [training doesn't stick](https://distributionstrategy.com/2025/09/the-real-reasons-distributor-sales-training-doesnt-stick-and-what-to-do-about-it/) and why busy reps stay [busy without improving](https://distributionstrategy.com/2025/09/the-sales-activity-trap-why-sales-teams-stay-busy-but-dont-improve/), the pattern is consistent: the diagnosis is always a process problem, and the prescription is always a better process. That's the trade-press consensus, and it's not wrong so much as incomplete. It assumes the limiting reagent in a new rep's performance is sales technique — discovery questions, qualification frameworks, account-growth cadences. In distribution, that's rarely the constraint. A contractor calling the counter doesn't want to be discovery-questioned. He wants to know if the 3/4-inch compression fitting he's holding cross-references to what's in stock, whether the OEM part is on back order, and what the distributor's own brand equivalent will do differently under pressure. If the rep hesitates, the call is over, and it doesn't matter how well that rep was trained to build rapport. ## The actual gap is a vocabulary problem, at industrial scale A new counter or outside rep at a mid-size MRO, electrical, or fluid-power distributor is walking into a catalog running from tens of thousands to hundreds of thousands of active SKUs, a meaningful share of them with interchangeable or alternate versions that carry different stock positions, different margins, and different rebate eligibility (a point [ProfitOptics has made well](https://www.profitoptics.com/insights/blog/the-distributor-sales-rep-has-one-of-the-hardest-jobs-in-the-industry) in describing why the counter job is harder than it looks). Gartner's 2024 benchmark puts the median time for a new B2B rep to reach baseline quota at seven to nine months — and that's an average across industries with far shallower catalogs than distribution's. Ask any branch manager off the record what it actually takes for a new hire to field a hard product question the way a tenured rep does, and the number that comes back isn't measured in months. It's measured in one to two years of pattern exposure: enough repetitions across enough SKUs to recognize fitments and substitutes on sight. No onboarding cadence shortens that, because the thing being learned isn't a skill in the coaching sense. It's a vocabulary — tens of thousands of part numbers, cross-references, and application contexts that mostly live nowhere except in a veteran's head. You can coach a rep on how to ask a qualifying question in week two. You cannot coach fifteen years of catalog exposure into week two. ## Why this is more urgent than it used to be Distribution can't out-wait this problem the way it once did, because the heads holding that vocabulary are retiring faster than they're being replaced. [Modern Distribution Management's recent analysis](https://www.mdm.com/article/technology/ai/tenure-capital-the-asset-distribution-companies-dont-know-theyre-losing/) cites Census Bureau data showing the share of wholesale-trade employment at firms where at least a quarter of the workforce is over 55 climbed from 14 percent in 2000 to more than 40 percent in 2022, against a national wave of roughly 4.1 million Americans turning 65 every year through 2027. Layer that against sales-role turnover running around 35 percent annually and an average sales-rep tenure near 18 months, and the math gets ugly fast: distributors are perpetually re-training reps who leave before they've finished learning the catalog the last training program was supposed to teach them. That's the treadmill the coaching-first playbook doesn't solve. You can install the best appointment-setting and account-growth system in the industry, and it still assumes the rep executing it already knows what's on the truck, what substitutes for what, and what the customer actually needs. When that knowledge lives exclusively in tenured heads instead of in structured, queryable data, you're not fixing ramp time — you're racing turnover with a system that only compounds value for the reps who stay long enough to memorize the catalog themselves. ## What actually collapses ramp time Flip the source of truth and the math changes. When fitments, substitutes, cross-references, and specs live in structured product data that a rep can query in seconds — not recall from memory — a second-year rep can answer a contractor's hard question with the same confidence as a fifteen-year veteran, because the veteran's advantage (instant recall of a huge catalog) stops being scarce. Onboarding stops being "memorize the catalog" and starts being what it should have been all along: teaching judgment — how to read a customer, when to escalate, how to close. That's a skill coaching genuinely can compress. Catalog memorization never was. Here's the test the trade press hasn't run: pull ramp-to-quota data by our [Top Distributors 2026 archetypes](https://anglera.com/blog/top-distributors-2026) and compare it against how catalog-rich or catalog-poor each distributor's product data actually is, using the [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) we built to measure exactly that from each distributor's live site. Nobody in the onboarding conversation has connected those two variables. We built the instrument to. That's the whole thesis behind what we do at Anglera: your PIM stores the data, we do the work of making it complete and queryable enough that judgment — not memorization — becomes the ceiling on how fast a new rep gets good. --- # The Rep-Free Buyer Doesn't Call. Your Product Page Takes the Meeting Now. Source: https://www.anglera.com/blog/rep-free-buyer-product-page-2026 Published: 2026-06-20 ![The Rep-Free Buyer Doesn't Call. Your Product Page Takes the Meeting Now.](/og/hero-rep-free-buyer-product-page-2026.jpg) Gartner's number says two-thirds of B2B buyers now want to buy without ever talking to a rep. Distribution Strategy Group has read that as a sales-org problem: fix the CRM, automate the nurture sequence, redeploy reps to strategic accounts. That diagnosis misses where the sale actually happens now. When the buyer won't take the meeting, your product detail page takes it instead — and at most distributors we've measured, the page is sending an intern to do a closer's job. ## The meeting didn't disappear, it moved The headline stat is from a [Gartner sales survey](https://www.gartner.com/en/newsroom/press-releases/2026-03-09-gartner-sales-survey-finds-67-percent-of-b2b-buyers-prefer-a-rep-free-experience) of 646 B2B buyers: 67% prefer a rep-free purchase experience. But a second Gartner release from two months later adds the detail that matters — [69% of buyers still turn to a rep](https://www.gartner.com/en/newsroom/press-releases/2026-05-20-gartner-survey-finds-sixty-nine-percent-of-b-two-b-buyers-turn-to-sales-reps-to-validate-ai-generated-insights), but only to validate research they've already done on their own, usually with an AI tool. Gartner's earlier survey put AI-tool usage during a recent purchase at 45%. The rep isn't gone. The rep has been demoted to a late-stage witness, called in after the shortlist is already built by a buyer, or a buyer's AI agent, working entirely off what's published on the site. [Distribution Strategy Group has argued](https://distributionstrategy.com/2026/03/most-b2b-buyers-prefer-rep-free-purchasing-as-ai-reshapes-sales/) that the fix is largely a sales-stack problem — a companion piece on ["marketing that works while you sleep"](https://distributionstrategy.com/2025/08/marketing-that-works-while-you-sleep-how-b2b-distributors-are-winning-with-automation/) points distributors toward automation, and a piece on why ["sales teams don't hate CRM, they hate CRM that isn't built for them"](https://distributionstrategy.com/2025/07/sales-teams-dont-hate-crm-they-hate-crm-thats-not-built-for-them/) points them toward better tooling for the reps who remain. Both are reasonable fixes for the shrinking share of the funnel where a rep still shows up. Neither one touches the 39% of buyers Gartner found placing orders over $500,000 through self-service channels alone, with no rep in the loop to route to a better CRM in the first place. ## What the rep used to paper over For most of the industry's history, the rep was a patch over bad data. A buyer calls unsure whether the online spec sheet is current, unsure whether a SKU has a substitute, unsure whether "compatible with" on the page means genuinely interchangeable or just adjacent-category — the rep checks with the plant, makes a judgment call, closes the gap with relationship and hustle. It worked because the buyer was willing to sit on hold for the answer. Take the rep out of that loop and every one of those gaps is now sitting in plain view, unmediated, for exactly as long as it takes a buyer to hit back and try a competitor. One [HumCommerce](https://humcommerce.com/knowledge-center/how-to-build-product-compatibility-cross-reference-logic-b2b-ecommerce-catalog/) client found that 30% of its inbound customer-service calls were part-identification requests a working cross-reference tool would have resolved on the page itself. [Distributor Data Solutions](https://www.distributordatasolutions.com/not-all-product-data-is-equal-the-six-things-that-decide-whether-your-catalog-sells/) frames the mechanism plainly: an incomplete record creates doubt, and doubt is where sales die. A buyer who types a competitor's part number into your search bar and gets zero results doesn't file a complaint. They just buy from the competitor, and you never see the loss on any dashboard. ## What the page has to do that the rep used to do live Strip the abstraction out of "digital transformation" and the rep-free product page has a specific job list: - Show the actual spec — dimensions, tolerances, certifications — not a PDF that 404s or a "see datasheet" dead end. - Resolve the cross-reference, so a competitor's part number lands the buyer on your equivalent SKU instead of a search page with no results. - Surface the substitute the instant the primary SKU is out of stock or discontinued, instead of leaving the buyer to guess or leave. - Be legible to the thing that's increasingly reading it before the buyer does. Structured product markup matters here in a way it didn't three years ago: [65% of pages cited by AI search tools carry schema markup](https://alhena.ai/blog/schema-markup-ai-search-ecommerce/), and a page without it is functionally invisible to the exact channel that's replacing the rep call. This is what Anglera's Digital Readiness Index actually measures — four pillars, fourteen signals, scored off each distributor's own live site rather than a self-reported survey — as part of the [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026) and its [published methodology](https://anglera.com/blog/top-distributors-2026/methodology). It's a rep-free buyer's checklist, run at scale across 200-plus distributors. ## The archetype data backs the diagnosis The pattern shows up cleanly in that index. Catalog-native distributors — built around a deep, structured SKU catalog rather than a field sales force — score structurally higher on the Digital Readiness Index than relationship-first operators, independent of revenue or headcount. That's not incidental. A catalog-native distributor's whole operating model already assumed the buyer would self-serve; the data infrastructure was built for it before "rep-free" was a term anyone used. Relationship-first distributors tend to read the same trend as a sales-enablement gap: a sharper CRM, a smarter nurture cadence, a chatbot bolted onto a product page that's still missing half its attributes underneath. That's optimization applied to the wrong layer. A better follow-up sequence doesn't fill in a missing tolerance spec — it just sends more qualified traffic to stare at the gap before they leave. ## The fix is the catalog, not the org chart None of this is an argument against fixing CRM adoption or automating marketing follow-up — those are real friction points for the reps who still get a meeting. But treating rep-free buying as purely a sales-org and automation question fixes the part of the funnel the buyer has stopped using, while the part they're actually staring at — the product detail page — stays exactly as thin as it was when a rep was standing by to compensate for it. The buyer has already decided not to call. What has to be true for you to keep the order is a catalog complete enough, findable enough, and structured enough that neither the buyer nor their AI agent needs anyone on the phone to trust it. Anglera sits on top of whatever PIM a distributor already runs and does exactly that enrichment work — closing spec gaps, building cross-references, structuring the data — without a rip-and-replace project; most builds go live inside a month, often starting from nothing more than a flat file export. The rep-free buyer isn't going to call and tell you the page fell short. They're just going to leave. --- # Product data enrichment is the cheapest growth in ecommerce Source: https://www.anglera.com/blog/product-data-enrichment-cheapest-growth Published: 2026-06-20 ![Product data enrichment is the cheapest growth in ecommerce](/og/hero-product-data-enrichment-cheapest-growth.jpg) Most growth levers cost money up front. More ad spend, more sales headcount, a new channel, a replatform. Product data enrichment is the rare one that doesn't. You already own the catalog. Making it complete enough to get found, get chosen, and get kept is the highest-return work most teams are leaving on the table. The numbers behind that are not subtle. 77% of shoppers say product information matters to their purchase, and 62% say they'll spend *more* on a product with detailed information (GS1 US). On the flip side, 46% say better descriptions would improve their experience, and nearly two in five returns happen because the item didn't match its listing (DHL's 2025 E-Commerce Trends Report). Same product, different data, completely different outcome. ## What enrichment actually means Enrichment is taking sparse, raw product information and building it into structured, accurate, channel-ready content. It's three kinds of data, not one: - **Technical** — dimensions, weight, materials, certifications, compatibility - **Marketing** — titles, descriptions, lifestyle imagery, brand copy - **Logistical** — shipping weight, packaging size, country of origin, regulatory flags The difference it makes is concrete. Here's the same jacket, before and after: | | Before | After | |---|---|---| | **Title** | Men's jacket, blue | Men's Quilted Puffer Jacket, Navy Blue, Water-Resistant Shell | | **Description** | Warm jacket. Available in multiple sizes. | Lightweight quilted puffer with a water-resistant recycled-polyester shell and 90% recycled fill. Regular fit, packable hood. Built for the commute and the outdoors. | | **Attributes** | Size only | Weight, packable dimensions, fill type, shell material, care, fit | | **Imagery** | One flat-lay | Five lifestyle, one flat-lay, one 360°, one size guide | | **Logistics** | None | Shipping weight, packaged dimensions, origin, HS code | Technically the same SKU. In search, on the shelf, and in your return rate, two completely different products. ## Where it pays off - **Search and discovery.** Engines and marketplaces match on structured attributes. More signal, better placement — without buying a single extra click. - **Conversion.** Online, your listing does the job a salesperson does in a store. When it answers the question the shopper arrived with, they buy. - **Returns.** Mismatched expectations start at the listing. Fixing the content is more durable than fixing the returns process after the fact. - **AI readiness.** Recommendation engines and shopping assistants lean on clean, structured data. Sparse listings get surfaced less, described wrong, or skipped. ## The question nobody frames well: *where does the work happen?* Everyone agrees enrichment matters. The disagreement — usually unspoken — is about where the work should live. Three answers are on the market, and the difference is the whole game. **At the exit (feed management).** Transform the data on its way out, per channel, with rules. Feeds are great at delivery and format mapping. But enrichment done here fixes the *projection*, not the product. It never writes back, so you redo the same work on every channel, and your source of truth stays thin underneath green dashboards. **In the cabinet (the PIM).** A PIM is the right place to *store* a clean record. It just doesn't *produce* one. It won't gather a missing spec, normalize twelve suppliers into one taxonomy, or write a description. Buy a bigger cabinet and the filing still lands on a person. **Upstream, written back to the source.** Do the work *before* the data leaves your single source of truth — then write the enriched result back into it. Now every channel, every marketplace, every assistant, and every system you haven't connected yet draws from one complete record. The work lands in the one place it stops repeating. "Upstream" doesn't mean "go buy a PIM." It means into whatever your source of truth is — PIM, ERP, commerce platform, or a flat file if you don't have a system yet — and then let your feed tools do the delivery they're genuinely good at. ## Enrichment is a loop, not a project The teams that win treat this as a cycle that runs continuously: 1. **Ingest** raw data from anywhere — PDFs, CSVs, supplier sheets, webpages, even customer reviews. 2. **Clean** it: dedupe, standardize units, fix formatting, reconcile conflicts. 3. **Enrich** it: fill attributes, write copy, assign granular categories, attach media and compliance. 4. **Maintain** it: watch performance, re-enrich what underperforms, keep it current as products and channel rules change. Do that once a year as a project and the catalog drifts back to thin by Q3. Run it as a loop and quality compounds instead of decaying. ## The new reader changes the math Here's why this stopped being a tidiness exercise. The audience for your product data isn't only human anymore. When an AI assistant or an agentic-checkout flow does the shopping, it reads structured data wherever it finds it — your PDP, a marketplace listing, a third-party aggregator, a distributor's copy of your SKU. You don't get to choose which surface it hits. That's exactly why exit-level enrichment falls short and source-level enrichment wins. If the enrichment only lives in the feeds you hand-tuned, you're complete on a few surfaces and invisible on the rest. Fix the product at the source, and every surface a machine might read inherits the same complete answer. ## The honest part: this is a lot of work Done by hand, enrichment runs 30 to 45 minutes per SKU. Multiply by a catalog of tens or hundreds of thousands and "just enrich it" becomes a hiring plan. That's why most catalogs sit half-finished — not because teams don't know what good looks like, but because the volume never fit the headcount. That's the line we draw at [Anglera](/): **your PIM stores the data; Anglera does the work.** We run the enrichment loop upstream — gathering, cleaning, enriching, and scoring every SKU against your standards — and write the result back into your source of truth, so it shows up complete everywhere your products get read. The cheapest growth in ecommerce only counts if someone actually does it. --- # How Mouser Electronics Became the Design Engineer's Distributor Source: https://www.anglera.com/blog/mouser-distributor-playbook Published: 2026-06-20 Industries: electronic-components ![How Mouser Electronics Became the Design Engineer's Distributor](/og/hero-mouser-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Mouser Electronics placed eighth among electronic-component distributors on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the trade publication's annual accounting of North America's largest wholesalers. The rank alone undersells what makes Mouser interesting. It is owned by Warren Buffett's Berkshire Hathaway, and it has spent two decades deliberately not competing for the business its bigger rivals chase hardest. ## A catalog house that outgrew its catalog Jerry Don Mouser started the company in El Cajon, California, in 1964 as a small electronic-parts distributor. It moved to Mansfield, Texas, in 1986 to expand, and in January 2000 it was acquired by TTI, Inc., the Fort Worth passive-components distributor Paul Andrews had built since 1971, according to [Wikipedia's entry on Mouser](https://en.wikipedia.org/wiki/Mouser_Electronics). Six years later, Andrews sold majority ownership of TTI to Berkshire Hathaway, a deal that closed in March 2007 and folded Mouser into Buffett's portfolio alongside Sager Electronics and, later, Exponential Technology Group, per [Wikipedia's history of TTI](https://en.wikipedia.org/wiki/TTI,_Inc.). Andrews ran TTI until his death in February 2021, when COO Mike Morton succeeded him. That ownership history is the first thing worth pausing on. Berkshire almost never buys distribution businesses to run them for scale-driven cost cutting. It buys them to leave them alone. Mouser has had two decades of patient, dividend-indifferent capital behind it, which matters because the bet it made with that capital cuts against how most of the sector spends money. ## The bet: engineers before factories Arrow and Avnet, the two distributors that dwarf Mouser in revenue, built their businesses on production-volume contracts: qualifying components for a customer's manufacturing line, then filling that line for years. Mouser built its business on the opposite moment in a product's life, the prototype bench. It carries more than 1.2 million SKUs from over 1,200 manufacturer brands, sells with no minimum order quantity, and ships the same day, according to [Wikipedia](https://en.wikipedia.org/wiki/Mouser_Electronics). An engineer who needs three of a part to test a board gets treated the same as a buyer ordering ten thousand. That is not a side benefit. It is the moat. Volume distributors are structurally bad at profitably picking, packing, and shipping single-digit quantities across a million-plus part numbers. Mouser built its physical and digital infrastructure specifically to do that well: a 100-acre, 1.5-million-square-foot campus in the Dallas-Fort Worth area running 216 vertical lift modules, described as the largest such automated-storage installation in North America. The company keeps adding to the breadth side of that bet too. Mouser added more than 60 new manufacturer lines in 2025 and over 9,000 new components in the first quarter of 2026 alone, according to its [press release archive on PR Newswire](https://www.prnewswire.com/news/mouser-electronics/). Being first to stock a newly released part, before design wins even exist, is how a catalog distributor earns the design win in the first place. ## Franchise trust as a second moat The other structural choice, easy to miss, is that Mouser sells exclusively as an authorized franchised distributor. It carries no gray-market or excess inventory and never competes with manufacturers on price outside the terms of a franchise agreement. That discipline shows up in the awards column rather than the earnings statement: Mouser's newsroom lists a steady stream of manufacturer honors, including Molex's Asia-Pacific e-Catalogue Distributor of the Year for an eighth consecutive year and an NXP Top Customer Count Asia award in 2025, per the same PR Newswire archive. Component manufacturers reward Mouser's channel because it generates design registrations, the moment an engineer specifies a part number into a new product, rather than just moving boxes at a discount. Design registrations are worth far more to a chipmaker than a one-time volume order, because they convert into years of repeat business once the design ships. ## The tension in the model The trade-off is real. A distributor built around prototype quantities and engineer traffic lives with more revenue volatility than one built around locked-in production contracts, and it depends on a steady, expensive stream of new product launches from manufacturers to keep the catalog fresh. Mouser has answered that by spending on content as much as on inventory, building out technical articles, project libraries, and its "Empowering Innovation Together" education program to keep engineers coming back to Mouser.com before they have a bill of materials, not after. It is a bet that owning the earliest, least monetizable moment in a design cycle pays off later, and Berkshire's ownership structure, with no pressure for quarterly production-volume growth, is exactly the kind of capital that can afford to wait for that payoff. The result is a distributor that looks nothing like the volume-scale playbook its two largest competitors run, inside a corporate parent famous for never rewriting the playbooks of the businesses it buys. Distribution's biggest advantages rarely show up on a balance sheet. They live in the catalog data, the warehouse layout, and the systems that get the right part to the right engineer first. This series looks at the companies that have built those advantages into something durable. --- # Future Electronics: The Zero-Debt Distributor Enters a New Era Source: https://www.anglera.com/blog/future-electronics-distributor-playbook Published: 2026-06-20 Industries: electronic-components ![Future Electronics: The Zero-Debt Distributor Enters a New Era](/og/hero-future-electronics-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In November 1968, Robert Miller and his partner Eli Manis opened a small electronic-parts shop in Montreal with a stake smaller than most garage startups raise today. Fifty-seven years later, Future Electronics ranks No. 7 among electronics distributors on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors), MDM's annual accounting of North America's largest distribution companies across 20 verticals, down three spots from No. 4 in the 2025 edition. It got there running a model almost nobody else in the sector uses: no bank debt, ever, and a habit of buying and holding inventory that competitors treat as a liability. ## A Partnership Bought Out Miller and Manis split the founding equity, but the partnership didn't last. In 1976, Miller bought out Manis's stake for $500,000 and became sole owner, a position he held for the next 47 years. That single transaction set the tone for everything after: no outside shareholders, no board to answer to, no public quarterly pressure to trim working capital. Future Electronics grew as a privately held company for its entire independent existence, according to the company's own history recorded on [Wikipedia](https://en.wikipedia.org/wiki/Future_Electronics), a rarity in a distribution sector where most large players are public, PE-owned, or family-controlled with outside capital somewhere in the structure. ## The Model: Buy the Parts, Skip the Bank Electronic-component distribution runs on a brutal cycle. When chips are scarce, whoever holds inventory wins design sockets; when they're abundant, whoever holds inventory eats the write-down. Most distributors manage that risk with debt facilities and just-in-time buying discipline. Future Electronics did the opposite: it stayed debt-free and leaned into holding inventory, using its own balance sheet as the shock absorber. That posture gave it something money can't buy quickly in this business, deep trust with franchise-line suppliers who need to know a distributor won't dump excess stock or blow up mid-cycle. It's the kind of operating choice that looks conservative until you remember it let a single owner compete against public giants for five decades without raising outside capital once. ## From a Montreal Storefront to 44 Countries The expansion followed the supply chain rather than any single region. Future opened a Boston office in 1972, barely four years after founding, then pushed into Huntsville, Alabama by 1988 to sit closer to the U.S. aerospace and defense component base. By the time it was acquired, the company operated roughly 170 offices across 44 countries with about 5,200 employees, per the same Wikipedia history, built on the same buy-and-hold discipline the whole way. | Milestone | Year | |---|---| | Founded in Montreal by Miller and Manis | 1968 | | Boston office opens | 1972 | | Miller buys out Manis, becomes sole owner | 1976 | | Huntsville, Alabama office operational | 1988 | | Sale to WT Microelectronics announced | 2023 | | Acquisition completed | 2024 | ## Passing the Company On In September 2023, after running Future Electronics as its sole owner for 47 years, Miller agreed to sell the company to Taiwan's WT Microelectronics for $3.8 billion, a deal WT financed in part with a $1.9 billion syndicated loan, according to trade coverage aggregated by [EE Times](https://news.google.com/rss/articles/CBMihAFBVV95cUxObmZVZzNUcWdTOFlNVFowVDBPRmpHN0hSaWNZZkRzYkk1UFEyTU5LYXQ1bVo5Q2Z2Wmg0UVh0V21GQUp6ZEM1MDlYWkZ5N3pRb3NzNk8wTDV5VnNlSGpOVVJ5b2hrenN3WjZLZVN3djd2QTFwc1RuUEQ5VVhrZ0ZERUkzbWI?oc=5). The transaction closed on April 2, 2024, ending 56 years of Future Electronics operating as a privately held, founder-run company, per reporting picked up by [Modern Distribution Management](https://news.google.com/rss/articles/CBMi1AFBVV95cUxPUlgxdFBjbkF5OUs1Snoxaldfem51UF9mcE5DcDNsdVVlcUxaTjgwU1g2anN2TkZsaDlaM0VUMm1aUHhtcHo2Y3Nrbl9jMFhwbkp0c1owd1RIWEdCUTVHOEZ5RklqTEpCSUNHNGtJaHpjQ3pBRF9KeWI2bjJJa1NkODdkTGYtNkhHN053WDF3SkY0Sk91LVNJQzZvZml0WmRYVy1tYlBXZG1hU29vcUhaSDN1aHVyZnlWeXM2MHFiT0pRY0pzZnNYOWlTY0RRdnk2NzhBOQ?oc=5). No revenue figure is public since the acquisition folded Future's results into WT Microelectronics' consolidated financials; MDM lists it as not disclosed. The last standalone number is an estimated $5.17 billion in worldwide FY2023 sales, per [ECIA's Top 50 Authorized Distributor Report](https://ecia.memberclicks.net/assets/workplace/ESNA%20Sep24%20Top%2050%20Report%20v4%20(002).pdf), consistent with a company that spent its entire history outside audited public reporting. ## The Real Tension in the Deal Here's the part that doesn't show up in either company's press materials: Future built its whole identity on debt-free independence precisely so it never had to answer to a parent's balance sheet or a public market's chip-cycle sentiment. WT Microelectronics is the opposite kind of institution, a Taiwan-listed distribution group that raises acquisition debt and reports quarterly like any other public company. Folding a 56-year-old zero-debt operator into a leveraged public acquirer is a genuine strategic experiment, not a routine roll-up. If Future's franchise suppliers valued its independence as much as its inventory depth, the thing that made it distinctive is now structurally gone, even if the branch network and brand stay intact. Early signals suggest the operating model is surviving the transition, at least visibly. Future Electronics opened a new Montreal-area headquarters in December 2025, added Quectel as a new distribution franchise across EMEA in 2026, and picked up Littelfuse's 2025 Americas High Volume Distributor of the Year award, per recent trade coverage tracked through [Google News](https://news.google.com/rss/search?q=%22Future%20Electronics%22%20revenue%202024%20OR%202025&hl=en-US&gl=US&ceid=US:en). Suppliers are still signing new lines with it and still handing it awards, which is exactly what you'd expect if the acquirer is deliberately leaving the machine alone. Whether that restraint holds for the next decade, through a full semiconductor down-cycle under public ownership, is the question worth watching. A company that spent 56 years proving debt-free inventory discipline was a moat just joined a parent built on the opposite instinct. This series looks at the companies that make North American distribution work, one branch network, one supplier relationship, one balance sheet decision at a time. --- # Family Dollar: The Small-Box Chain Two Giants Fought Over Source: https://www.anglera.com/blog/family-dollar-retailer-playbook Published: 2026-06-20 ![Family Dollar: The Small-Box Chain Two Giants Fought Over](/og/hero-family-dollar-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Family Dollar ranks #43 on the National Retail Federation's [Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, compiled with Kantar, on $11.91 billion in 2025 U.S. retail sales. That figure sits inside a much longer story: a chain built on the radical simplicity of a fixed price ceiling, one that grew for five decades before becoming the prize in one of retail's more instructive bidding wars. ## A factory sale funds a hunch Leon Levine was 22 when he opened the first Family Dollar store in November 1959, in the 1500 block of Central Avenue in Charlotte, North Carolina. He'd already lived a compressed apprenticeship in retail: his father died when he was 12, and when his older brother Sherman was drafted in 1951, teenage Leon took over running the family's general store in Rockingham while still attending school. In 1956 the brothers bought a chenille bedspread factory in Wingate; two years later they sold it. With that money in hand, Levine visited a dollar store in Kentucky, liked what he saw, and came home to build his own version, with merchandise capped at $2 an item, according to [Leon Levine's biography on Wikipedia](https://en.wikipedia.org/wiki/Leon_Levine). The format traveled well. Family Dollar reached South Carolina in 1961, Georgia in 1962, Virginia in 1965. Charlotte alone had fifty stores by 1969. The company went public in 1970 at $14.50 a share, and by 1979 it operated roughly 380 stores across eight states, per [Wikipedia's history of Family Dollar](https://en.wikipedia.org/wiki/Family_Dollar) and [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/family-dollar-stores-inc-history/). ## The price ceiling that had to bend Fixed low prices are a clean idea until the surrounding economy stops cooperating. In the mid-1970s, the textile, tobacco, and furniture industries that employed much of Family Dollar's customer base collapsed, and profits fell fifty percent in 1974 and 1975. Management's answer was to let the ceiling rise, first to $3, then to abandon a hard cap altogether, while tightening inventory controls and pushing into new states. Sales reached $151 million by 1979, and the company bought 40 Top Dollar stores to add scale. The next threat had a name: Wal-Mart. As the Arkansas chain expanded through the South in the 1980s, Family Dollar's same-store sales fell ten percent in 1987. New CEO Ralph Dillon answered with a blunt "will not be undersold" pricing policy and a swing back toward private label and manufacturer overruns, which lifted sales ten percent within two months. It's a pattern worth noting for any category captain watching a bigger rival arrive in its backyard: the fix wasn't a new format, it was a faster, more disciplined version of the original one. ## Scale, then a changing of the guard The 1990s and 2000s were the chain's clearest growth years. Sales passed $1 billion in 1992. Howard Levine, Leon's son, returned to the company in 1996, became president in 1997, and took over as chairman and CEO when his father retired in 2003, the same year Family Dollar opened its 5,000th store, in Jacksonville, Florida, after 30 consecutive quarters of record results. The company had joined the Fortune 500 the year before. By the end of the 2000s, roughly 3,500 new stores had opened, built on a small-box format, typically 6,000 to 8,000 square feet, that let Family Dollar plant flags in rural crossroads and dense urban blocks that superstores skipped entirely. ## The bidding war That footprint eventually made Family Dollar a target rather than just a competitor. Activist investor Nelson Peltz's Trian Fund Management tried an unsuccessful takeover in March 2011 at $55 to $60 a share. In June 2014, Carl Icahn disclosed a 9.4 percent stake and pushed for an immediate sale. Dollar Tree moved first, offering $74.50 a share ($8.5 billion) that July. Dollar General countered in August at $78.50 a share, a materially higher number. Family Dollar's board took the lower bid anyway, citing the antitrust exposure of combining the two largest dollar-store chains in the country. Shareholders approved the Dollar Tree deal in January 2015. It's a clean case study for any strategy team: the highest bid on the table is not always the winning bid once regulatory risk is priced into deal certainty. A board choosing $8.5 billion in hand over $8.9 billion that might never clear review isn't leaving money on the table, it's discounting the value of a deal that closes. ## The insight: acquisition isn't the finish line Here's the part the press releases from 2014 don't tell you. A decade after Dollar Tree paid $8.5 billion for Family Dollar, it sold the chain to Brigade Capital Management and Macellum Capital Management for $1 billion, a deal announced in March 2025 and completed that July, following waves of store closures. The gap between those two numbers is the real lesson of this history: winning the bidding war is not the same as winning the integration. Dollar Tree got the store count, the real estate, the customer base built over 65 years, and still struggled to make the combined company work as one operating model. A chain built on a single, disciplined idea, a hard price ceiling that flexed only when it had to, turned out to be hard to fold into a different chain's playbook without losing the thing that made it valuable in the first place. Retail history keeps circling back to unglamorous fundamentals: where the stores sit, what's on the shelf, and whether the systems behind both can actually merge when the deal closes. --- # How DigiKey Built an Electronics Empire Without Branches Source: https://www.anglera.com/blog/digikey-distributor-playbook Published: 2026-06-20 Industries: electronic-components ![How DigiKey Built an Electronics Empire Without Branches](/og/hero-digikey-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* DigiKey lands at #6 in the electronics vertical on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual accounting of North America's largest distribution companies. What separates DigiKey from the distributors around it, and from most of the vertical, is what it refused to do to get there. No branch network, no public stock ticker, no relocation out of a town of roughly 8,000 people in northern Minnesota. ## A Morse code side project with too much leftover inventory DigiKey traces back to 1972, when Ronald Stordahl, an electrical engineer and amateur radio operator, started selling kits that helped ham operators generate cleaner Morse code signals. The kits sold slower than the parts inside them. Stordahl noticed customers wanted the components on their own, so he pivoted to mail-order electronic parts sales, according to [Wikipedia's account of the company's history](https://en.wikipedia.org/wiki/Digi-Key). That accidental pivot, selling the raw material instead of the finished kit, is the same logic that still runs the business more than fifty years later: DigiKey doesn't design anything. It stocks everything and gets it to the engineer's bench faster than the alternative. ## The single-warehouse bet Most of the distribution channel wins through geography: branches near customers, regional hubs, trucks running short routes. DigiKey built the opposite model. Rather than open a chain of local stocking points, it kept doubling down on one location: Thief River Falls, a town far from any major interstate or airport hub. The company built what was, at the time, Minnesota's largest building there, then added a 2.2 million-square-foot expansion that opened in August 2022, bringing total facility space past 3 million square feet, according to [DigiKey's own company facts page](https://www.digikey.com/en/resources/about-digikey). The bet only works if automation erases the distance penalty. DigiKey's pitch to customers isn't "we're close to you," it's "we can process your order, however small, in minutes and ship it same day from wherever we are." The company says it handles more than 6.5 million orders a year from a footprint that stocks upward of 17 million components from roughly 3,000 manufacturers. That's a company betting that a warehouse's processing speed matters more than its zip code, a wager most of the channel hasn't made because most distributors don't sell a catalog this deep to customers this fragmented. ## Selling the long tail, one unit at a time The other half of the model is who DigiKey sells to. Arrow and Avnet built their scale chasing large production runs and franchise agreements with OEMs buying in volume. DigiKey built its catalog for the opposite customer: an engineer who needs eleven of one resistor value for a prototype, wants it shipped tomorrow, and doesn't want to talk to a salesperson to get it. No minimum order, a search interface built for parametric filtering rather than account-rep relationships, and inventory breadth deep enough that the obscure part is usually in stock. That's a genuinely different business than the volume-production distributors ranked near it on MDM's list, even though all of them get counted in the same electronics category. In 2020, DigiKey extended that catalog logic into a marketplace layer, letting vetted third-party sellers list industrial and automation products, from pneumatics to machine safety gear to MRO supplies, [directly on digikey.com](https://www.digikey.com/en/marketplace). DigiKey doesn't hold that inventory. It rents its search traffic and reputation to partners in exchange for expanding what a customer can buy in one session, without expanding what DigiKey itself has to warehouse. ## Still privately held, in a sector that got rolled up The unique thing about DigiKey's ownership is what didn't happen. Much of electronics distribution consolidated hard over the past two decades. Mouser Electronics has been under Berkshire Hathaway's TTI since 2007. Arrow and Avnet are public companies answering to quarterly guidance. DigiKey stayed privately held by the Stordahl family, run day to day by longtime president Dave Doherty, and never sold a stake to a strategic buyer or private equity sponsor. That's a real strategic choice, not an accident of size: staying private lets DigiKey keep reinvesting in a single capital-heavy facility on a multi-decade horizon instead of a model built around next quarter's numbers. That patience gets tested by a boom-bust cycle the model can't fully dodge. DigiKey's revenue, per Forbes' tracking of the company as one of [America's largest private companies](https://www.forbes.com/companies/digi-key-electronics/), rode the pandemic-era component shortage up sharply, then came back down as customers worked through the inventory they'd hoarded. | Fiscal year | Revenue | |---|---| | 2022 | $4.7B | | 2023 | $5.1B | | 2024 | $4.0B | | 2025 | $3.5B | A catalog built for small, frequent orders should be more insulated from destocking swings than a distributor living on large franchise contracts. DigiKey's numbers show it wasn't fully insulated, just less exposed. That's the honest tension in the model: broad reach into prototyping and low-volume buying smooths the cycle, it doesn't cancel it. Distribution rankings like MDM's tend to flatten very different businesses into one list. DigiKey's placement is a reminder that the real differentiator sits underneath the number: a catalog, a warehouse, and the decision of who gets to place the smallest order without apologizing for it. --- # Couche-Tard: How a Quebec Corner Store Ate the Convenience Industry Source: https://www.anglera.com/blog/couche-tard-retailer-playbook Published: 2026-06-20 ![Couche-Tard: How a Quebec Corner Store Ate the Convenience Industry](/og/hero-couche-tard-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Alimentation Couche-Tard ranks #44 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, with $11.58 billion in 2025 U.S. retail sales, according to the National Retail Federation's ranking compiled with Kantar. That number covers only its American footprint. Globally the company runs roughly 17,300 stores across 27 countries, most of them wearing the Circle K name it didn't invent and didn't own until 2003. ## A Store That Never Closed Alain Bouchard opened his first convenience store in Laval, Quebec, in 1980. Quebec's dépanneurs, small neighborhood shops that stayed open when the big grocery chains locked up for the night, were already a local institution, and Bouchard built his business on the same premise: be open when nobody else is. In 1985 he bought eleven stores that already carried the name "Couche-Tard," Québécois slang for a night owl, and merged them with his Montreal locations. The name stuck because it described the business model exactly. What followed was not organic growth so much as a two-decade buying spree through other people's distress. In 1993 Couche-Tard picked up 54 Mac's and La Maisonnée stores from Silcorp. In 1997 it absorbed C Corp, a Provigo subsidiary holding the Provi-Soir, Winks, and Red Rooster banners, pushing its Canadian count past 600 outlets. By 1999 it had folded Dépan-Escompte and Provi-Soir under one Couche-Tard banner. The company was still a Quebec story. That changed fast. ## Crossing the Border by Buying the Wreckage Couche-Tard's U.S. entry in 2001, 172 Bigfoot stores, was a toe in the water. The real move came in 2003, when it bought Circle K from ConocoPhillips for $830 million. Circle K was not a healthy asset changing hands. Fred Hervey had founded it in El Paso, Texas, in 1951 by renaming three Kay's Food Stores, and under CEO Karl Eller it grew into the country's second-largest convenience chain by the late 1980s, more than 4,600 stores. Then it overreached on debt during the leveraged-buyout era and filed Chapter 11 in May 1990. It passed through Investcorp, then Tosco, before landing at Couche-Tard, a company one-tenth its former size buying a brand with three times the name recognition. That sequence, buy the wounded market leader, is the pattern that explains almost every major deal Couche-Tard has made since: | Year | Acquisition | What it added | |---|---|---| | 2003 | Circle K (from ConocoPhillips) | ~830M USD, the brand that would eventually replace all others | | 2012 | Statoil Fuel & Retail | $2.8B, 2,853 stores across Scandinavia and Eastern Europe | | 2015 | The Pantry (Kangaroo Express) | $860M, a struggling Southeast U.S. chain | | 2016 | CST Brands | $3.78B, ~2,000 stores, the largest deal in company history | | 2023 | 1,600 TotalEnergies stations | Germany and the Netherlands | | 2024 | 270 GetGo stores (Giant Eagle) | Pittsburgh-area density | ## One Name, Every Continent For most of its life Couche-Tard operated as a holding company for other people's brand names: Mac's in Canada, Statoil in Norway, Kangaroo Express in the Carolinas. Starting in 2015 it began the slow, expensive work of converting nearly all of them to Circle K, betting that a single global brand was worth more than the accumulated local goodwill of a dozen regional ones. It is a bet few convenience operators have had the balance sheet, or the nerve, to make at this scale. Most roll-ups keep acquired banners alive indefinitely because rebranding thousands of storefronts is slow and disruptive. Couche-Tard treated brand unification as core infrastructure work, the same category as supply chain or point-of-sale systems, not a marketing nice-to-have. ## The Deals That Didn't Happen Not every swing connected, and the misses are as instructive as the hits. In 2010 Couche-Tard ran an unsolicited proxy fight for Casey's General Stores and lost. In 2020 it chased Speedway's roughly 3,900 stores and was outbid by 7-Eleven's parent at $21 billion. Then, in a reversal that shows how far the company's ambitions had grown, Couche-Tard itself made an unsolicited approach in 2024 to acquire Seven & I Holdings, the Japanese parent of 7-Eleven, in a deal reported at roughly $47 billion, before withdrawing the offer in 2025 amid antitrust friction and management resistance in Tokyo. A company that entered the U.S. market in 2001 with 172 Bigfoot stores had, within a generation, positioned itself to attempt the largest foreign acquisition in Japanese corporate history. The unglamorous insight here, one that doesn't show up in the corporate "our story" copy, is that Couche-Tard's actual core competency was never the convenience store. It is acquisition integration at a scale most retailers never attempt: buying distressed or divested networks during downturns, in bankruptcy, in an oil-price bust, in a private equity exit, and then running the unglamorous multi-year work of unifying systems, supply contracts, and signage. Alain Bouchard, now executive chairman, built a company that treats M&A as its primary growth engine and store operations as the thing that has to work well enough to make the next acquisition financeable. Every one of those thousands of Circle K stores runs on the same unglamorous backbone every retailer depends on: a supply chain, a point-of-sale system, and a product catalog someone has to keep accurate at scale. This series keeps returning to that infrastructure, one company's history at a time. Sources: - [Alimentation Couche-Tard — Wikipedia](https://en.wikipedia.org/wiki/Alimentation_Couche-Tard) - [Circle K — Wikipedia](https://en.wikipedia.org/wiki/Circle_K) - [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) --- # WPG Americas and the Holding Company That Competes With Itself Source: https://www.anglera.com/blog/wpg-americas-distributor-playbook Published: 2026-06-19 Industries: electronic-components ![WPG Americas and the Holding Company That Competes With Itself](/og/hero-wpg-americas-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* WPG Americas placed third in electronics on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual accounting of North America's largest distributors across 20 verticals. That is a strong finish for a company that did not exist until November 2007, entering a component-distribution market that American mega-distributors had owned for generations. The explanation is not a scrappy-startup story. It is that WPG Americas is the US-facing tip of a Taiwanese holding company built on a structural idea almost nobody else in electronics distribution uses. ## A young brand, an old fight Founded in San Jose in 2007, [WPG Americas Inc. (WPGA)](https://wpgacorp.com/about/) is a member of WPG Holdings, a Taipei-listed distributor (TSE:3702) that calls itself the largest electronics distributor in the Asia-Pacific region. WPG Holdings put its 2024 revenue at $27.4 billion in the [press materials WPGA distributes to media](https://wpgacorp.com/wp-content/uploads/2025/12/WPGA_XMOS_PR_121625.pdf), up from the $21.55 billion the parent [reported for 2023](https://wpgacorp.com/wp-content/uploads/2024/05/WPG-PR_English-version_051424.pdf) — roughly 5,000 staff across 75 sales offices worldwide, franchising close to 250 supplier lines. WPGA is that global machine's chosen vehicle for cracking a US semiconductor-distribution market long dominated by a small number of entrenched American names. Eighteen years is not long to go from zero to a top-three electronics ranking on MDM's list. It only makes sense once you look at how the parent is built. ## The insight: a holding company designed to compete with itself WPG Holdings does not run one distribution brand. Its own literature describes operating through four separate, competing component-distribution groups — WPIg, SACg, AITg and YOSUNg — each signing its own supplier franchises and running its own sales force. That is unusual. Arrow and Avnet each sell under one name. WPG Holdings deliberately keeps multiple brands under one roof, letting them chase competing chip lines and even competing customers, while sharing the parent's balance sheet, logistics network and capital behind the scenes. The commercial logic is straightforward once you say it out loud: semiconductor suppliers often refuse to grant the same distributor two competing product lines, or two suppliers refuse to sit inside the same sales channel. A single mega-brand runs into that ceiling constantly. A holding company with four legally distinct distributor brands does not — it can hold franchises that would otherwise conflict, simply by housing them in different subsidiaries. WPG Holdings calls this coexistence "co-opetition" in its own materials, and it has let the group represent far more of the supplier universe than one brand could alone. WPG Americas is that model's newest limb: rather than clone all four Asian brands in the US, the parent built one dedicated North American entity and pointed its balance sheet at it. ## Winning narrow, not broad WPGA has not tried to out-scale Arrow or Avnet on breadth. It organizes itself around four solution areas — AIoT, embedded computing, lighting and power, and memory and storage — and backs them with an in-house [Innovation Technical Center](https://wpgacorp.com/about/) staffed by applications engineers who work design-in problems across those categories before a socket is even won. That is a bet on depth over catalog size: fewer categories, more engineering hours per design, and a supplier-relationship style built for co-development rather than pure box-moving. It's the same playbook value-added distributors have chased for decades, but WPGA is running it with a $27-billion parent's balance sheet and Asian supply-chain relationships behind it, which is a different cost structure than a scrappy regional player trying the same trick. ## The 2025 line-card sprint That technical focus shows up in what WPGA signed in 2025 alone. It added [Credo](https://wpgacorp.com/wp-content/uploads/2025/12/WPGA_XMOS_PR_121625.pdf) for high-speed optical and copper connectivity aimed at data-center buildouts, [indie Semiconductor](https://wpgacorp.com/wp-content/uploads/2025/12/WPGA_XMOS_PR_121625.pdf) for automotive semiconductors, [MemryX](https://wpgacorp.com/wp-content/uploads/2025/12/WPGA_XMOS_PR_121625.pdf) for an AI-powered industrial compute box built on Advantech's UNO platform, and closed the year with [XMOS](https://wpgacorp.com/wp-content/uploads/2025/12/WPGA_XMOS_PR_121625.pdf) for intelligent IoT system-on-chip designs. Four supplier wins in twelve months, all clustered around data-center interconnect, automotive silicon, and edge AI compute — the exact categories where design-in support matters more than shelf inventory. That is not a broad-line distributor restocking its catalog. It's a technical specialist stacking bets on where semiconductor demand is actually growing. ## The trade-off worth naming The same structure that gives WPGA its edge also caps its independence. Its capital, its strategic direction, and its supplier-negotiation leverage all run back through Taipei. A holding company built to hold multiple competing brands can move fast when a category gets hot, as the 2025 signings show, but a US subsidiary inside that architecture will always be executing someone else's global portfolio strategy rather than setting its own. For a distributor whose whole pitch to suppliers is technical depth and design partnership, that's a real tension: the deeper WPGA gets into any one customer relationship, the more that relationship's fate depends on decisions made an ocean away. Distribution rankings like MDM's measure revenue and rank, but the real story sits underneath: the catalogs, the branch networks, the supplier line cards and the unglamorous plumbing that decides which components actually reach the engineers who need them. --- # Ulta Beauty: How a Chicago Drugstore Bet Built a Beauty Giant Source: https://www.anglera.com/blog/ulta-retailer-playbook Published: 2026-06-19 Industries: beauty ![Ulta Beauty: How a Chicago Drugstore Bet Built a Beauty Giant](/og/hero-ulta-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Ulta Beauty ranks #41 on the [NRF Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $12.39 billion in 2025 U.S. retail sales, the National Retail Federation's annual ranking compiled with Kantar. That number represents the payoff of a bet a former drugstore executive made in 1989, when he decided the biggest problem in beauty wasn't the products. It was the floor plan. ## A drugstore man's answer to a retail gap Richard E. George had spent years running Osco Drug, one of the Midwest's biggest drugstore chains, before he left in 1989 to chase an idea. Beauty shopping, as he saw it, was scattered across three disconnected worlds: mass-market drugstore shelves, department-store prestige counters staffed by brand reps, and standalone hair salons. No retailer combined them. George raised $11.5 million in venture capital, pulled in fellow Osco executives, and in early October 1990 opened five stores in the Chicago suburbs under the name Ulta3, shorthand for "a third option" beyond drugstore and department store beauty, according to [Wikipedia's account of the company's founding](https://en.wikipedia.org/wiki/Ulta_Beauty). The first location sat in a shopping center called High Point Centre in Lombard, Illinois. The early format was already the whole idea in miniature: mass brands, prestige brands, and a working salon, all under one roof, all self-service except the chairs. George left the company in 1995, and cofounder Terry Hanson took over as CEO. The business spent the rest of the decade proving out the model store by store across the Midwest, unglamorous work with no national press attached to it. At the end of 1999, the company dropped the "3" and became simply Ulta. ## The long, quiet build to Wall Street Ulta didn't go public until October 25, 2007, on Nasdaq under the ticker ULTA, nearly two decades after George's original plan. That gap matters. While Sephora arrived in the U.S. in 1998 backed by LVMH and department-store beauty counters had a century of brand relationships behind them, Ulta grew from a standing start in strip malls and off-mall real estate, the kind of unglamorous locations department-store chains never touched. It was cheaper to lease, easier to scale, and it let Ulta build a footprint that eventually outran both rivals in raw store count. By 2013, the company had a real national footprint but a strategic ceiling: it still leaned heavily on mass and mid-tier brands and had struggled to win over the true luxury names that anchored Sephora's draw. That's the year Mary Dillon, formerly of McDonald's and U.S. Cellular, took over as CEO, [according to her Wikipedia biography](https://en.wikipedia.org/wiki/Mary_Dillon_(businesswoman)). Dillon's tenure, which ran through 2021, is the pivot point in Ulta's history: the company added long-resistant prestige brands, expanded its Ultamate Rewards loyalty program (launched in 2014), and pushed hard into e-commerce and social-driven discovery. The additions worked because they didn't replace the mass assortment, they sat next to it, preserving the original three-tier promise George had sketched out in 1989. ## The part that isn't in the press releases Here's the detail that gets skipped in most tellings of Ulta's rise: the salon was never a side amenity. It was the retention engine. A haircut or brow appointment is a scheduled, recurring reason to return to a specific physical store, something no amount of product marketing reliably generates on its own. Pair that recurring-visit habit with a loyalty program that, per public reporting, now captures the overwhelming majority of Ulta's transactions, and the company looks less like a classic specialty retailer and more like a subscription business wearing a retail store's clothes. Competitors have spent years trying to copy the assortment. Almost none have copied the chair. That structural advantage is also why Ulta could absorb an unusual number of format experiments without losing its core identity. The company ran hundreds of shop-in-shops inside Target starting in August 2021, a partnership that grew to roughly 600 locations before winding down in 2025, short of the 800-store goal both companies had set. It opened its first store outside the U.S. in Kuwait in 2025, entered Canada, and in July 2025 acquired UK beauty retailer Space NK, giving it a physical foothold in Europe for the first time, [per Wikipedia's entry on Space NK](https://en.wikipedia.org/wiki/Space_NK). None of those bets required rebuilding the store model. They extended it. ## A leadership handoff, not a reinvention Dave Kimbell, who succeeded Dillon as CEO in 2021, retired in January 2025, and longtime COO Kecia Steelman was promoted into the top job, a continuity choice rather than a turnaround hire. That's a telling contrast with 2013: Ulta's board didn't need an outsider to shake up the format this time, because the format built by George, refined by Dillon, and scaled through three tiers of brands under one roof has proven durable across three decades, two recessions, and the entire rise and partial retreat of mall-based retail. Sources: [Ulta Beauty on Wikipedia](https://en.wikipedia.org/wiki/Ulta_Beauty), [Mary Dillon on Wikipedia](https://en.wikipedia.org/wiki/Mary_Dillon_(businesswoman)), [Space NK on Wikipedia](https://en.wikipedia.org/wiki/Space_NK), [Ulta Beauty's company mission and history page](https://www.ulta.com/company/about-us), [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers). Retail infrastructure rarely gets the credit it deserves, and Ulta's story is a reminder that the unglamorous parts, a strip-mall lease, a salon chair, a rewards card swipe, can end up mattering more than the products on the shelf. This profile is part of Anglera's Retailer Playbooks series, looking at the histories and operating models behind America's largest retailers. --- # The product-data metrics MRO & Industrial teams should actually track Source: https://www.anglera.com/blog/mro-industrial-metrics Published: 2026-06-19 Industries: mro-industrial ![The product-data metrics MRO & Industrial teams should actually track](/og/hero-mro-industrial-metrics.jpg) Most MRO and industrial distributors can tell you SKU count to the decimal. Few can tell you what percentage of those SKUs have a complete, buyer-usable spec sheet, or how much revenue that gap costs every month. This is a field guide to the metrics that actually connect product data quality to dollars, plus the ones you should stop reporting on. ## Start with a baseline, not a goal Before you fix anything, measure it. Pull a random sample of 200-300 SKUs across your top revenue categories (bearings, fasteners, safety, electrical, fluid power — whatever mix you carry) and score them against the attributes your buyers actually filter and search on: dimensions, material, tolerance, load rating, certification, compatible part numbers. That sample becomes your baseline. Everything below gets measured against it, not against a vague sense that "the catalog needs work." ## The core metric set | Metric | Leading or lagging | What it shows | How to measure it | |---|---|---|---| | Attribute completeness rate | Leading | % of SKUs with all category-required attributes filled and quality-scored (not just non-blank) | Pull from your PIM or enrichment layer; define "required" per category, not globally — a hex bolt and a gearbox need different fields | | On-site search zero-results rate | Leading | Buyers searching for something your catalog can't surface, often due to missing synonyms, part-number crosswalks, or attribute gaps | Site search analytics (Algolia, Bloomreach, Klevu, or raw query logs) filtered to queries returning 0 or near-0 results | | PDP conversion rate | Lagging | Whether the product page itself closes the sale once a buyer lands there | GA4 or your analytics platform: purchases (or RFQ/add-to-cart for quote-based flows) ÷ PDP sessions, segmented by category and by data-completeness tier | | Organic clicks to PDPs | Leading/traffic | Whether product pages are indexable, specific, and matchable to real search intent (part numbers, spec queries) | Google Search Console, Page filtered to `/products/` or PDP path, tracked by category cohort over time | | AI referral and citation traffic | Leading/traffic | Whether your PDPs are structured well enough to be pulled into AI answer engines as one more discovery surface alongside search and marketplaces | Referrer segments in GA4 for known AI user agents/domains, plus manual spot-checks asking a few tools sourcing questions in your categories | | Return rate by reason code | Lagging | Returns split into "wrong item due to bad data" vs. "damaged," "changed mind," etc. — the first is a data problem, the rest aren't | OMS/warehouse return reason codes, not aggregate return rate — aggregate hides the signal | | AOV and attach rate | Lagging | Whether complete data (compatible parts, kits, accessories, cross-sell fields) is driving bigger baskets, not just more baskets | Order data: average order value and % of orders with 2+ line items, segmented by whether the anchor SKU had complete cross-sell attributes | | Support ticket load per SKU category | Lagging | Whether buyers are calling or emailing to ask questions the PDP should have answered | Ticket tagging by category/SKU in your helpdesk, normalized per 1,000 orders in that category | Two of these are worth separating out because they're the closest thing to real-time signal: attribute completeness and zero-results rate. Both move within days of an enrichment push, before conversion or returns have had time to catch up. Treat them as your dashboard's early-warning system, and treat conversion, returns, AOV, and support load as your proof-of-value metrics — the ones finance actually cares about. ## Vanity metrics to skip Total SKU count tells you catalog size, not catalog quality — a distributor with 40,000 complete SKUs will out-convert one with 120,000 half-filled ones every time. Raw attribute *count* per SKU is similarly hollow; ten low-value attributes filled is worse than five high-value ones filled correctly. Blog or category-page pageviews with no conversion attached are traffic vanity. And "AI mentions" as a standalone brag number, without a referral-to-conversion path behind it, is the newest version of the same trap — interesting, not actionable, and it should never be the headline metric in a board deck. ## A concrete example Take a mid-market power-transmission and bearings distributor: roughly 85,000 active SKUs sourced from 40-plus manufacturers, each shipping data in a different format — some full spec sheets, some a PDF and a part number. A baseline attribute-completeness pull shows 54% of SKUs missing bore diameter, load rating, or a usable material spec — the exact fields buyers filter on. On-site search logs show a 22% zero-results rate, well above the roughly 10% threshold industry benchmarks flag as worth investigating and closer to the range associated with [legacy, lower-quality search setups](https://www.bloomreach.com/en/blog/how-to-fix-zero-search-results-in-ecommerce). Support tickets tagged "spec question" run high in exactly the categories with the worst completeness scores. The distributor enriches the bottom 40% of SKUs by completeness score first — not the whole catalog at once, because that would make attribution impossible. Six weeks later: zero-results rate on enriched categories drops meaningfully, PDP conversion on those same categories rises versus a same-period comparison of untouched categories, and spec-question tickets in those categories fall. Sales dollars from enriched vs. non-enriched SKUs, normalized for existing traffic and seasonality, is the number that goes in front of finance — not "we improved 34,000 attributes." ## Attributing change honestly Product data work rarely happens in a vacuum — promotions, seasonality, and pricing changes move the same numbers. Three disciplines keep the attribution honest. First, phase the rollout by category or SKU tier rather than enriching everything simultaneously, so you always have an untouched comparison group in the same time window. Second, measure at the category level, not the individual SKU, for statistical power — a handful of SKUs won't produce a clean signal. Third, hold traffic sources constant when possible; if organic clicks to a category are also rising because of unrelated SEO work, isolate PDP conversion and zero-results rate, which are less contaminated by traffic-source shifts than raw revenue is. Digital channels are already where distribution is heading — Fastenal's [e-business sales grew 18.2% year-over-year in Q4 2025](https://www.digitalcommerce360.com/2026/01/20/fastenal-ecommerce-sales-q4-2025/), outpacing overall company growth — and buyers who search and don't find what they need mostly don't call to ask; they [leave and buy elsewhere](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics). None of that traffic converts if the data behind it can't answer the buyer's question. This is the measurement discipline Anglera is built around. Your PIM stores the data; Anglera continuously scores, gap-fills, and enriches it against the exact attributes your categories need, so the completeness and zero-results metrics above move in weeks, not quarters — and you can trace the lift straight back to the SKUs that changed. --- # AI demand planning is coming. Your attribute layer decides if it works. Source: https://www.anglera.com/blog/ml-demand-planning-data-foundation Published: 2026-06-19 ![AI demand planning is coming. Your attribute layer decides if it works.](/og/hero-ml-demand-planning-data-foundation.jpg) Every major planning vendor now has an AI forecasting pitch. Toolio, Blue Yonder, o9, Anaplan, Impact Analytics — the roadmap decks all look similar: gradient-boosted models, external signal ingestion, agentic recommendations that flag exceptions instead of just charting a demand curve. [Gartner projects that 70 percent of large organizations will adopt AI-based supply chain forecasting by 2030](https://www.gartner.com/en/newsroom/press-releases/2025-09-16-gartner-predicts-70-percent-of-large-orgs-will-adopt-ai-based-supply-chain-forecasting-to-predict-future-demand-by-2030), and McKinsey has found that AI-driven forecasting can cut errors 20 to 50 percent versus traditional statistical methods, with knock-on reductions in stockouts of up to 65 percent. Those are real numbers, from real deployments. They are also, quietly, the ceiling for a specific kind of retailer or brand — the one whose item master is clean, consistent, and rich enough for a model to actually use. For everyone else, the same algorithm produces a forecast that is confidently wrong. ## The model isn't the bottleneck anymore This is the part planning vendors don't lead with, because it isn't their problem to fix. Random forests, gradient boosting, even the newer foundation-model approaches to time series are mature technology at this point. The gap between a good demand forecast and a mediocre one increasingly comes down to what the model is allowed to see, not how the model is built. A forecast is not really a prediction about a single SKU. It's an aggregation — sales history rolled up by category, by fabric, by silhouette, by price band, by pack size, by whatever dimension the business plans against. Every one of those rollups depends on an attribute being populated correctly on every row. If "sleeve length" is free text on a chunk of an apparel brand's catalog and a controlled value on the rest, the model either drops that feature or learns from a corrupted version of it. If "material" says "COTTON," "100% Cotton," and "ctn" for the same fiber content across three merchandisers' data entry habits, the model sees three categories where there should be one, and the size of each becomes too thin to learn anything from. This is the classic feature-engineering problem in machine learning, and demand planning is not exempt from it. [Practitioner analysis of production forecasting systems](https://appifyintelligence.com/blog/forecasting-demand-ai-2026) has found that once classical models get comprehensive feature engineering — point-of-sale joined to promotions, weather, foot traffic, and competitor signals — they perform comparably to newer foundation-model approaches. The delta shows up in how well the features are built, not which algorithm consumes them. Garbage attributes in, garbage forecast out, no matter how modern the model. ## Where attribute rot actually breaks a forecast It rarely fails loudly. A forecasting engine doesn't throw an error when it gets a null value or an inconsistent category — it just produces a number, and the number is wrong in ways that are hard to trace back to a root cause. A few concrete failure modes: - **New-item cold start.** A model forecasting a new SKU leans on attribute similarity to existing SKUs with sale history — same category, same fabric, same price point. If the new item's attributes are missing or mis-tagged at launch, the model has no comparable to anchor to, and it either defaults to a category average or guesses badly. - **Like-item substitution.** Planners routinely borrow demand curves from a discontinued or similar item to seed a new one. That match is only as good as the attributes used to find it. A missing or wrong attribute silently pulls in the wrong analog. - **Cannibalization and halo effects.** Detecting that a new color variant steals share from an existing one, or that a bundle lifts an unrelated SKU, requires attributes precise enough to group "the same product" correctly across variants. Loose or inconsistent variant tagging blurs the boundary the model needs to see. - **Assortment rollups.** Every plan built at category or subcategory level inherits whatever mapping error exists in the product taxonomy underneath it. One mis-tagged attribute doesn't just skew one SKU's forecast — it skews the aggregate everything else is measured against. None of these show up as a broken dashboard. They show up as a forecast that's meaningfully off, in a way nobody can explain, until someone manually audits the item master months later. ## What a training-ready attribute layer looks like Being "training-ready" isn't about having more data. It's about having attributes that are complete, consistent, and validated — not just present in a field somewhere. | Signal | Not training-ready | Training-ready | |---|---|---| | Material/fiber content | Free text, inconsistent casing, abbreviations | Controlled vocabulary, normalized values | | New-item attributes | Backfilled weeks after launch, if at all | Populated before the item ships | | Variant relationships | Inferred loosely from SKU naming | Explicit parent-child and attribute lineage | | Conflicting source values | Silently overwritten by the last system to write | Flagged, reconciled, source-tracked | | Attribute coverage | Spot-checked on flagship SKUs only | Consistent depth across the full catalog | Getting there usually means treating attribute enrichment as infrastructure that sits between raw source systems and every downstream consumer — planning tools included — rather than a one-time cleanup project. In modern data architecture terms, this is the same logic behind a medallion lakehouse: raw data lands, gets refined and validated, then gets served to whatever consumes it downstream. ![Diagram: bronze, silver, gold lakehouse layers with product-attribute enrichment at the silver layer](/diagrams/medallion-attributes.svg) A word of caution here, because this space attracts overpromising: AI planning tools are not going to intuit demand for a product they can't describe. They're pattern-matching systems, and the patterns they find are bounded by the features they're fed. No model available today reliably predicts demand for a genuinely novel item with thin or absent attribute data, and treating any vendor's roadmap as a substitute for attribute discipline is a mistake retailers will pay for later. Anglera's job is the layer underneath that decision, not the forecasting layer itself. Your PIM, ERP, or planning system stores the data — Anglera extracts, normalizes, validates, and gap-fills the attributes underneath it from the source documents, images, and specs that already exist, so that whichever forecasting engine a team adopts is working from a catalog it can actually learn from. The vendors racing to ship AI forecasting are betting on models. The retailers who win with those models will be the ones who spent the last year making sure their attributes were worth training on. --- # How to measure the ROI of product data: a practical framework Source: https://www.anglera.com/blog/measuring-product-data-roi Published: 2026-06-19 ![How to measure the ROI of product data: a practical framework](/og/hero-measuring-product-data-roi.jpg) "Better product data" is a project. "Product data drove $X in incremental revenue" is a budget line. Most teams never close that gap. Not because the value isn't real — because nobody set up the measurement before the enrichment work started. Here's the framework for doing it properly: the version you hand to finance, not the one you hand to a slide deck. ## Step 1: Pick your metrics before you touch a single SKU Lift can't be isolated after the fact. Decide what you're measuring, and start logging it before enrichment begins. Six metrics carry the weight for a product-data initiative: | Metric | What it shows | Where to pull it | |---|---|---| | PDP conversion rate | Whether the page itself closes the sale | Site analytics (GA4, Adobe), segmented by SKU or category | | Revenue per visit (session) on enriched PDPs | Combines conversion and AOV into one number | Ecommerce platform revenue reports, filtered by page | | Organic search sessions to PDPs | Whether better content earns more discovery, not just a better close rate | Search Console + GA4, by landing page | | Referral sessions from AI answer engines | A newer discovery channel worth watching alongside organic and marketplace | GA4 referral/source-medium, filtered for chatgpt.com, perplexity.ai, copilot.microsoft.com, etc. | | Return rate by reason code | Whether data gaps — not just defects — are driving reverse logistics cost | Order management or returns platform, filtered to "not as described" / "wrong item" reason codes | | Support tickets per 1,000 PDP sessions | Whether missing specs are pushing cost into your service org | Helpdesk platform (Zendesk, Gorgias) tagged by product-question intent | Two of these — organic sessions and AI-referral traffic — need a baseline window of at least four to six weeks before you change anything. Retail traffic and conversion both carry weekly and seasonal noise, and you need enough time to average it out. On-site search abandonment and attach/cross-sell rate are worth adding once the core six are running. More on those in step four. ## Step 2: Baseline segment by segment, not storewide The mistake most teams make: baseline the whole catalog, then enrich the whole catalog at once. That gives you a before/after story with no control group. And conversion moves for a dozen reasons that have nothing to do with product content — paid spend, promotions, competitor pricing, seasonality. Segment first. Score your catalog by data quality before you start: which SKUs have thin, incomplete, or inconsistent attributes and descriptions, and which are already strong. That segmentation *is* your baseline. Log conversion, revenue per visit, return rate, and support-ticket rate for both groups over the same window. ## Step 3: Isolate the lift with a control, not a calendar This is the part most "ROI" claims skip. It's also the part that makes a number defensible. **Holdout method (preferred).** Enrich one segment of SKUs — a category, a supplier line, a random sample — and hold out a comparable segment as a control: similar price band, similar traffic volume, similar current data-quality score. Run both over the same window, then compare the change in each metric between groups. This is the same logic marketing teams use for [incrementality testing](https://www.measured.com/faq/incrementality-attribution-mmm-decision-tree/). A holdout isolates causation. A simple before/after only shows correlation — conversion could have moved because of a promotion, a pricing change, or the time of year, not your data work. **Before/after with controls (fallback).** Can't hold anything back — say, a full-catalog enrichment pass ahead of peak season? Control for the obvious confounders instead. Compare year-over-year rather than month-over-month. Exclude SKUs that also had a price or promo change in the window. Normalize for traffic volume so a summer dip doesn't read as a data-quality problem. Either way, run the comparison for at least one full purchase cycle for your category. A 10-day conversion lift on a considered purchase — appliances, industrial equipment — isn't a signal yet. It might just be a Tuesday. ## Step 4: Convert lift into dollars Once you have a clean delta between enriched and control groups, the dollar math holds together per metric: - **Conversion/revenue-per-visit lift** × existing PDP traffic to the enriched segment = incremental revenue, without needing a single new visitor. - **Incremental organic (and AI-referral) sessions** × existing PDP conversion rate and AOV = a second, additive revenue line. This is new demand, not just a better close rate on old demand. - **Return-rate reduction** × average order value × units shipped = avoided reverse-logistics cost: restocking, return shipping, refund processing, and the margin lost on unsellable returned inventory. Missing or inaccurate descriptions are a real driver here — one recent analysis put [inaccurate item descriptions at 14% of all ecommerce returns](https://www.ringly.io/blog/ecommerce-return-statistics-2026), against an industry-wide return rate hovering around 20%. - **Support-ticket reduction** × fully-loaded cost per ticket = avoided service cost. Product-question tickets are a specific, taggable subset your helpdesk can isolate, and better PDPs have been shown to cut this category meaningfully. Once the core four are running, add attach rate and AOV as a bonus line. Complete, cross-linked product data — accurate compatibility, sizing, bundle-eligible attributes — is what lets on-site search and PDP modules recommend the right accessory or the right size with confidence. Confident recommendations convert into higher basket size. ## Be honest about the limits Attribution across a catalog is never perfectly clean. Multiple SKUs get enriched in the same window. Marketing runs promotions on the same categories. Buyer intent shifts with the season. Don't chase false precision. Report a range, not a single decimal-point ROI figure, and always show your control group and window alongside the number. A defensible "$40-60K in incremental quarterly revenue, holdout-tested against a control segment" survives a finance review. A precise-looking "$52,340" with no methodology attached does not. The through-line across every metric here is the same: get the right buyer to the right product at the right moment, then remove every remaining reason not to buy. That's the job product data quality does — and it's exactly the layer Anglera runs on top of your PIM, or your flat files if you don't have one. It scores, gap-fills, and keeps product data current from source documents, so the baseline from step one keeps improving instead of decaying the moment enrichment stops. Measure it well, and the work stops being a project. It becomes a budget line. --- # Keeping JSON-LD in sync with the visible page (drift is a trust problem) Source: https://www.anglera.com/blog/keeping-json-ld-in-sync Published: 2026-06-19 ![Keeping JSON-LD in sync with the visible page (drift is a trust problem)](/og/hero-keeping-json-ld-in-sync.jpg) Structured data doesn't fail quietly. When a page's JSON-LD says one price and the rendered page shows another, Google doesn't average the two or trust whichever looks newer — it treats the mismatch as a signal the markup can't be relied on, full stop. This is the failure mode that matters most for distributors and retailers running large catalogs: not "no JSON-LD," a missed opportunity, but "wrong JSON-LD," a trust problem that follows the domain. Here's why drift happens, how it gets caught, and what keeps a catalog's structured data and its visible page as one source of truth instead of two. ## Why disagreement is worse than absence Google's structured data guidelines are explicit that markup has to describe what's actually on the page: "Don't mark up content that is not visible to readers of the page." The same guidelines list misleading or unrepresentative structured data as grounds for losing rich result eligibility, and in more serious cases, having the markup treated as spam. The [Merchant Center documentation](https://support.google.com/merchants/answer/7331077?hl=en) is more direct about commerce data: "Structured data must match the values that are shown to the user. Providing incorrect data on your product landing pages is a violation of our web developer guidelines." Two distinct consequences follow. First, **rich result loss**: a page with a price mismatch can be pulled from eligibility for the price/availability rich result entirely, not just docked for that field. Second, **trust degradation at the domain level**: Google's [general structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) describe enforcement ranging from quietly ignoring the markup up to a manual action affecting a whole property's structured data eligibility, not just one page. Repeated drift across a catalog reads as a pattern, not a one-off typo. The same logic extends past classic rich results. AI answer engines that cite product pages — and any agent doing retrieval-augmented synthesis — use structured data as a fast path to verify a claim before it gets pulled into an answer. If the JSON-LD says "in stock" and the visible page says "backordered," the safest move for that system is to discount the structured data rather than resolve the conflict in the buyer's favor. Drift doesn't just risk a rich snippet; it risks the page not being trusted as a citation source at all. ## How drift actually happens Drift is rarely one dramatic bug. It's usually one of a small number of boring, repeatable causes: 1. **Two update paths for the same fact.** The visible price renders from the commerce platform's live pricing engine; the JSON-LD was populated once from a PIM export or written by hand and never touched again. The values start identical and drift the first time either side changes alone. 2. **Caching layers with different TTLs.** A CDN serves the JSON-LD block from an edge cache with a longer TTL than the price widget. Under normal load this is invisible; during a flash sale or stock-out, it's the gap between what the page shows and what a crawler sees on cached HTML. 3. **Client-side-only rendering.** If JSON-LD is injected via JavaScript after page load instead of present in the server-rendered HTML, a crawler with a limited JavaScript budget sees no structured data, or a stale render from a previous pass — a common gap on headless and SPA-style storefronts. 4. **Manual edits that don't round-trip.** Someone fixes a typo in the visible title in the CMS, unaware the JSON-LD for that page was hardcoded during a migration and isn't bound to the same field. 5. **App duplication and variant blind spots.** A reviews add-on injects its own `AggregateRating` independently of the main product markup, and the two disagree on `ratingValue`. Or the default variant's price and JSON-LD match, but a sale price or regional override on another variant was never wired in. The common thread: JSON-LD set once, by hand, at a point in time, instead of rendered from the same live data the visible page reads from. ## The fix: one source, two renderings The structural fix is to stop treating JSON-LD as a separate artifact and start treating it as a second rendering of the same underlying record the visible page already uses. - **Bind fields, don't paste values.** Whatever produces the visible price, description, and availability should be the same call that produces the JSON-LD equivalent — a shared object or serializer, not two independent lookups. - **Render on the server, in the initial HTML.** JSON-LD should be present in the HTML the origin server returns, not injected client-side after the fact, so it can't diverge from the visible DOM between two separate code paths. - **Invalidate together.** If the storefront sits behind a cache, the JSON-LD block and the visible price/availability widgets need the same cache key and invalidation trigger, or a price update can bust one cache but not the other. - **Treat required Offer fields as the sync-critical set.** Google calls out `price`, `priceCurrency`, `availability`, and `condition` as required for automatic item updates — bind these first if a full audit isn't feasible yet. - **Own duplicate-block conflicts explicitly.** Before adding a JSON-LD block, check whether one already exists from a default template, migration, or third-party app. Two `Product` or `AggregateRating` declarations on one page is a self-inflicted trust problem, even if each is individually accurate. - **Re-check after every platform change.** A template update, app install, or new caching rule is when drift gets introduced, not a one-time launch risk. ## How to validate - **Compare view-source against the rendered DOM.** JSON-LD should appear in "View Page Source" (the raw-HTML view, not DevTools' rendered Elements panel), which approximates what most crawlers fetch. A `application/ld+json` block that only shows up in the rendered DOM is being injected client-side and may not be reliably crawled. - **Curl the URL directly** to see exactly what's served with no JavaScript execution involved: ```bash curl -s https://example.com/products/example-product | grep -A 40 'application/ld+json' ``` - **Diff the JSON-LD values against the visible page** for the fields that matter most — price, availability, title, rating — on the same page load. This is the actual drift check; syntactic validity alone won't catch a wrong price. - **Run the URL through Google's [Rich Results Test](https://search.google.com/test/rich-results)**, which flags missing or malformed properties. - **Use Search Console's URL Inspection tool** to see what Google has actually indexed for that page, including a rendered screenshot — this catches cases where the live page has changed but Google's cached understanding hasn't caught up. - **Spot-check variants, sale states, and out-of-stock cases**, not just the default full-price view, where drift concentrates. ## Verified as of July 2026 The guidance above reflects Google's Search Central structured data guidelines and Merchant Center's automatic item updates documentation as of this writing. Enforcement specifics — what triggers a manual action versus a quieter loss of rich result eligibility — are decided case by case and can change; treat "keep it matching" as the durable rule, not any specific penalty threshold. None of this matters if the underlying facts — price, availability, the attributes a JSON-LD block is supposed to mirror — aren't accurate in the source system to begin with. That's the other half of this problem, and it's the one Anglera is built for: it keeps product data enriched and current in whatever PIM or commerce platform already holds it, so the single source of truth this guide describes binding to is worth binding to. Sources: - [Google Search Central — General Structured Data Guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) - [Google Merchant Center Help — Set up structured data (automatic item updates)](https://support.google.com/merchants/answer/7331077?hl=en) - [Google Search Central — Intro to Product Structured Data](https://developers.google.com/search/docs/appearance/structured-data/product) - [Google — Rich Results Test](https://search.google.com/test/rich-results) --- # Health Mart: The Pharmacy Franchise That Outlived Its Parent Source: https://www.anglera.com/blog/health-mart-retailer-playbook Published: 2026-06-19 ![Health Mart: The Pharmacy Franchise That Outlived Its Parent](/og/hero-health-mart-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Health Mart lands at #42 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual ranking compiled with Kantar, with $12.25 billion in 2025 U.S. retail sales spread across more than 5,000 independently owned pharmacies. That number is unusual for this list. Health Mart does not own a single one of its stores. It is a banner, a supply chain, and increasingly a negotiating bloc for pharmacists who own their own businesses. The story of how it got that way runs through one of the most spectacular corporate collapses in American distribution history. ## A wholesaler with German roots The lineage starts in 1852, when Christian F. G. Meyer, an immigrant from Hanover, began selling drugs on horseback out of Fort Wayne, Indiana. Within a few years his brother John joined him, and by 1865 the operation had outgrown retail entirely. Meyer moved the business to St. Louis, betting correctly that the city would become, in his words, "one of the greatest distributing markets in America." Incorporated in 1889 as Meyer Brothers Drug Company, the firm grew into what Wikipedia's history of the company calls the largest independent wholesale drug house in the United States by the early 1900s, serving customers across the Western Hemisphere. That 129-year run as an independent company ended in July 1981, when Fox Meyer Health Corporation acquired Meyer Brothers and folded it into a national wholesale drug network. FoxMeyer was itself a product of decades of consolidation among regional drug wholesalers, a business built on thin margins and enormous volume. In 1982, FoxMeyer created Health Mart as a franchise banner, letting independent pharmacies that bought through its distribution network share a common name, marketing, and private-label line while keeping their local ownership intact. The idea was simple: give the mom-and-pop pharmacist some of the brand recognition and buying leverage of a chain without asking them to sell out. ## Scaling into the 1990s, then the wheels come off The banner grew fast. It hit 400 stores after National Intergroup bought FoxMeyer in 1986, then 800 by 1994 as FoxMeyer rolled out FoxCare, a managed-care pharmacy initiative aimed at insurers and health plans. FoxMeyer was, by the mid-1990s, a roughly $5 billion wholesaler chasing efficiency the same way its rivals were: through massive, centralized automation. That bet is what killed it. FoxMeyer committed to a "big bang" enterprise resource planning rollout, an SAP R/3 system paired with ambitious new warehouse automation, implemented all at once rather than in phases. Wikipedia's account of the failure, filed under enterprise case studies in organizational change, describes a company with "unrealistic expectations" that put its workforce under punishing deadline pressure and then, when problems surfaced, "tried to minimize problems by ignoring them," which "hindered organizational learning." The automated warehouses could not keep pace with order volume, inventory and billing broke down, and FoxMeyer Drug Company filed for Chapter 11 bankruptcy in August 1996. It remains a textbook case taught in operations and information-systems courses precisely because the failure was not a niche software bug. It was a strategic overreach with a real body count: one of the largest pharmaceutical distributors in the country. McKesson Corporation bought FoxMeyer's assets, including the Health Mart franchise, for $400 million that October. And here is the detail worth sitting with: the arm of the business that collapsed was the centralized one, the wholesaler trying to run everything through a single automated brain. The arm that survived, changed owners, and kept operating with barely a hiccup was the decentralized one, thousands of independently owned storefronts that never depended on FoxMeyer's warehouse software to fill a prescription. Health Mart's franchise structure was not what FoxMeyer bet the company on. It turned out to be the more durable asset in the wreckage. ## The quiet years, then the rebuild McKesson did not treat its new pharmacy banner as a priority at first. Health Mart shrank to 262 stores by 2004, a fraction of its 1990s peak, as McKesson focused on distribution rather than franchising. Then, in July 2006, McKesson relaunched Health Mart with a new franchising model, new logo, and new store design built around managed-care services rather than just retail dispensing. The bet paid off fast: by April 2007 the network had grown to 1,280 stores and won Drug Topics' "Chain of the Year." | Year | Milestone | |---|---| | 1852 | Christian Meyer founds a drug wholesaling business in Fort Wayne, Indiana | | 1981 | FoxMeyer Health Corporation acquires Meyer Brothers Drug Company | | 1982 | FoxMeyer launches the Health Mart franchise banner | | 1996 | FoxMeyer files Chapter 11; McKesson buys the company and Health Mart for $400 million | | 2006 | McKesson relaunches Health Mart with a new franchise model | | 2015 | Health Mart opens its 4,000th store | | 2018 | Health Mart Atlas launches as a pharmacy services administrative organization | Growth kept compounding through the 2010s: 2,500 stores across all 50 states by 2010, more than 3,100 member stores by 2013, a 4,000th store in 2015. In 2018, Health Mart launched Atlas, a pharmacy services administrative organization, or PSAO, that negotiates reimbursement contracts with pharmacy benefit managers on behalf of member stores. That is arguably a bigger deal than it sounds. Independent pharmacies' central business problem for the last two decades has not been foot traffic or brand recognition. It has been PBMs squeezing reimbursement rates below what it costs to fill a prescription. A common storefront banner cannot fix that. Collective negotiating leverage can. Health Mart's most important product today may not be the sign above the door but the contract terms Atlas can get that a single-store owner never could alone. Health Mart supported COVID-19 testing and vaccination efforts in 2020, and today counts more than 5,000 member pharmacies, with Crystal Lennartz named president in December 2023. ## Sources - [Health Mart – Wikipedia](https://en.wikipedia.org/wiki/Health_Mart) - [Meyer Brothers Drug Company – Wikipedia](https://en.wikipedia.org/wiki/Meyer_Brothers_Drug_Company) - [McKesson Corporation – Wikipedia](https://en.wikipedia.org/wiki/McKesson_Corporation) - [Big bang adoption – Wikipedia](https://en.wikipedia.org/wiki/Big_bang_adoption) - [Health Mart official site](https://healthmart.com) Health Mart's whole existence is a reminder that behind every prescription label is a supply chain fight over data, contracts, and who controls the terms of a sale, the same unglamorous infrastructure question that runs under all of American retail. --- # Demand forecasting in Furniture & Home: the attribute layer your models are missing Source: https://www.anglera.com/blog/furniture-home-demand-forecasting Published: 2026-06-19 Industries: furniture-home ![Demand forecasting in Furniture & Home: the attribute layer your models are missing](/og/hero-furniture-home-demand-forecasting.jpg) A sectional with no sales history is not actually unknown. It has a fill type, a frame material, a seat depth, a fabric grade. A forecasting model that can read those attributes cleanly can borrow a demand curve from something similar and get close. A model that sees "Fabric: Grey" in a free-text field where the real spec is "Performance Chenille, Crypton-treated, medium-tone" gets nothing. The gap between those two states is not a modeling problem. It is a data problem, and in furniture and home it is bigger than most planning teams admit. ## Why furniture forecasting starts at a disadvantage Furniture carries structural handicaps that apparel and grocery forecasters do not deal with. Lead times run months, not weeks, because most of the category is still made to order or shipped from overseas factories. Order minimums are large. And the category's return economics are brutal: furniture's online return rate runs around [22.7%, roughly three points above the all-category average](https://eightx.co/blog/average-furniture-and-home-return-rate-benchmarks), and a single furniture return costs $72 to $80 once reverse freight is included, compared to about $30 for apparel. That's enough to erase most of a unit's gross margin on a single wrong guess. Layer newness on top. [Roughly 84% of furniture brands confirmed a planned product launch in Q1 2025 alone](https://blog.cylindo.com/the-state-of-the-furniture-industry), and swatch and finish changes multiply that further, since the "same" sofa in six fabric options is six SKUs with six different demand curves. Every one of those launches starts with zero sales history. A model built purely on trailing sales is blind on exactly the SKUs that matter most for next season's buy. ## What the model is actually asking of your data Strip away the algorithm and a demand forecast is a set of joins. It groups historical SKUs by shared traits, measures how each group performed, and projects that pattern onto new or thin-history items. In furniture and home, three of those joins matter more than most planning teams realize: **Like-item matching for new introductions.** When a new recliner or console table launches, the forecast has to find its closest historical analog before it can borrow a curve. That match runs on attributes: frame material, upholstery type, seat height, case good finish, dimensional footprint. If "material" is populated as a marketing string ("Rich Espresso Finish") instead of a normalized value (finish family: espresso, wood species: oak, sheen: matte), the matching engine either can't find a comparable or matches it to the wrong one. [Attribute-based forecasting](https://www.griddynamics.com/blog/demand-forecasting-retail-manufacturing) exists specifically to solve this cold-start gap, but it only works if the attributes doing the matching are structured and consistent, not free text a merchandiser typed once for a product page. **Attribute-level rollups.** Planners don't forecast style number 8841 in isolation. They roll up demand by category, by material family, by price band, to sanity-check the model and to plan buys at the level a vendor can actually produce. If "upholstery fabric" has forty spellings across a catalog (leatherette, faux leather, PU leather, vegan leather, pleather) that rollup silently fragments. Total demand for the fabric family looks smaller and choppier than it is, because the system thinks it's tracking five categories instead of one. **Seasonality by product characteristic.** Furniture seasonality isn't uniform. Outdoor and patio move with weather windows. Dorm and small-space furniture spikes around back-to-school and lease turnover. Case goods track housing turnover and renovation cycles more than a calendar month. A forecast that only knows "category: furniture" can't apply the right seasonal curve. A forecast that knows room type, indoor/outdoor designation, and size class can. ## Where thin attributes quietly corrupt the number The failure mode here isn't a system crash. It's a forecast that looks reasonable and is wrong in a way nobody catches until the markdown rack fills up. | Attribute state | What the model does | Downstream effect | |---|---|---| | Fabric/material as clean, normalized values | Matches new SKU to true historical analogs | Cold-start forecast tracks actual demand curve | | Fabric/material as free-text marketing copy | Fails to match, or matches wrong analog | New SKU under- or over-forecast, wrong opening buy | | Dimensions structured and unit-consistent | Rolls up correctly by size class (e.g. apartment-scale vs. standard) | Accurate size-tier demand splits inform assortment | | Dimensions missing or mixed units (in vs. cm) | Size class miscategorized or dropped from rollup | Size-tier signal disappears into "unknown," planners fly blind on scale mix | | Room/use-case tagged consistently | Seasonality curve applied correctly (patio vs. indoor) | Inventory timed to the right selling window | | Room/use-case inconsistent or missing | Generic seasonality applied to everything | Patio sits in a warehouse in October, indoor lines short in Q4 | None of this shows up as a data quality alert. It shows up as a forecast miss that gets blamed on "the model," when the model was never given the inputs to succeed. ## A concrete example Say a case goods brand launches a new dresser in three finishes: espresso, natural oak, and matte white. If the PIM field for finish is a single free-text description per SKU, a forecasting tool sees three unrelated strings and can't tell it's one frame with three surface treatments. It also can't compare the espresso finish to the brand's twelve other espresso-finish case pieces that have three years of sell-through history. Split that finish field into structured components: finish family, wood species, sheen level, and now the match is trivial. The model finds the closest analog by finish family, borrows its early-life sell-through curve, and adjusts for price point. That's the difference between an opening buy that's within 15-20% of actual demand and one built on a guess. ![Diagram: a new SKU with no sales history borrowing a demand curve from attribute-similar historical SKUs](/diagrams/coldstart-similarity.svg) ## Being honest about what AI forecasting can and can't do It's worth saying plainly: no forecasting tool, however sophisticated, turns bad attribute data into a good prediction. Modern planning platforms (Toolio, Blue Yonder, o9, Anaplan, and Impact Analytics all publish work on this) have gotten genuinely better at handling cold-start and thin-history items using similarity models and hierarchical rollups. But every one of those techniques still consumes attributes as its raw material. Garbage attributes in, garbage matches out, no matter how advanced the model wrapped around them is. That's the layer that tends to get skipped when retailers invest in forecasting software. The model gets attention. The fields it reads from, the ones a merchandiser typed by hand at 4pm on a launch deadline, don't. Anglera doesn't build forecasts. It builds the layer underneath them: it extracts structured attributes like finish family, upholstery type, dimensional class, and room designation from tech packs, spec sheets, and product imagery, normalizes them into consistent values, flags conflicts across sources instead of silently picking one, and keeps them current as new SKUs launch. It plugs into whatever PIM, ERP, or planning system already exists, additive, not a replacement, so the forecasting tools your team already trusts finally get the inputs they were designed to use. --- # Getting enriched product data onto commercetools product pages Source: https://www.anglera.com/blog/commercetools-data-to-page Published: 2026-06-19 Platforms: commercetools ![Getting enriched product data onto commercetools product pages](/og/hero-commercetools-data-to-page.jpg) commercetools is API-first: there is no built-in theme layer, so an enriched attribute only becomes visible once your storefront explicitly fetches and renders it. This guide traces one attribute end to end — from where it's defined in the data model, through the Product Projections or GraphQL API, into a storefront component, and finally into HTML a shopper (and a crawler) can actually read. ## Where the attribute actually lives In commercetools, every Product is an instance of a Product Type, and the Product Type is what defines the schema of custom Attributes available on that product — things like `material`, `care_instructions`, or `warranty_years`. Attributes can be scoped at the Product level (shared across all variants) or the Variant level (e.g., `color`, `size`), and each has an `attributeConstraint` such as `SameForAll`, `Unique`, or `CombinationUnique`. This structure is documented in the [Product Types HTTP API reference](https://docs.commercetools.com/api/projects/productTypes). Products also maintain two parallel representations: **staged** (the draft your team or an integration is editing) and **current** (the published version shown to shoppers). A product can have `hasStagedChanges: true` while its live storefront page still shows the old value — a common reason an enriched attribute looks "missing" even though it saved correctly. See the [Product catalog overview](https://docs.commercetools.com/api/product-catalog-overview) for the staged/current model. ## Step 1: Define or confirm the attribute definition If the attribute doesn't exist yet on the relevant Product Type, add it in Merchant Center under **Settings > Product types and attributes > [your product type] > Add attribute**, setting the attribute identifier, label, level (Product or Variant), type, and whether it's `Searchable`. The same change can be made via the API using an `addAttributeDefinition` update action: ```json { "version": 4, "actions": [ { "action": "addAttributeDefinition", "attribute": { "type": { "name": "text" }, "name": "care_instructions", "label": { "en": "Care instructions" }, "isSearchable": false, "attributeConstraint": "SameForAll", "inputHint": "MultiLine", "isRequired": false, "level": "Product" } } ] } ``` Once defined, every product of that type accepts a value for `care_instructions`, whether the value is written by hand, pushed from a PIM, or written by an enrichment pipeline via the Products API. ## Step 2: Read the value back through the API commercetools ships two read paths storefronts commonly use for product detail pages: the **Product Projections API** (strongly consistent, ideal for a single PDP fetch) and the **GraphQL API** (flexible field selection, good for composing a page query in one round trip). Both are documented under [Product Projections](https://docs.commercetools.com/api/projects/productProjections) and the [GraphQL API reference](https://docs.commercetools.com/api/graphql). REST: ```bash curl --get "https://api.{region}.commercetools.com/{projectKey}/product-projections/{id}" \ --header "Authorization: Bearer ${BEARER_TOKEN}" ``` Because `care_instructions` was defined at the **Product** level (not the Variant level), it comes back in a top-level `attributes` array on the projection, separate from the variant-specific data in `masterVariant`: ```json { "id": "080feded-4f74-4d31-9309-f7ef6b7f1279", "attributes": [ { "name": "care_instructions", "value": "Machine wash cold, tumble dry low." } ], "masterVariant": { "id": 1, "attributes": [] }, "published": true, "hasStagedChanges": false } ``` If the attribute were defined at the Variant level instead (like `color` or `size`), it would show up inside `masterVariant.attributes` (or the relevant entry in `variants`) rather than at the top. GraphQL, using `attributesRaw` to get name/value pairs regardless of type — query it at the top level for Product-level attributes and again inside `variants` for Variant-level ones: ```graphql query { product(id: "080feded-4f74-4d31-9309-f7ef6b7f1279") { masterData { current { attributesRaw { name value } variants { sku attributesRaw { name value } } } } } } ``` A few details worth checking every time: pass `staged=false` (or omit it) so you're reading the published value, not a draft; use `localeProjection` if the attribute is a `ltext` (localized text) type, since the value will come back as a locale map rather than a plain string; and if your storefront calls the Product Projection **Search** endpoint (`/product-projections/search`) rather than a direct GET by ID, be aware Product-level attributes are not returned there — fetch by ID, or use the newer Product Search endpoint, instead. ## Step 3: Bind the attribute to the template commercetools doesn't dictate a rendering layer, so how the attribute reaches HTML depends on your storefront setup: - **commercetools Frontend (Studio-based)**: a component's `schema.json` declares a data-bound field, a Node.js data-source extension fetches the product (typically via the Product Projections or GraphQL API), and the resulting payload is passed to the React component as props — for example, a field mapped from `data.product.dataSource` — which the component then renders into JSX/HTML. See [Creating a Frontend component with a data source](https://docs.commercetools.com/frontend-development/creating-frontend-component-with-a-data-source). - **Custom storefront (Next.js, or any framework)**: the PDP route's data-fetching function calls the Product Projections or GraphQL endpoint directly, finds the attribute by `name` in the appropriate `attributes` array (product-level or variant-level), and renders it into the template. A minimal PDP render, once the attribute is in hand: ```tsx // care_instructions is a Product-level attribute, so it's on product.attributes. // Variant-level attributes (color, size) would instead be read from // product.masterVariant.attributes. const careInstructions = product.attributes.find( (attr) => attr.name === "care_instructions" )?.value; export function ProductSpecs({ product }) { return (

Care instructions

{careInstructions ?? "Not specified"}

); } ``` If you also want the value legible to AI shopping agents and search crawlers, add it to a JSON-LD `Product` block in the page head or a script tag near the PDP content, alongside the visible copy — not instead of it: ```html ``` ## How to validate 1. **Confirm the value is published, not staged.** Query the Product Projections API without `staged=true`; if the field is empty there but present when `staged=true`, the change hasn't been published yet. 2. **View-source vs. rendered DOM.** Right-click → View Page Source shows what's in the initial HTML payload; if your storefront renders client-side, the attribute may be present in the DOM (inspect via DevTools) but absent from view-source — meaning crawlers that don't execute JavaScript won't see it. Server-rendered or statically generated PDPs should show the value in both. 3. **Check the raw API response** with the `curl` command above to isolate whether the gap is in the data (attribute missing or unpublished) or in the template (attribute present in the API but never mapped to a component/prop). 4. **Validate structured data** with Google's [Rich Results Test](https://search.google.com/test/rich-results) if you added JSON-LD, to confirm it parses and the property is picked up. ## Verified as of July 2026 Endpoint paths, the `attributesRaw` GraphQL field, and the Merchant Center menu path above reflect commercetools' current documentation as of July 2026. Product-level attributes (the `level: "Product"` option shown in Step 1) reached general availability in December 2025, after a public beta that began in mid-2025 — a newer part of the model, and the reason the top-level `attributes` array versus `masterVariant.attributes` distinction above is easy to get wrong in older tutorials or AI-generated code. commercetools ships frequent API releases, so re-check the [HTTP API release notes](https://docs.commercetools.com/api/releases) if a field behaves unexpectedly. None of this changes how the attribute gets good in the first place. Anglera plugs into commercetools (or whichever PIM sits in front of it) and keeps attributes like `care_instructions` populated, current, and consistent across your catalog — so the mapping work above has accurate, complete data to render, rather than a blank field with nothing to show. --- # Why beauty products go invisible: the attribute gaps that filter you out Source: https://www.anglera.com/blog/beauty-attributes Published: 2026-06-19 Industries: beauty ![Why beauty products go invisible: the attribute gaps that filter you out](/og/hero-beauty-attributes.jpg) A lipstick with a gorgeous photo and a one-line description still won't show up when a shopper filters by "matte" or asks ChatGPT for "a berry lipstick that won't dry out my lips." Beauty is one of the most attribute-dense categories in retail, and one of the sloppiest about structuring that data. Products that exist, are in stock, and would satisfy the shopper perfectly never surface, because the fields a filter or an AI agent needs are blank, buried in a paragraph, or spelled three different ways across the catalog. ## Why beauty breaks faceted search more than other categories Faceted search and AI shopping agents work the same way under the hood: they read discrete attribute-value pairs, not prose. A shopper who clicks "matte" + "berry" + "long-wearing" in a sidebar, or types "a matte berry lipstick that lasts through dinner" into an AI assistant, is querying fields like `finish`, `shade_family`, and `wear_time`. If those fields don't exist on the product record, the product is invisible to that query, even though the marketing copy might say "beautifully matte, deep berry hue, 8-hour wear" in a sentence. Beauty compounds this problem because it carries more meaningful facets per SKU than almost any other vertical. A single foundation can reasonably have 15-20 shade variants, each needing its own undertone and depth data, plus category-level attributes for finish, coverage, skin type suitability, and formulation. Retailers are advised to consolidate and standardize attributes by category rather than dump every possible field on the shopper, which is really an admission that most catalogs haven't done the standardization work yet, per [BigCommerce's guide to ecommerce faceted search](https://www.bigcommerce.com/articles/ecommerce/faceted-search/). ## The attributes that actually matter in beauty Not every field is worth the effort. These consistently drive filter and AI-match behavior across color cosmetics, skincare, and haircare: | Attribute | Why it matters | Example values | |---|---|---| | Shade / shade family | Core filter for makeup; groups individual shade names into buckets shoppers actually search | Berry, nude, coral, deep red | | Undertone | Distinguishes cool/warm/neutral within a shade family; critical for foundation and concealer matching | Cool, warm, neutral, olive | | Finish | Second most-used makeup filter after shade | Matte, satin, dewy, shimmer, glossy | | Coverage level | Foundation/concealer/BB cream differentiator | Sheer, medium, full | | Formulation / texture | Skincare and some makeup; affects layering and application | Gel, cream, oil, balm, water-based, powder | | Skin type suitability | Drives skincare and foundation matching | Oily, dry, combination, sensitive, all | | Ingredient flags | Increasingly a hard filter, not a nice-to-have | Fragrance-free, paraben-free, non-comedogenic, alcohol-free | | Ethical/sourcing claims | Distinct from ingredient flags; needs its own field, not a footnote | Vegan, cruelty-free, reef-safe | | Active ingredients (INCI + common name) | What shoppers and AI agents actually search skincare by | Niacinamide (Vitamin B3), retinol, hyaluronic acid | | Wear time / longevity | Common qualitative filter, especially in color cosmetics | 8-hour, transfer-resistant, waterproof | | Application method | Affects both filtering and how-to content | Stick, liquid, cream, wand, brush-on | Ingredient data deserves special mention because it behaves differently from the rest. Shoppers and AI agents search by both the clinical INCI name and the plain-English name, and a three-layer structure, INCI name, common name, and the benefit it addresses, is what lets an ingredient show up whether someone asks for "niacinamide" or "something for redness," per [Alhena AI's breakdown of INCI data structuring for AI engines](https://alhena.ai/blog/inci-beauty-ingredient-data-ai-engines/). That mapping has to live in crawlable text on the page, not inside a PDF or an ingredient-list image, or it doesn't exist as far as an AI shopping agent is concerned. ## The lipstick, before and after Here's a real pattern: a lipstick feed record that has a title, a price, and marketing copy, but no queryable attributes behind it. **Before (raw feed):** | Field | Value | |---|---| | title | Velvet Matte Lipstick | | description | A rich, long-wearing matte lipstick in a stunning berry shade that glides on smooth and stays put through dinner and drinks. | | price | $24.00 | | color | Berry | | gtin | 0123456789012 | That description reads fine to a human. But a facet filter for "matte," a shopper searching "long-wear lipstick," and an AI agent asked to recommend "a berry lipstick that won't feather" all fail against this record, because none of those concepts exist as fields. "Matte" and "long-wearing" are trapped in a sentence. **After (enriched):** | Attribute | Value | |---|---| | shade_name | Midnight Berry | | shade_family | Berry | | undertone | Cool | | finish | Matte | | formulation | Cream-to-matte, non-drying | | wear_time | 8-hour, transfer-resistant | | application_method | Bullet / direct-application stick | | ingredient_flags | Fragrance-free, paraben-free, vegan | | skin_benefit | Hydrating base, non-feathering | Now the exact same product answers a facet click on "matte" + "berry," a search for "vegan long-wear lipstick," and an AI prompt like "ask an AI to recommend a matte berry lipstick that won't dry out my lips," because "cream-to-matte, non-drying" and "hydrating base" are sitting in structured fields the agent can actually read, not paraphrased in ad copy. ## Where this data actually needs to live Google Merchant Center's own color guidance illustrates the trap: it expects one color value per variant and has no native concept of "shade family" or "finish" at all, per [Google's product data specification](https://support.google.com/merchants/answer/6324487?hl=en). Retailers who only fill in what the feed spec demands end up with a `color` field and nothing else, enough to pass validation but not enough to win a facet click or an AI match. The attributes that actually drive discovery, finish, undertone, ingredient flags, wear time, mostly live in custom fields or nowhere at all. That's a data-modeling problem, not a copywriting problem, and it's the gap between "the copy is good" and "the fields exist." A PIM can hold these fields once someone defines the taxonomy and fills every SKU consistently; most catalogs stall at the taxonomy step because it means auditing thousands of SKUs by hand. Anglera plugs into whatever PIM or catalog a retailer already runs and handles that filling and standardizing continuously: scoring every beauty SKU against a shade, finish, formulation, and ingredient taxonomy, flagging the gaps, and enriching missing fields so shade variants, finish claims, and INCI ingredient names show up as structured data instead of prose. Your PIM stores the shade name; Anglera makes sure "matte," "berry," and "fragrance-free" are fields it can actually filter and answer on. --- # Avnet Runs Two Distribution Businesses Under One Roof Source: https://www.anglera.com/blog/avnet-distributor-playbook Published: 2026-06-19 Industries: electronic-components ![Avnet Runs Two Distribution Businesses Under One Roof](/og/hero-avnet-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In fiscal 2025, semiconductors made up 78 percent of Avnet's sales. When that market cratered, net income fell 52 percent in a single year. A year later, quarterly sales were up 34 percent year over year and the stock hit an all-time high. That whiplash is not a flaw in Avnet's business. It is close to the whole point of how the business is built. Avnet lands at #2 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for electronic components, with $22.2 billion in FY2025 revenue by MDM's count. It has held a place near the top of that ranking for decades, through booms, gluts, and at least one near-total reinvention of what an electronics distributor is supposed to do. ## The barbell nobody merges Here is the pattern a reader would not get from Avnet's About page: this is really two distribution businesses stapled together, and Avnet has deliberately kept them from blending into one. The first is broadline distribution under the Avnet name: massive volume, thin margins, and inventory turns measured in weeks, moving components from Texas Instruments, Analog Devices, and dozens of other manufacturers into the hands of contract manufacturers and OEMs building at scale. It is a working-capital business more than a sales business. Avnet expanded its receivables purchase facility from $500 million to $700 million in mid-2025, extending it through 2028, according to [Investing.com's coverage of Avnet's filings](https://www.investing.com/equities/avnet-inc-news), a housekeeping move but a telling one. Financing the float between paying suppliers and collecting from customers is a core competency here, not an afterthought. The second business is Farnell, acquired as Premier Farnell for roughly £691 million in 2016 according to [Avnet's company history on Wikipedia](https://en.wikipedia.org/wiki/Avnet). Farnell sells in small quantities to engineers building prototypes, running a catalog-and-kit model with far higher margins and a much smaller average order. Avnet could have folded Farnell's brand and catalog into its own storefront after the acquisition. It did not. Nearly a decade later, Farnell still operates as a distinct brand serving a distinct customer, engineers designing the next product rather than manufacturers building the current one. Running both under one holding company gives Avnet a rare piece of market intelligence: it sees demand at the design stage through Farnell, months or years before that same part shows up as a broadline order at volume. Keeping the brands separate protects each business's operating muscle. A high-touch, small-quantity, engineering-support model and a high-volume, low-touch, just-in-time logistics model reward opposite instincts, and Avnet has resisted the temptation to average them into something worse than either. ## From Radio Row to Intel's first phone call The company's origin is almost quaint next to the $24 billion machine it became. Charles Avnet, a Russian-Jewish immigrant in his early thirties, started out in 1921 buying surplus radio parts on Manhattan's Radio Row and reselling them, per [Wikipedia's account of the company's founding](https://en.wikipedia.org/wiki/Avnet). As radio manufacturing matured, he pivoted from selling to hobbyists to supplying component distribution for manufacturers, the shift that turned a Radio Row storefront into the template for the modern electronics distributor. The pivotal validation came decades later: Avnet became Intel's first authorized distributor in 1973, a relationship that anchored its position at the center of the semiconductor supply chain as that industry exploded. The company moved its headquarters to Phoenix in 1998, migrated its listing from the NYSE to Nasdaq in 2018, and along the way absorbed Kent Electronics for roughly $600 million in 2001 and Bell Microelectronics for $631 million in 2010, each acquisition adding scale and geography rather than changing the underlying model. The one acquisition that did change the model was Farnell in 2016, paired the same year with the sale of Avnet's Tech Data-adjacent technology solutions business for about $2.6 billion. That was the moment Avnet chose to go deeper into components and design services and step back from broader IT distribution, a bet that the barbell described above would out-earn a more generalist strategy. ## Leadership that grew up inside it Avnet's last two permanent CEOs both spent most of their careers at the company before running it. Rick Hamada joined as a technical specialist in 1983 and became CEO in 2011. Phil Gallagher, named CEO in November 2020, is described in company materials as a 40-plus-year Avnet veteran who ran the global broadline components business before taking the top job. For a public, Nasdaq-listed distributor operating in a sector that has consolidated hard around acquirers and private equity, promoting from three or four decades of internal tenure is a quieter kind of differentiation than any acquisition. ## The tension worth naming The same cyclicality that makes Avnet's numbers swing wildly is the reason the barbell model exists at all. Broadline distribution is a bet on the semiconductor cycle; Farnell's design-stage business is a partial hedge against it, since prototype and R&D spending does not collapse as fast as production orders when the market turns. But hedges are never free. Running two brands, two cost structures, and two working-capital profiles inside one company is organizationally harder than running one, and it means Avnet's overall margin will always look thinner than a pure design-services player's and its growth choppier than a pure broadline player's. Avnet is betting that owning both ends of the chain is worth the complexity. The FY2025 downturn and the FY2026 snapback both suggest the bet still pays, just not smoothly. Distribution rewards the companies willing to do the unglamorous work well: keeping a catalog current, a branch network stocked, and a data pipeline clean enough that the next order ships correctly the first time. That is as true for a hundred-year-old components giant as it is for the smallest regional wholesaler. --- # How Arrow Electronics Turned Every Acquisition Into a New Capability Source: https://www.anglera.com/blog/arrow-electronics-distributor-playbook Published: 2026-06-19 Industries: electronic-components ![How Arrow Electronics Turned Every Acquisition Into a New Capability](/og/hero-arrow-electronics-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Arrow Electronics sits at #1 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for electronics, the vertical it has defined for half a century. The company began in 1935 as a used-radio stall on Manhattan's Radio Row and now clears roughly $30 billion a year moving components from factories in Taiwan and Texas into the hands of engineers everywhere. The distance between those two facts is the story worth telling. ## From Radio Row to the Fortune 148 Arrow Radio opened on Cortlandt Street selling used radios and salvaged parts, the kind of shop that existed by the dozen in that stretch of lower Manhattan before it was razed for the World Trade Center. It incorporated as Arrow Electronics in 1946 and went public in 1961 on a modest $4 million in sales, according to [Wikipedia's company history](https://en.wikipedia.org/wiki/Arrow_Electronics). The pivot that mattered came in 1970, when Arrow won a Texas Instruments franchise and became an authorized semiconductor distributor rather than a scrap dealer. The company grew at an average of 34 percent a year through the 1970s on the back of that single relationship, then spent the next five decades proving that franchise access, not inventory, is what a components distributor is actually selling. Today Arrow ranks 148th on the Fortune 500, runs on roughly 22,000 employees, and reported $30.9 billion in 2025 revenue against $822 million in operating income. The MDM figure for 2024, $27.9 billion, reflects the distribution-specific revenue MDM tracks across its verticals; Arrow's total corporate number also includes its enterprise computing solutions business, a second full segment most people outside the industry have never heard of. ## The acquisition playbook: every deal bought a new capability What separates Arrow from a distributor that simply got big is the pattern behind its acquisitions. Each major deal didn't just add revenue, it added a layer of capability the company didn't previously have. | Year | Deal | What it added | |---|---|---| | 1979 | Cramer Electronics | West Coast branch network | | 1988 | Kierulff Electronics | Turned a $16M loss into $10M profit within a year, proving the integration playbook | | 1998 | Marubun Corporation joint venture | Access to the Japanese and Asian market | | 2015-2016 | UBM's electronics media portfolio, United Technical Publishing | A trade-media and demand-generation arm | | 2018 | eInfochips | Product engineering and design services, based in India | The Kierulff deal is the one worth pausing on. Arrow didn't buy a healthy competitor, it bought a distressed one and flipped its economics in twelve months, per the same company history cited above. That turnaround discipline became muscle memory. It's why, decades later, Arrow felt comfortable buying a stable of trade publications it had no obvious use for, then an Indian engineering-services firm with no distribution business at all. Both deals look strange in isolation. Together they trace a company deliberately moving upstream: first from parts to franchises, then from franchises to geography, then from geography to the content that gets an engineer's attention before the sale, then to the design services that keep Arrow relevant after it. ## The insight: distribution as a stack, not a warehouse That's the pattern a reader wouldn't get from Arrow's own materials: this is not a company that grew by getting bigger at the same job. It grew by acquiring the next layer up the value chain every decade or two, components distribution to franchise access to geographic reach to media reach to engineering services, until "distributor" became an undersell for what the company actually does. Most electronic-components distributors compete on line-card breadth and inventory turns. Arrow's bet, expressed through fifty years of deal-making, is that the durable moat sits one level above that: owning the relationship with the design engineer before the part number is even chosen. That bet has a real trade-off. A company built to sell components, run a computing-solutions business, publish trade media, and staff design engineering all at once is a much harder organization to run cleanly than a pure-play box mover, and complexity at that scale eventually shows up somewhere. ## A rare wobble It showed up, briefly, in September 2025. CEO Sean Kerins separated from the company effective September 16, an abrupt exit after roughly three years in the role, and the board named director William "Bill" Austen, a former Bemis Company chief executive, as interim CEO while it searches for a permanent successor, per [CRN's coverage](https://www.crn.com/news/channel-news/arrow-electronics-names-interim-ceo-after-sean-kerins-departs). Arrow was explicit that the departure wasn't tied to financial results and didn't signal a change in strategy, and the stock's dip was a reaction to the surprise itself rather than to anything in the numbers. For a company whose entire growth story runs on decades-long continuity, of franchises, of integration playbooks, of a slow climb up the value stack, an unplanned leadership change is the one kind of disruption that doesn't fit the pattern. How the next CEO handles the segment mix Arrow has spent fifty years assembling is the thing to watch. Distribution's biggest wins rarely look like invention. They look like a company that keeps buying the next capability up the chain and integrating it before anyone notices the shop on Radio Row is gone. --- # Your PIM added an AI button. It didn't add an enrichment team. Source: https://www.anglera.com/blog/your-pim-added-an-ai-button Published: 2026-06-18 ![Your PIM added an AI button. It didn't add an enrichment team.](/og/hero-your-pim-added-an-ai-button.jpg) Every PIM has shipped AI features by now — generate a description, suggest an attribute, draft a title. They're good features. And they've created a reasonable question: *if our PIM already has AI, what's left to add?* The answer is in the word "assist." PIM AI assists a person doing the work. It doesn't do the work. That gap is small on one SKU and enormous across a catalog. ## Assistance scales with your headcount. The work doesn't. A "generate" button helps whoever is already sitting in the record. It speeds up the field they're filling right now. But someone still has to open each product, gather the source spec, prompt the tool, check the output, and move on. The AI made each step faster; it didn't remove the step, and it didn't remove the person. So the math barely changes. A category manager who owns 40,000 SKUs and touches 200 a quarter now touches maybe 260. The button is real. The bottleneck — human attention, one record at a time — is exactly where it was. ## "Owning the work" is a different job Doing the work, rather than assisting it, means starting from the catalog instead of from a single open record: - **Gathering** the missing source data from suppliers and the open web, not waiting for someone to paste it in. - **Working the whole catalog**, including the long tail nobody has time to open. - **Scoring every SKU** against your quality standards and surfacing what's wrong before a channel rejects it. - **Keeping it current** as products, suppliers, and channel requirements change — continuously, not in a one-time pass. A PIM is built to *store* a clean record and syndicate it. It is not built to *produce* one across a catalog without a team driving it field by field. Both things can be true: your PIM is the right system of record, and it still assumes the work already happened. ## Standards, set once, applied at scale The objection usually hides a real fear: that automating enrichment means losing control of quality. It's the opposite when it's done right. Your experts define what "good" looks like once — the attributes that matter, the tone, the compliance rules — and that standard gets applied to every SKU, with nothing publishing below the bar. Review becomes a guardrail you set, not a queue you babysit, and it tapers as the system earns trust. ## Keep the PIM. Add the work. This isn't an argument against your PIM. Keep it — it's doing its job. The question is who fills it, completely and continuously, without an army. That's the line [Anglera](/) draws: **your PIM stores the data; Anglera does the work.** Not a faster button inside the record — the enrichment itself, run across the whole catalog and written back to the system you already own. An AI button makes your team a little quicker. The goal was never a quicker team. It was a finished catalog. --- # Syndicating skincare data to every channel without the re-keying Source: https://www.anglera.com/blog/skincare-syndication Published: 2026-06-18 Industries: skincare ![Syndicating skincare data to every channel without the re-keying](/og/hero-skincare-syndication.jpg) A facial serum that sells well on your own site can still sit invisible on Amazon, Walmart Marketplace, or Ulta's site because one field is missing. Not the product photo. Not the price. Usually it is a GTIN that does not match GS1, an ingredient list that is not INCI-formatted, or a skin-type attribute that was never mapped to the channel's taxonomy. In skincare, marketplaces enforce a content bar that most brand feeds were never built to clear, and the gap shows up as suppressed listings, lost search placement, or a product page that simply looks unfinished next to a competitor's. ## The three things marketplaces actually check Every channel has its own template, but the underlying checks are the same three categories: identifiers, content, and attributes. **Identifiers.** Amazon requires a GTIN for most branded beauty listings, and it verifies that number against the GS1 database rather than accepting whatever code sits in your source system. Amazon also maintains a specific list of brands for which GTIN exemptions are not available at all — list a product under one of those brands without a valid, GS1-registered UPC and the listing gets suppressed outright, according to [Jungle Scout's GTIN exemption guide](https://www.junglescout.com/resources/articles/gtin-exemption-amazon/). If your internal SKU-to-UPC mapping has drift (duplicate codes, transposed digits, a UPC reused across a discontinued shade), that drift now costs you a listing, not just a data-quality flag. **Content.** For skincare and cosmetics specifically, Amazon requires disclosure of product purpose, net content amount, ingredient list, manufacturer name and address, and any relevant warnings directly on the detail page, per [ComplianceGate's rundown of Amazon's cosmetics requirements](https://www.compliancegate.com/amazon-beauty-products-cosmetics-requirements/). An ingredient list copied from a marketing PDF, in the wrong order or missing a preservative, does not satisfy this — it needs to match the INCI-formatted list on the actual label, because Amazon and other marketplaces can and do request the physical label for verification. **Attributes.** This is where skincare feeds fall apart quietest. Marketplace category templates ask for skin type, skin concern, product form, key ingredient, fragrance-free status, and use-time (AM/PM) as structured, filterable fields — not sentences inside a bullet. A shopper filtering "oily skin" plus "fragrance-free" plus "under $30" on Amazon or Walmart never sees your serum if those three attributes are not populated in the exact values the channel expects. ## Before and after: a facial serum Here is a typical raw brand feed for a vitamin C serum next to what a marketplace-ready version looks like. | Field | Raw feed (brand ERP export) | Channel-ready (enriched) | |---|---|---| | Title | "VitC Serum 30ml" | "Vitamin C Brightening Serum with Ferulic Acid, 1 fl oz, for Dull & Uneven Skin Tone" | | Identifier | Internal SKU only | GS1-verified UPC, GTIN-14 mapped | | Skin type | (blank) | Normal, Combination, Oily | | Skin concern | (blank) | Dullness, Uneven Tone, Fine Lines | | Key ingredient | "Vit C" | L-Ascorbic Acid 15%, Ferulic Acid, Vitamin E | | Ingredient list | Marketing copy, partial | Full INCI order matching label | | Use time | (blank) | AM | | Fragrance-free | (blank) | Yes | | Volume | "30ml" | 1 fl oz / 30 mL (both units, channel-specific format) | The raw version is not wrong, exactly — it is just under-specified for a system that filters on structured fields. A shopper (or an AI shopping agent) asking "recommend a fragrance-free vitamin C serum for dull, combination skin under $40" can only surface the enriched row. The raw row has no field that answers any part of that question. ## Why this is a syndication problem, not a content-writing problem The instinct is to fix this one marketplace at a time: patch the Amazon listing, then patch Walmart, then patch Ulta.com. That is exactly how re-keying debt accumulates. Each channel has its own attribute names, its own controlled vocabularies ("oily" vs. "combination/oily"), and its own required-field list, and a merchandiser manually filling three templates for the same serum will eventually produce three different ingredient orders or three different skin-type values for one product. Product data syndication exists to solve this by inverting the workflow: enrich the product once, centrally, then map that single enriched record to each channel's template. As one syndication vendor puts it, you "define an export mapping per channel — which attributes map to which template columns — once. After that, every catalog update can be carried to every channel without re-keying" ([Catsy on product content syndication](https://catsy.com/blog/how-to-syndicate-product-data-across-every-channel/)). The mapping work happens once per channel; the enrichment work happens once per product. Everything downstream is propagation, not re-entry. That only works, though, if the source record is actually complete. A syndication layer distributing an incomplete or inconsistent product record just multiplies the incompleteness across every marketplace at once — three suppressed listings instead of one. ## The completeness bar to hit before you syndicate For a skincare SKU, "channel-ready" generally means: - A GS1-verified, non-duplicated GTIN/UPC mapped to the exact SKU (not a family-level code shared across shades or sizes) - A full INCI-ordered ingredient list matching the physical label, not the marketing deck - Skin type, skin concern, product form, and use-time populated with the channel's exact controlled-vocabulary values, not free text - Volume and net content in both metric and imperial units, formatted per channel - Fragrance-free, cruelty-free, and other claim flags populated only where substantiated, since unsupported claims get listings pulled, not just deprioritized - A title and bullet structure that reads correctly for a shopper and holds up when an AI agent parses it for a specific ask ("fragrance-free," "for combination skin," "under $40") Get that record right once, and syndication becomes mechanical. Get it wrong once, and it is wrong on every channel simultaneously. Anglera sits in front of this problem as the enrichment layer, not another feed tool to babysit. It scores every SKU against the identifier, content, and attribute bar each marketplace actually enforces, gap-fills what is missing or malformed, and keeps the enriched record current as ingredients, claims, or channel requirements change. Your PIM stores the data; Anglera does the work of making it channel-ready before it ever gets syndicated. --- # Sherwin-Williams: The Paint Maker That Became Its Own Retailer Source: https://www.anglera.com/blog/sherwin-williams-retailer-playbook Published: 2026-06-18 Industries: building-materials ![Sherwin-Williams: The Paint Maker That Became Its Own Retailer](/og/hero-sherwin-williams-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Sherwin-Williams sits at #39 on [NRF's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $12.60 billion in 2025 U.S. retail sales, a number that only tells part of the story since the company also manufactures nearly everything it sells. Most retailers on the NRF list buy inventory from someone else and sell it. Sherwin-Williams invented the can, patented the way it closes, and then built the store that sells it. That triple identity, chemist, manufacturer, retailer, is the whole plot. ## A $2,000 Bet on the Cuyahoga Henry Sherwin put his life savings, $2,000, into an Ohio paint-supply partnership in 1866. Four years later he dissolved it and started over with Edward Williams and a third partner, A.T. Osborn, buying a factory on the Cuyahoga River in Cleveland in 1873 to make paste paints, oil colors, and putty, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/the-sherwin-williams-company-history/). Painters at the time mixed their own paint from raw pigment and oil every morning. It was slow, inconsistent, and wasteful. Sherwin-Williams solved that problem twice. In 1877 the company developed what FundingUniverse describes as the first patented reclosable paint can, letting customers seal and store leftover paint instead of tossing it. In the 1880s it launched SWP, Sherwin-Williams Paint, the first ready-mixed paint to win real public acceptance. The partnership incorporated formally in 1884, and that same period brought Inside Floor Paint, an early bet that different surfaces deserved different formulas rather than one all-purpose can. ## Cover the Earth By 1888 the company had outgrown residential paint alone, opening a Chicago plant to supply the Pullman rail-car company and farm-implement makers. The famous Cover the Earth globe-and-paint-bucket trademark arrived in 1905 and has anchored the brand ever since. Under second president Walter Cottingham, the company went public in 1920, raising $15 million in preferred stock to fund acquisitions including Martin-Senour, and by the early 1920s Sherwin-Williams was the largest coatings maker in the United States, per [Wikipedia](https://en.wikipedia.org/wiki/Sherwin-Williams). The chemistry kept compounding. Under third president George Martin, the company developed nitrocellulose lacquer and synthetic enamel that cut automotive paint drying time from 21 days to a few hours, a change that mattered enormously to Detroit's assembly lines. In 1941, Kem-Tone, a water-based interior paint, hit the market. It was significant enough that the American Chemical Society named it a National Historic Chemical Landmark in 1996. ## The Decade That Almost Ended the Company The 1970s nearly finished what a century of invention had built. By 1977 Sherwin-Williams posted an $8.2 million loss on $1 billion in sales and suspended its dividend, according to [Encyclopedia.com's business history](https://www.encyclopedia.com/social-sciences-and-law/economics-business-and-labor/businesses-and-occupations/sherwin-williams-company). Long-term debt had gone from zero in 1967 to $242 million by 1978. A wounded, dividend-less public company with a depressed stock price is exactly the kind of target conglomerates hunted in that era, and by 1978 Gulf + Western Industries had quietly accumulated 13.47 percent of Sherwin-Williams stock. John Breen took over as CEO in January 1979 and moved fast. He talked Gulf + Western chairman Charles Bluhdorn into selling out of the position by framing it as dead weight rather than a bargain. Internally he shuffled management, decentralized decision-making, and cut roughly 1,000 slow-selling products. Earnings jumped 57 percent in the first half of 1980 versus the prior year, and by 1985 sales had nearly doubled to $2.17 billion. ## The Store Is the Strategy Here is the part of the Breen-era recovery that doesn't get told as often as the takeover fight, and it's the real key to why Sherwin-Williams still shows up on a retailer ranking rather than fading into a private-label supplier line. Through the 1980s, discount chains and home-decorating retailers were consolidating around one or two national paint suppliers instead of stocking dozens of regional brands, per Encyclopedia.com. Sherwin-Williams read that consolidation correctly and made an unusual choice for a manufacturer: rather than compete for shelf space inside someone else's big-box store, it doubled down on running its own. That bet is why the company operates 4,853 Paint Stores Group locations today, a footprint built specifically around professional painters and contractors who need job-lot color matching, account credit, and a counter person who knows the difference between an eggshell and a satin finish. Home Depot and Lowe's sell paint to homeowners doing a weekend project. Sherwin-Williams built a parallel channel that sells to the person painting houses for a living, and it owns every link in that chain from the resin plant to the register. Most companies on the NRF Top 100 either manufacture or retail. Sherwin-Williams does both, on purpose, as a structural choice made under duress in the early 1980s, and that choice is the reason it survived as an independent company at all. ## Scaling the Model The company kept building on that dual identity. In 2004 it added Duron and Paint Sundry Brands. In 2016 it closed its largest deal ever, an $11.3 billion acquisition of Valspar that brought Dutch Boy, Minwax, and Valspar's own retail relationships into the fold, per Wikipedia. A 2022 purchase of Sika's European industrial coatings business extended the same logic overseas. Today Sherwin-Williams runs three segments, Paint Stores, Consumer Brands, and Performance Coatings, out of Cleveland, with roughly 64,000 employees and $23.6 billion in global revenue. The through-line from 1866 to now is that Sherwin-Williams never stopped controlling its own shelf. Every retailer eventually has to decide whether to own the last mile to the customer or rent it from somebody else. Sherwin-Williams decided that a century and a half ago and has been proving the math on it ever since. This profile is part of Anglera's Retailer Playbooks series, a look at the companies whose catalogs, supply chains, and store networks quietly run American retail. --- # Right product, right buyer, right moment: the real job of product data Source: https://www.anglera.com/blog/right-product-right-buyer-right-time Published: 2026-06-18 ![Right product, right buyer, right moment: the real job of product data](/og/hero-right-product-right-buyer-right-time.jpg) Most retail and distribution teams talk about product data as a compliance exercise — fill in the fields, pass the marketplace validator, ship the catalog. That's backwards. Product data has exactly one job: get the right buyer to the right product at the moment they're ready to act, then eliminate every remaining reason they might not buy. Everything else — schema completeness, attribute counts, PIM hygiene — is a means to that end, not the end itself. Once you frame it that way, you also get a map for how to measure it, because each stage of the funnel fails for a specific, traceable reason. ## The funnel product data actually gates Think of the buyer's path as four gates, and product data is the thing that opens or blocks each one. **Discovery.** The buyer doesn't find you if your data doesn't match how they search. That's organic search (titles, structured data, category taxonomy), on-site search (synonyms, attribute-based filtering, spec normalization), marketplace search (Amazon, Faire, industrial distributors' own catalogs), and increasingly AI answer engines that summarize and cite product pages — one more discovery surface among the rest, not a replacement for them. If a distributor lists a fitting by an internal SKU code instead of the trade name a buyer actually searches, that product is invisible no matter how good it is. **Relevance and matching.** Getting found isn't enough — the buyer has to land on the *right* product, fast. This is where attribute depth and structured spec data matter most: filters, comparison tables, fitment and compatibility data. A buyer searching for a `1/2 in NPT` fitting who lands on a page missing thread type or pressure rating either bounces or, worse, buys the wrong part. **Decision.** Once the buyer is on the right PDP, they're deciding whether to trust it. This is images, dimensions, materials, certifications, compatibility, reviews, and — for B2B especially — spec sheets and documentation. McKinsey's B2B Pulse research has tracked buyers using an average of [10.2 interaction channels](https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/five-fundamental-truths-how-b2b-winners-keep-growing) during a purchase, up from five in 2016, and [Gartner's 2026 sales survey](https://www.gartner.com/en/newsroom/press-releases/2026-03-09-gartner-sales-survey-finds-67-percent-of-b2b-buyers-prefer-a-rep-free-experience) found 67% of B2B buyers now prefer a rep-free buying experience. That means the PDP is doing the job a salesperson used to do — answering the objections before anyone asks them out loud. **Conversion, and what happens after.** The buyer adds to cart or calls procurement. But data's job isn't done at "add to cart" — incomplete or wrong data creates costs downstream: returns, support tickets, chargebacks, and churn. A [Retail Dive-sponsored study](https://www.retaildive.com/spons/study-reveals-poor-product-contents-impact-on-digital-sales/419987/) of over 1,500 consumers found 40% had returned an online purchase because of inaccurate product content, and among shoppers who received inaccurate information, 86% said they were unlikely or very unlikely to buy from that retailer again. That's not a one-time lost sale — it's a lost customer. ![Diagram: the funnel product data gates — where buyers leak and the attributes that keep them](/diagrams/conversion-funnel.svg) ## What gates each stage, concretely | Funnel stage | What it depends on | Data-quality failure mode | How you measure it | |---|---|---|---| | Discovery | Titles, categories, structured data, keyword coverage | Missing/inconsistent naming, thin taxonomy | Organic sessions to PDPs, marketplace search impressions, AI-source referral traffic (GSC, marketplace seller dashboards, referrer analysis) | | Relevance/matching | Attributes, filters, fitment/compatibility data | Sparse or wrong specs, broken filters | On-site search zero-result rate, filter usage vs. bounce, search-to-PDP click-through | | Decision | Images, dimensions, certs, spec sheets, reviews | Stock/missing imagery, absent specs, no docs | PDP scroll depth, spec-sheet downloads, session recordings, support-ticket topics pre-purchase | | Conversion | All of the above, resolved with no open objection | Any gap surviving to checkout | Add-to-cart rate, PDP conversion rate, cart abandonment reasons | | Post-purchase | Accuracy of what was promised on the PDP | Data that oversold or under-specified | Return rate by reason code, support tickets citing "not as described," repeat purchase rate | ## Why "complete" and "correct" are two different failure modes Retailers tend to measure completeness — percent of required fields filled — because it's easy to dashboard. But incompleteness and incorrectness cause different downstream damage, and you need to separate them in your reporting. A missing dimension field costs you a discovery or relevance moment: the buyer never gets matched, or bounces from a thin page. A *wrong* dimension field costs you a return, a support ticket, and possibly the customer relationship — because they got far enough to trust the page. Site search data backs up how much sits on relevance and matching alone: shoppers who use on-site search convert at [meaningfully higher rates](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics) than those who don't, but only when the search index has the attributes to match intent — a search that returns zero results, or the wrong category, sends that high-intent buyer straight to a competitor's marketplace listing instead. Both failure modes are visible if you're willing to instrument for them. Discovery and relevance failures show up in organic/marketplace impressions vs. click-through and in on-site search zero-result logs. Decision failures show up in scroll depth, time-on-page, and abandoned-cart reasons where "not enough information" is a selectable exit survey option — most cart-abandonment research puts unclear or missing product descriptions in the same tier of blame as shipping cost and delivery time. Post-purchase failures show up in return-reason codes (specifically "item not as described," not just "changed my mind") and in support tickets that reference a spec the PDP got wrong or never listed. ## Where this connects back to enrichment None of these four gates are things a PIM alone solves — a PIM is the system of record, but it doesn't know that a spec is missing, a title doesn't match buyer search language, or a description is thin enough to cause a return. That's the enrichment layer's job: continuously scoring catalog data against exactly these failure modes, gap-filling from supplier docs, and flagging what's wrong before it becomes a return or a lost customer — without touching what the PIM already does well. Anglera plugs into whatever PIM a team runs, or none at all, and does that work in weeks rather than a multi-quarter project. The rest of this measurement series walks through how to instrument each stage of this funnel in detail — this piece is the map. --- # Building a product-data scorecard your whole team trusts Source: https://www.anglera.com/blog/product-data-scorecard-dashboard Published: 2026-06-18 ![Building a product-data scorecard your whole team trusts](/og/hero-product-data-scorecard-dashboard.jpg) Most "data quality" dashboards die within a quarter because nobody agrees on what the numbers mean or who owns them. Merchandising thinks a 92% completeness score is a win; e-commerce knows half those fields are boilerplate that never moved a conversion rate. The fix isn't a fancier dashboard — it's a scorecard built backward from the outcomes each team already gets measured on, with quality dimensions as the leading indicators. ## Start with the dimensions, not the dashboard Most data-quality frameworks converge on the same handful of dimensions, whether you're looking at retail catalogs or enterprise master data. [Precisely's breakdown](https://www.precisely.com/data-quality/data-quality-dimensions-measure/) covers the standard set: accuracy, completeness, consistency, validity, timeliness, and uniqueness. For product data specifically, [an evaluation guide from Bluestone PIM](https://www.bluestonepim.com/blog/how-to-evaluate-product-data-quality-in-1-hour) narrows it to the ones that matter most for commerce: accuracy, completeness, consistency, validity, timeliness, and uniqueness — with accuracy and completeness singled out as the two most tied to purchase decisions. For a scorecard, five dimensions cover the ground without becoming unwieldy: - **Completeness** — are the required and channel-specific fields populated (spec sheets, dimensions, compatibility, compliance attributes, imagery)? - **Accuracy** — does the data match the source of truth (supplier docs, spec sheets, certified test data), not just "does it look plausible"? - **Consistency** — is the same SKU described the same way across your site, marketplaces, and distributor feeds? - **Richness** — does the listing go beyond the minimum (comparison attributes, use-case content, cross-sell logic) in ways that actually change buyer behavior? - **Freshness** — how old is the last verified update relative to when the underlying product, price, or spec changed? Each of those is a leading indicator. None of them is the actual business outcome. That's the gap that kills most scorecards: teams report the leading indicator and stop, so nobody outside the data team ever sees why it matters. ## Pair every dimension with the outcome it drives The credibility fix is mechanical: every quality row on the scorecard needs an outcome row next to it, plus the report you'd pull to check it. | Quality dimension | What it predicts | Outcome metric | Where to measure it | |---|---|---|---| | Completeness | Buyers can self-serve the info they need without calling support | PDP conversion rate, add-to-cart rate | GA4 or your commerce platform's funnel report, segmented by completeness tier | | Accuracy | Fewer "not as described" returns and disputes | Return rate by reason code | Returns/RMA system, filtered to "wrong spec/wrong item" reason codes | | Consistency | Trust holds up across channels; fewer support escalations | Cross-channel bounce/exit rate, support tickets per 1,000 orders | Analytics by channel/source + helpdesk ticket tagging | | Richness | Buyer finds the right variant faster, less onsite hunting | On-site search zero-result rate, attach rate, AOV | Site search analytics, order data | | Freshness | Listings stay findable and don't drift out of sync with reality | Organic + AI-referral traffic to the SKU, indexation/crawl health | Search Console (organic), referral traffic in analytics, crawl logs | [Add-to-cart rate is one of the handful of PDP metrics](https://www.merchmetric.com/blog/product-page-metrics-that-matter-5-kpis-that-predict-80-of-your-conversions/) that explains most of the variance in product-page conversion — which is exactly why completeness belongs on the same row as ATC rate rather than living in a separate "data health" report nobody outside the data team opens. Discovery is worth breaking out on its own line, because it now has three legitimate channels: organic search, on-site search, and AI answer engines that summarize or cite product pages. None of them should be the headline metric — treat referral volume from AI sources as one more segment in the traffic report, not a new scorecard. ## Make it credible: tie every score to a checkable source A completeness score is only as trustworthy as the rule behind it. "87% complete" means nothing if nobody can say which 13% is missing and why it matters. Two things make a scorecard survive contact with a skeptical merchandising director: 1. **Values are pulled from source documents, not asserted.** Every accuracy and completeness score should be traceable back to a supplier spec sheet, certified data feed, or other source of record — not a field someone filled in from memory. If a number can't be traced to a document, it's a guess, not a score. 2. **Weight fields by revenue impact, not by field count.** A blank "care instructions" field and a blank "voltage rating" field are not equally severe. Weight completeness by category-specific required attributes (what the PIM schema and channel requirements actually call mandatory) rather than treating all fields as equal. ## Split the scorecard by team, not by metric The same five dimensions roll up differently depending on who's reading: - **Merchandising** cares about completeness and richness by category and vendor — which suppliers are consistently shipping thin data, which categories are dragging the average down. - **E-commerce** cares about accuracy and consistency mapped to conversion and cross-channel bounce — where bad data is actively costing sales right now. - **Operations/support** cares about accuracy and freshness mapped to returns and ticket volume — where bad data is generating cost after the sale. One scorecard, three views, same underlying numbers. That's what keeps merchandising, e-commerce, and ops looking at the same source of truth instead of three competing spreadsheets. ## Cadence: weekly for exceptions, monthly for trend, quarterly for ROI - **Weekly**: automated exception report — SKUs that dropped below threshold on any dimension, new products launched incomplete, freshness gaps beyond a set number of days. - **Monthly**: trend review across the five dimensions by category and channel, cross-referenced against the outcome metrics in the table above. This is where you catch a completeness score that's rising while conversion is flat — a sign you're filling low-value fields, not the ones buyers actually need. - **Quarterly**: full ROI review — total return-rate reduction, PDP conversion lift, support-ticket reduction, and incremental organic/referral traffic, run against the cost of maintaining the catalog. This is the version that goes to leadership. A scorecard earns trust the same way a product listing earns a sale: by being specific, sourced, and checkable, not by looking polished. Anglera's role in this system is upstream of the dashboard — it continuously scores, gap-fills, and keeps catalog data fresh against source documents so the completeness, accuracy, and freshness rows are actually true when someone checks them, whatever PIM or spreadsheet the data lives in. --- # Getting office supplies products recommended by ChatGPT, Gemini, and AI shopping Source: https://www.anglera.com/blog/office-supplies-aeo Published: 2026-06-18 Industries: office-supplies ![Getting office supplies products recommended by ChatGPT, Gemini, and AI shopping](/og/hero-office-supplies-aeo.jpg) A facilities manager doesn't browse ten shredder listings anymore. She types one sentence into ChatGPT, gets one answer, and orders it. That shift is already reshaping which office supplies brands get bought, and most catalogs aren't built for it. ## The office supplies shopper has a new front door Office supplies used to be a search-and-compare category: type "cross cut shredder," open six tabs, compare spec sheets, pick one. That behavior is moving to a single prompt and a single answer. Gartner projects that AI agents will handle 90% of all B2B purchases within three years and intermediate more than [$15 trillion in B2B spending by 2028](https://www.digitalcommerce360.com/2025/11/28/gartner-ai-agents-15-trillion-in-b2b-purchases-by-2028/), with procurement buyers already prompting tools like ChatGPT and Gemini for supplier and product discovery instead of running a search. Office supplies retailers feel this earlier than most categories because the products are recurring, spec-driven, and easy to describe in a sentence: paper weight, shred capacity, ink yield, chair weight limit. That's exactly the kind of query an AI answer engine is built to resolve on its own, without sending the shopper to a results page at all. Meanwhile the category itself is quietly moving online. In North America, office supplies ecommerce grew to 24% of category revenue, up from 22% the year before, even as brick-and-mortar sales slipped, according to a [Shopify analysis of the office supplies market](https://www.shopify.com/enterprise/blog/office-supplies-market). More of the category's growth is happening in channels where an AI, not a store associate, is doing the recommending. ## Ask an AI to recommend one, and watch what it actually checks Here's the kind of prompt a real office supplies buyer runs today: "Recommend a paper shredder for a 10-person office that handles staples and credit cards, has a warranty, and won't overheat during a big cleanout." To answer that, the AI has to filter on attributes, not adjectives. It needs shred type (strip-cut, cross-cut, micro-cut), security level, sheet capacity, continuous run time, bin size, whether there's a dedicated card slot, and warranty length. If a product page just says "heavy-duty office shredder" and a price, there's nothing for the model to match against the query. It skips the listing and recommends a competitor whose data actually answers the question. This is the same pattern Google is formalizing in its own AI Shopping stack. Its 2026 Merchant Center changes push retailers toward more complete, verifiable variant data, and explicitly note that [feed, page, and schema should reinforce each other](https://almcorp.com/blog/google-merchant-center-product-data-specification-update-2026/) — when the structured feed and the on-page Schema.org Product markup disagree, Google deprioritizes both rather than guessing which is right. ## Why thin data makes a catalog invisible Most office supplies catalogs were built for a shelf label, not a query. A typical feed row reads like a receipt: name, price, maybe a one-line description. That's enough for a human scanning a page. It's not enough for a model deciding whether your product answers a specific question. Here's what that gap looks like on a real product, before and after enrichment: | Attribute | Raw feed | Enriched | |---|---|---| | Title | Shredder Black | ProShred CX400 Micro-Cut Paper Shredder | | Description | Office shredder, heavy duty | 12-sheet micro-cut shredder, P-4 security level, shreds staples, paper clips, and credit cards | | Shred type | — | Micro-cut | | Security level | — | P-4 | | Sheet capacity | — | 12 sheets per pass | | Continuous run time | — | 30 minutes | | Bin capacity | — | 5.5 gallons (approx. 90 sheets) | | Credit card slot | — | Yes | | Warranty | — | 2-year limited | The raw row has a name and a price. The enriched row has every value the AI needs to test the shopper's constraints one by one: staples, credit cards, a 10-person office's shred volume, a warranty. Only one of these versions can win the recommendation. ## What machine-readable product content actually requires Getting recommended isn't about writing punchier copy. It's about giving the model structured, checkable facts in the places it looks: - Complete core attributes on every SKU: brand, GTIN or MPN, material, dimensions, capacity, and condition, not just for flagship products but for the long tail of refills, cartridges, and accessories that make up most of an office supplies catalog. - Schema.org Product markup on every product detail page that matches the feed exactly, since mismatches between the two get both versions discounted. - Category-specific specs spelled out in words an AI can parse: "P-4 security level," not "extra secure"; "ENERGY STAR certified," not "eco-friendly"; "500-sheet paper tray," not "large capacity." - Accurate, current availability, because an agent that tries to check out a listing marked in stock when it isn't gets a failed transaction, and that failure follows the retailer, not just the SKU. None of this requires ripping out an existing PIM or catalog system. It requires treating gap-filling and attribute maintenance as ongoing work, not a one-time cleanup, because new SKUs and refill variants arrive every week and each one starts life thin. Anglera plugs into whatever PIM or commerce platform an office supplies retailer already runs — or none at all — and continuously scores, gap-fills, and enriches product data so every SKU carries the specs an AI shopping agent actually checks. Your PIM stores the data; Anglera does the work of making it complete enough to get recommended. --- # Jewelry & Watches brands have a product-data problem — and 2026 is when it costs sales Source: https://www.anglera.com/blog/jewelry-watches-state Published: 2026-06-18 Industries: jewelry-watches ![Jewelry & Watches brands have a product-data problem — and 2026 is when it costs sales](/og/hero-jewelry-watches-state.jpg) Jewelry and watch brands have spent a decade perfecting photography and a fraction of that time on the data sitting underneath it. That imbalance was tolerable when a human was the only one reading the product page. In 2026, with AI shopping agents parsing feeds instead of glossy copy, it's a revenue problem. ## The catalog is thinner than it looks Walk a jewelry or watch catalog attribute-by-attribute and the gaps show up fast: metal purity recorded as free text instead of a controlled value, gemstone type and treatment left blank, movement type missing on watches, water resistance buried in a PDF spec sheet nobody re-keyed into the platform. Ring sizing and chain-length options are often modeled as vague "variants" with no machine-readable size field at all. Industry benchmarking backs this up. Average data quality scores for jewelry and accessories catalogs sit around 80%, against an industry target closer to 90% ([WisePIM, 2026 jewelry benchmarks](https://wisepim.com/ecommerce-industry-insights/jewelry)). The same analysis flags the recurring gaps: incomplete material and gemstone-certification detail, unclear lab-grown-versus-natural labeling, missing alt text on images, and personalization options that aren't structured anywhere a filter or an AI agent could read them. None of this is a new problem. What's new is who's reading the feed. ## What thin data actually costs The category's underlying performance numbers already show the strain. Jewelry and accessories convert at roughly 1.5%, well below the broader ecommerce average of 2.3%, while return rates run around 20% versus a 17.5% ecommerce norm ([WisePIM](https://wisepim.com/ecommerce-industry-insights/jewelry)). Cart abandonment sits a bit above average too. Some of that gap is inherent to the category — jewelry is a considered, gift-heavy, size-sensitive purchase. But a meaningful chunk of it is self-inflicted. A shopper who can't confirm ring size against her own finger measurement, can't tell if a stone is lab-grown, or can't see whether a watch is actually water resistant to 100 meters or just "splash resistant" doesn't convert cleanly — and when she does buy, she's more likely to return it. Thin data doesn't just suppress search visibility; it pushes the guesswork onto the customer, and the customer pays it back in the form of a return. Here's what that looks like on an actual product record. A raw feed for a simple stud earring, versus what an enriched one should carry: | Attribute | Raw feed (typical) | Enriched record | |---|---|---| | Title | "14K Gold Earrings" | "14K Yellow Gold Diamond Stud Earrings, 0.50 ctw, Screw Back" | | Metal purity | (blank) | `14k`, yellow gold | | Stone type | "diamond" | Natural diamond, G-H color, SI1-SI2 clarity | | Carat weight | (blank) | 0.50 ctw total | | Setting/back type | (blank) | Screw back | | Certification | (blank) | GIA-graded, cert number linked | | Care instructions | (blank) | Cleaning and storage guidance | The left column is enough for a browsing human to guess at. It's not enough for a shopper comparing three near-identical stud listings, and it's not enough for an AI agent trying to decide which listing actually matches "0.5 carat diamond studs under $800." ## 2026 is when the audience for that data doubled Two forces are converging on jewelry and watch catalogs at once. First, marketplace pressure hasn't let up. Amazon alone carries hundreds of millions of third-party listings and remains the default comparison point for price and spec on commodity-adjacent categories like watches. A thin brand.com listing loses the comparison before the shopper even leaves the search results. Second, and newer: AI shopping agents are now a real discovery channel, and they read differently than people do. Structured, machine-readable catalog data is converting meaningfully better than AI agents working off scraped or incomplete listings — Shopify has reported structured catalog feeds converting roughly twice as well as AI results built from scraped product pages ([Digital Applied, 2026](https://www.digitalapplied.com/blog/ai-agentic-commerce-discover-in-ai-buy-on-site-2026)). In-chat checkout itself has stalled — Walmart saw conversion run about three times worse inside chat than on walmart.com, and OpenAI pulled back from in-chat checkout in early 2026 ([Digital Applied](https://www.digitalapplied.com/blog/ai-agentic-commerce-discover-in-ai-buy-on-site-2026)). The winning pattern that emerged is "discover in AI, buy on your own site" — which means the agent's summary of your product, built from your feed, is doing real work before the shopper ever lands on your page. Ask an AI shopping assistant to "recommend a 14k gold anniversary band under $1,000 with a lab-grown diamond" and watch what happens with a thin catalog: the agent either skips the listing because it can't confirm metal purity or stone origin, or it guesses — and a wrong guess is worse than no listing at all, because it sends the wrong shopper to your page and drives the return rate up further. ## Fixing it isn't a photography problem Better photography and 360-degree video still matter, but they don't fill in `metal_purity`, `stone_treatment`, `movement_type`, or a structured ring-size range. Those are attribute problems, and they live in the data layer, not the creative layer. Standardizing them once — controlled values instead of free text, gemstone and certification fields instead of adjectives, size ranges instead of a size-chart PDF — pays off in every channel that reads the catalog, from on-site filters to AI agent summaries to marketplace feeds. Your PIM stores that data. Anglera does the work of finding where it's thin, filling the gaps against your existing attribute schema, and keeping it consistent as the catalog grows — without requiring a rip-and-replace of the systems you already run. It plugs into whatever PIM or commerce platform you have, or none, and treats jewelry and watch attributes like metal purity, gemstone certification, and sizing as first-class data, not afterthoughts buried in a description field. --- # Cutting returns in jewelry & watches with better product data Source: https://www.anglera.com/blog/jewelry-watches-guide Published: 2026-06-18 Industries: jewelry-watches ![Cutting returns in jewelry & watches with better product data](/og/hero-jewelry-watches-guide.jpg) Jewelry and watches carry some of ecommerce's highest price points and thinnest product pages. A shopper deciding on a four-figure ring or a five-figure watch is making a purchase they can't try on, based on a page that usually tells them less than a jeweler behind a counter would in thirty seconds. Here's what that page needs to answer, and what it costs when it doesn't, using a diamond engagement ring as the example. ## The return isn't about the jewelry. It's about the page. Jewelry doesn't have the sizing chaos of apparel, but it isn't immune to returns. Benchmarks vary by source: one widely cited breakdown puts [jewelry and accessories returns at 12-15%, below the ecommerce average of roughly 19-20%](https://www.richpanel.com/learn/ecommerce-return-rates), while others place the category closer to the general average because of ring sizing and gemstone color mismatch. Either way, the drivers are consistent: sizing, stone appearance not matching the listing, and gifting purchases made without enough confidence to be final. Jewelry and watches are as high-consideration as retail gets: expensive, hard to regift once returned, and bought against expectations set by a few photos and a short spec block. Online penetration for jewelry has actually been ticking down, not up: the [online share of jewelry retail sales fell to 29.2% in 2023 from 31.4% in 2022 as shoppers went back to physical counters](https://www.digitalcommerce360.com/jewelry-ecommerce-statistics/), and category conversion rates slid alongside it. That's as much a data-confidence problem as a preference shift. When a page can't answer the questions a jeweler would, shoppers go find someone who can. ## The questions a jewelry or watch shopper actually needs answered Before checkout, a shopper evaluating a piece of fine jewelry or a watch runs through a specific list, whether the page helps them or not: - What exactly is the metal (10k, 14k, 18k, platinum), and is that verified or just a supplier claim - What's the actual stone: natural, lab-grown, or simulant, and how is that disclosed - Is there an independent grading report (GIA, IGI, AGS), viewable before I buy - What are the real 4Cs: carat, cut, color, clarity, not just "brilliant-cut diamond" - What's the ring size range, and can it be resized after purchase, and by whom - For a watch: case size, movement type, water-resistance rating - Is this new, vintage, or refurbished, and what's covered under warranty - What's the return and resize window, and does resizing void the return A generic listing answers two or three of these. The rest live in a certificate PDF, a supplier spec sheet, or nowhere at all. ## A diamond engagement ring, before and after Here's a common pattern: a solitaire engagement ring, round brilliant center stone, sold across a size run. Below is what a typical supplier feed hands a retailer, next to what a shopper (or an AI shopping agent) needs to buy with confidence. | Attribute | Raw feed | Enriched | |---|---|---| | Metal | "14k gold" | 14k white gold (verified alloy, stamped), also available in 14k yellow, 18k white, platinum | | Center stone | "1 carat diamond" | 1.02 ct, natural, round brilliant, G color, VS1 clarity, excellent cut | | Grading | Not listed | GIA report #, viewable PDF linked, plotted diagram included | | Stone origin | Missing | Natural (not lab-grown); lab-grown version listed separately at its own price point | | Setting | "Solitaire" | 4-prong solitaire, cathedral shank, comfort-fit interior | | Ring size | "5-9" | Sizes 4-10 in half sizes; free resizing within 60 days, one time | | Warranty | Generic "lifetime" claim | Covers prong tightening and rhodium replating; excludes stone loss from impact damage | | Return policy | "30-day returns" | 30-day return unworn with tags; resized rings final sale | The "raw feed" column is what most jewelry catalogs import by default: a metal guess, a carat number, a setting name. The grading report, stone-origin disclosure, and resize policy are what actually decide whether a nervous first-time buyer clicks "buy" or closes the tab to ask a jeweler in person, and they're the fields most likely to be missing. Ask an AI shopping assistant to "recommend a one-carat GIA-certified engagement ring under $6,000 with a comfort-fit band," and it's matching against those exact structured fields: carat, certification, price, band feature. A listing that only says "1 carat diamond ring" has nothing for the assistant to match against, and gets filtered out before a shopper ever sees it, regardless of how good the ring actually is. ## Where this shows up on the watch side Watches carry the same gap. A shopper comparing dive watches wants water resistance stated in meters or ATM, not "water resistant," plus a movement type and a case diameter in millimeters, since none of those are adjustable after purchase the way a strap is. [Case size and water-resistance rating are treated as standard, expected specs](https://www.tourneau.com/watch-education/water-resistance.html) by watch buyers, but they're routinely vague or missing on pages that only carried over a marketing description. The fix in both categories is structural, not cosmetic. Not a better photo or a longer description, but the specific, verifiable fields that let a shopper stop guessing and an AI agent stop filtering the product out. ## The checklist For any fine jewelry or watch SKU, these fields should exist and be populated before it goes live: - Verified metal type and purity, not a copied supplier claim - Stone type disclosed as natural, lab-grown, or simulant, with no ambiguity - Independent grading report linked, where one exists - Full 4Cs (or equivalent gemstone specs) in structured form, not just a marketing phrase - Ring size range and resizing policy, stated plainly - Watch case size, movement type, and water-resistance rating in standard units - Condition grade for vintage or refurbished pieces, plus clear warranty terms - Return window and any conditions that make a return final (resizing, engraving, custom work) Most catalogs are missing several of these on any high-value SKU, and the gaps cluster on the exact fields a shopper needs before committing four figures to something they can't try on. ## Where Anglera fits Your PIM stores the metal type, the carat weight, the certification number. It doesn't catch when a grading report link is missing, flag an ambiguous stone-origin field, or notice that half your ring sizes lack a resize policy while the other half don't. Anglera scores every jewelry and watch listing against the fields that drive return-free purchases, gap-fills them from source specs and certificates, and keeps them current as new pieces arrive, so the page a nervous shopper reads and the feed an AI agent parses tell the same story. --- # How Hydraquip Turned Employee Ownership Into a Buying Machine Source: https://www.anglera.com/blog/hydraquip-distributor-playbook Published: 2026-06-18 Industries: pumps-fluid-power ![How Hydraquip Turned Employee Ownership Into a Buying Machine](/og/hero-hydraquip-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Three engineers showed up in Houston in 1951 with a trunk full of hydraulic valves and no customers. Seventy-four years later, that company, Hydraquip, lands at #10 in fluid power on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual accounting of North America's largest distributors across 20 product categories. The interesting part isn't the rank. It's who owns the company that earned it. ## A family business that gave itself away Hydraquip stayed a conventional family-owned operation for its first 34 years. In 1985, ownership shifted to an Employee Stock Ownership Plan, according to [the company's own history page](https://www.hydraquip.com/about-us/our-history/). That single decision is the hinge the rest of the story turns on. Every employee since has accumulated stock without buying it, and the company has stayed out of the hands of a family estate, a strategic acquirer, or a private equity sponsor for four decades running. That matters more in 2025 than it did in 1985. Fluid power distribution has become a magnet for consolidation: strategics and PE-backed platforms have spent the last decade rolling up regional hydraulics and pneumatics houses at a steady clip. Most independent shops in this vertical eventually take a check. Hydraquip took the opposite path. Its ownership structure isn't a defensive moat against being bought so much as a financing engine for buying others. ## The roll-up, run by the employees who do the work Look at Hydraquip's own acquisition record and a pattern emerges: it has been the buyer in nearly every deal on its timeline, not the target. | Year | Move | |---|---| | 1951 | Founded in Houston, Texas | | 1985 | Converts to employee ownership (ESOP) | | 2002 | Acquires Air & Hydraulic Components (Oklahoma) | | 2014 | Acquires Emrick & Hill (Colorado) | | 2021 | Acquires Flint Hydraulics (Tennessee) | | 2022 | Elite Controls joins Hydraquip, forming the Hydraquip Electric Systems division | | 2025 | Launches HydraCool, a data-center liquid cooling line | *(Timeline per [Hydraquip's history page](https://www.hydraquip.com/about-us/our-history/) and [EOH company news](https://www.eoh-inc.com/news/).)* Hydraquip now sits under a holding company called Employee Owned Holdings, Inc. (EOH), which runs the identical playbook across two sister platforms: Supreme Integrated Technology in New Orleans and GCC in Tampa, per [EOH's corporate site](https://www.eoh-inc.com). GCC itself grew by buying Valin Corporation's fluid power division, and Supreme Integrated Technology grew by buying C.S. Controls, both moves logged on the same EOH newsroom feed. This is the non-obvious part of the story: EOH isn't one distributor with an ESOP attached as a benefit. It's a holding structure using employee ownership as the capital and retention model for running three separate roll-ups in parallel, in a sector where nearly everyone else's roll-up is funded by a financial sponsor with a five-to-seven-year exit clock. No sponsor means no forced sale, no dividend recap pressure, and no portfolio-company mandate to strip branches for margin. It also means slower access to capital than a PE-backed rival waving a term sheet, a real trade-off that shows up in the pace of Hydraquip's deals: roughly one meaningful acquisition every three to four years, not the multiple-a-year cadence of a sponsor-fueled platform. ## Betting the hydraulics playbook on data centers The 2025 entry on that timeline is the one worth sitting with. HydraCool is Hydraquip's new liquid-cooling line for data centers, built as a Danfoss Premier Partner and centered on direct-to-chip cooling hardware, according to [Hydraquip's data center cooling page](https://www.hydraquip.com/data-center-cooling-solutions/). On its face, that looks like a diversification play chasing AI infrastructure spend. Look closer and it's a straight-line extension of what Hydraquip has sold since 1951: hose, fittings, couplings, and the engineering to move fluid safely under pressure through a system that cannot afford a leak. A hydraulic hose assembly built for a mining excavator and a coolant line built for a GPU rack solve the same underlying problem, just at different pressures and temperatures. Hydraquip is wagering that seven decades of fluid-conveyance expertise, not a new supplier relationship, is the actual asset here. It's a plausible bet and a risky one. Data-center cooling is now drawing dedicated entrants with deeper capital and closer ties to server OEMs, and a hydraulics distributor's brand recognition in that room is close to zero. Whether HydraCool becomes a real second leg or stays a niche line off the core hydraulics business is the open question for the next MDM cycle. ## What to watch Hydraquip's placement at #10 in fluid power measures where the company sits today. The more useful signal is the model underneath it: an employee-owned distributor using that structure to keep buying rather than get bought, in a vertical where the reverse is the norm, now spending its accumulated engineering credibility on a bet well outside its historical customer base. That combination, patient capital plus a willingness to stretch the core competency into new territory, is a harder thing for a rival to copy than a bigger territory map. Every distributor on this list runs on the same unglamorous inputs: a catalog that has to be right, a branch network that has to be staffed, and data about what's actually in stock that has to move as fast as the trucks do. The companies worth studying are the ones that turn that infrastructure into a decision nobody else was willing to make. --- # Bearing Headquarters Company: Family-Owned in a Rolled-Up Sector Source: https://www.anglera.com/blog/headco-distributor-playbook Published: 2026-06-18 Industries: mro-industrial ![Bearing Headquarters Company: Family-Owned in a Rolled-Up Sector](/og/hero-headco-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Bearing Headquarters Company shows up at #10 on the power transmission/bearings list in [MDM's 2026 Top Distributors](https://www.mdm.com/top_distributors) report, the same rank it held the year before. MDM does not disclose the company's revenue publicly, which is itself consistent with the rest of this story: a distributor that has never needed to report a number to anyone outside the family. What the ranking does not show is the more interesting fact sitting next to it: nearly every other name on that PT top ten is public or private-equity owned, and this one still isn't. MDM's list, now in its 17th year, ranks distributors on industry-specific revenue rather than total company revenue, drawing on more than 220 companies across 20 product verticals. That methodology is why a company the size of Bearing Headquarters can sit on the same page as national players many times its scale: the ranking measures depth in power transmission and bearings specifically, not overall size. ## A $500 start in Chicago Ray M. Ring started the business in 1934 with, by the company's own account, an initial investment of $500 and one assistant. He ran it as the Ray M. Ring Company, a single-location bearing distributor in Chicago, through the back half of the Depression. In 1939 the business renamed itself Bearing Headquarters, a name change meant to signal what it actually sold rather than who owned it. Frank Timble came in as Ring's successor and the company grew under Timble stewardship from there. Today the owner listed on the company's own team pages is Jim Timble, which puts the same family at the helm across multiple generations in an industry where that is no longer the norm. That detail matters more than nostalgia. Look at who else sits on the [Power Transmission Distributors Association's 2024 list of members named to MDM's rankings](https://www.linkedin.com/posts/power-transmission-distributors-association_mdms-2024-top-distributors-lists-are-now-activity-7208845224981262336--yM8): Motion (a Genuine Parts Company subsidiary), Applied Industrial Technologies (NYSE-listed), Wajax (Toronto Stock Exchange), DXP Enterprises (NASDAQ-listed), Grainger (NYSE-listed), Purvis Industries (long backed by private equity), BDI, and IBT Industrial Solutions. Bearing Headquarters is the one entry on that list still privately held by the family that has run it since the mid-20th century. In a vertical that has spent three decades consolidating into public roll-ups and PE platforms, staying independent is itself a strategic choice, not an accident of size. ## The machine shop years The pivotal bet in the company's history did not happen at the counter. Between 1955 and 1979, Bearing Headquarters went on a buying spree of a different kind: machine shops, fabrication facilities, specialty manufacturing operations, and gear manufacturing businesses, according to the [company's own history](https://www.bearingheadquarters.com). Those acquisitions turned a bearing reseller into something closer to a captive repair-and-remanufacture network, later modernized with CNC equipment and laser measuring technology. A 1995 acquisition of Highland Hydraulics extended that same logic into hydraulic repair and development. The strategic implication is straightforward once you see it: most bearing and power-transmission distributors compete on catalog breadth and delivery speed. Bearing Headquarters built a parallel business inside the distribution business, one where a failed gearbox or a worn bearing housing doesn't just get replaced from stock, it gets rebuilt, remachined, or fabricated on-site. That is a materially different cost structure and sales motion than running branches that only pick, pack, and ship. It also explains why the company still operates five metalworking shops today rather than zero. ## What the model looks like now The current footprint, per the company's site, is a Midwest-concentrated network: headquarters in Broadview, Illinois, more than 25 branch locations, and those five machine shops layered on top. The product lines have broadened well past bearings alone: power transmission components, hose and fittings, linear products, material handling, seals and O-rings, air and hydraulic products, and adhesives, lubricants, and chemicals round out a nine-category catalog. The service side lists 24/7 emergency response, custom fabrication, and machining alongside straight repair and rebuild work. That combination, a deep regional branch network plus in-house repair capacity, is the same playbook Applied Industrial Technologies and Motion run at a much larger scale, minus the acquisition-fueled national footprint and the public-market pressure to keep growing revenue every quarter. Bearing Headquarters has instead stayed dense in one region for nine decades, which is a defensible position as long as the region it serves, industrial Chicagoland and the broader Midwest manufacturing base, keeps running plants. ## The honest tension Staying private and regional cuts both ways. It has let successive generations of one family make long-horizon capital decisions, like buying gear-manufacturing shops in the 1960s, without answering to a board focused on next quarter. It also means the company has not chased the national branch counts or e-commerce scale that its publicly traded PT-list peers have built. Motion and Applied Industrial can roll up a competitor in another state on a Tuesday and report the synergies on Thursday's earnings call; Bearing Headquarters answers to a much smaller set of stakeholders and moves on a different clock entirely. That is not a knock on the model, it is the trade-off that defines it. A 25-branch, five-machine-shop footprint concentrated in the Midwest means deep relationships with the plants it already serves and less exposure if a customer needs support two time zones away. Whether that MRO-and-machine-shop combination scales to the next horizon of automation and predictive maintenance, or whether it stays a strength precisely because it doesn't try to scale past its region, is the open question for any distributor of this size and shape. Every distributor on this list runs on the same unglamorous inputs, correct catalogs, dense branch networks, and product data that actually matches what's on the shelf, whether the company behind it is a public roll-up or a family shop that has been rebuilding gearboxes in Broadview, Illinois since before the interstate highway system existed. --- # Why footwear feeds underperform on Amazon — and how to fix the data Source: https://www.anglera.com/blog/footwear-syndication Published: 2026-06-18 Industries: footwear ![Why footwear feeds underperform on Amazon — and how to fix the data](/og/hero-footwear-syndication.jpg) Footwear is one of the least forgiving categories on Amazon. A running shoe with a great price and reviews can still sit invisible in search because a width value, a size-system field, or a variation theme is wrong. That's not a merchandising problem — it's a data problem, and it's fixable before you ever touch an ad budget. ## Shoes carry more mandatory fields than most categories Most sellers assume a shoe listing needs a title, a few bullets, and a price. Amazon's footwear taxonomy asks for a lot more before it will even index the listing correctly. Target Gender, Age Range, Amazon Shoe Size, Size Unit, and Shoe Size Width are treated as required, not optional, and they're what let a shopper searching "men's wide running shoes size 11" actually find the product — [Inriver's Amazon seller reference](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/) walks through why generic apparel templates trip sellers up here: a marketing color name like "Midnight" gets rejected where the controlled value "Navy" is required. Footwear also inherited a variation-theme cleanup in 2025 that most catalog teams didn't see coming. Amazon began retiring deprecated variation themes across apparel and shoe product types, and listings that didn't migrate to an approved theme in time saw parent-child structures dissolve — child ASINs (a specific size/color combination) get knocked loose from the parent and become orphaned, standalone listings that lose the parent's accumulated reviews and sales rank. According to [MyAmazonGuy's breakdown of the change](https://myamazonguy.com/news/deprecated-amazon-variation-themes/), active listings had until November 30, 2025 to rebuild the parent under a compliant theme — a structural fix, not a copywriting one. None of this shows up as an error message that says "your shoe feed is incomplete." It shows up as a listing that's live, technically for sale, and nowhere in results. ## The identifier bar: GTIN isn't optional, it's a gate Amazon requires a valid GTIN for most new ASINs, sourced directly from GS1 or an authorized reseller — not generated. Brands enrolled in Amazon Brand Registry typically get a GTIN exemption across their catalog, but that exemption still depends on clean brand-to-product matching: images with no visible competing barcode, an exact brand-name match to what's on the physical product, and a category the brand is actually approved to sell in, per [guides on the 2026 exemption process](https://cedcommerce.com/blog/amazon-gtin-exemption-how-to-list-products-without-a-upc-barcode-or-product-id/). A footwear brand selling under a house label plus a handful of private-label collabs often has GTIN gaps precisely where the catalog is newest — the SKUs launching this season. ## The content bar: images and attributes shoppers actually use to filter Amazon's image rules for shoes are stricter than for flat-lay categories: a pure white background, the product filling most of the frame, no lifestyle shots as the primary image, and a single shoe shown at an angle rather than straight-on. Miss that and the listing can be suppressed from the buy box regardless of how good the copy is. Attribute-wise, here's what a typical raw running-shoe feed looks like next to what Amazon and AI shopping agents actually need to match a shopper's query. | Field | Raw feed (as received from PIM) | Channel-ready (enriched) | |---|---|---| | Title | "Men's Running Shoe – Black" | "Men's Trailbreak X2 Running Shoe, Wide Width, Lightweight Mesh Upper, Black/Volt" | | GTIN | Missing | 0-8459301-2 (GS1-issued, verified) | | Target Gender | Blank | Male | | Amazon Shoe Size / Unit | "10" (unit unspecified) | 10, US | | Shoe Size Width | Missing | Wide (2E) | | Age Range | Missing | Adult | | Drop / Stack Height | Not in feed | 8mm drop, 32mm heel / 24mm forefoot | | Upper Material | "Mesh" | Engineered knit mesh with TPU overlays | | Use Case | Missing | Road running, neutral gait, daily trainer | | Variation theme | Legacy/deprecated theme | Size-Color (2025-approved theme) | The left column is a listing that technically has a title and a price. The right column is a listing that can survive a filtered search, an AI agent's parametric query, and a width-conscious shopper in the same pass. ## The bar just moved again: AI shopping agents read the same feed Marketplace completeness used to mean "good enough for Amazon search." Now the same product feed increasingly needs to answer AI shopping agents directly. ChatGPT's shopping and Instant Checkout experience runs on a product feed spec that recommends 25-plus structured attributes beyond the bare minimum of ID, title, price, and image, specifically because identifiers like GTIN and MPN are what let the agent match your shoe to a shopper's intent instead of guessing — see [Lengow's rundown of the ChatGPT product feed spec](https://www.lengow.com/get-to-know-more/chatgpt-product-feed/). Google has since backed a competing agentic commerce protocol with retail partners, which means the same enriched fields increasingly need to travel across more than one AI surface, not just one marketplace. Try this yourself: ask an AI shopping assistant to "recommend a stability running shoe for a wide-footed runner, under $150." A shoe with a filled-in width attribute, a real GTIN, and a drop/stack-height spec is eligible to be surfaced and compared. A shoe with "Mesh" in a free-text description and no width field isn't wrong, exactly — it's just unreadable to the thing doing the matching. ## Getting to channel-ready without a rip-and-replace Fixing this at the PIM level, one dropdown at a time, is how most footwear catalogs fall behind — new styles launch faster than anyone can backfill Shoe Size Width or migrate a variation theme. Anglera plugs into whatever PIM or commerce platform a retailer already runs, or none at all, and continuously scores, gap-fills, and enriches footwear attributes — GTINs, size systems, width, material, drop — against what Amazon and AI shopping agents actually require to surface a listing. Your PIM stores the data; Anglera does the work of keeping it channel-ready as the requirements keep shifting. --- # Echelon Supply and Service: How a Hose Roll-Up Erased a Name Source: https://www.anglera.com/blog/echelon-supply-distributor-playbook Published: 2026-06-18 Industries: pumps-fluid-power ![Echelon Supply and Service: How a Hose Roll-Up Erased a Name](/og/hero-echelon-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Echelon Supply and Service ranks #7 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for Hose & Accessories. The name is only three years old. Everything it's built on is much older, and the more interesting story is how a single founder's 42-year-old company became the shell for someone else's platform. ## A one-man hose shop in DeWitt Jay Bernhardt started JGB Enterprises in the first week of January 1977, working alone out of a building on Moore Road in DeWitt, New York. The company was profitable enough to clear $1 million in revenue within two years, and by the early 1980s it had pushed into defense contracting, eventually becoming, by its own account, the largest specialty hose supplier to the U.S. military. Headquarters moved to nearby Liverpool, New York in 1984, where it has stayed ever since. By 2017, four decades in, JGB employed more than 250 people and generated roughly $125 million in sales, according to a company history recounted in [BIC Magazine](https://www.bicmagazine.com/resources/sponsored-content/echelon-supply-and-service-rebrands-to-consolidate-as-one-company/). Bernhardt himself brought more than five decades in the hose industry to the job, including stints at Hewitt-Robins and Goodall before he ever started his own company, per [Rubber News](https://www.rubbernews.com/acquisition/private-equity-firm-buys-hose-distributor-jgb-enterprises/). That is a genuinely rare arc in industrial distribution: one owner, one name, four decades, no roll-up, no rescue. It ended in December 2018, when Bernhardt sold JGB to private equity firms Graycliff Partners and HCI Equity Partners in a buyout with undisclosed terms, according to deal records on [Mergr](https://mergr.com/transaction/graycliff-partners-acquires-echelon-supply-and-service). ## The platform gets built, fast What HCI did next is the part worth studying. Rather than simply run JGB as a standalone hose distributor, it used the company as the anchor for a bolt-on strategy, adding three distinct regional players in under fifteen months: HosePower Canada in June 2021 (six locations out of Whitby, Ontario), All-Serv Industrial in December 2021 (based in Louisiana, with additional Gulf Coast sites), and Berg-Nelson Company in March 2022, a Long Beach, California hose and gasket supplier founded in 1951. HCI managing partner Doug McCormick called Berg-Nelson "a well-respected, founder-owned company" that gave the platform "expanded distribution footprint" on the West Coast, per [Oridian Capital's summary of the deal](https://oridiancapital.com/echelon-supply-service-acquires-berg-nelson-company/). Each acquisition filled a specific geographic gap JGB didn't have on its own: Canada, the Gulf Coast, Southern California. Then came the part that makes this a genuine strategic choice rather than a routine roll-up. In 2022, HCI retired the JGB Enterprises name entirely, along with HosePower Canada's and Berg-Nelson's original brands, and consolidated everything under a new identity: Echelon Supply and Service. Then-president Kevin Kilkelly framed it as necessity, not cosmetics: "By merging under one strengthened banner... Echelon Supply and Service is better able to grow our footprint, offerings and service channels," he said, per BIC Magazine's account of the rebrand. ## The trade nobody talks about in roll-ups Here's the insight worth naming directly: most acquirers in distribution keep the acquired name, or at least the best-known one, because brand equity with existing customers is expensive to rebuild. Family-owned and heritage distributors lean into "since 1977" precisely because incumbency and trust are the moat, especially in defense and mission-critical supply where switching vendors carries real qualification risk. HCI did the opposite. It took a 45-year-old brand that was, by its own telling, the largest specialty military hose supplier in the country, and dissolved it into a name nobody outside the industry had heard before 2022. That's a bet that structural flexibility beats brand equity when you're building a multi-region platform rather than defending a single territory. A shared name means no acquired company's sales force has to explain why they're now selling under someone else's legacy brand, and it means the next acquisition slots in without a turf fight over whose name survives. The cost is real too: whatever relationship equity JGB had built over four decades with military program offices and industrial accounts had to be re-earned under an unfamiliar name, right as the company was also absorbing three other cultures at once. ## Professionalizing the platform The next moves look like a PE sponsor buttoning up governance rather than chasing more logos. In January 2025, Echelon promoted Matthew DeKay, its CFO and Executive VP of 13 years, to president, with board chairman Bob Hund citing DeKay's "focus on operational excellence, customer success, and team collaboration," according to [PRWeb's release](https://www.prweb.com/releases/echelon-supply-and-service-appoints-matthew-dekay-as-president-to-lead-growth-in-2025-302362397.html). Promoting the internal CFO rather than recruiting a new operator signals a company settling into steady-state growth after three years of integration work. Six months later, in July 2025, Bluehenge Direct Lending provided debt financing as part of a refinancing led by HCI that replaced the company's prior M&T Bank facility, described as "growth-oriented capital to optimize Echelon's balance sheet," per [Bluehenge's announcement](https://bluehenge.com/bluehenge-supports-echelon-supply-through-debt-investment/). | Year | Event | |---|---| | 1977 | Jay Bernhardt founds JGB Enterprises in DeWitt, NY | | 2018 | Graycliff Partners and HCI Equity Partners acquire JGB | | 2021 | HosePower Canada and All-Serv Industrial join the platform | | 2022 | Berg-Nelson acquired; platform rebrands as Echelon Supply and Service | | 2025 | Matthew DeKay becomes president; Bluehenge-backed refinancing closes | Seven years after the founder sold, and three years after his company's name disappeared from the market, Echelon now shows up at #7 on MDM's national hose ranking under a brand built to hold four companies' histories at once, not just one man's. Behind every distributor on that MDM list sits the same unglamorous machinery: branch networks, supplier catalogs, and the product data that ties them together. This series looks at how the companies that run it actually win. --- # Data decay: why catalog quality erodes and what the drift costs Source: https://www.anglera.com/blog/data-decay-cost Published: 2026-06-18 ![Data decay: why catalog quality erodes and what the drift costs](/og/hero-data-decay-cost.jpg) Every catalog you launch clean starts eroding the day it goes live. Suppliers swap a resin for a cheaper alloy without telling you. A marketplace adds a required attribute mid-quarter. A category standard shifts, and last year's "complete" listing is this year's flagged one. Data decay isn't a failure of your original enrichment project — it's the default physical state of a catalog left alone. The question worth measuring isn't whether your data decays, it's how fast, and what that rate is costing you in discovery and returns. ## Why catalogs decay even when nobody touches them Four forces drive decay, and none of them require anyone on your team to make a mistake: - **SKU churn.** New variants launch, old ones get discontinued or superseded, and the mapping between "what's live" and "what's documented" drifts apart within weeks. - **Supplier-side spec changes.** A manufacturer reformulates, resizes, or re-sources a component and updates their spec sheet — but that change doesn't propagate to your PIM or storefront unless someone is watching for it. - **Standard and taxonomy shifts.** Google Merchant Center, major marketplaces, and category-specific compliance bodies periodically add or redefine required attributes. Data that passed validation last quarter can fail it this quarter without a single field being edited. - **New channels raising the bar.** Every channel you add — a new marketplace, a retail-media placement, an on-site search upgrade, an AI shopping surface — comes with its own attribute expectations. What works on your own site isn't automatically what works on a marketplace or a retail partner's feed, and [industry analysis of PIM trends](https://www.stibosystems.com/blog/what-does-the-future-hold-for-product-information-management-five-key-points-to-consider) increasingly points to channel-specific monitoring — catching quality issues before they reach the customer, per-channel — as a requirement, not a nice-to-have. A listing that was "good enough" last quarter can be functionally incomplete the moment it needs to power a size filter, a compatibility check, or a comparison table somewhere else. None of this is hypothetical, and it gets harder to catch as the catalog gets bigger. A small assortment can be spot-checked by a person who knows it well. A catalog running into the tens of thousands of SKUs across dozens of suppliers can't be — stale attributes hide in plain sight until a return, a support ticket, or a lost sale surfaces them. ## Measuring decay rate, not just decay Most teams that "check on data quality" do it once — a big enrichment push, a scorecard, done. That treats decay like an event instead of a rate. To manage it, you need a trend, not a snapshot. | Signal | What it shows | How to measure it | |---|---|---| | Attribute completeness over time | How fast required fields are going empty or stale as SKUs are added/changed | Run the same completeness scorecard weekly or monthly against your full catalog; chart the trend, not just the current score | | Last-verified age | How much of the catalog hasn't been re-checked against source docs recently | Tag every attribute with a last-verified timestamp; report the % of catalog older than your freshness threshold (e.g. 90 days) | | Post-launch edit rate | How often a "live" SKU gets corrected after going public | Pull PIM/CMS audit logs for edits made after initial publish; a rising rate signals your intake process is missing errors upstream | | Standard-compliance drift | How many SKUs newly fail a channel's schema after a standard update | Re-validate the catalog against Merchant Center/marketplace/schema requirements after every known standard change, not just at onboarding | | Attribute-level return reasons | Which specific fields (size, material, compatibility) are driving returns | Tag returns by root cause at the attribute level, not just "customer changed mind"; roll up by SKU and category | The point of tracking these as trends is that decay rate is diagnostic. A catalog with a slowly rising post-launch edit rate has an upstream intake problem. One where completeness holds steady but standard-compliance drift spikes has a monitoring gap, not a data-entry gap. You fix different things depending on which curve is moving. ## What the drift actually costs Decay shows up in two places: people who never find the product, and people who find it, buy it, and send it back. On discovery, incomplete or outdated attributes quietly drop products out of facets, filters, and comparison surfaces — on-site search, marketplace category pages, organic search, and increasingly AI-driven shopping answers all lean on structured attributes to decide what to surface. A SKU with a missing spec doesn't get excluded on purpose; it just stops qualifying for the query that would have found it. That's measurable as a gap between impressions/traffic to a product's category and the SKU's own share of clicks or add-to-carts within it. On returns, the connection to bad data is well documented and getting worse, not better. Consumer research cited in Akeneo's ["Evolution of the Modern Shopper" survey coverage](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/) found that 40% of consumers say they've returned a product because of incorrect information — sizing mistakes and misleading specs chief among the causes — and 53% have abandoned a purchase outright over data they didn't trust. Both are up from prior years, which is itself evidence of decay: the bar for "acceptable" product data keeps rising even as more catalogs go stale under it. Every one of those returns carries a cost beyond the refund — reverse logistics, restocking, and a customer less likely to buy from you again. The compounding cost is trust. A shopper who gets burned once by a mismatched spec doesn't file a bug report — they just buy the next item from a competitor, or a marketplace listing, where the data held up. That shows up downstream in repeat-purchase rate and AOV, both of which are worth pulling alongside your data-quality trend, not just your conversion rate. ## Continuous, not a project A one-time enrichment sprint treats data quality like a renovation — do it once, admire it, move on. But decay is ongoing, so the fix has to run continuously: monitoring completeness and freshness against source documents on a schedule, catching supplier spec changes and standard updates as they happen, and re-scoring the catalog rather than re-scoring it once a year when someone finally notices the returns are climbing. This is the exact gap Anglera is built to close. Your PIM stores the data; Anglera continuously scores it, flags what's drifted, and re-enriches from supplier and source documents so the catalog doesn't quietly degrade between projects. It plugs into whatever PIM you already run — or none — without a rip-and-replace migration, because the real fix for data decay was never a bigger cleanup. It's making sure the cleanup never has to happen again. --- # Chewy: The Pet E-Commerce Bet Built From Pets.com's Wreckage Source: https://www.anglera.com/blog/chewy-retailer-playbook Published: 2026-06-18 Industries: pet-supplies ![Chewy: The Pet E-Commerce Bet Built From Pets.com's Wreckage](/og/hero-chewy-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Chewy lands at #40 on [NRF's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual ranking compiled with Kantar, with $12.60 billion in 2025 U.S. retail sales. That number belongs to a category most retail history books had already closed: online pet supplies, a business the dot-com crash supposedly proved impossible. ## The ghost it had to walk past In 2000, Pets.com became the crash's most famous casualty, a sock-puppet mascot burning through $300 million before the company folded inside two years. For the next decade, "online pet retailer" was shorthand for bad unit economics. Heavy bags of dog food are expensive to ship, margins are thin, and repeat purchases only pay off if a company can actually keep customers. Ryan Cohen didn't ignore that history. He built directly against it. Cohen founded the company in June 2011 with Michael Day, reportedly after struggling to find supplies for his poodle, Tylee, and pulled on customer-service instincts from his father Ted's glassware import business, according to [Wikipedia's account of Cohen's career](https://en.wikipedia.org/wiki/Ryan_Cohen). The original name was Mr. Chewy. The idea sounded exactly like the thing that had just failed. Cohen pitched it to more than 100 venture capital firms. All of them passed. It took until 2013 for the first outside check to arrive, a $15 million investment from Volition Capital, per the same account. ## What the rejected pitch actually contained The bet under the bet was that Amazon-grade logistics could be paired with a kind of customer attention no logistics company bothers with: hand-written holiday cards, pet portraits mailed to customers, flowers sent when a pet died. Those gestures cost real money per order in a low-margin category, which is precisely why they were hard to copy. A competitor optimizing for efficiency would cut them first. That's the piece worth naming plainly, because it's easy to miss if you only read Chewy's own framing: the company treated its highest-cost-per-unit behaviors as the moat, not the overhead to trim once it got big. [Chewy's own about page](https://www.chewy.com/app/content/about-us) still describes the goal as matching "e-commerce" scale with "the same high-touch, personalized service you should expect of the best local neighborhood pet store," in the words of CEO Sumit Singh. That line reads like marketing copy until you trace it back to a founder who was rejected 100 times for proposing exactly that trade-off. It worked. By 2016, Chewy was the largest pet e-commerce retailer in the country, on roughly $900 million in annual sales, according to [Wikipedia's summary of Cohen's tenure](https://en.wikipedia.org/wiki/Ryan_Cohen). By 2017, the company held around 51% of online pet food sales and had crossed $2 billion in revenue, per [Wikipedia's company history](https://en.wikipedia.org/wiki/Chewy_(company)). ## The acquisition that looked like an ending PetSmart bought Chewy for $3.35 billion in April 2017, at the time the largest e-commerce acquisition ever completed. Cohen stayed on as CEO of what remained a largely independent unit, and revenue kept climbing, from $2.1 billion to $3.5 billion between 2017 and 2018. Sumit Singh, who had joined as COO in 2017 after roles at Amazon and Dell, took over as CEO in March 2018. Cohen departed to, in his words, pursue personal goals, before his name resurfaced a few years later in a very different corner of the market as an activist investor. Chewy went public on the NYSE in June 2019 under the ticker CHWY at $22 a share, posting $4.85 billion in 2019 net sales, a 40% jump partly fueled by the pandemic pull-forward in pet ownership. ## A timeline of the pivotal bets | Year | Move | |---|---| | 2011 | Founded as Mr. Chewy by Ryan Cohen and Michael Day | | 2013 | First outside funding: $15M from Volition Capital, after 100+ VC rejections | | 2017 | PetSmart acquires Chewy for $3.35B, then the largest e-commerce deal ever | | 2019 | IPO on NYSE at $22/share under ticker CHWY | | 2024 | Chewy Vet Care launches in-person veterinary clinics | ## The part that's easy to overlook Here's the detail that doesn't show up in Chewy's own materials but matters for anyone studying the company as a case study: Chewy has operated as a public company since 2019, but BC Partners, the private equity firm that acquired PetSmart in 2015 and thereby inherited Chewy, still controls roughly 80% of the shares and 98% of the voting power, per Wikipedia's company history. Chairman Raymond Svider represents that stake on Chewy's board. A retailer that trades daily on the NYSE and reports quarterly earnings is, structurally, still a controlled subsidiary of a leveraged buyout. That tension between public-market transparency and private-equity control is unusual enough to be worth naming outright, and it explains some of the capital discipline that shows up in Chewy's margin story without ever appearing in a press release. The most recent chapter extends the original logic rather than abandoning it. Autoship subscriptions were already 66% of sales by 2018, and the company has since layered on pharmacy fulfillment, telehealth, pet insurance through CarePlus, and, starting in April 2024, in-person veterinary clinics under Chewy Vet Care. Fiscal 2024 net sales reached $11.86 billion. Each addition follows the same pattern set in 2011: find the part of pet ownership that's inconvenient, expensive, or emotionally loaded, and build the infrastructure to make it easy. Every one of those additions rides on the same unglamorous machinery every retailer depends on: warehouses, catalogs, and the unglamorous data behind them that decides whether the right bag of food reaches the right doorstep on schedule. --- # Berendsen Fluid Power: A Distributor That Builds What It Sells Source: https://www.anglera.com/blog/berendsen-distributor-playbook Published: 2026-06-18 Industries: pumps-fluid-power ![Berendsen Fluid Power: A Distributor That Builds What It Sells](/og/hero-berendsen-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Two distribution hubs, one in Tulsa and one in Toronto, supply every branch Berendsen Fluid Power runs across the United States and Canada. That lean setup is a big part of why the company lands at No. 9 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for fluid power, MDM's annual ranking of North America's largest distributors across 20 product verticals — the 2026 report also puts Berendsen on the Industrial Supplies list for the first time, at No. 49. It's also the clearest window into how Berendsen chooses to compete: not with the densest branch map in hydraulics, but with one of the leanest supply chains behind it. ## A hub-and-spoke bet in a branch-heavy business Fluid power distribution has traditionally rewarded local inventory. Hose, fittings, seals, and cylinders are the kind of parts a customer needs the same day a machine goes down, so the instinct across the industry has been to stock heavily at every branch. Berendsen runs the other way. Per its own [company site](https://www.bfpna.com/aboutus/Default.aspx), it operates more than 45 locations and over 400 employees across the U.S. and Canada, but purchasing and warehousing route through just two centers, [Tulsa and Toronto](https://www.bfpna.com/aboutus/LogisticsDistribution.aspx), connected by what the company describes as a communication network linking every branch to those hubs for next-day fulfillment. Fewer stocking points mean lower carrying cost and simpler inventory discipline, at the price of leaning harder on transportation to hit the same delivery promise a heavier branch network would make on its own. ## The distributor that also manufactures the product Most fluid power distributors buy finished components and resell them. Berendsen's [Systems and Services group](https://www.bfpna.com/aboutus/SystemsServices.aspx) designs and builds hydraulic power units in-house, a standard line from 5 to 75 horsepower plus custom units up to 300 horsepower, each tested before it ships. That is a meaningful departure from pure distribution: it puts Berendsen in competition, on some jobs, with the very manufacturers whose components fill its own catalog. The same group runs field service and installation crews for on-site commissioning and equipment modification, which turns a parts relationship into an engineering one before a customer ever calls about a breakdown. ## Repairing the brands it sells against Berendsen's [supplier list](https://www.bfpna.com/vendorLinks/listProdByType.aspx) reads like a map of the hydraulics industry: Danfoss lines under both the Aeroquip and Vickers names, Eaton's Internormen and Eaton Electrical brands, Parker/Olaer, Sun Hydraulics, Baldor Electric, Barksdale, and dozens more spanning hydraulics, pneumatics, lubrication, and motion control. Carrying that many competing brands under one roof is standard for a broad-line distributor. What is less standard is that Berendsen also runs more than 20 repair facilities as factory-authorized service centers, performing warranty repairs on behalf of the same manufacturers whose products sit on its shelves. That is the piece of the model worth naming plainly. Berendsen is not just choosing between brands for its customers; it is the outsourced service desk several of those brands rely on to keep warranty claims off their own payroll. Staying trusted enough by Danfoss, Eaton, and Parker to keep that authorization, while simultaneously distributing rival lines against them, is a balancing act most single-brand dealers never have to manage. It works because a distributor with technicians already in the field, already stocking OEM parts, is cheaper for a manufacturer to certify than to staff directly. ## Remanufacturing as the hedge Layered under both businesses is a remanufactured components program built on core exchange: a customer's worn cylinder, pump, or motor comes back rebuilt to original specification rather than replaced outright. It is a smaller line of the business, but it does real work for the model. It gives Berendsen a lower-cost option to offer price-sensitive accounts without discounting new parts, and it keeps repair volume flowing through the same 20-plus service centers that anchor the warranty relationships described above. ## What staying quiet buys you Berendsen does not disclose revenue, and MDM's 2026 report lists it that way too. There is no parent company listed, no recent acquisition trail, and little trade press about it at all, which is unusual for a company this size in a sector where private equity has spent the last decade rolling up branch networks. Per [Mergr's company profile](https://mergr.com/company/berendsen-fluid-power), Berendsen has operated as a privately held, Tulsa-headquartered company since the early 1990s, with no buyout on record. In a vertical where scale increasingly arrives through a platform deal, staying independent and undisclosed is itself a strategic choice, one that trades the growth multiple a sale would unlock for control over how the company is run. None of this shows up on an About page. It shows up in a supplier list fifty names long, a logistics diagram with exactly two nodes, and a repair network built to serve manufacturers as much as customers. That is the version of "winning" fluid power distribution has rewarded here: not the loudest expansion story, but the fewest moving parts required to keep forty-five branches running like one supply chain. Every distributor in this series earns its placement on MDM's list a different way. Berendsen's case is a reminder that the real product is rarely the part on the shelf. It is the catalog data, the routing logic, and the repair record behind it that decide whether the part shows up on time. --- # Wegmans: How a Rochester Produce Cart Built a Grocery Icon Source: https://www.anglera.com/blog/wegmans-retailer-playbook Published: 2026-06-17 Industries: grocery-cpg ![Wegmans: How a Rochester Produce Cart Built a Grocery Icon](/og/hero-wegmans-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Two brothers pushing a produce cart around Rochester, New York in 1916 could not have known they were starting a company that would still be family-run more than a century later. Wegmans now ranks #38 on the [National Retail Federation's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), compiled with Kantar, with $13.36 billion in 2025 U.S. retail sales, and it did it while remaining privately held and staying out of most of the acquisitions that reshaped its peers. ## A Produce Cart, Then a Cafeteria John and Walter Wegman started the Rochester Fruit and Vegetable Company in 1916, selling produce out of their family home before opening a proper storefront at 72 West Main Street in January 1917, according to [Wikipedia's history of the company](https://en.wikipedia.org/wiki/Wegmans). Six years in, the brothers expanded that single store into a full grocery with a bakery counter and an in-house cafeteria, a combination that was unusual for the era and became a template the company never really abandoned, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/wegmans-food-markets-inc-history/). The instinct to sell prepared food alongside groceries, decades before "grocerant" was a word anyone used, traces straight back to that early cafeteria. The bigger bet came in the early 1930s. While most American grocers still worked behind service counters, the Wegman brothers converted their store to self-service, letting customers pick their own goods off open shelves, a format that would not become standard across the industry for another decade or more. Their 1931 store also added vaporized water sprays to keep produce fresh and refrigerated display cases, small mechanical details that mattered enormously in an era when spoiled produce was the fastest way to lose a customer for good, per FundingUniverse. ## Robert Wegman's Vertical Bet Robert Wegman, son of founder Walter, took over as president in 1950 and spent the next quarter-century building the company outward from its stores into the supply chain that fed them. He acquired an egg farm, opened a central meat-processing plant and bakery, and formed Wegmans Enterprises to manage the company's real estate, according to FundingUniverse. That vertical integration reduced the company's dependence on outside suppliers for the categories customers cared about most, and it set a pattern of owning more of the chain than a typical grocer bothered to. Robert also pushed the company into new technology early. In 1972, Wegmans became only the third supermarket chain in the country to install electronic cash registers with optical scanners, a full decade before scanning was routine at U.S. checkout lanes. Not every bet paid off. In 1974 he acquired the Bilt-Rite Chase-Pitkin home improvement chain, a diversification outside grocery that the company carried for more than three decades before quietly closing every Chase-Pitkin location by March 2006, per Wikipedia. It is the one clear strategic retreat in the company's history, a reminder that even a family known for patient, decades-long bets got one wrong and had the discipline to unwind it rather than keep feeding it. ## Danny Wegman and the Turnover Number Danny Wegman became president in 1976 and spent the following decades turning employee retention into a deliberate business strategy rather than a nice-to-have. The company launched a Work-Scholarship Program, opened an on-site child development center in 1990, and built a reputation strong enough that Fortune first named it one of the 100 Best Companies to Work For in 1993, five years before the magazine's flagship annual list even began in 1998. Wegmans has appeared on that list every year since, according to Wikipedia. The number that explains why sits in a Consumer Reports comparison from 2000: Wegmans ran roughly a 9 percent annual employee turnover rate against an industry average of 16.7 percent, per FundingUniverse. In a grocery business where margins are thin and service quality depends entirely on whether the person behind the deli counter has done the job long enough to be good at it, halving turnover is not a perk line item. It is a supply chain decision, applied to labor instead of produce. That same period saw persistent speculation that Kroger or Safeway would try to buy Wegmans; the family never sold, a choice that let it keep making multi-decade bets no public-market grocer answering to quarterly earnings could easily justify. ## Colleen Wegman's Patient Expansion Colleen Wegman, Danny's daughter, became president and CEO in 2017, the fourth generation of the family to run the company. Under her, Wegmans has kept expanding at the same unhurried pace that has defined it since the 1993 move into Erie, Pennsylvania, its first store outside New York. The chain opened its 100th store in Raleigh in 2019, its first Manhattan flagship at 770 Broadway in 2023, and a Long Island location in 2025. It now operates 114 stores across nine states and Washington, D.C., still overwhelmingly funded by the company's own capital rather than acquisitions of rival chains, per Wikipedia. That is the detail easy to miss underneath the cheese caves and made-to-order sushi bars everyone writes about: Wegmans has grown almost entirely by building new stores one at a time, not by buying other grocers' footprints. Competitors that expanded through acquisition inherited someone else's supply chains, someone else's store formats, someone else's culture, and spent years reconciling the differences. Wegmans never had to. Every store speaks the same operational language because the company built every store itself. Wegmans is a reminder that the unglamorous parts of retail, the supplier relationships, the store-by-store buildout, the people who stay long enough to know the aisles cold, are usually what the glamorous parts are quietly resting on. --- # Demand forecasting in Sporting Goods: the attribute layer your models are missing Source: https://www.anglera.com/blog/sporting-goods-demand-forecasting Published: 2026-06-17 Industries: sporting-goods ![Demand forecasting in Sporting Goods: the attribute layer your models are missing](/og/hero-sporting-goods-demand-forecasting.jpg) A buyer orders next spring's trail running line in June, working off a model that has never seen the actual shoe. The style is new. The forecast isn't guessing at a number so much as borrowing one, pulled from whatever the system decides counts as "similar." In sporting goods, where a meaningful share of every season's assortment is new colorways, new silhouettes, or genuinely new tech, that borrowing step happens constantly. And it's only as good as the attributes it borrows on. This is the part of demand planning that gets the least attention. Everyone talks about the model, the algorithm, the ML platform. Almost nobody audits what the model is actually summing over. ## A forecast is an aggregation, not a prediction Strip away the math and a demand forecast is a rollup: units by style, by size curve, by region, by channel, aggregated up from history and pushed back down to a buy plan. Every rollup needs a dimension to group on, and in sporting goods those dimensions are rarely just "category" or "brand." They're things like cushioning tier, insulation type, flex rating, or sport-specific fit. If those fields are missing, inconsistent, or buried in a marketing paragraph instead of a structured field, the rollup groups items that don't belong together and forecasts drift from day one. Consider three attributes that are specific to sporting goods and specific to breaking forecasts when they're thin: - **Footwear stack height and midsole compound.** Two shoes tagged "running shoe" can differ by 15mm of stack height and use entirely different foam chemistries (EVA versus a supercritical foam like PEBA). Those differences drive who buys the shoe, at what price, and in what season, but if the attribute lives in a product description instead of a normalized field, the forecasting model can't distinguish a max-cushion daily trainer from a low-profile racing flat. It just sees "running shoe." - **Insulation fill power and fabric weight in outerwear.** A 700-fill jacket and a 900-fill jacket at the same GSM shell weight serve completely different climate zones and price points. Roll them into one "insulated jacket" bucket and a forecast built for a temperate-market assortment will misfire hard in a market that actually needs heavier fill. - **Equipment flex rating and dimensional specs.** A ski's flex index and turn radius, or a bat's barrel diameter and drop weight, determine skill level and buyer segment as much as brand does. Free-text specs like "medium-stiff flex, great for intermediate skiers" can't be aggregated. A numeric flex rating field can. None of these are edge cases. They're the attributes that make a sporting goods SKU a sporting goods SKU, and they're exactly the fields most likely to arrive as loose text in a spec sheet PDF or a legacy ERP notes field rather than a clean, structured, comparable value. ## Cold start is the norm, not the exception Sporting goods brands compete partly on newness. Innovation cadence is one of the through-lines in [McKinsey and WFSGI's 2025 sporting goods industry report](https://www.mckinsey.com/industries/retail/our-insights/sporting-goods-industry-trends), which points to slowing category growth and intensifying competition from smaller, faster-moving challenger brands, and argues that visible product innovation is one of the clearest differentiators between winners and everyone else. Constant newness is good for the top line and brutal for forecasting, because every "new" SKU starts with zero sales history. The standard fix is a like-item or analogous-series approach: find historical SKUs that resemble the new one and borrow their demand curve, then adjust as real sell-through comes in. [Research on forecasting new product trial with analogous series](https://www.sciencedirect.com/science/article/abs/pii/S0148296315001460) has used exactly this logic for decades, and it depends entirely on picking the right analogues. Amazon's own forecasting team found that making product metadata an explicit input to cold-start models, rather than an implicit signal, produced [forecasts up to 45% more accurate](https://aws.amazon.com/blogs/machine-learning/generate-cold-start-forecasts-for-products-with-no-historical-data-using-amazon-forecast-now-up-to-45-more-accurate/) than earlier neural approaches. The lift didn't come from a better algorithm. It came from giving the algorithm cleaner, more complete attributes to match on. ![Diagram: a new SKU with no sales history borrowing a demand curve from attribute-similar historical SKUs](/diagrams/coldstart-similarity.svg) If a new trail shoe's stack height, drop, and midsole compound are sitting in structured fields, a similarity engine can find the three closest historical analogues and borrow a demand curve with real confidence. If those specs are trapped in a hundred-word product paragraph, the engine falls back to matching on category and price band, which is a much blunter tool, and the initial buy is a guess wearing a forecast's clothing. ## Where thin attributes show up in the P&L The consequence isn't abstract. It shows up as markdown pressure and stranded inventory, the two metrics that planning teams already track obsessively. [Toolio's guide to retail demand forecasting](https://www.toolio.com/post/demand-forecasting-in-retail-methods-tools-and-tips) notes that poor forecast accuracy pushes retailers toward reactive buying, deeper markdowns, and lower service levels, a pattern that compounds every season a brand keeps launching new styles without cleaning up how it describes the ones it already sells. | Attribute state | What the model sees | Forecast behavior | |---|---|---| | Structured, validated (stack height: 32mm, fill power: 800) | Precise similarity match to true analogues | Tighter initial buy, faster reforecast after early sell-through | | Free-text ("plush cushioning, great warmth") | Category and price band only | Broad, generic analogue set, higher initial error | | Missing entirely | No usable signal | Forecast defaults to category average, worst-case error | None of this argues for a new forecasting platform. Most planning teams already have one, and it's doing roughly what it was built to do. The gap is upstream: the attribute layer those tools read from is often thinner, staler, or more free-text than anyone planning a buy realizes. This is the layer Anglera works on. It plugs into whatever PIM, ERP, or flat file already holds the catalog, extracts structured values like stack height, fill power, and flex rating from spec sheets and tech packs, flags conflicting source data instead of silently picking one, and backfills a new attribute across a full catalog in days rather than the 30-45 minutes per SKU manual enrichment typically takes. Your planning system still does the forecasting. Anglera just makes sure it isn't forecasting on guesses. --- # Your Self-Service Ceiling Is the Product Page, Not the Portal Source: https://www.anglera.com/blog/self-service-ceiling-2026 Published: 2026-06-17 ![Your Self-Service Ceiling Is the Product Page, Not the Portal](/og/hero-self-service-ceiling-2026.jpg) Every distributor with a portal has the same chart: adoption climbs for a year, then flattens somewhere in the 30-40% range and won't move no matter how much you spend on the interface. The instinct is to blame UX, or habit, or a sales team that quietly sabotages the tool that threatens its comp plan. The real ceiling is upstream of all that. It's the product page. A buyer can't self-serve a decision on a PDP with three attributes, a stock photo, and no cross-reference to the part they actually need replaced — so they call the rep, and the portal gets blamed for a failure that happened one layer down, in the data. ## The preference story doesn't hold up [Distribution Strategy Group has argued](https://distributionstrategy.com/2025/06/self-service-on-the-rise-smbs-turn-to-automation-to-meet-buyer-demands-and-improve-payment-efficiency/) that SMB distributors are moving toward self-service because buyers now expect it — citing survey data that a large majority of buyers prefer not to talk to a rep at all. That's consistent with what Gartner has been finding: [67% of B2B buyers say they prefer a rep-free buying experience](https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-sales-survey-finds-61-percent-of-b2b-buyers-prefer-a-rep-free-experience), a number that held steady into 2026. So preference isn't the constraint. Buyers want to self-serve. They just can't, on the page you gave them. Here's the tell. Gartner's more recent survey work found that [69% of buyers still turn to a sales rep to validate AI-generated insights](https://www.gartner.com/en/newsroom/press-releases/2026-05-20-gartner-survey-finds-sixty-nine-percent-of-b-two-b-buyers-turn-to-sales-reps-to-validate-ai-generated-insights) they gathered themselves — because they found inconsistencies between what the site told them and what a human eventually confirmed. Forrester's 2025 research puts a number on the damage: roughly 20% of buyers said they felt *less* confident after doing their own digital research, rising to 28% among procurement professionals, because they hit unreliable or incomplete information along the way. That's not a population that prefers phone calls. That's a population whose self-service attempt failed and defaulted to the one channel guaranteed to close the information gap: a human who knows the catalog. Distributors read "customers just prefer to call" off their own CRM notes and stop there. It's the more comfortable conclusion — it doesn't implicate the catalog. But it's a data-gap symptom wearing a preference costume. ## What the ceiling is actually made of Think about what a buyer needs to place an order without a rep: the right SKU, confidence it's a fit or valid substitute, and enough spec depth to defend the purchase to whoever signs off on it. Take any one of those away and the transaction falls back to a phone call, no matter how fast your checkout flow is. - No cross-reference or interchange data → the buyer can't confirm fit against the part they're replacing, so they call to ask "does this work with X." - Attributes stop at three or four generic fields → nothing to differentiate near-identical SKUs, so they call to ask "which one do I actually need." - Stock shown at the company level, not the branch → they call to ask "is it actually on the truck." None of those are portal problems. A faster checkout button doesn't fix a PDP that can't answer "will this fit." [Humcommerce's analysis of B2B catalog cross-reference logic](https://humcommerce.com/knowledge-center/how-to-build-product-compatibility-cross-reference-logic-b2b-ecommerce-catalog/) makes the mechanical case for why this breaks so often: cross-reference data lives scattered across ERPs, supplier feeds, and sales-team tribal knowledge, and without a model that unifies it, you get partial matches and dead-end searches — exactly the moment a buyer gives up and dials the phone. This is measurable, and it's what Anglera's [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) was built to catch. Across the 200+ distributors we scored for the [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026), attribute depth and cross-reference availability are two of the fourteen signals — and they correlate more tightly with self-service capability than anything about site speed or checkout design. The distributors clustered at the bottom of our archetypes aren't running bad software. They're running thin catalogs on good software, which looks identical to a portal failure from the outside. ## The ceiling is about to matter twice Here's the part that should reorder the priority list. The next buyer trying to self-serve on your PDP isn't a purchasing agent anymore — it's an AI agent, reading the page on someone's behalf, and it has zero tolerance for a data gap a human would just phone past. An agent doesn't call the rep when it hits a missing spec. It either fails silently, picks a competitor's product because that page actually answered the question, or hallucinates a fit and creates a return. Early 2026 research on agentic-commerce readiness found that [40% of ecommerce businesses are still in the process of standardizing product pages for AI agents, and 33% haven't started at all](https://www.digitalapplied.com/blog/agentic-commerce-readiness-checklist-2026-ecommerce-guide) — which means most distributors are about to fail the same self-service test twice, once with human buyers and once with the software reading on their behalf. AEO readiness — one of the DRI's four pillars — is exactly this: can a machine parse your product data well enough to answer a spec question without guessing. It's not a separate AI initiative bolted onto the catalog. It's the same fix as the human self-service ceiling, because both readers are asking the same question of the same page: does this have enough structured, accurate detail to decide without calling someone. ## Stop grading the portal If your adoption chart plateaus, resist starting the postmortem with the interface. Pull ten PDPs a rep closed by phone last month and ask what was missing that a human had to supply — the attribute, the cross-reference, the branch-level stock number. That's the ceiling. Raise the data and the portal number moves on its own, because you were never really constraining checkout. You were constraining what the page could tell someone without you on the line. That's the same fix whether the buyer is a person or an agent, and it's the whole premise behind Anglera: your PIM stores the data, we do the enrichment work — cross-reference, attributes, spec depth — that turns a thin product page into one that can actually close a sale unassisted. The portal isn't the ceiling. The page is. --- # Reece USA: A Melbourne Family's $1.9 Billion American Bet Source: https://www.anglera.com/blog/reece-usa-distributor-playbook Published: 2026-06-17 Industries: plumbing ![Reece USA: A Melbourne Family's $1.9 Billion American Bet](/og/hero-reece-usa-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Reece USA lands at #3 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for plumbing, with $3.3 billion in FY2025 revenue (ended June 30, 2025). What the ranking does not show is that Reece USA is not really an American company at all. It is the US arm of a 105-year-old Australian family plumbing supplier that, in 2018, made the single largest bet in its history to get here. ## From a truck in Melbourne to a public company the Wilsons still run Harold Joseph Reece started the business in 1920 selling plumbing fittings out of the back of a truck around Melbourne before opening his first store in Caulfield, according to [Reece Limited's company history](https://en.wikipedia.org/wiki/Reece_Limited). The company stayed a small Australian retailer for decades until Les Wilson joined the board in 1958 and began quietly buying shares. By 1969 regulators had cleared the Wilson family as majority owners, and the family has controlled the business ever since, holding roughly 70 percent of the stock into the 2020s even after Reece listed publicly. Alan Wilson, Les's son, ran the company from 1970 and became executive chairman in 2008. His son Peter Wilson now holds the CEO and chairman role. That detail matters more than it sounds. American plumbing distribution has spent two decades getting rolled up by private equity and public holding companies. Reece is the opposite case: a family that has owned the same trade-counter business for three generations, still setting strategy, still willing to swing for a bet the size of MORSCO. ## The bet: $1.9 billion for MORSCO In May 2018, Reece announced it would acquire MORSCO, a Fort Worth-based plumbing and waterworks distributor, for $1.9 billion, according to the same company history. It was Reece's first real push outside Australia and New Zealand, and it roughly doubled the size of the group overnight. MORSCO was not a single chain. It was itself a roll-up of regional wholesalers built over years by private-equity ownership before Reece, giving the family company an instant footprint across the US South, Southwest, and Pacific. The timing looked aggressive at the time and looks even more aggressive in hindsight: Reece bought into the US housing and construction cycle two years before COVID disruption and roughly four years before the interest-rate cycle that has since cooled new-home construction. A family business known for patience had just made its biggest, least patient move ever. ## The insight: Reece never renamed what it bought The distinctive part of Reece's US strategy is what it did not do. Most acquirers in distribution eventually collapse acquired names into one master brand, chasing marketing efficiency and a single national story. Reece did not. Today Reece USA operates as a portfolio of a dozen-plus distinct trade names, including Farnsworth Wholesale, Morrison Supply, Murray Supply, DeVore & Johnson, Express Pipe & Supply, L&B Pipe & Supply, Todd Pipe, Schumacher & Seiler, and Fortiline as its dedicated waterworks division. That is a deliberate house-of-brands choice, not an oversight. A regional plumbing contractor in Texas still calls their counter Morrison Supply, with the local reps and relationships that name carries, while the balance sheet, buying power, and back-office systems sit behind it as Reece Inc. The corporate identity is invisible at the counter. That is unusual discipline for an acquirer this size, and it is the thing a competitor's strategy team should actually study: Reece bought scale without asking its customers to relearn who they call. ## Growing through a soft market, not around it Reece Group's fiscal year 2025 (ended June 2025) was rough. Chairman and CEO Peter Wilson called it "a turbulent year," with earnings hit by soft conditions in both Australia/New Zealand and the US, where housing-market weakness pulled US segment revenue down. Yet the group still completed bolt-on acquisitions during that same soft year, continuing the pattern of buying through the cycle rather than pausing for it. Fortiline, Reece USA's waterworks arm, kept expanding even as the broader market cooled. It acquired Belair Road Supply to push into Maryland and Delaware and extended its footprint coast to coast into California, moves that read less like opportunism and more like a standing policy: use the down part of the cycle to buy share cheaply, because the family that owns the parent company is not managing to a quarterly stock price. In September 2025, Fortiline promoted Keith Young, a 13-year company veteran who had led the Belair Road Supply deal, to president, a signal that the M&A engine is a career path inside Reece, not a bolted-on corporate development function, according to [MDM's coverage of the promotion](https://www.mdm.com/top-distributor-sectors/plumbing-products-pvf-distribution/reece-groups-fortiline-promotes-company-veteran-to-president/). ## The tension worth naming The trade-off in Reece's model is real. Family control means slower capital-raising discipline than a PE sponsor would tolerate, and a soft US housing cycle lands directly on the same balance sheet that funds every other part of the group, including the Australian home market. A distributor that bought its way to scale during good times now has to prove the same appetite works during a bad one. So far the bolt-on acquisitions have kept coming, which is the closest thing to an answer the company has given. Reece USA's #3 plumbing ranking is really a proxy for how well a century-old family retailer executed the hardest transition in distribution: buying an entire country's worth of regional relationships and keeping every one of those relationships intact under someone else's name. That is the pattern this series keeps finding: the companies that win distribution rarely win on the showroom floor. They win in the unglamorous machinery behind it, the branch networks, the catalogs, and the supply relationships nobody outside the trade ever sees. --- # The technical SEO checklist for Optimizely Configured Commerce product pages Source: https://www.anglera.com/blog/optimizely-technical-seo-checklist Published: 2026-06-17 Platforms: optimizely ![The technical SEO checklist for Optimizely Configured Commerce product pages](/og/hero-optimizely-technical-seo-checklist.jpg) Configured Commerce (Spire) product pages are a React application first and an SEO surface second — which means most of the things that make a PDP "unreadable" to Google or an AI shopping agent are rendering and configuration issues, not content issues. This checklist walks through the platform-specific settings that determine whether a distributor's product data actually reaches a crawler, in the order we'd check them during an implementation review. ## Rendering: does the crawler see what the buyer sees? Spire is a client-side React/Redux storefront by default, so if server-side rendering (SSR) isn't enabled, crawlers and most AI retrieval agents (which typically don't execute JavaScript the way a full browser does) may see an empty shell instead of your product data. Configured Commerce ships SSR support for Spire, and it's off by default for regular users — historically it applied only to requests matching known crawler user-agents. Since release 5.2.2411, there's a separate setting, "Enable Server-Side Rendering for All User Agents" (Admin Console, under Administration, then Settings), that renders SSR for every visitor rather than crawlers only — the option Optimizely recommends if you're chasing Core Web Vitals as well as crawlability, since it removes the render-blocking gap between first paint and hydration for everyone, not just bots. Two implementation notes that matter for distributors with custom PDP widgets: - Only crawler-facing templates strictly need SSR — product detail, category/product list, brand, and content pages. Authenticated areas (cart, account, saved lists) are optional and often better left client-rendered if they depend on slow pricing/inventory APIs. - React's `useEffect` and `useLayoutEffect` don't run during SSR — they only fire after client hydration. If a custom widget loads SEO-relevant data (specs, price, availability copy) inside a `useEffect`, that data will be missing from the server-rendered HTML a crawler sees. Move that logic into the component's initial render path (or a class component's `UNSAFE_componentWillMount`, per Optimizely's own guidance) if it needs to be crawlable. ## Structured data: turn on what's built in, then extend Configured Commerce ships several JSON-LD structured data types out of the box, toggled under Admin Console, Administration, Settings, Site Configurations (Classic CMS toggles this per-page instead, via "Enable Structured Page Data" on the Product Detail Page). Available types include: - Product structured data — pulled from Product Details and written into the page head of the Spire PDP. - Breadcrumb structured data — generated from catalog navigation on category/PDP pages. - Sitelinks search box and Organization structured data — generated from Search settings and Website Details, written to the homepage. These are off by default, so confirm they're actually enabled before assuming buyers (or AI agents parsing `Product`/`Offer` schema) are getting anything. The out-of-the-box `Product` markup already covers name, SKU, brand, and manufacturer number, but it won't necessarily include every field an AI shopping agent wants — GTIN and `AggregateRating`/review data in particular are common gaps, since Optimizely's own documentation notes these aren't populated by default — so plan a short partner engagement to extend the JSON-LD template if those fields matter for your catalog: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "20V MAX Cordless 18GA Flooring Stapler", "sku": "DCN660B", "gtin12": "885911234567", "brand": { "@type": "Brand", "name": "DEWALT" }, "description": "…", "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "249.00", "availability": "https://schema.org/InStock" } } ``` ## Titles and meta descriptions Page Title, Meta Description, and Meta Keywords are per-product fields, set at Admin Console, Catalog, Products, Edit, then the Content tab, under Meta Data — or bulk-loaded via Product Import or your ERP feed, which is the practical path for distributors with tens of thousands of SKUs. Because these fields are typically blank until populated, an unmapped ERP export usually means Spire falls back to a generic template (often just the product name), so audit a sample of live PDPs rather than assuming the field is filled. ## Canonicals: get this right before you touch anything else Distributor catalogs almost always have the same SKU living under multiple categories, so Configured Commerce canonicalizes product URLs by default: whichever category path a shopper actually navigated through, the canonical link tag in the page head points to a standardized `/Product/{name}`-style URL, stripping the category segment. Three settings control the behavior, all in Site Configurations: - **Product Canonical Root Path** — the first URL segment for canonical product links (default `Product`; can be blank). - **Microsite Canonical Products** — whether microsite/multi-site products get their own canonical URLs or point back to the root-site product. - **Canonical Link for Products In Sitemap** — whether the sitemap lists canonical product URLs or the category-specific path. If you run multiple storefronts (microsites) off one catalog, get the microsite setting deliberately reviewed — the default behavior of pointing microsite products at the root domain is usually correct for avoiding duplicate content, but it also means a microsite-only product needs its own canonical, or it won't get indexed at all. ## Images and alt text Product images are managed at Admin Console, Catalog, Products, Edit, then the Images tab, with required Small/Medium/Large variants (Medium is used as fallback if Small or Large aren't set). The base admin UI doesn't expose a dedicated alt-text field for product images, so confirm with your implementation partner what the PDP image widget in your specific Spire theme uses as the image's alt attribute — commonly the product name or short description — and check it's non-empty and specific rather than a generic placeholder, since this is one of the more common gaps distributors hit during an SEO audit. ## Internal linking and crawlability Sitemap and robots visibility are managed in two places: Websites, then the SEO tab (per-page visibility, plus a "Hide all products from search engines" toggle worth double-checking is off), and Administration, Settings, Site Configurations for site-wide defaults. Once a sitemap is generated, Configured Commerce references it in `robots.txt` automatically and can ping it to Bing via the IndexNow API key setting. The `robots.txt` file itself is a content-tree page editable from Admin Console, View Website, Content Tree. For internal linking, related/cross-sell/up-sell product associations (set per-product in the Admin Console) become the crawl paths between PDPs and category pages — thin or missing associations are a common reason large distributor catalogs have orphaned SKUs that never surface in either search or AI retrieval. ## How to validate - **View-source vs. rendered DOM**: run `curl -A "Googlebot" https://yoursite.com/Product/your-sku` and diff it against the browser DOM (Chrome DevTools Elements panel, or the rendered "View Page Source" via Inspect). If the curl output is missing price, specs, or the canonical tag that the browser shows, SSR isn't covering that template or that crawler user-agent. - Confirm JSON-LD with Google's [Rich Results Test](https://search.google.com/test/rich-results) on a live PDP URL, and check the `Product` type resolves with the fields you expect. - Spot-check the canonical link tag on the same SKU reached via two different category paths — it should be identical both times. - Fetch `/robots.txt` and your sitemap URL directly to confirm products aren't excluded and the sitemap isn't stale. **Verified as of July 2026** against Optimizely's Configured Commerce developer documentation and support help center; SSR, canonicalization, and structured-data settings are plan/version-dependent, so confirm exact toggle names against your instance's release notes before an audit. None of this checklist matters if the underlying product data is thin — you can serve a perfectly-rendered page with nothing in it. Anglera runs alongside your PIM to keep the attributes, specs, and use-case content that feed these titles, JSON-LD fields, and alt text continuously enriched, so the rendering work above has something substantive to put on the page. --- # How IBT Industrial Solutions Stayed Independent for 75 Years Source: https://www.anglera.com/blog/ibt-industrial-distributor-playbook Published: 2026-06-17 Industries: mro-industrial ![How IBT Industrial Solutions Stayed Independent for 75 Years](/og/hero-ibt-industrial-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* IBT Industrial Solutions ranked ninth in the Power Transmission category on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors), Modern Distribution Management's annual accounting of North America's largest distributors. The ranking undersells the more interesting fact underneath it. Nearly every regional bearings-and-power-transmission house of IBT's size has been absorbed into a public or private-equity-backed platform over the last two decades. IBT, three generations into family ownership, has not been. It has instead spent the last decade quietly building its own version of the acquisition machine that usually consumes companies like it. ## From bearings and belts to a name The company started in 1949 in the Kansas City area, founded by Forrest L. Cloud and Bonnie Cloud under the name Industrial Bearing and Transmission Co. The pitch was narrow but, at the time, unusual: stock bearings and power-transmission components under one roof rather than treating them as separate product lines, a combination the company describes as a first in the industry ([IBT, About Us](https://www.ibtinc.com/about-us/)). The name eventually contracted to its initials. Leadership stayed in the family through two successions, and Jeff Cloud now runs the business as third-generation president and CEO, a transition the company marked publicly in 2019 as part of what it called a "promising future" for the next stage of growth. Seventy-five years is a long run for any private company to stay private, and longer still in a vertical where scale has become the default answer to competitive pressure. ## A deep, narrow footprint IBT operates 40 branches across nine states, and the map tells you exactly where the company's roots are: 17 locations in Kansas alone, 6 in Missouri, 4 in Oklahoma, with single- and low-digit counts in Arkansas, Illinois, Iowa, Nebraska, Texas, and South Carolina ([IBT, Locations](https://www.ibtinc.com/locations/)). This is not a distributor chasing national coverage. It is a distributor that has made Kansas and its immediate neighbors extremely hard to dislodge from, then extended outward in careful, discrete moves rather than a broad national build-out. Around that branch network, IBT has assembled a small family of owned brands, Magnum Industrial, Vaughn Belting, and Lawler Gear, alongside a ShopIBT e-commerce storefront, giving it private-label and specialty-manufacturing lines to sit next to the name-brand bearings, belts, and gearing it distributes for suppliers like Dodge and Kawasaki. ## The buying-group bet Here is the strategic tell that does not show up on IBT's About page. In 2016, Affiliated Distributors, an industrial buying and marketing cooperative for independently owned distributors, named IBT its Member of the Year ([IBT, AD selects IBT as Member of the Year](https://ibtinc.com/news/ibt-selected-as-member-of-the-year-by-affiliated-distributors-for-2016/)); the company picked up AD's Giving Back Award again in 2020. Buying groups like AD exist for exactly one reason: to let independently owned distributors pool purchasing volume so they can negotiate manufacturer pricing and terms closer to what a billion-dollar consolidator commands, without selling any equity to get there. That is the choice IBT made instead of selling. Rather than trade ownership for the scale that competitors like Motion Industries, Applied Industrial Technologies, and Kaman get by rolling up dozens of regional distributors under one balance sheet, IBT rented that scale through a cooperative and kept the Cloud family's name on the door. It is a slower path to buying leverage, and it caps how fast the company can move on price in a pinch, but it is also the reason a 40-branch regional player can still stand next to national suppliers and pick up honors like Dodge's Distributor of the Year and Kawasaki's Supplier of the Year rather than getting quietly out-priced by a bigger cousin. ## Turning the tables: from target to acquirer The more recent chapter is where the strategy sharpens. IBT opened a branch in Dickson, Tennessee in 2016, its first real foothold outside the Midwest corridor. A decade later, it went further: on July 1, 2026, IBT announced the acquisition of Indesco, Inc., a Charlotte, North Carolina-based distributor of hydraulic, pneumatic, and power-transmission components serving OEM and MRO customers across agriculture, food and beverage, material handling, textile equipment, woodworking machinery, and production automation ([IBT, IBT Acquires Indesco](https://www.ibtinc.com/news/ibt-acquires-indesco/)). CEO Jeff Cloud framed the deal as a fit of culture as much as geography, saying it "strengthens IBT's ability to support customers with technical industrial solutions" and that Indesco's "customer-focused culture, deep product knowledge, and strong supplier relationships align well with IBT's approach." VP of Sales Kyle Dixon added that the two companies see "meaningful opportunities to build on Indesco's legacy." That is a family-owned distributor running the same playbook the sector's consolidators use, just at its own pace and on its own terms: instead of being bought to fund someone else's national footprint, IBT is buying to build its own. | Milestone | Year | |---|---| | Founded as Industrial Bearing and Transmission Co. | 1949 | | Dodge Distributor of the Year | 2015 | | AD Member of the Year | 2016 | | First Southeast branch, Dickson, TN | 2016 | | Jeff Cloud named third-generation CEO | 2019 | | Acquires Indesco, Inc. (Charlotte, NC) | 2026 | ## The tension worth watching Staying independent this long has kept decision-making close to the customer and the branch manager, which shows up in the supplier awards and the AD recognitions. But the Indesco deal also means IBT now has to do, for the first time at this scale, what the roll-ups do every year: integrate a different culture, a different supplier list, and a new region into a company that has spent 75 years optimizing for a nine-state home turf. How well that integration goes will say more about IBT's next decade than anything on its founding certificate. Distribution rewards the companies willing to do the unglamorous work well: the branch that opens on time, the catalog that stays current, the part that ships correctly the first time. This series looks at the operators who have made that work their edge. --- # Gap: The Store That Sold Only Levi's, Then Reinvented Itself Source: https://www.anglera.com/blog/gap-retailer-playbook Published: 2026-06-17 Industries: apparel ![Gap: The Store That Sold Only Levi's, Then Reinvented Itself](/og/hero-gap-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Gap ranks #37 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, with $13.43 billion in 2025 U.S. retail sales, part of a Gap Inc. portfolio that also carries Old Navy, Banana Republic, and Athleta. The company that eventually invented the modern casual-basics category almost didn't survive long enough to build one. It started as a single-brand reseller, reinvented itself as a manufacturer of its own identity, then had to relearn that lesson twice more the hard way. ## A jeans store born from a sizing problem Donald Fisher opened the first Gap store near San Francisco State University on August 21, 1969, with his wife Doris. The trigger was mundane: Fisher, a real estate developer, couldn't find a pair of Levi's in his own size at a local department store. Rather than complain, he and Doris rented a storefront, partnered with Levi Strauss executive Walter Haas Jr., and stocked every cut and size of Levi's jeans in one place, alongside records, an odd pairing meant to pull in the same young customers buying both, according to [Wikipedia](https://en.wikipedia.org/wiki/Gap_Inc.). They named it Gap for the "generation gap," the cultural fault line of the era they were selling into. The idea worked because it solved a real distribution failure: even big department stores couldn't stock every Levi's size and style, and Gap made a business out of simply having it. A second store opened in San Jose in 1970. By 1973 the chain had passed 25 locations and pushed east to New Jersey. By 1976, sales hit $2.5 million and the company went public at $18 a share, only to watch the stock slide to $7.25 as retail cooled and Gap settled a shareholder lawsuit for $5.8 million in 1979, per [FundingUniverse](https://www.fundinguniverse.com/company-histories/the-gap-inc-history/). Sales kept climbing regardless, reaching $307 million across nearly 200 stores by 1980. ## The pivot that mattered: 1974 The single most consequential decision in Gap's early history is easy to miss because it wasn't a store opening or an ad campaign. In 1974, the company began selling its own private-label merchandise alongside Levi's, the first step away from being a reseller of somebody else's brand. It mattered because Gap's entire business, up to that point, depended on Levi Strauss's goodwill and inventory. Owning a label meant owning a future. That single decade-early bet is what let Gap survive when Levi's later expanded into mass-market department stores directly, cutting out the specialty middleman that Gap had originally been built to be. ## Mickey Drexler and the invention of "basics" Millard "Mickey" Drexler joined as president in 1983 and did something almost contrarian for a retailer drowning in a warehouse-discount identity: he eliminated the competing labels Gap still carried, built an in-house design team, repainted the stores in neutral tones, and launched the "Individuals of Style" campaign. Profits actually dropped 43 percent in 1984 as the transition bit, but the strategy held, and by 1985 Gap was growing again, per FundingUniverse. Drexler also engineered Gap's most durable structural move: acquiring the struggling safari-themed Banana Republic in 1983 and repositioning it upscale, then launching Old Navy from scratch in 1994 as the value tier. By the mid-1990s, Gap Inc. had assembled something genuinely new in specialty retail: three price tiers of the same design sensibility under one roof, so a customer could trade up or down within the same company as their life stage or budget changed. That structure, more than any single ad, is what competitors spent the next two decades trying to copy. The late 1990s were the peak. Old Navy crossed $1 billion in sales by 1997. Gap.com launched in 1998. By 1999, Gap Inc.'s net earnings topped $1.1 billion on close to $9 billion in company-wide sales, driven by khaki and denim campaigns built around simple basics rather than trend chasing. ## The slump, the ouster, and an inconvenient coincidence Growth outran demand. Gap opened 731 stores in 2000 even as comparable sales fell 5 percent, and 2001 brought the company's first loss in years. Drexler was pushed out in 2002 after what Wikipedia's account describes as 19 years at the company ending amid over-expansion, a 29-month sales slump, and friction with the Fisher family. Here is the detail most retrospectives skip past: the merchandise Drexler had already ordered before his exit triggered a sales recovery within a month of his departure. It's a small, almost uncomfortable footnote, and it is the unique insight worth sitting with. It suggests his final collections weren't the problem; the timing of the market, the balance sheet, and boardroom patience simply ran out before his own product cycle could vindicate him. Paul Pressler, arriving from Disney, tried to steady the ship without fully restoring Gap's design authority. Robert Fisher stepped in as interim CEO in 2007, followed by Glenn Murphy, who brought in designer Patrick Robinson. The 2010s and pandemic years forced further contraction, including roughly 350 store closures by 2024 as mall traffic thinned nationally. ## The current chapter Gap Inc. named designer Zac Posen Creative Director in February 2024 and has been rebuilding a design-forward identity across Gap and Old Navy since. Fiscal 2024 revenue reached $15.1 billion company-wide with operating income of $1.11 billion, both up year over year, according to Wikipedia. In September 2025, the company said it would expand Old Navy into personal care and cosmetics, a bet on adjacency rather than another price tier. Every one of Gap's turning points, the 1974 private-label pivot, the three-tier brand ladder, even the awkward Drexler exit, traces back to the same question every apparel retailer eventually has to answer: whose taste is on the label, and who actually owns it. **Sources:** [Wikipedia — Gap Inc.](https://en.wikipedia.org/wiki/Gap_Inc.), [FundingUniverse — The Gap Inc. company history](https://www.fundinguniverse.com/company-histories/the-gap-inc-history/), [Gap Inc. — About](https://www.gapinc.com/en-us/about), [NRF — Top 100 Retailers](https://nrf.com/research-insights/top-retailers/top-100-retailers) --- # When the data is wrong: the cost of inaccurate product content Source: https://www.anglera.com/blog/cost-of-incorrect-product-data Published: 2026-06-17 ![When the data is wrong: the cost of inaccurate product content](/og/hero-cost-of-incorrect-product-data.jpg) Missing a spec field costs you a click. A wrong one costs you a return, a chargeback, a one-star review, and sometimes the listing itself. Retailers spend a lot of energy on completeness scores, but completeness and correctness are different problems with different price tags, and the correctness problem is the one showing up in your returns ledger right now. ## Incomplete is a gap. Incorrect is a liability. Incomplete data loses you the sale before it happens: a shopper can't find a compatible part, can't confirm a dimension, bounces to a competitor listing. That's an opportunity cost, and it's real, but it's contained. Incorrect data loses you the sale after it happens. The customer trusted the listing, ordered, paid, and got something other than what the page promised. Now you're not just missing a sale — you're paying for a reverse shipment, a restock (if the item is even resellable), a support ticket, a refund, and in a meaningful share of cases a damaged relationship that shows up as a lost repeat customer. Total US retail returns are estimated at roughly [$850 billion for 2025](https://blog.ordoro.com/2026/01/02/ecommerce-return-trends-2025-2/), with online return rates commonly cited in the 19–25% range. Not all of that is a data problem, but a sizable slice of it is preventable, and "item not as described" is consistently one of the top-cited reasons shoppers give. ## The categories of wrong that cost the most Not every error is equal. Some get caught at checkout. Some don't surface until the box is open, and those are the expensive ones. | Error type | Where it bites | Why it's expensive | |---|---|---| | Fitment / compatibility | Auto parts, appliance parts, industrial components | Wrong part fits nothing; buyer often reorders correctly and returns the first, doubling fulfillment cost | | Dimensions / weight | Furniture, apparel, packaged goods | Triggers "not as described" disputes and freight-class errors on the outbound shipment | | Images that don't match the SKU | Any catalog with variant sprawl (color, finish, bundle) | Buyer receives a different-looking item; high refund rate, high review damage | | Spec or material inaccuracy | Electronics, building materials, safety equipment | Can create real liability if the item is used for a purpose the (wrong) spec implied it could handle | | Pricing / availability mismatch | Marketplace and syndicated feeds | Triggers marketplace penalties independent of whether the customer even completes the order | Fitment and spec errors are the costliest because they're invisible until the product is in the buyer's hands. A missing field is obvious on the page. A wrong torque rating or an incorrect "fits 2019-2023" range looks exactly as credible as a correct one, right up until it doesn't work. ## Where the cost actually lands "Bad data costs money" is true but not actionable. Here's where to look for the line items, and how to measure each one. | Cost | Mechanism | How to measure it | |---|---|---| | Return freight and restocking | Wrong item ships, customer sends it back | Returns platform (Loop, Narvar, or your 3PL) filtered by reason code "not as described" vs. "changed mind" | | Unsellable inventory | Returned item can't be restocked at full value due to damage or open-box status | Warehouse management system markdown/write-off report tagged to return reason | | Chargebacks and dispute fees | Cardholder disputes under Visa/Mastercard "not as described" codes rather than requesting a return | Payment processor dashboard, chargeback reason code `13.3` (Visa) or `4853` (Mastercard) — [Visa's reason code 13.3](https://chargebacks911.com/chargeback-reason-codes/visa/13-3-defective-or-not-as-described-merchandise-services/) exists specifically for this | | Support ticket load | Buyer contacts support to confirm fitment/specs before or after purchase | Ticket volume tagged by SKU or category in your helpdesk, indexed against order volume | | Marketplace suppression | Amazon and similar platforms deprioritize or pull listings flagged for inaccurate content | Marketplace seller central health dashboard; suppressed-listing count and reinstatement time | | Review and rating drag | Buyer leaves a 1–2 star review citing mismatch, which suppresses future conversion on that PDP | Review platform sentiment tagged for "not as described," "wrong size," "different than pictured" | | Lost repeat purchase | Buyer doesn't come back after a bad experience | Cohort repeat-purchase rate for customers with a "not as described" return vs. customers with no return | The chargeback line deserves attention distributors often skip. A customer who feels misled by the listing frequently disputes the charge with their card issuer instead of requesting a return, which skips your return process entirely and adds a dispute fee on top of the refund. That's a cost incomplete data never creates, because incomplete listings don't set false expectations to violate — they just don't convert. ## Marketplaces punish wrong data harder than empty fields If you sell on Amazon, Walmart Marketplace, or similar, inaccurate content is treated as a policy issue, not just a UX issue. Inaccurate product information is one of the [most common triggers for Amazon listing suppression](https://www.bebolddigital.com/blog/amazon-listing-suppressed), pulling a listing from search and buy-box eligibility independent of any customer complaint. Minor content issues are often reinstated within a day or two once corrected, but policy-level infractions can take a week or more to resolve. That's revenue at zero for the suppression window, on top of whatever returns already happened before the platform caught it. This is a different failure mode than a thin listing sitting quietly at the bottom of search results. Thin listings underperform. Wrong listings get flagged. ## Trust is the cost you can't put a line item on Every category above is measurable. The one that isn't — but matters most — is what a wrong-item experience does to whether that customer trusts your catalog next time. A shopper who gets the correct-but-sparse listing learns to ask more questions. A shopper who gets confidently wrong information learns to distrust the whole store, and that discount follows them to every future PDP, every review they read, every AOV decision. You can proxy this with repeat-purchase rate by return reason, but the real cost compounds quietly for months after the refund clears. ## What this means for how you run your catalog Completeness and correctness need separate scorecards, because they fail differently and get fixed differently. A gap-fill project reduces bounce and abandoned carts. An accuracy pass — validating specs, fitment, and images against source documentation rather than whatever was typed into the system five years ago — reduces returns, chargebacks, and suppression risk. Anglera enriches on top of whatever PIM you already run, extracting and quality-scoring values from actual supplier documentation rather than guessing, so the fitment and spec fields your buyers rely on are backed by a source, not a legacy assumption. The through-line is the same one that gets a buyer to the right product: it also has to survive contact with the box they open. --- # Core & Main: The Home Depot Castoff That Now Runs PVF Source: https://www.anglera.com/blog/core-main-distributor-playbook Published: 2026-06-17 Industries: waterworks ![Core & Main: The Home Depot Castoff That Now Runs PVF](/og/hero-core-main-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Core & Main ranked No. 2 in PVF on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors), the trade publication's annual ranking of North America's largest distributors across 20 verticals, on $7.65 billion in fiscal 2025 revenue (ended Feb. 1, 2026) — a step down from the No. 1 spot it held on the 2025 list. The ranking is the least interesting fact about the company. The more interesting one is that Core & Main didn't start as a company. It started as a line item inside a home-improvement retailer's failed attempt to build a wholesale empire, got sold off twice, and came out the other side bigger than the ambition that created it. ## A Retailer's Detour Into Wholesale The lineage starts with Maintenance Warehouse, a facilities-supply business Home Depot bought in 1997 and folded into a unit it renamed HD Supply in 2004. Home Depot then went shopping for scale in professional distribution: it acquired Hughes Supply in 2006 for roughly $3.2 billion and merged in National Waterworks Holdings, stitching together the pipes, valves, fittings, and water-infrastructure business that would eventually become Core & Main, according to [Wikipedia's account of the company](https://en.wikipedia.org/wiki/Core_%26_Main). At the time it was a rounding error inside a much bigger retail story: Home Depot trying to sell to contractors, not just homeowners. ## The Buyout That Almost Ended It That bet didn't survive contact with its own board. Under new CEO Frank Blake, Home Depot decided the wholesale business didn't belong next to its stores and sold HD Supply in 2007 to a private equity consortium of Bain Capital, The Carlyle Group, and Clayton, Dubilier & Rice, per [Wikipedia's history of HD Supply](https://en.wikipedia.org/wiki/HD_Supply). The timing was brutal: a distributor selling pipe, lumber hardware, and construction supplies changed hands via leveraged buyout months before the deepest housing downturn in decades. HD Supply survived the recession as an independent, debt-heavy company and eventually re-entered public markets, listing on NASDAQ in June 2013. ## The Carve-Out Four years later, CD&R went back for a second bite, but a narrower one. In August 2017, the firm bought just HD Supply's Waterworks division and renamed it Core & Main, separating the water, wastewater, storm drainage, and fire-protection business from its parent for good. What followed was a compact, repeatable playbook: buy small regional distributors and fold them into the existing branch network. Between September 2017 and May 2019, Core & Main added Minnesota Pipe & Equipment, St. Louis Fabrication & Supply, DOT Sales Company, Finish Line Systems, DCL Fabrication & Supply, Maskell Pipe & Supply, and Long Island Pipe Supply, per Wikipedia. In 2021, timed around its July IPO on the NYSE under ticker CNM, it signed deals for Pacific Pipe and L&M Bag & Supply, according to [Core & Main's own announcements distributed via PR Newswire](https://www.prnewswire.com/news/core-%26-main/). ## Home Depot Came Back for Almost Everything — Except This Here's the detail that makes the founding story worth telling instead of just noting: Home Depot didn't stay away from wholesale distribution forever. In December 2020, it reacquired HD Supply for roughly $8 billion, bringing the maintenance, repair, and industrial-supply business back under its original roof, per the same HD Supply history. But the Waterworks division wasn't part of that deal, because CD&R had already carved it out three years earlier and it was busy becoming Core & Main. Home Depot's own 2020 decision to buy back its old wholesale unit is, in effect, an admission that the 2007 sale had been a mistake worth correcting. It just couldn't correct the one piece that had already grown into the largest distributor in its category. Most companies in this series trace back to a founder's name over a shop door. Core & Main traces back to a corporate divestiture that its original owner tried, and failed, to fully undo. ## Scale Concentrated in One Category Unlike a general-line distributor spreading revenue across many product families, Core & Main's business is heavily concentrated: pipes, valves, and piping and plumbing fittings account for roughly two-thirds of sales, with storm drainage, fire protection, and water metering making up most of the rest, per Wikipedia's summary of its FY2024 mix. That concentration is a strategic choice, not an accident. Municipal water infrastructure and new-subdivision utility work don't disappear in a soft construction cycle the way discretionary remodeling does — pipe still has to go in the ground, and aging systems still have to get replaced. The company runs roughly 370 branches across 49 states and serves about 60,000 customers, a footprint built almost entirely by acquiring local players who already had the relationships and inventory depth, then plugging them into a shared purchasing and logistics network. ## The First Border Crossing The roll-up hasn't stopped, and it's started reaching further. Core & Main completed the acquisition of Canada Waterworks on September 30, 2025, its first move outside the United States, and followed it in January 2026 with an agreement to buy Pioneer Supply, a water and storm-drainage distributor operating in Moore, Oklahoma, and Weatherford, Texas, that traces back to 1963, a deal it closed later that month. It also opened new branches in Houston and Denver in the third quarter of 2025 and expanded its share-repurchase authorization by $500 million the same quarter, funding acquisitions and buybacks at once. In March 2026, the board completed a generational handoff: Stephen LeClair, who led the company through the CD&R era and the 2021 IPO, retired as executive chair, with James Castellano stepping in as chair. | Year | Event | |---|---| | 1997 | Home Depot buys Maintenance Warehouse, the seed of HD Supply | | 2005-06 | National Waterworks and Hughes Supply folded into HD Supply | | 2007 | Home Depot sells HD Supply to Bain Capital, Carlyle, and CD&R | | 2013 | HD Supply IPOs on NASDAQ | | 2017 | CD&R buys just the Waterworks division, renames it Core & Main | | 2020 | Home Depot reacquires the rest of HD Supply, not Core & Main | | 2021 | Core & Main IPOs on the NYSE as CNM | | 2025 | First cross-border acquisition, Canada Waterworks | The unusual part of this story isn't the roll-up itself; plenty of distributors grow that way. It's that Core & Main is a business its own former parent tried to reassemble and couldn't, because the piece it wanted most had already learned to grow without it. Distribution rewards whoever owns the unglamorous middle: the branch that stocks the fitting before the trench is dug, the catalog that never goes out of date. This series looks at the companies that built their whole business on getting that middle right. --- # Building an attribute schema for Consumer Electronics that shoppers and AI can actually use Source: https://www.anglera.com/blog/consumer-electronics-attributes Published: 2026-06-17 Industries: consumer-electronics ![Building an attribute schema for Consumer Electronics that shoppers and AI can actually use](/og/hero-consumer-electronics-attributes.jpg) A shopper filters for "wireless earbuds, ANC, IPX4 or better" and a product with all three features simply isn't there. Not because it's out of stock, but because nobody ever put those three facts into a structured field. In consumer electronics, the gap between what a product actually does and what a catalog says about it is usually the whole problem. ## Why electronics fail filtered search first Electronics is the category where faceted search does the most work. Buyers don't browse category pages, they filter: battery life, connector type, resolution, wattage, compatibility. Every facet is powered by a structured attribute. If the attribute is blank, the product doesn't just rank lower, it's excluded from the result set entirely. A missing "ANC: yes" value doesn't get treated as "unknown," it gets treated as "no." The same failure shows up with AI shopping agents. When a shopper asks ChatGPT or Gemini to "recommend noise-cancelling earbuds under $150 with at least 24-hour total battery life," the assistant is reading a product feed, not marketing copy. If your feed doesn't carry a battery-life field the assistant can parse, your product is invisible in that answer regardless of how good the earbuds are. OpenAI's own product feed spec for ChatGPT Shopping is explicit that structured fields, not description text, are what power [search, discovery, and instant checkout](https://developers.openai.com/commerce/specs/file-upload/products). Google treats identifiers the same way. GTIN is "strongly recommended" for electronics, and Google says plainly that [products with missing or incorrect GTIN attributes may have limited visibility](https://support.google.com/merchants/answer/6324461?hl=en). One blank field, one entire ranking penalty. ## The attributes that actually matter, by subcategory Generic templates ("color," "size," "material") don't work for electronics because the decision-driving specs are category-specific. A schema built for headphones is useless for smart home hubs. Here's what shoppers and facets actually key on: | Subcategory | Attributes that drive filtering | |---|---| | Audio (earbuds, headphones) | Bluetooth version, codec support (SBC/AAC/aptX/LDAC), ANC yes/no, IP rating, battery life (earbuds + case), driver size, mic count | | Wearables | Display type, always-on display, water resistance, battery life, GPS, cellular option, band/case size compatibility | | Smart home | Hub requirement, protocol (Wi-Fi/Zigbee/Thread/Matter), voice assistant compatibility, power source | | TVs/displays | Resolution, refresh rate, HDR format, panel type, port count and type, screen size | | Chargers/cables | Wattage, connector type, port count, fast-charge protocol (PD/QC), cable length | Notice none of these are "nice to have." Each one is a checkbox a shopper actively filters by, and each one is a value an AI assistant has to match against a query before it will even mention the product. ## Worked example: a pair of wireless earbuds Here's a real pattern: a supplier feed arrives with a title, price, and a paragraph description, and almost nothing else structured. **Raw feed, as received:** | Field | Value | |---|---| | Title | Wireless Earbuds Pro | | Description | "Premium sound with long battery life and comfortable fit for all-day wear." | | Price | $89.99 | | Category | Electronics > Audio | | GTIN | (blank) | | ANC | (blank) | | Bluetooth version | (blank) | | Codec | (blank) | | IP rating | (blank) | | Battery life | (blank) | Everything a shopper would filter on, and everything an AI agent would need to answer "recommend ANC earbuds with sweat resistance for the gym," is sitting inside a marketing sentence instead of a field. **Enriched, structured for facets and agents:** | Field | Value | |---|---| | Title | Wireless Earbuds Pro — ANC, IPX4, 30hr Battery | | GTIN | 8 90123 45678 9 | | ANC | Yes | | Bluetooth version | 5.3 | | Codec support | SBC, AAC, aptX | | IP rating | IPX4 | | Battery life (earbuds) | 6 hours | | Battery life (case, total) | 30 hours | | Driver size | 10mm | | Mic count | 4 (2 per earbud, beamforming) | | Charging | USB-C, wireless Qi | Same product, same box, same price. One version shows up in three facets and one AI answer. The other shows up in none of them. ## How to structure the schema so it holds up A few rules keep this from becoming a one-time cleanup that decays again in six months. **Separate spec fields from marketing copy.** "Long battery life" is copy. "30 hours total playback" is data. Both belong on the page, but only the second one powers a filter, and only the second one is something an AI agent can compare across products. **Use controlled vocabularies, not free text.** "Water resistant" and "IPX4" and "sweat-proof" all mean different things to different suppliers writing the same field. Pick one standard (IP rating codes) and normalize every incoming value to it, or the facet fragments into five near-duplicate filters that each show fewer products than they should. **Make IP ratings, codecs, and version numbers first-class fields, not spec-sheet PDFs.** If the only place "IPX4" appears is inside a linked PDF, no facet or agent can read it. It has to be a queryable attribute on the product record itself. **Treat identifiers (GTIN, MPN) as part of the schema, not an afterthought.** Missing identifiers don't just hurt one channel; they suppress matching across Google Shopping, marketplaces, and comparison surfaces simultaneously. **Audit for silent gaps, not just empty fields.** A "Bluetooth version" field that says "5.0" for a product that actually ships 5.3 is worse than blank, because it actively mismatches the product against the wrong filter and the wrong AI query. This is the layer where Anglera works underneath whatever PIM or platform a retailer already runs. It scores every SKU against a category-specific schema like the one above, flags where ANC, codec, IP rating, or GTIN are missing or inconsistent, and gap-fills the values from source specs so the enriched attributes stay structured and current, not buried in a description field. The PIM still stores the record. Anglera just makes sure the fields that faceted search and AI shopping agents actually read are the ones that are filled in. --- # Watsco: The HVAC Distributor That Owns a Piece of Its Suppliers Source: https://www.anglera.com/blog/watsco-distributor-playbook Published: 2026-06-16 Industries: hvacr ![Watsco: The HVAC Distributor That Owns a Piece of Its Suppliers](/og/hero-watsco-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Watsco sits at #1 in HVACR on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the trade press's annual ranking of North America's largest wholesale distributors, on FY2025 revenue of $7.24 billion. That scale alone would make Watsco a fixture on any strategy team's watch list. What makes it a genuinely unusual case is the machinery underneath the number: a distributor that has spent forty years buying up the very market it operates in, while quietly becoming a part-owner of one of the manufacturers it sells for. ## The consolidator that never sold itself Watsco started as Wagner Tool & Supply, a New York manufacturer of HVAC/R parts and tools, before reincorporating in Florida and going public in 1963. The pivot that actually built today's company came in 1989, when it acquired an 80 percent stake in Gemaire Distributors and moved from making equipment to selling it, according to the [company's own history as documented on Wikipedia](https://en.wikipedia.org/wiki/Watsco). Every decade since has added a zero: $1 billion in revenue by 1998, $2 billion by 2009, $7.24 billion in 2025. Along the way it swallowed hundreds of smaller family distributors, most recently [Jackson Supply Company](https://stockanalysis.com/stocks/wso/), a 25-location, roughly $230 million Sunbelt operator that had itself been independent for more than 50 years. That is the paradox worth naming plainly: Watsco is the industry's most aggressive consolidator, the buyer that ends a hundred other founders' independence, yet Watsco itself has never been rolled up. Albert H. Nahmad has run the company as chairman and CEO since 1972, and his son Aaron "A.J." Nahmad now serves as president, per [Wikipedia's leadership record](https://en.wikipedia.org/wiki/Watsco). In a distribution sector where private equity has bought and flipped competitor after competitor over the past decade, Watsco is the rare case of a public, family-led acquirer eating the roll-up wave rather than becoming part of it. ## A distributor with equity in its own supplier The less obvious move sits inside Watsco's manufacturer relationships. In 2009 the company formed its first joint venture with Carrier Corporation, folding Carrier-branded sales and distribution locations into what became Carrier Enterprise, with Watsco holding the controlling stake and Carrier retaining a minority interest, according to the acquisition history [Wikipedia records](https://en.wikipedia.org/wiki/Watsco). Additional Carrier Enterprise entities followed for the Northeast and for Canada. Most distributors are strictly downstream of their manufacturers: they buy equipment, mark it up, and move it. Watsco's Carrier Enterprise structure makes it something closer to a joint operating partner in one of its own supply lines. That has an obvious upside: tighter alignment on inventory, co-branded marketing, and priority access to new product lines from a top-tier OEM. It also creates a strategic tension a sharp competitor would flag immediately. A distributor that is also part-owner of a manufacturer's go-to-market arm has less room to play its suppliers off each other on price and terms, the classic leverage independent distributors use. Watsco has bet that scale and alignment with Carrier outweigh that lost flexibility, and the bet has held for over 15 years. Whether it holds as well if Carrier's product roadmap diverges from what contractors actually want is the kind of question a channel analyst files away for later. ## Building a digital storefront on top of a parts counter The other place Watsco looks less like a legacy wholesaler and more like a software company is its digital sales channel. E-commerce represented roughly 36 percent of trailing twelve-month sales in early 2026, and the company has said digital transactions exceed 60 percent of sales in some individual markets, per its investor disclosures [summarized by StockTitan](https://www.stocktitan.net/news/WSO/). The centerpiece is OnCallAir, a platform that lets HVAC contractors build and present financed equipment quotes to homeowners on the spot rather than mailing a proposal days later. In 2025 OnCallAir generated roughly $1.8 billion in gross merchandise value and was used to present quotes to hundreds of thousands of households. That is a meaningfully different growth lever than adding branches. A parts counter can only serve the contractors who drive to it; a quoting platform embedded in a contractor's sales process captures revenue at the point where the homeowner actually decides. Watsco's decentralized operating model, in which local business units like Gemaire, Baker Distributing, and East Coast Metal keep their own management and customer relationships according to the [company's own description of its structure](https://www.watsco.com/about-us), gave it enough operating latitude to build and push this platform without disrupting the branch relationships that still move most physical inventory. ## Discipline over volume when the market turned 2025 was not a growth year for residential HVAC replacement demand, and Watsco's revenue slipped nearly 5 percent to $7.24 billion. The response is the part worth watching. Instead of discounting to defend volume, Watsco posted record full-year gross margins of 28.0 percent, cut inventory roughly 30 percent from its peak, and still raised its annual dividend 10 percent to $13.20 per share, extending a streak of 52 consecutive years of dividend payments, per the same investor summary. For a company whose entire growth story has been built on acquisition and expansion, choosing margin discipline over market-share defense in a down year is a tell about what the Nahmad family actually optimizes for. ## A short table of the record | Milestone | Detail | |---|---| | 1989 | Acquires 80% of Gemaire, pivots from manufacturing to distribution | | 2009 | First Carrier joint venture forms Carrier Enterprise | | 2022 | $7.27B revenue, 673 locations | | 2024 | $7.6B revenue | | 2025 | $7.24B revenue, record 28.0% gross margin, 10% dividend hike, #1 HVACR on MDM's 2026 list | The unglamorous truth of distribution is that whoever controls the catalog, the branch network, and the data behind both tends to win the category, no matter how the demand cycle bends in any given year. That is the thread this series keeps pulling on, one distributor at a time. --- # Server-side rendering on SAP Commerce Cloud: making product data visible to Google and AI Source: https://www.anglera.com/blog/sap-commerce-ssr-rendering Published: 2026-06-16 Platforms: sap-commerce ![Server-side rendering on SAP Commerce Cloud: making product data visible to Google and AI](/og/hero-sap-commerce-ssr-rendering.jpg) SAP Commerce Cloud gives distributors and manufacturers two very different storefront architectures, and they render product data in opposite ways. If your enriched attributes, specs, and identifiers never make it into the HTML a crawler actually receives, none of that enrichment work pays off in search or in AI answer engines. Here's how rendering works on each SAP Commerce Cloud storefront, why it matters, and how to check it yourself. ## Two storefront architectures, two rendering models SAP Commerce Cloud storefronts fall into two families: - **Accelerator (JSP-based)** — the legacy storefront, built on Java Server Pages. Every request is rendered fully on the server; the HTML sent to the browser (and to any crawler) already contains the rendered product content. SAP deprecated Accelerator's UI extensions and add-ons in the 2205 release, with removal targeted for a 2027 release, and active development now focused on the Composable Storefront — but a large share of existing deployments still run Accelerator today, and for those sites the crawler-visibility question is largely moot: what you see in "view source" is what a bot sees too. - **Composable Storefront (Spartacus)** — the current, actively developed storefront, built as an Angular single-page application that talks to commerce back ends through the OCC (Omni Commerce Connect) REST API. Spartacus renders in the browser by default. Without server-side rendering enabled, the initial HTML response is a near-empty shell — an app root element plus JavaScript bundles — and the product name, price, specs, and identifiers only appear after Angular boots and fetches data client-side. This second point is the one that catches teams out. A PDP can look complete in a normal browser, because the browser executes the JavaScript and fills in the DOM, while the exact same URL returns almost no product content to anything that doesn't execute JavaScript, or that gives up before the client-side render finishes. ## Why client-only rendering hides data from crawlers and AI agents Googlebot does execute JavaScript, but it does so in a second, deferred rendering pass, on a delay and a resource budget separate from the initial crawl. Many other consumers of your pages — AI assistants and agents that fetch pages to answer product questions, comparison tools, some retailer and marketplace feed crawlers, and plenty of SEO and monitoring tools — either don't execute JavaScript at all or apply much stricter timeouts than a full browser. If your Spartacus storefront ships CSR-only, all of them are working from that same near-empty shell. Two additional consequences of Spartacus SSR are easy to miss: - **Rendering strategy is per-request, not global.** Spartacus's SSR layer can fall back to client-side rendering under load, on a timeout, or for URLs excluded from the rendering rules. If that fallback is happening more often than intended, product pages intermittently serve the empty-shell version. - **JSON-LD structured data depends on SSR.** Spartacus generates product `Product`, `Offer`, and review schema through a `ProductSchemaBuilder` and injects it as a JSON-LD script tag via a `JsonLdDirective`: ```html ``` In production, that structured-data generation is scoped to the server-side rendering pass — it is not emitted on a pure client-side render. If SSR isn't running (or falls back to CSR for a given request), the JSON-LD block that AI agents and Google's Rich Results parser rely on simply isn't in the response. ## Making sure product data is in the server-rendered HTML For an Accelerator storefront, there is no separate SSR toggle to manage — confirm the JSP templates that render the PDP (name, description, price, attributes) are populated from the same product/CMS data your PIM or Anglera feeds, and check that no client-side widget is silently replacing static content after load. For a Spartacus (Composable Storefront) deployment, SSR is an explicit build and runtime layer on top of the Angular application, using Angular Universal: 1. **Add SSR support.** SAP's recommended path is the Spartacus schematics command, which scaffolds the Angular Universal server bundle, an Express server entry point, and the required `app.server.module.ts` wiring: ```bash ng add @spartacus/schematics --ssr ``` 2. **Disable the PWA service worker where SSR must serve first-paint HTML**, since a caching service worker will serve the cached `index.html` and JS bundles before the server can render, skipping SSR entirely. Set this in the Spartacus config: ```ts pwa: { enabled: false } ``` 3. **Tune the SSR runtime for your traffic**, in the SSR-specific configuration (`ssr` config object): `concurrency` controls how many renders run in parallel before new requests fall back to CSR (default 20), and `timeout` controls how long a single render is allowed to run before falling back (default 3000ms). A `renderingStrategyResolver` can force `ALWAYS_SSR` for bot user agents and product/category URLs specifically, with its own `forcedSsrTimeout`, so crawlers never get shed to the CSR fallback even under load. 4. **Confirm the build and start the SSR server** and hit it directly rather than the CSR dev server: ```bash yarn run build:ssr && yarn run serve:ssr ``` 5. **On SAP Commerce Cloud (Public Cloud/CCv2), verify the SSR service is actually in front of the app** — some Spartacus/CCv2 version combinations have had documented routing issues that bypassed the SSR container and served the CSR bundle directly, silently undoing all of the above. ## How to validate Don't rely on what you see in a normal browser tab — that's always the fully-hydrated, client-rendered view. Compare the raw server response to the rendered DOM instead: - **View-source vs. Inspect/Elements.** Open the PDP, then use "View Page Source" (the raw HTML SAP Commerce Cloud actually sent) alongside DevTools' Elements panel (the DOM after Angular hydration). On a working SSR setup, both should already contain the product name, price, and description — Elements just adds interactivity on top. If view-source shows an empty app-root shell (something like `app-root` with no children) and Elements shows a full PDP, SSR isn't reaching that request. - **curl the URL directly**, which never executes JavaScript, so it shows exactly what a non-browser crawler receives: ```bash curl -s https://www.example.com/product/12345/widget-abc | grep -i "widget-abc" curl -s https://www.example.com/product/12345/widget-abc | grep -i 'application/ld+json' ``` If the product name/SKU and a `ld+json` script block both come back, SSR and structured-data generation are working for that URL. An empty result from the first `grep` with content still visible in a browser is the signature of CSR-only rendering. - **Disable JavaScript in DevTools** (Command Menu → "Disable JavaScript") and reload the PDP. What remains is close to what a non-JS-executing crawler sees. - **Google's Rich Results Test** (or Search Console's URL Inspection tool) shows Google's own rendered HTML and flags any structured data it detected — useful for confirming JSON-LD survives Googlebot's render pass, not just your own curl check. - **Spot-check a sample across categories**, not just one PDP — SSR fallback behavior under load, and any rendering-strategy exclusions, mean one clean page doesn't guarantee the pattern holds site-wide. Verified as of July 2026 against current Spartacus/Composable Storefront documentation; SSR configuration options and defaults can shift between Spartacus versions, so confirm against the release your storefront is pinned to before changing production `ssr` config. None of this matters if the underlying product record is thin to begin with — SSR just faithfully serves whatever data your PIM or commerce platform hands it. That's the half of the problem Anglera is built for: it enriches product data continuously — attributes, specs, use-cases, identifiers — directly in the PIM or commerce platform you already run, without a rip-and-replace migration. Once that data is rich, the server-rendered HTML your SAP Commerce Cloud storefront produces has something worth rendering, for buyers and AI agents alike. --- # Richards Building Supply: Staying Family-Owned in a Rollup Era Source: https://www.anglera.com/blog/richards-building-supply-distributor-playbook Published: 2026-06-16 Industries: building-materials ![Richards Building Supply: Staying Family-Owned in a Rollup Era](/og/hero-richards-building-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In 1978, Richard J. Guzior split off from a Chicago roofing distributor where he'd started in the shipping department and, with a business partner, opened Richards Building Supply. Forty-eight years later the company he built ranks #20 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for building materials, with an estimated $1.0 billion in FY2025 revenue per MDM's data. What makes Richards worth studying isn't the size. It's the ownership structure that size usually erases. ## The buyout that set the trajectory Guzior and co-founder Richard Sawilchik split duties from day one: Guzior ran sales and operations, Sawilchik ran accounting and credit. That lasted eight years. In 1986, with seven children at home, Guzior bought out his partner and became sole owner, a bet that concentrated both the upside and the risk on one family. His stated logic, according to the company's own [about page](https://www.richards-supply.com/about/), was blunt: "if you're not growing, you're at risk of dying." From eight locations at the time of the buyout, Richards has expanded to more than 60 branches across 16 states, covering the West, Midwest, North, and Southeast, stocking roofing, siding, windows, doors, decking, cabinets, and rainware for exterior contractors. The company grew almost entirely through the same playbook other family distributors use: dense branch coverage in one region, then adjacency expansion, with occasional bolt-on acquisitions rather than a rollup strategy. A 2015 purchase of Eastern Aluminum Supply pushed it further into the Northeast. The pace picked up rather than slowed as the founder aged out of daily operations, which is the opposite of what typically happens to founder-led distributors. ## Succession without a sale Most distribution founders eventually face a choice between passing the company to family or selling to a strategic or private equity buyer. Richards chose the first path deliberately. Christine Guzior, Richard's wife, became Chairman. Son Ronald M. Guzior was named CEO and President in 2019. All seven of the Guzior children hold roles inside the business today. The family also built a philanthropic arm, the Guzior Family Foundation, established in 2005, funded by the same balance sheet that funds branch expansion. That succession model matters more than it looks like on an org chart, because of what's happening around Richards in its own vertical. ## The insight: a family business in a sector being bought up around it Roofing and exterior building materials distribution has consolidated hard in the past two years, and the buyers have not been other family businesses. [Home Depot completed its $18.25 billion acquisition of SRS Distribution](https://ir.homedepot.com/news-releases/2024/06-18-2024-153031934) in June 2024, folding one of the largest specialty trade distributors into a public retail giant. Ten months later, [QXO completed its roughly $11 billion acquisition of Beacon Roofing Supply](https://investors.qxo.com/news/news-details/2025/QXO-Completes-Acquisition-of-Beacon-Roofing-Supply/default.aspx) at $124.35 a share, after Beacon's board spent months rejecting the offer before relenting, making QXO the largest publicly traded roofing and waterproofing distributor in the country. Two of the biggest names in the vertical that Richards competes in went from independent to institutionally owned inside a single year. Richards did not follow. In April 2026, when it [acquired United States Building Supply](https://www.richards-supply.com/richards-building-supply-announces-the-acquisition-of-united-states-building-supply-usbs-in-denver-co/), a four-location Colorado distributor covering Denver, Colorado Springs, and Loveland, CEO Ronald Guzior framed the deal explicitly around ownership structure rather than scale: "This acquisition represents another win for family-owned and operated independent distributors." USBS owner Dewey Lane stayed on with the company rather than cashing out and exiting. That is a small transaction next to $11 billion and $18 billion deals, but it is a signal about what kind of buyer Richards intends to be, and what kind of seller it looks for. It is picking up other family operators who want a family successor, not a financial sponsor. The tension worth naming plainly: staying private and family-run means Richards cannot match QXO's or Home Depot's balance sheet in a bidding war for the next mid-size regional distributor. Capital-intensive scale plays, national account contracts, and cross-market vending programs are easier to fund with public or PE money. But the same structure gives Richards something its newly-owned competitors have to work to fake: a seller on the other side of a handshake deal who trusts that the acquiring name on the building will still answer to a family, not a portfolio manager three ownership layers removed. In a vertical where the two largest independents just disappeared into bigger balance sheets, that trust is becoming a scarcer asset than capital. ## Betting on the contractor relationship, not just the branch Richards has also pushed further into the software layer of the contractor relationship than most distributors its size. It built and gives away RBS CRM, a free platform for exterior remodeling and builder contractors covering lead management, estimating, job costing, and project scheduling. That is a distributor trying to make itself sticky through the software its customers run their businesses on, not just the truck that shows up with material. It is a smaller bet than a $10 billion acquisition, but it points at the same instinct that built the company: make the customer relationship the asset, and let the balance sheet follow. Distribution is won branch by branch, catalog line by catalog line, and relationship by relationship long before it shows up in an MDM ranking. This series looks at the operators who've made that unglamorous machinery their edge. --- # How R.E. Michel Stayed Family-Run Through 90 Years in HVACR Source: https://www.anglera.com/blog/re-michel-distributor-playbook Published: 2026-06-16 Industries: hvacr ![How R.E. Michel Stayed Family-Run Through 90 Years in HVACR](/og/hero-re-michel-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* R.E. Michel Company sits at #5 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the HVACR vertical, the trade publication's annual ranking of North America's largest wholesale distributors across 20 product categories. That placement alone would be unremarkable in a sector full of scaled players. What makes it worth a second look is who still signs the checks: ninety years after its founding, R.E. Michel is still owned and run by the Michel family, in an industry where almost everyone else its size has sold, gone public, or been rolled into a private-equity platform. ## A Rowhouse Block in Baltimore The company traces to 1935, when Robert E. Michel and his wife Mary Ellen started selling oil burner parts and supplies out of a small space in the 1000 block of Greenmount Avenue in Baltimore, according to the [company's own history page](https://www.remichel.com/WebServices/WebContent/WebContent/aboutus). Robert's brother, J.V. "Bunny" Michel, joined in 1938, and the founding idea was almost embarrassingly simple: sell quality parts at a fair price with dependable service, and repeat that transaction often enough to build something durable. Home heating in 1930s Baltimore ran on oil burners and coal furnaces being converted to oil. R.E. Michel supplied the parts that kept them running, which is a less glamorous business than it sounds and exactly the kind of unglamorous, recurring-need category that compounds over decades. That founding category still echoes in the company's structure. Two of its listed affiliates are Schwartz Distributing and DLPE, short for Dealers LP Equipment, a business built around propane appliance parts. It is a straight line from oil burners and heating fuel in the 1930s to a modern affiliate still serving the LP-gas trade. Distributors that pivot hard into new categories often lose that kind of institutional memory. R.E. Michel kept it as a subsidiary instead of discarding it. ## Three Generations, One Ownership Table The unique thing about R.E. Michel isn't the branch count or the SKU catalog. It's the cap table. Per the company's own materials, the chairman today is Doc Michel, R.E.'s son, and the president is Robert "Bobby" Michel, R.E.'s grandson. That's three generations of the same family holding the top two seats at a wholesaler that now runs 300-plus branches, employs more than 1,950 people, stocks over 35,000 items from 1,000-plus manufacturers, and ships more than $3 million in product a day out of over a million square feet of central warehouse space. Trade press has noticed the same thread. A 2019 [Butane Propane News profile](https://news.google.com/rss/articles/CBMihgFBVV95cUxNYmxjTUNROGhtRzUwWjFDRllidm1iYVlKMHBrUE9TYUdaM2s2YW14YlZGN3Zhd3M0Ul8zMGdTcXJ5WkwxLXNheU04Q19mZ3Vqb2lVN2pDOVZ5V3dWQ2psWHdIZzI1S2hidGJQSHZvd1ZDc29Zbmd1blhkV1pqLWx4MmVCcUFtUQ?oc=5) ran under the headline "Three Generations, One Focus: Customers First." That's the plain insight of this piece: in a distribution category increasingly defined by consolidation, where the biggest players are public companies or private-equity roll-ups chasing scale through acquisition, R.E. Michel has stayed independently family-owned and grown mostly by building, not buying its way to size. It is a strategic choice with real trade-offs. Family ownership means slower access to outside capital, no stock currency for splashy M&A, and succession risk baked into the org chart in a way a professionally managed public company doesn't carry. It also means no quarterly earnings call forcing short-term margin decisions, no private-equity hold period dictating an exit timeline, and a brand that can credibly tell technicians and contractors it has been answering the same phone number, in some form, since before their grandfathers were in the trade. ## Growing the Old-Fashioned Way The clearest recent evidence of that build-don't-buy instinct is physical. In early 2026, R.E. Michel opened a 600,000-square-foot distribution center in Clinton, South Carolina, a facility widely reported by regional outlets as a former sock-manufacturing plant repurposed to stock HVAC and plumbing parts. Multiple South Carolina outlets, including the Post and Courier, covered the reopening and the jobs it created in the Upstate region. That's a company sinking capital into brick-and-mortar throughput capacity rather than into acquiring a competitor's customer list, and it fits the pattern: growth funded by reinvested earnings and organic branch expansion, layered under modern additions like an e-commerce ordering platform, the ESP inventory management program for dealers, a rewards program, and a dedicated technician training facility in Glen Burnie, Maryland. ## The Trade-off Worth Naming None of this is charity or nostalgia. A family-run wholesaler competing against Watsco-scale public consolidators and PE-backed platforms has to win on something other than balance-sheet size, and R.E. Michel's answer looks like density plus continuity: enough branches that a contractor rarely drives far for a part, enough tenure in the business that pricing and service don't whipsaw with ownership changes, and a product mix wide enough (refrigeration, controls, boilers, LP equipment) that one counter visit covers most of a truck's needs. The tension is real. Staying private caps the acquisition firepower that lets a Watsco buy a regional rival outright when it comes up for sale. R.E. Michel has answered that constraint by building capacity itself, one distribution center and one branch at a time, betting that patient reinvestment beats a strategy of counting years by earnings cycles. Distribution rarely gets written up for its ownership structure, but it should. The parts move through the same trucks and branches either way; who owns the balance sheet is what decides how long a company is willing to wait for the next one to pay off. --- # Quotes Aren't Slow Because of Your Workflow — They're Slow Because Your Reps Are Human Part-Number Matchers Source: https://www.anglera.com/blog/quote-speed-sku-identification-2026 Published: 2026-06-16 ![Quotes Aren't Slow Because of Your Workflow — They're Slow Because Your Reps Are Human Part-Number Matchers](/og/hero-quote-speed-sku-identification-2026.jpg) A 20-line quote shouldn't take half a day. It does, and the trade press keeps blaming the workflow — approvals, spreadsheets, disconnected systems. That's not where the hours go. The hours go into a human being staring at a customer's part description or a competitor's catalog number and trying to figure out which of your SKUs it actually means. Fix that, and the workflow problem mostly evaporates on its own. ## The workflow theory doesn't survive contact with a stopwatch Distribution Strategy Group has built a real case this year that quoting is a strategic liability, not an administrative afterthought. Its June piece on ["The Hidden Cost of Inefficient Quoting in Distribution"](https://distributionstrategy.com/2026/06/the-hidden-cost-of-inefficient-quoting-in-distribution/) cites a survey finding that 73% of distribution companies report friction and fragmentation among teams causing delays, and points to spreadsheets, disconnected systems, and sales-finance misalignment as the culprits. Its companion pieces on [lost profit before the order is placed](https://distributionstrategy.com/2026/05/how-distributors-lose-profit-opportunity-before-an-order-is-even-placed/) and [moving beyond the spreadsheet](https://distributionstrategy.com/2025/07/beyond-the-spreadsheet-transforming-order-quote-processes/) make the same diagnosis from different angles: better tooling, tighter process, fewer handoffs. All of that is true and none of it is the bottleneck. Ask any operations leader to time a rep building a quote and the pattern is consistent: on lines where the customer's part number matches the distributor's SKU cleanly, quoting is close to instant — industry writeups on quote automation put a clean, no-cross-reference line at roughly thirty seconds of rep effort. The half-day quotes are the ones where nothing lines up. The customer wrote a competitor's catalog number, or their own internal part ID, or a generic description off a spec sheet, and somebody has to translate that into an item your ERP recognizes before pricing or approvals even enter the picture. Manual quoting in distribution commonly runs five to nine business days in the best case, and three to four weeks on complex bids, with accuracy in the 70-80% range even after all that time — numbers that track the difficulty of the matching, not the number of approval steps in the workflow. ## Where the hours actually go Break a quote into its line types and the time distribution stops looking like a process problem: | Line type | What the rep has to do | Where the delay lives | |---|---|---| | Your own SKU, correctly stated | Look up price and stock | Seconds | | Manufacturer part number, your catalog | Confirm mapping, check availability | Under a minute | | Competitor catalog number | Identify the competitor's line, find your equivalent, verify spec match | Minutes to a phone call | | Customer's internal part ID or free-text description | Guess intent, search multiple fields, ask engineering or a senior rep | Minutes to hours, sometimes escalated | CPQ software is built for the top two rows. It prices fast, applies approval logic, and formats a document the moment a SKU is confirmed. What it does not do is confirm the SKU. That's still a person, opening a second browser tab, searching a competitor's site, or picking up the phone to ask a colleague who's been there fifteen years and just knows. The parts-cross-reference industry that grew up around automotive aftermarket sales exists precisely because this translation step is hard and error-prone at scale — catalogs like TecDoc built a business on standardizing exactly this lookup, because a printed or static cross-reference is out of date the moment a manufacturer revises a line. ## CPQ automates the last mile of a race run mostly on foot This is the part the workflow narrative gets backwards. Configure-price-quote systems are last-mile automation: they assume you already know which item you're quoting. That assumption holds for maybe half a distributor's line volume — the SKUs customers already order by your part number. For the rest, CPQ sits idle while a rep does catalog detective work upstream of it, and no amount of approval-routing or spreadsheet elimination touches that first mile. Distribution Strategy Group is right that the cost is real and that it shows up before the order is placed. Where the diagnosis goes astray is treating quoting as one undifferentiated process. It's two processes stapled together: identification, which is a data-matching problem, and configuration, which is a business-logic problem. Only the second one is what most "quoting transformation" initiatives actually automate. The evidence on urgency backs this up from the buyer side too. Seventy-eight percent of B2B buyers say they purchase from whichever vendor responds first, and leads contacted within five minutes convert at multiples of the rate of leads contacted thirty minutes later. Every hour a rep spends untangling a part number is an hour a competitor's quote — sent by a rep who didn't have to guess — sits in the customer's inbox first. ## What to automate first If quote speed is the goal, sequence the work backwards from where the time actually goes. Start with the identification layer: normalized attributes and cross-reference mappings that let a messy input — a competitor number, a customer's internal code, a copy-pasted spec line — resolve to your SKU without a phone call. Only after that layer exists does a CPQ investment pay off at full speed, because now every line a rep touches starts pre-identified instead of half of them starting as a search problem. This is the same measurement Anglera has been making across the [Top Distributors 2026 index](https://anglera.com/blog/top-distributors-2026): distributors with the strongest [Digital Readiness Index](https://anglera.com/blog/top-distributors-2026/methodology) scores tend to be the ones whose catalog data — attributes, cross-references, competitor mappings — is clean enough that search and matching work without a human backstop. That's the layer we work on. Your PIM stores the data; Anglera does the work of getting cross-reference and attribute data clean and current enough that a messy part number resolves on its own, whatever CPQ or ERP sits downstream of it. --- # Product structured data: the schema.org fields that matter for AI and rich results Source: https://www.anglera.com/blog/product-schema-fields-that-matter Published: 2026-06-16 ![Product structured data: the schema.org fields that matter for AI and rich results](/og/hero-product-schema-fields-that-matter.jpg) Structured data is the one artifact on a product page that both Googlebot and AI crawlers parse the same way: a typed, unambiguous statement of what the product is, what it costs, and whether it's in stock. Most teams already have a `Product` JSON-LD block somewhere in their template. Fewer have checked it against what Google actually requires versus what's merely nice to have — and that gap is usually where rich results silently fail to show up. ## Two paths, one script tag Google Search Central splits product markup into two eligibility tracks that share the same `Product` type: [Product snippets](https://developers.google.com/search/docs/appearance/structured-data/product-snippet), for pages where the product itself isn't directly purchasable (editorial reviews, informational pages), and [Merchant listings](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing), for pages where a shopper can actually buy the item. Merchant listings support more of the fields buyers care about — shipping cost, return policy, apparel sizing — and Google's own guidance notes that pages meeting the merchant-listing requirements are automatically eligible for product-snippet treatment too, so distributors and retailers should generally build to the merchant-listing spec rather than the lighter one. Both tracks read the same JSON-LD, so there's no reason to maintain two markup strategies. The distinction is about which fields you populate, not which schema you choose. ## The fields that actually gate eligibility For a **product snippet**, Google requires `name` plus at least one of `offers`, `review`, or `aggregateRating` — you only need one of the three, though supplying more strengthens the result. For a **merchant listing**, the hard requirements are `name`, `image`, and a nested `offers` with a price and currency. Everything else — `description`, `sku`, `gtin` (or `gtin8`/`gtin12`/`gtin13`/`gtin14`/`isbn`), `mpn`, and `brand` — is "recommended," which in practice means: skip it and you're technically valid but you lose eligibility for the richer visual treatments (price history, size/variant pickers, review stars) and you give an AI crawler less to work with when it's trying to disambiguate your SKU from a near-identical competitor listing. A minimal but real merchant-listing block looks like this: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "Bosch GBH 18V-26 Cordless Rotary Hammer", "image": [ "https://example.com/images/gbh18v26-1x1.jpg", "https://example.com/images/gbh18v26-4x3.jpg", "https://example.com/images/gbh18v26-16x9.jpg" ], "description": "18V SDS-plus cordless rotary hammer, brushless motor, 2.6 J impact energy, bare tool.", "sku": "GBH18V26-BARE", "mpn": "0611917000", "gtin13": "3165140886541", "brand": { "@type": "Brand", "name": "Bosch" }, "offers": { "@type": "Offer", "url": "https://example.com/products/gbh18v26-bare", "priceCurrency": "USD", "price": 249.00, "priceValidUntil": "2026-12-31", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "seller": { "@type": "Organization", "name": "Example Distribution Co." } } } ``` `priceCurrency` must be a three-letter ISO 4217 code, `availability` and `itemCondition` must be full schema.org URLs (not bare strings like `"InStock"`), and `price` must be a positive number, not a range or a string like `"Call for price"`. If you sell the same item in multiple currencies or regions, each variant needs its own canonical URL and its own `Offer` — don't try to stuff multiple currencies into one offer. ## The fields that do the heaviest lifting for AI Google and LLM-based shopping agents both lean hardest on the identifier fields — `gtin`, `mpn`, `sku`, and `brand` — because they're the only ones that let a machine match your listing to the same product elsewhere on the web with confidence. `additionalProperty` (a repeatable `PropertyValue` array) is where structured attributes and specs belong — voltage, material, dimensions, certifications — and it's the field most PDPs leave empty even when the same data exists in a spec table two inches below the fold. If it's only in a rendered HTML table and not in `additionalProperty`, an AI agent has to infer structure from prose, which it does inconsistently. For products that come in sizes, colors, or configurations, use [`ProductGroup`](https://developers.google.com/search/docs/appearance/structured-data/product-variants) with `isVariantOf` on each child `Product`, plus `variesBy` listing which property differs (color, size). Treating every variant as an unrelated standalone `Product` is a common mistake that fragments reviews and price history across SKUs that should be read as one item. `aggregateRating` and `review` matter for both surfaces, but only if they're real: reviewer names must resolve to an actual `Person` or `Organization`, not a coupon headline, and Google explicitly disqualifies markup that doesn't match what's visibly rendered on the page. ## Shipping and returns: the fields buyers actually ask AI about `offers.shippingDetails` (`OfferShippingDetails`) and `offers.hasMerchantReturnPolicy` (`MerchantReturnPolicy`) are recommended, not required, but they answer exactly the questions a shopping agent is likely to ask on a buyer's behalf — "does it ship free, and can I return it?" `MerchantReturnPolicy` can be declared once at the `Organization` level if your policy is uniform, or overridden per offer for exceptions (final-sale items, freight-only SKUs). Google's [return policy documentation](https://developers.google.com/search/docs/appearance/structured-data/return-policy) also allows a simpler `merchantReturnLink` instead of full structured terms — use the structured version if your policy varies by category, since it's the only way to express `returnPolicyCategory` and `merchantReturnDays` distinctly per product line. ## Common mistakes worth checking for - **Markup that doesn't match the rendered page.** Price, availability, and name in the JSON-LD must agree with what a shopper actually sees — Google treats mismatches as a spam-policy violation, not a minor bug. - **Client-side-only rendering.** If the `Product` block is injected by JavaScript after initial load, confirm Googlebot's rendered HTML actually contains it — don't assume; check. - **One `Product` block per template, reused across variants.** Each purchasable SKU needs its own `Offer` (and its own canonical URL) even if the page visually shows a shared parent. - **String availability values.** `"in stock"` isn't valid; it has to be the full URL `https://schema.org/InStock`. - **Category or listing pages marked up as `Product`.** Merchant listings are restricted to single-product pages. ## How to validate Check three things, in order: 1. **View-source vs. rendered DOM.** `curl -s https://example.com/products/sku | grep -A 40 'application/ld+json'` shows what's in the raw HTML. If your JSON-LD only appears in the browser-rendered DOM (inspect via dev tools) and not in view-source, confirm your rendering approach serves it server-side, or that it survives Googlebot's rendering pass. 2. **Google's Rich Results Test.** Paste the live URL into the [Rich Results Test](https://search.google.com/test/rich-results) — it flags missing required fields distinctly from missing recommended ones, and it's the authoritative signal for eligibility, not third-party linters. 3. **Search Console's Merchant Listings report.** Once live, watch this report for field-level errors and warnings across the whole catalog rather than checking pages one at a time. Verified as of July 2026 against Google Search Central's Product, product-snippet, merchant-listing, product-variants, and return-policy documentation, and the current schema.org Product/Offer vocabulary; Google has updated this documentation multiple times in the last two years, so recheck field requirements before a large re-platform. Getting these fields right assumes the underlying data — accurate GTINs, complete spec attributes, current pricing and availability — actually exists somewhere upstream, which for most catalogs it doesn't at full coverage. Anglera continuously enriches that layer (identifiers, structured attributes, use-case detail) in whatever PIM or commerce platform already holds your catalog, so the JSON-LD your template emits has real, complete values to point at instead of blanks. --- # A miscategorized product is an invisible product Source: https://www.anglera.com/blog/miscategorized-is-invisible Published: 2026-06-16 ![A miscategorized product is an invisible product](/og/hero-miscategorized-is-invisible.jpg) Categorization feels like back-office housekeeping, so it gets treated like it. A product lands in a roughly-right bucket, someone moves on, and nobody connects that decision to the sales that never happened. They should. Where a product sits in a taxonomy decides whether it ever enters the consideration set at all. ## Shoppers don't scroll, they filter On most marketplaces, the journey starts by narrowing: category, then sub-category, then a facet like size, material, or wattage. Each step is a filter against structured data. A product in the wrong node — or in a node too shallow to carry the right facets — simply isn't in the filtered view the buyer is looking at. It isn't ranked poorly. It's absent. The difference is concrete: - A yoga mat in **"Sports & Outdoors > Exercise Equipment"** is buried with treadmills and weight benches. - The same mat in **"Sports & Outdoors > Exercise & Fitness > Yoga > Yoga Mats"** shows up the moment a buyer drills into yoga — alongside its actual competitors, in the view where the purchase happens. Same product. One is findable, one is not. ## Granularity is a ranking signal, not just a label Deep, correct categorization does more than place a product. It tells the platform which attributes matter, which facets to expose, and which queries the listing should answer. A precise category node inherits the right filters automatically; a vague one strands the product without them. Categorization and discoverability are the same lever pulled from two ends. ## Why it goes wrong at scale Granular categorization is hard precisely because it's granular. Every channel has its own taxonomy, those taxonomies change, and mapping a hundred thousand SKUs into the deepest correct node — channel by channel — is more judgment than a team can apply by hand. So products default to safe, shallow categories, and the catalog quietly under-indexes everywhere. This is exactly the kind of high-volume, rules-plus-judgment work that machines do well and tired analysts do inconsistently: read what a product actually is, match it to the deepest correct node in each channel's tree, and keep it current as taxonomies shift. ## Put products where buyers go looking Getting categorization right is one of the cheapest ways to lift discoverability, because it adds no copy and no media — it just stops hiding products you already have. It's part of the work [Anglera](/) does at catalog scale: classifying every SKU to the most specific accurate node per channel and writing it back to your source of truth, so your products show up in the browse paths where buyers actually decide. You can't sell from a category nobody opens. --- # Menards: How a Self-Funded Lumberyard Took on Home Depot Source: https://www.anglera.com/blog/menards-retailer-playbook Published: 2026-06-16 Industries: building-materials ![Menards: How a Self-Funded Lumberyard Took on Home Depot](/og/hero-menards-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Menards lands at No. 36 on the [National Retail Federation's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $14.10 billion in 2025 U.S. retail sales, compiled with Kantar. It got there without a single outside investor, a public stock ticker, or, by most accounts, much patience for anyone who didn't clock in on time. ## A Pole Barn Business That Outgrew Itself John Menard Jr. grew up the oldest of eight kids on a Wisconsin farm run by teacher-parents, and he paid his way through Wisconsin State College at Eau Claire building post-frame pole barns, starting around 1958, two decades before Home Depot existed, according to [Forbes](https://www.forbes.com/profile/john-menard-jr/). He graduated in 1962 or 1963 and, as the story goes, turned down a job offer from IBM to keep building. The construction side led him into buying lumber in bulk and reselling it to other builders on weekends, when the regular lumberyards were closed. That side hustle grew faster than the barns did. By the time building supplies had eclipsed the construction business, Menard sold off the construction division and formally incorporated Menard, Inc. in 1972, according to [FundingUniverse](https://www.fundinguniverse.com/company-histories/menard-inc-history/), just as the do-it-yourself remodeling boom was taking off across the Midwest. ## Building a Store That Didn't Look Like a Lumberyard Menard's first real innovation wasn't pricing. It was format. Instead of copying the dim, cluttered lumberyard layout that defined the category, he built stores with wide aisles, tile floors, and shelving a regular customer could actually reach, closer to a mass merchant than a contractor supply house. He also bought cheap, well-located vacant retail real estate and filled shelves with a mix of seconds, overstock, and closeouts, a habit that kept margins workable even while prices stayed low. The formula scaled through the 1970s and 1980s across Wisconsin, Iowa, Minnesota, and the Dakotas. By 1986, Menards was the 15th-largest home improvement chain in the country, with 34 stores and roughly $500 million in sales. Expansion picked up through the early 1990s into Nebraska, Chicago, Indiana, and Michigan, and by 1995 the chain had grown to 115 stores and $2.7 billion in sales, per FundingUniverse. ## The Home Depot Test Every regional hardware chain of that era eventually had to answer the same question: what happens when Home Depot shows up. For Menards, the answer arrived in September 1994, when Home Depot entered Chicago, a market Menards had only broken into in 1991. Trade press was skeptical. Forbes writer Frank Wolfe warned Menard would need to do "a lot better" to survive. He did better by not blinking. Menards kept opening stores in the same market it was supposedly about to lose, and it was Menards' aggressive Chicago expansion, not Home Depot's, that is credited with helping push regional rival Handy Andy out of business. By 1998, Menards was running 139 stores and $4 billion in revenue. Lowe's arrived in Chicago at the turn of the century too; Menards held its ground there as well. The lesson retail historians draw from this period isn't that Menards out-marketed Home Depot. It's that it refused to change its store economics under pressure, betting that a devoted regional customer base and a lower cost structure would outlast a national competitor's initial land grab. It did. ## Owning the Factory Behind the Store Here is the part of the Menards story that rarely makes it past the trade press: for decades, the company has manufactured roughly a quarter of what it sells. Steel doors, Formica countertops, picnic tables, even doghouses have come out of Menards-owned plants rather than a supplier's, a practice FundingUniverse pegs at saving the company something like 10 percent versus buying finished goods on the open market. Pair that with the highest sales-per-employee ratio among its major competitors, and Menards built a structural cost advantage that a purely retail-focused rival could not simply match by cutting a purchase order. ## The Discipline Behind the Balance Sheet The detail that best explains how Menards has stayed private, debt-averse, and expanding for more than fifty years without an IPO or a private-equity recap is not a strategy slide. It's the time clock. Forbes reports that Menard requires even top executives to punch in every morning, the same as any hourly associate. That's not a quirky anecdote. It's the operating culture that let a founder finance growth almost entirely out of store cash flow rather than borrowed capital or outside investors, a rarity among retailers of Menards' scale. Vendors have described Menard over the years as tenacious to the point of frightening, and the company has drawn its share of lawsuits from employees, customers, and suppliers along the way, along with regulatory fines, including a $1.7 million hazardous-waste penalty in 1997. None of it slowed the expansion. Menard, unlike most retailers this size, never had to explain a quarter to shareholders, because there weren't any. ## Where It Stands Now Menards today runs more than 340 stores across 15 Midwestern and Mid-Atlantic states out of its Eau Claire, Wisconsin headquarters, still fully owned by John Menard Jr., now worth an estimated $17 billion according to Forbes' 2026 figures. It remains the third-largest home improvement retailer in the country behind Home Depot and Lowe's, a position it has now held for three decades without ever being acquired, going public, or taking on outside capital. The through-line from the pole barns to the No. 36 ranking on the NRF list is consistency of ownership. A company that manufactures its own doorknobs and makes its regional presidents punch a clock is a company built to compound quietly, on its own terms, for a very long time. Every retailer on this list runs on the same unglamorous infrastructure: what's on the shelf, what it costs to put there, and how well anyone can find it. Menards just happens to build more of that infrastructure itself than most. --- # How The Master Group Wins by Staying an HVAC-R Specialist Source: https://www.anglera.com/blog/master-group-distributor-playbook Published: 2026-06-16 Industries: hvacr ![How The Master Group Wins by Staying an HVAC-R Specialist](/og/hero-master-group-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* The Master Group placed sixth in the HVACR category of [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the trade publication's annual accounting of North America's largest wholesale distributors. The placement is notable less for the rank than for the direction of the money behind it: this is a Canadian distributor spending private-equity capital to buy American regional players, in a category where the traffic almost always runs the other way. ## A specialist, not a diversified platform The Master Group has been selling HVAC-R equipment since 1952, and it marked 70 years in business in 2022, according to [Novacap's company profile](https://novacapcorp.com/company/master-group/), the Quebec private equity firm that has backed the company since 2014. The company has been named one of Canada's Best Managed Companies every year since 2010. It is headquartered in Boucherville, Quebec, and describes itself as Canada's largest privately held HVAC-R distributor. An older [ACHR News directory listing](https://www.achrnews.com/directories/2937-hvacr-directory/listing/10613-the-master-group) put the company at roughly 50 branches and four distribution centers. Novacap's current profile lists 68 branches and five distribution centers across Canada and the United States, with more than 1,300 employees. Whatever the exact pace, the trajectory is unmistakable: a company that already dominated its home market at "50 branches" scale has kept building well past it. What it has not done is diversify. Most large North American distributors that reach this size eventually broaden into adjacent categories: plumbing, electrical, industrial MRO. The Master Group has stayed inside HVAC-R. That is the first strategic choice worth naming plainly: depth over breadth, in a decade when most of its scaled peers have chosen the opposite. ## The acquisition engine points south Since the mid-2020s the company's growth has run through acquisition, and every recent target has been American. It bought Distributor Corporation of New England (DCNE), a Carrier distributor serving eastern New England, an early step into the U.S. market, per [MDM's coverage of the deal](https://www.mdm.com/news/top-distributor-sectors/hvacr/the-master-group-acquires-new-englands-dcne-in-u-s-expansion/). It also picked up Fortress Group, a Waterloo-based HVAC-R wholesaler that had served southwestern Ontario [since 1984](https://www.master.ca/professional/fortress-hvac), rounding out its home-country footprint before pushing further south. Then in early 2023 it closed its second U.S. deal: Refrigeration Sales Corporation (RSC), an Ohio-based HVAC-R distributor founded in 1945, serving Ohio and western Pennsylvania. [Houlihan Lokey's transaction record](https://hl.com/about-us/transactions/houlihan-lokey-advises-refrigeration-sales-corp/) puts the closing at February 28, 2023. The [announcement from Novacap](https://novacapcorp.com/news/the-master-group-announces-strategic-partnership-with-ohio-based-rsc-to-expand-footprint-in-the-us-hvac-r-industry/) frames it as explicit strategy, not opportunism: CEO Louis St-Laurent said RSC's "reputation for excellence, quality management, and customer service" made it "a natural choice," while president Neil McDougall pointed to RSC's own near-80-year run of "relentlessly serving customers." RSC's president, Rhonda Wight, described the deal as a "strategic partnership," not an exit. That framing matters. This is the non-obvious pattern in the piece: in HVAC-R distribution, the well-worn consolidation story is a large U.S. platform crossing into Canada. The Master Group runs the trade in reverse. It is a Canadian specialist, funded by Canadian growth capital, buying regional American family businesses and asking their leadership to stay on. Reverse-direction, PE-funded, cross-border roll-ups inside a single product vertical are the exception in this industry, not the rule. There is also a pattern in what it is buying. Fortress had run southwestern Ontario since 1984. RSC had run Ohio and western Pennsylvania since 1945. Both are the kind of multi-generational, founder-led regional wholesaler that eventually faces a succession question with no obvious internal answer. The Master Group's pitch to sellers like these is not "join our portfolio," it is "partnership," and RSC's own leadership used that exact word in the announcement. For a family business owner choosing between a financial-sponsor roll-up that will strip out the name and a strategic buyer that already runs the same category at scale, that framing is a real point of differentiation, not just a press-release nicety. ## Why the model has stayed intact Novacap's involvement since 2014 is worth sitting with. A decade-plus hold is long for growth equity, and it suggests the fund has been comfortable financing acquisitions rather than pushing toward a quick flip. That patience is arguably what has let The Master Group keep its single-vertical identity instead of getting folded into a multi-category platform the way many acquired regional distributors eventually are. The company gets growth capital without losing the thing that made it acquirable in the first place: deep, singular expertise in one category. ## The trade-off nobody advertises Staying single-vertical while acquiring across an international border is a coherent bet, but it is a bet with real edges. Depth in HVAC-R means the company competes for regional targets against fewer bidders than a diversified acquirer would, and it can integrate a new distributor without forcing it to also learn plumbing or electrical categories. That is the advantage of specialism. The cost is a lower ceiling. Full-line rivals like Ferguson or Watsco can cross-sell an acquired branch's customer base into other categories the day the deal closes; The Master Group can only sell HVAC-R harder into that same base. It is also running this strategy on private-equity time. Novacap has held the position since 2014, which is a long hold for a growth-equity firm, and a decade-plus of ownership eventually resolves one of two ways: a larger sale or a public exit. Either would test whether a culture built on "since 1952" and "partnership" language survives new ownership. None of that undercuts the model so far. Independent scale, disciplined category focus, and a willingness to buy the businesses everyone assumes should be bought by someone else, that combination has carried The Master Group from a regional Quebec wholesaler to a top-six North American HVACR distributor on MDM's own list. Distribution rewards the companies that make branches, catalogs, and delivery trucks feel invisible to the contractor who just needs the part today. The Master Group's bet is that staying narrow is how you get good enough at that to keep buying the businesses that couldn't. --- # How Kohl's Built America's Off-Mall Department Store Empire Source: https://www.anglera.com/blog/kohls-retailer-playbook Published: 2026-06-16 Industries: apparel ![How Kohl's Built America's Off-Mall Department Store Empire](/og/hero-kohls-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Kohl's sits at #34 on the [NRF Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $14.78 billion in 2025 U.S. retail sales, compiled by the National Retail Federation with Kantar. That number belongs to a chain that spent fourteen years owned by a British tobacco company, got sold off as a misfit, and then built one of the most durable real estate bets in American retail. The full arc runs from a Milwaukee corner grocery to a coast-to-coast chain that briefly overtook JCPenney as the country's largest department store operator. ## A grocer's son builds a supermarket empire Max Kohl, a Polish immigrant, opened a corner grocery store in Milwaukee in 1927. It grew into Kohl's Food Stores, a regional supermarket chain that by the 1940s was a fixture of Milwaukee neighborhoods, with the company's first full supermarket format arriving in 1946, according to [Wikipedia's history of Kohl's](https://en.wikipedia.org/wiki/Kohl%27s). Groceries, not clothing, were the family business for its first three and a half decades. The department store that carries the Kohl's name today was, at its start, a side bet by a grocery chain looking for a second act. That bet arrived in September 1962, when Kohl opened his first department store in Brookfield, Wisconsin. The idea was to plant something between the high-end department stores and the discounters, a positioning gap that had not yet been named as a category, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/kohls-corporation-history/). It worked well enough that by 1972 the chain had grown to five department store locations, according to [Encyclopedia.com's account](https://www.encyclopedia.com/books/politics-and-business-magazines/kohls-corporation). ## The tobacco company years In 1972, British American Tobacco's U.S. arm, BATUS Inc., bought a controlling stake in Kohl's, taking full ownership by 1978. It was an odd fit from the start. BATUS also owned Saks Fifth Avenue, and a value-oriented Midwestern chain selling national brands at a discount sat uneasily next to a luxury flagship in the same portfolio. The grocery operations, the original business, were sold off to A&P in 1983, and the food stores that once carried the family name closed for good in 2003. By the mid-1980s BATUS had grown Kohl's to 34 stores but treated it as an outlier asset rather than a growth priority. In 1986, the company's own management bought the 40-store chain back from BATUS in a buyout, and spent the next three years doing something BATUS never had: refining what "the Kohl's concept" actually meant. Under chairman and CEO William Kellogg, who had led the chain since 1979, that meant moderately priced national-brand apparel for middle-income families, more than 80 percent name-brand merchandise, narrow but deep assortments, and a deliberately lean cost structure with centralized buying, per FundingUniverse. ## The bet that mattered more than the merchandise The merchandising formula was smart. The real edge was underneath it: real estate. Kohl's built its stores off-mall, in standalone locations and strip centers rather than as anchor tenants inside enclosed shopping malls. Nearly every department store chain of that era, Sears, JCPenney, Montgomery Ward, was tethering its growth to mall developers instead. Here is the thing worth naming plainly, because it does not show up on Kohl's own About page: that off-mall real estate call, made in the 1970s and 1980s for reasons that were probably just about cheaper land and parking, is what let Kohl's dodge the mall-anchor collapse that gutted so many of its department-store peers three decades later. Chains that leased space inside malls were stuck when mall foot traffic cratered. Kohl's owned or leased its own boxes, controlled its own parking lots, and never had its fate tied to some mall operator's occupancy rate. That structural choice paid off for decades. Kohl's went public on the NYSE in 1992 under ticker KSS, starting from 76 Midwest stores, and used the IPO capital to build distribution infrastructure, adding three automated distribution centers between 1994 and 1997 and a fourth in Missouri by 1999, the same year it acquired 33 former Caldor stores after that chain's liquidation, per Wikipedia and FundingUniverse. Expansion followed the map outward: the New York area in 2000, Dallas-Fort Worth and California in 2003, the Pacific Northwest in 2006, and a Southeast push that added 43 stores between 2005 and 2008. By May 2012, Kohl's had grown large enough to surpass JCPenney as the largest department store chain in the United States by store count. ## Reinvention as a habit Kohl's kept experimenting with the format rather than resting on it. It sold its private-label credit card portfolio to J.P. Morgan Chase for $1.5 billion in 2006, then moved that relationship to Capital One in 2011. In 2016 it launched Kohl's Pay, an early integrated mobile checkout combining card, loyalty rewards, and coupons in a single tap. In 2017 it began accepting Amazon returns in select stores, a partnership that expanded nationwide by 2019 and turned Kohl's locations into a physical front door for a digital-only retailer. Two companies that might otherwise compete for the same shopper instead struck a deal that drove foot traffic into Kohl's stores. Not every bet landed. The Off/Aisle discount concept, tested starting in 2015, was shuttered by 2019. Multiple acquisition approaches in 2022, from Hudson's Bay, Sycamore Partners, and a Simon Property Group and Brookfield partnership, all fell through. Home goods sales slid for twelve consecutive quarters through early 2024 even as the company expanded that assortment by 40 percent. The response was another store-within-a-store bet: Sephora shops inside Kohl's locations starting in 2021, followed by a Babies R Us collaboration across roughly 200 stores in 2024. Michael Bender became permanent CEO in November 2025 after a stretch as interim leader, inheriting a chain of roughly 1,174 stores in every state but Hawaii, still generating close to half of its revenue from private brands like Sonoma Goods for Life, itself a business worth more than $1 billion on its own. The through-line from the Brookfield parking lot in 1962 to the Sephora counters of today is the same one: Kohl's has always treated the store format itself, where it sits, what fills the aisles, who else gets a corner of the floor, as the thing worth redesigning. Retail's history is written in ledgers, loading docks, and the unglamorous data that ties a catalog page to a shelf. This series is part of that record. --- # JSON-LD vs microdata vs on-page text: what AI agents actually read Source: https://www.anglera.com/blog/json-ld-vs-on-page-what-agents-read Published: 2026-06-16 ![JSON-LD vs microdata vs on-page text: what AI agents actually read](/og/hero-json-ld-vs-on-page-what-agents-read.jpg) Product pages get read by three different consumers now: shoppers, traditional search crawlers, and AI agents that summarize or cite your page without ever showing a screenshot to a human. Each of the three markup approaches below — JSON-LD, microdata/RDFa, and plain visible text — gets treated differently by each reader. Here's what actually gets parsed, what gets weighted, and how to keep all three consistent so nothing you mark up gets ignored or, worse, flagged. ## The three formats, briefly **JSON-LD** is a block of JSON dropped into a script tag (`type="application/ld+json"`), usually in the document head or right before the closing body tag. It describes the page's entities (a Product, its Offer, its Review aggregate) independently of the surrounding HTML. ```html ``` **Microdata** (and its cousin RDFa) embeds the same vocabulary as attributes — `itemscope`, `itemtype`, `itemprop` — directly on the visible HTML elements: ```html

12mm Torque Wrench, 1/2-inch Drive

TW-4412-12
$89.99
``` **Visible on-page text** is just the rendered copy a shopper reads: the title, the bullet points, the spec table, the description paragraph. No markup required, but no machine-readable structure either. ## What Google's crawler parses and weights Google explicitly supports all three formats — JSON-LD, microdata, and RDFa are "equally fine for Google, as long as the markup is valid" — but recommends JSON-LD because it's easiest to implement and maintain at scale and least prone to breaking when a template changes ([Google Search Central: Intro to structured data](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)). Structured data feeds Rich Results (star ratings, price, availability badges) and helps Google understand entities on the page, but it is a supplement to the visible text, not a replacement for it — Google still indexes and ranks primarily on rendered content. The rule that matters most operationally: Google's structured-data policy states, "Don't mark up content that is not visible to readers of the page." If your JSON-LD Product entity describes a color, price, or availability state that isn't also present in the rendered HTML, that's a policy violation that can cost you rich-result eligibility or trigger a manual action ([Google Search Central: General Structured Data Guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)). Practically: JSON-LD is a mirror of the visible page, not an appendix to it. ## What AI agents actually read This is where the three formats diverge sharply from the SEO case. AI crawlers and answer engines — OpenAI's GPTBot and OAI-SearchBot, Perplexity's PerplexityBot, and similar bots — are documented by their operators as fetching pages for indexing or training and can be allowed or disallowed independently via `robots.txt` ([OpenAI: Overview of OpenAI Crawlers](https://developers.openai.com/api/docs/bots)). What's consistently reported by the SEO and web-infrastructure community operating against these bots is that they behave like lightweight HTTP fetchers, not full browsers: they request the URL, take whatever HTML comes back on that first response, and move on — they don't wait around to execute your JavaScript bundle, hydrate a single-page app, or run a second rendering pass the way Googlebot's Web Rendering Service does. If your JSON-LD or your product copy is injected client-side after page load, a large share of AI traffic never sees it. That gives JSON-LD two jobs when an AI agent is the reader. First, it has to be present in the initial server response, not injected by client-side JavaScript. Second, because it's a clean, self-contained JSON object, it's the cheapest thing on the page for a model to extract a fact from — no need to walk a DOM tree, strip nav and footer boilerplate, or guess which element holds the price. Microdata and plain visible text both require more parsing work to separate signal (the actual spec) from noise (the surrounding template), which matters when a bot is budget- or time-constrained. Visible text still carries weight of its own kind: it's the fallback and the corroboration. An agent that can't or doesn't parse your JSON-LD will fall back to reading the rendered text, and an agent that does read your JSON-LD will (implicitly or explicitly) sanity-check it against the surrounding copy. A page where the JSON-LD says "in stock" and the button says "sold out" is a page an agent has good reason to distrust. ## Where each format fits - **New builds, headless storefronts, PIM-driven templates:** JSON-LD, generated server-side from the same data source that renders the visible page. This is the only approach that scales cleanly across thousands of SKUs without a developer hand-editing HTML attributes per product. - **Legacy themes already using microdata or RDFa:** valid, still supported, no urgent need to rip out — but don't add new attribute-based markup to new templates, and don't let it drift out of sync with copy changes, since it's harder to audit than a single JSON block. - **Anything rendered only in the browser:** move it server-side (or use static-site generation / SSR) if you want AI agents — or any non-JS-executing crawler — to see it at all. ## How to validate - **View-source vs. rendered DOM:** `curl -s https://example.com/product/sku | grep -A5 'application/ld+json'` shows exactly what a non-JS-executing bot receives. Compare that to what you see in Chrome DevTools' Elements panel (the rendered DOM) — if the JSON-LD only appears in DevTools and not in the curl output, it's client-side injected and invisible to most AI crawlers. - **Google's Rich Results Test** (search.google.com/test/rich-results) fetches and renders the page the way Googlebot does, then reports which rich-result types it detects — useful for catching syntax errors and missing required fields, though it won't tell you what a non-rendering AI bot sees. - **Field-by-field parity check:** for every property in your JSON-LD (price, availability, GTIN, name), confirm the same value is visible somewhere in the rendered page text. This is the single highest-leverage check for both Google's spam policy and AI-agent trust. ## Verified as of July 2026 Google's format support and content-matching policy are drawn from current Google Search Central documentation. AI-crawler behavior (no JavaScript execution, robots.txt–gated access) reflects OpenAI's published crawler overview plus consistent, widely corroborated reporting from the web-infrastructure community; treat specifics as subject to change and re-check each bot's own documentation before relying on them for a launch. None of this works if the underlying data is thin — a clean JSON-LD block around a one-line description doesn't give an AI agent much to cite. Anglera enriches the product attributes, specs, and use-case detail that feed both the visible copy and the JSON-LD on a page, continuously, from whatever PIM or commerce platform you already run — so the page-side work above has something substantive to render in the first place. --- # How Hy-Vee Turned Employee Ownership Into a Growth Engine Source: https://www.anglera.com/blog/hy-vee-retailer-playbook Published: 2026-06-16 Industries: grocery-cpg ![How Hy-Vee Turned Employee Ownership Into a Growth Engine](/og/hero-hy-vee-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Hy-Vee ranks 35th on the National Retail Federation's [Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, compiled annually with Kantar, with $14.19 billion in 2025 U.S. retail sales. It is also, by scale, one of the largest employee-owned companies in the country, a fact baked into a merger agreement from 1938 rather than a modern HR initiative. ## Two Storekeepers, One Brick Building In 1930, Charles Hyde and David Vredenburg opened a general store in Beaconsfield, Iowa, a town small enough that the original brick building would later become a landmark in its own right. Both men already knew the grocery trade. Vredenburg had run stores through General Supply Company, an enterprise tied to the RLDS Church in nearby Lamoni, and Hyde had worked there before striking out on his own with a store in Cameron, Missouri, in 1924. When they combined their separate operations into a partnership called Supply Stores, the Beaconsfield location sold groceries alongside dry goods and clothing, the standard mixed inventory of a Depression-era crossroads store, according to [Funding Universe's company history](https://www.fundinguniverse.com/company-histories/hy-vee-inc-history/). By 1934 the stores had narrowed to groceries only. ## The Deal Hiding Inside the "Employee-Owned" Line Every profile of Hy-Vee repeats that it's employee-owned, usually as a warm aside. The mechanism behind it is more interesting than the slogan lets on. When Hyde & Vredenburg incorporated in 1938 with 15 stores across Iowa and Missouri, sixteen store managers traded ownership of their individual stores for stock in the new corporation, per Funding Universe. That wasn't a benefit layered onto an existing company. It was the acquisition currency. The only way to get independent storekeepers to give up standalone shops was to make them owners of the combined enterprise rather than employees of it. The arrangement was formalized further in 1960, when the company became owned through an Employees' Trust Fund, according to [Wikipedia's history of Hy-Vee](https://en.wikipedia.org/wiki/Hy-Vee), a structure Wikipedia's own [entry on employee ownership](https://en.wikipedia.org/wiki/Employee_stock_ownership_plan) still cites Hy-Vee for today. That distinction shapes how Hy-Vee runs stores now. Store directors carry authority closer to a franchise owner's than a district manager's: assortment calls, local vendor relationships, staffing, and even community sponsorships vary store to store in a way most centrally planned chains engineer out of the system on purpose. The founding insight, dating to a Depression-era merger negotiation rather than a management consultant, was that ownership stakes travel further down an org chart than instructions do. ## The Name Came From a Suggestion Box For more than two decades the chain operated as Hyde & Vredenburg, a name that meant nothing to a shopper driving past. In 1952 the company ran an employee contest to find something shorter, and three staff members proposed mashing the founders' surnames into "Hy-Vee." The first store to carry the new name opened in Fairfield, Iowa, in 1953, and the corporate name followed a decade later, becoming Hy-Vee Food Stores, Inc. in 1963, the same year the chain aired its first television commercial and introduced the line that would outlast every other piece of 1960s advertising: "Where there's a helpful smile in every aisle." ## Building Faster Than the Map Suggests Growth after the name change was steady rather than showy. The chain crossed into Minnesota in 1969 through the acquisition of Swanson Stores, reaching 66 locations and $130 million in sales. It surpassed $500 million in annual sales in 1978 and opened its 100th store, in Keokuk, Iowa, the following year, notable enough at the time that Funding Universe singles out its electronic cash registers as a point of pride. Private-label products arrived in 1956, an in-store bakery opened in Iowa City in 1957, and by 1999 the chain had grown to 208 stores and $3.5 billion in sales, a high-water mark that made it, per Wikipedia, the second-largest employee-owned company in the United States. The expansion kept a distinctly regional shape for decades. Nebraska came in 1977, Illinois in 1979, Kansas in 1988. Only in the 2020s did Hy-Vee push into Indiana, Kentucky, Tennessee, and Alabama, a move the company signaled in December 2021 alongside plans for its first distribution center outside Iowa, in Nashville. ## Not Every Bet Landed on Schedule Hy-Vee's history isn't a straight line up. Shopping carts, now unremarkable, had to be introduced with free candy bars in 1940 because customers didn't trust them at first. The chain sold off its Heartland Pantry convenience stores in 1999, and its electricfood.com gourmet subsidiary never became the growth channel the dot-com era promised for it. More recently, the 24-hour store model that once signaled scale and confidence ended in 2020, with most locations pulling back to close overnight, and a Louisville, Kentucky store announced for a 2023 opening still hadn't been built as of mid-2025. A company built on a century of small-town groceries is still learning how to move at big-market speed. ## The Infrastructure Behind the Smile Hy-Vee's slogan promises a smile in every aisle. Delivering on it across 285-plus stores in a dozen states depends on less charming machinery: distribution centers, private-label supply chains, and the unglamorous discipline of knowing what's actually on every shelf, in every store, at every hour. That's the infrastructure this series keeps circling back to, the part no customer sees and every retailer has to get right. --- # The ROI of product data in Apparel: the numbers that actually move Source: https://www.anglera.com/blog/apparel-roi Published: 2026-06-16 Industries: apparel ![The ROI of product data in Apparel: the numbers that actually move](/og/hero-apparel-roi.jpg) Apparel is the category where product data ROI is easiest to prove and hardest to fake. Fit and sizing drive the majority of both lost sales and returns, which means the fix and the metric live in the same place: the PDP. Here's how to isolate what better product data actually moves, with mechanisms you can defend in a finance meeting instead of numbers pulled from a benchmark deck. ## Why apparel is the sharpest test case Two data points frame the opportunity. Fashion ecommerce converts around 2.9-3.3% on average, with the bottom 20% of sites near 0.2% and the top 10% closer to 4.7%, per [3DLOOK's 2025 conversion rate analysis](https://3dlook.ai/content-hub/average-conversion-rate-for-fashion-ecommerce/). Men's apparel specifically converts near 0.8% against 3.6% for women's — a gap that tracks with how much fit ambiguity a category carries, not just demand. On the other side of the funnel, apparel returns run 20-40%, well above the roughly 20% ecommerce-wide average, and fit and sizing account for the largest single share of those returns — some estimates put it near 70% — with "bracketing" (ordering multiple sizes to keep one) now a mainstream shopper habit, according to [Richpanel's 2026 return rate benchmarks](https://www.richpanel.com/learn/ecommerce-return-rates). Same root cause, two different line items on the P&L: shoppers who can't answer "what size do I order" either bounce before checkout or order-to-return after it. That's the case for treating fit and product-data completeness as one lever with two dials, not two separate projects. ## The metrics that actually move, and how to read them | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether the page answers enough buying questions to close the sale | GA4 or platform analytics, item-level conversion rate, segmented by category and by "complete" vs. "gap" SKUs | | Return rate (by reason code) | Whether the *data* was the problem, not the product | Returns platform reason codes (e.g., "didn't fit," "not as described") as a percent of units sold, by SKU and by attribute completeness | | Incremental organic traffic | Whether search engines can index and rank the page at all | GSC impressions/clicks on category and PDP URLs, before/after re-enrichment, isolated from seasonal/paid shifts | | On-site search zero-results and abandonment | Whether shoppers can even find what you carry | Site search analytics: zero-result rate, click-through rate on results, refinement usage | | AI and marketplace referral traffic | Whether structured data makes the catalog legible off-platform | GA4 channel/referral source segmentation for AI answer engines, plus marketplace (Amazon, Google Shopping) impression and click data from those platforms directly | | AOV and attach rate | Whether complete data (size charts, care, styling) enables cross-sell | Order-level AOV and units-per-order, segmented by category with strong vs. weak attribute coverage | | Support ticket load | Whether missing data is generating cost downstream | Ticket volume per 1,000 orders tagged "sizing," "fit," "material," or "return" | Organic and on-site search sit alongside AI referral as discovery channels — none of them should be treated as the headline. What matters is that a shopper who searches, browses on-site, or lands from a marketplace listing hits a page with enough real information to act on. ## The mechanism, not the magic Better product data doesn't lift conversion because it's "more content." It lifts conversion because it closes specific gaps that cause hesitation or abandonment: - **Complete, standardized size and measurement data** (not just S/M/L, but body measurements, garment measurements, and fit notes) reduces the single biggest source of pre-purchase hesitation. Research on fit tools shows solutions that give shoppers a confident size recommendation have measurably improved conversion for the retailers using them, per 3DLOOK's writeup above. - **Accurate, consistent material, care, and construction attributes** reduce "not as described" returns — a distinct reason code from "didn't fit," and one that's entirely a data-quality problem, not a product problem. - **Full attribute coverage** (fabric, fit type, occasion, care) feeds on-site search facets and filters directly. A shopper who can filter to "relaxed fit, machine washable, under $60" and get real results doesn't hit a zero-results page and bounce. - **Structured, complete PDPs** are also what gets indexed cleanly by search engines and parsed correctly by AI answer engines and marketplace feeds — the same underlying data serves three discovery channels at once, which is why incremental traffic shows up in more than one report when the fix lands. ## Building the before/after finance believes Finance doesn't trust "we improved product data." Finance trusts a controlled comparison. The structure that holds up: 1. **Pick a cohort, not the whole catalog.** Choose 200-500 SKUs with known data gaps (missing size charts, thin descriptions, absent material specs) in one or two categories. 2. **Baseline for 4-6 weeks** before touching anything: PDP conversion rate, return rate by reason code, organic impressions/clicks, site-search performance for those SKUs, and support tickets tagged to them. 3. **Enrich the cohort** — gap-fill and standardize attributes, fix size and fit data, add care and material detail — and leave a matched control cohort untouched. 4. **Re-measure the same window length**, same seasonality if possible, and compare treatment vs. control, not just before-vs-after on the treatment group alone. That control is what makes the case defensible instead of anecdotal. 5. **Translate to dollars last.** Conversion lift x traffic x AOV gives incremental revenue; return-rate reduction x average return cost gives margin recovered; ticket reduction x cost-per-ticket gives support savings avoided. Three separate lines, not one blended "ROI" number that's hard to audit. This is where the theme closes the loop: getting the right buyer to the right product is only half the job in apparel — the other half is giving them enough real, structured data to trust the fit and complete the purchase without a return. Anglera plugs into whatever PIM (or spreadsheet) already holds your catalog, extracts and quality-scores the size, fit, and material data from your own source docs, and gets a defined cohort enrichment-ready in weeks, not a multi-quarter program, so the before/after test above is something you can actually run this quarter. --- # Tractor Supply Co.: How a Farm Chain Bet on Hobbyists Source: https://www.anglera.com/blog/tractor-supply-retailer-playbook Published: 2026-06-15 Industries: building-materials ![Tractor Supply Co.: How a Farm Chain Bet on Hobbyists](/og/hero-tractor-supply-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Tractor Supply Co. is #32 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual ranking compiled with Kantar, with $15.52 billion in 2025 U.S. retail sales. It runs more than 2,400 stores in 49 states and calls itself the largest rural lifestyle retailer in the country. The company got there by surviving three corporate parents who didn't understand what it sold, then finding a customer nobody else was chasing. ## A Breakfast-Table Catalog Charles E. Schmidt founded Tractor Supply Company in Chicago in 1938. He had an economics doctorate from the University of Chicago, earned by age 20, and had spent part of the Depression sweeping floors at a brokerage firm. That year he started a mail-order tractor parts business from his own breakfast room table, printing a catalog called the "Tractor Supply Co. Blue Book." First-year sales hit $50,000, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/tractor-supply-company-history/), enough for Schmidt to open his first physical store in Minot, North Dakota, in 1939 (Tractor Supply's own corporate history page dates it to 1940). Either way, a solo catalog operator became a bricks-and-mortar chain within two years. The business grew through the 1940s into Nebraska, Minnesota, and Iowa, selling replacement parts to farmers who could not afford to idle a broken tractor waiting on a dealer. Schmidt took the company public over the counter in January 1959, by which point it had reached $10 million in sales, per [Wikipedia's account](https://en.wikipedia.org/wiki/Tractor_Supply_Company). He sold his controlling stake to National Industries in 1969 and later moved to Florida, where he became a banker in his sixties. The founder was gone from day-to-day operations less than 30 years after starting the company at his kitchen table. ## Three Owners Who Didn't Get It What followed is the part of the story a company website leaves out and a retail historian lingers on. National Industries owned Tractor Supply until 1978, when it was sold again to Fuqua Industries, a conglomerate. Neither owner treated the farm-store chain as anything more than an asset on a balance sheet, and the business drifted through diversification experiments that pulled it away from its core farm-supply customer and into inventory categories it had no real edge in. By the early 1980s the company was posting losses. The rescue came from inside. In 1982, five Tractor Supply executives, including Joseph H. Scarlett Jr., engineered a management-led leveraged buyout, taking the company private again at $125 million in annual revenue across 135 stores. Thomas J. Hennesy III ran the post-buyout turnaround: paying down the buyout debt, moving headquarters to Nashville, and refocusing the merchandise mix back on the farm-store niche that had built the chain in the first place. The company reincorporated in Delaware that same year and, per Wikipedia, hit break-even for 1982 after the refocus. Scarlett took over as CEO in 1992 and led the company back onto public markets in February 1994, this time on Nasdaq under the ticker TSCO. A company that had been sold three times in 15 years finally found owners who wanted to run it as a farm-supply retailer rather than trade it as a line item. ## Betting on the Hobby Farmer The unique insight in Tractor Supply's story is not the leveraged buyout. It is who the company decided to sell to next, a decision most farm retailers of the era got backwards. By the early 2000s, full-time farmers made up only about 8 percent of Tractor Supply's customer base. Rather than treat that as a problem, the company built its growth strategy around the other 92 percent: people with a few acres outside a growing suburb, raising chickens or horses, mowing pastures on weekends, doing their own fencing because no contractor wanted the job. That was not the commercial farmer grain co-ops were built to serve. It was a lifestyle customer, and Tractor Supply built stores for that person specifically: compact 12,000 to 20,000 square-foot formats staffed with former farmers and welders, expanded pet and equine departments, and a deliberate push to court women shoppers at a time most farm-supply chains treated the category as male by default. That format let Tractor Supply expand into real estate other retailers were leaving behind. Between 1994 and 2000 it pushed south, filling old Wal-Mart boxes at a discount as Wal-Mart itself moved to supercenters. The entry into Florida in 2000, eleven stores opened at once, drew skepticism from investors who thought the pace reckless. It worked. ## The Rival That Didn't Survive The clearest test of the strategy came in 2001, when Quality Stores, a competing farm-and-fleet chain, filed for bankruptcy. Tractor Supply bought 85 of its locations for $35 million and spent another $70 million redesigning them and restocking inventory to its own format. The timing mattered as much as the price: Tractor Supply wasn't just adding square footage, it was proving that a niche retailer with a disciplined format could absorb a bankrupt competitor's real estate faster than the competitor's own creditors could liquidate it. By 2002 the company had crossed $1 billion in annual sales for the first time. The table below traces the arc from founding to national scale: | Year | Event | |---|---| | 1938 | Charles Schmidt starts a mail-order tractor parts catalog in Chicago | | 1939/40 | First retail store opens in Minot, North Dakota | | 1969 | Schmidt sells control to National Industries | | 1982 | Executive-led leveraged buyout; refocus on core farm niche | | 1994 | Public again, this time on Nasdaq (TSCO) | | 2001 | Acquires 85 stores from bankrupt Quality Stores | | 2002 | Crosses $1 billion in annual sales | | 2014 | Reaches Fortune 500 status | Growth since has come from adjacent formats rather than another rescue deal: Petsense by Tractor Supply now runs more than 200 stores, and the company has added an online pet pharmacy and mobile veterinary services to the same rural-lifestyle customer base it identified two decades ago. ## The Takeaway Tractor Supply's history reads like a lesson in patience rewarded twice over: patient enough to survive being owned by people who didn't understand the business, and patient enough to build for a customer, the hobby farmer, that competitors were still trying to out-discount the commercial grower for. The company that eventually thrived was the one willing to shrink its addressable customer on paper and grow it in practice. Every retailer on this list runs on some version of the same unglamorous machinery: a catalog, a store format, a supply chain, and the record of what's actually on the shelf. Tractor Supply's began on a breakfast table in 1938 and it hasn't stopped since. --- # Keeping structured data in sync from Salsify to the page Source: https://www.anglera.com/blog/salsify-structured-data-sync Published: 2026-06-15 Platforms: salsify ![Keeping structured data in sync from Salsify to the page](/og/hero-salsify-structured-data-sync.jpg) Salsify is very good at being the single source of truth for product content — attributes, digital assets, copy, compliance data. But "correct in Salsify" and "correct on the page" are two different claims, and the gap between them is where AI agents (and Googlebot) actually get burned: they read the rendered HTML, not your PIM. This guide covers the mechanics of getting Salsify data onto the page — as visible content and as `Product` JSON-LD — and keeping both in sync as records change. ## Where the sync actually breaks Most teams already have Salsify pushing data somewhere: a syndication channel, a scheduled export, or a direct integration into a commerce platform. The sync problem shows up in three places downstream of that: 1. **Stale builds.** A statically generated or cached PDP doesn't rebuild when the Salsify record changes, so the export happened but the page didn't move. 2. **Partial mapping.** The template only renders a subset of what was exported (e.g., marketing copy but not GTIN, weight, or compliance attributes), so JSON-LD and visible content drift apart even when both are technically "from Salsify." 3. **Client-side-only rendering.** The JSON-LD or attribute table is injected by JavaScript after page load, which most crawlers and many agent fetchers never execute, so what left Salsify never actually reaches the reader. Fixing each of these is a matter of picking the right Salsify mechanism and wiring it to a rebuild or revalidation trigger, not a rip-and-replace of your stack. ## Getting data out of Salsify: export vs. webhook vs. channel Salsify gives you three mechanisms with different latency and shape, and most implementations end up needing two of them. **Export Run API** — a pull-based, on-demand snapshot. You start a run against `POST /api/orgs/:org_id/export_runs` with an `entity_type` (`product`, `digital_asset`, `attribute`, `attribute_value`, or `all`), a `format` (`json`, `jsonl`, `csv`, or `xlsx` — note only JSON/JSONL are valid when exporting `all` entity types together), and optionally a `filter` and a `properties` list to scope which fields come back. This is the right tool for a nightly full-catalog sync or a one-off backfill, and it's where you'd pull GTIN, weight, dimensions, and other structured attributes in bulk for a JSON-LD field-mapping job. **Product Change Webhooks** — event-driven, near-real-time. You configure a monitored product list inside Salsify (by smart list or saved filter) and Salsify POSTs a payload in the product CRUD API JSON format whenever a product on that list is added, changed, or removed, with a `trigger_type` of `add`, `change`, or `remove`. Two behaviors matter for a sync design: deliveries are retried up to 15 times over 48 hours with exponential backoff if your endpoint is down, and there's no cross-product ordering guarantee (same-product updates arrive in order; different products don't). Design your webhook handler to be idempotent and to key off the payload's own timestamp, not arrival order. **Channels** — Salsify's syndication layer for pushing mapped, scheduled feeds (CSV, Excel, XML, or via connector) directly into a destination like Shopify or BigCommerce, mapping Salsify attributes and categories to that platform's product, variant, and metafield fields. If your PDP is served by the commerce platform itself, a channel is often the simplest path — Salsify becomes the writer of the platform's product record, and your template reads from the platform's own data layer. ## Mapping attributes to `Product` JSON-LD Whichever mechanism delivers the data, the mapping step is the same: decide which Salsify attributes become which schema.org `Product` properties, and keep that mapping in one place (a config file or transform function) rather than duplicated across templates. ```json { "@context": "https://schema.org", "@type": "Product", "name": "{{ salsify:product_name }}", "sku": "{{ salsify:sku }}", "gtin": "{{ salsify:gtin }}", "brand": { "@type": "Brand", "name": "{{ salsify:brand }}" }, "description": "{{ salsify:long_description }}", "image": ["{{ digital_asset:primary_image_url }}"], "additionalProperty": [ { "@type": "PropertyValue", "name": "Material", "value": "{{ salsify:material }}" }, { "@type": "PropertyValue", "name": "Weight", "value": "{{ salsify:weight }}" } ], "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "{{ commerce_platform:price }}", "availability": "https://schema.org/InStock" } } ``` Two details worth building into the mapping layer rather than fixing later: - Use schema.org's unified `gtin` property, not the older `gtin8`/`gtin12`/`gtin13`/`gtin14` variants — `gtin` accepts any valid 8-, 12-, 13-, or 14-digit code and avoids mismatched-length errors. - Attribute-level values that don't map to a first-class `Product` field (material, care instructions, certifications) belong in `additionalProperty` as `PropertyValue` pairs — don't drop them just because schema.org doesn't have a named slot. - Price and availability usually live in the commerce platform, not Salsify, so the JSON-LD build step needs both sources. Keep price out of the Salsify-driven part of the template so a stock/price change doesn't require touching product-content code. ## Rendering: server, not just source Google's own structured data guidance is explicit that JSON-LD must describe content that's actually present on the page, and in practice that means server-rendering both the visible attributes and the JSON-LD block rather than injecting them client-side. If your PDP is a JavaScript framework, generate the JSON-LD (and the human-readable spec table) at build time or on the server, not in a `useEffect` after hydration — most agent fetchers and some crawlers don't execute JavaScript, so client-injected markup is invisible to exactly the readers this guide is for. ## Closing the loop: trigger a rebuild, don't just trust the export The step teams skip is wiring the webhook to an actual page update. A Salsify product-change webhook should do one of: - Call your platform's on-demand revalidation (e.g., a Next.js ISR revalidate endpoint, or your CMS's publish webhook) for the specific PDP path affected. - Write to the record your commerce platform reads (if using a Channel into Shopify/BigCommerce, the platform's own save event should trigger cache invalidation). - Queue the changed SKU for the next incremental export/rebuild pass rather than waiting for the nightly full sync. Without one of these, the Export Run API and webhooks tell you data changed — they don't make the page change. ## How to validate - **View-source vs. rendered DOM**: `curl -s https://example.com/products/sku-123 | grep -A5 'application/ld+json'` shows exactly what a non-JS-executing fetcher receives. Compare it against what you see in browser DevTools' rendered DOM — a mismatch means something is client-injected. - **Field-level diff**: pull the same SKU from Salsify (`GET` the product or an export filtered to that ID) and diff its attribute values against the JSON-LD `additionalProperty` array and visible spec table. Automate this as a scheduled check on a sample of SKUs, not just at launch. - **Google's Rich Results Test** (search.google.com/test/rich-results) and the Schema Markup Validator (validator.schema.org) both parse the live URL — use them after any template change to confirm the JSON-LD still parses and matches an eligible type. - **Freshness check**: compare the page's rendered `dateModified` (if you set one) or a last-synced value against Salsify's own last-updated timestamp for that record, to catch silent staleness. **Verified as of July 2026**: Salsify API endpoint paths, webhook retry behavior, and export parameters are per Salsify's public developer documentation as of this writing; confirm current field names and any plan-gated features against your org's Salsify Developer Hub instance, since API and Channel availability can vary by contract. This whole exercise — mapping, rendering, and validating — only pays off if what's sitting in Salsify is actually complete. Anglera plugs into Salsify as an additive layer, continuously enriching attributes, specs, and identifiers so the export or webhook you're syncing to the page has full, agent-ready content behind it, not gaps you're stuck templating around. ## Sources - [Salsify Developer Hub — Start Export Run](https://developers.salsify.com/reference/start-export-run) - [Salsify Developer Hub — Product Change Webhooks](https://developers.salsify.com/docs/webhooks-prod-change) - [Google Search Central — General Structured Data Guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) --- # The product-data KPIs worth tracking — and the vanity metrics to skip Source: https://www.anglera.com/blog/product-data-kpis-that-matter Published: 2026-06-15 ![The product-data KPIs worth tracking — and the vanity metrics to skip](/og/hero-product-data-kpis-that-matter.jpg) Most retail teams can tell you their SKU count and their "percent complete" score in the PIM. Almost none can tell you whether last month's data cleanup moved PDP conversion, cut zero-result searches, or reduced returns. That gap is the difference between a metrics dashboard and a measurement system. Here's what to track, what to ignore, and how to build a scorecard that ties product data directly to revenue. ## Start with the lagging indicators — the ones finance already cares about These are outcomes. They move slowly, they're noisy, and they're influenced by more than data quality — but they're the numbers that justify budget. **PDP conversion rate.** The percentage of product-page visitors who buy. Segment it by category and by data-completeness tier (in your analytics tool, tag PDPs by whether they have full specs, a fit guide, or a size chart). Full ecommerce conversion averages sit around 2.5–3%, but the underlying content quality on the page — specs, sizing, social proof — is one of a handful of factors that predict the bulk of the variance in [PDP conversion](https://www.merchmetric.com/blog/product-page-metrics-that-matter-5-kpis-that-predict-80-of-your-conversions/). If two similar SKUs convert differently, data completeness is usually part of the story. **Return rate, split by reason code.** Not just the topline number — the reason. Retailers that tag returns as "not as described," "wrong size," or "damaged in transit" separately from "changed my mind" get a direct read on data-driven returns. Nearly half of shoppers say they've returned an item because pre-purchase product information turned out to be wrong, and a majority say they've abandoned a cart for the same reason, according to recent consumer research covered by [Home of Direct Commerce](https://homeofdirectcommerce.com/news/returns-are-rising-and-poor-product-information-is-to-blame/). That's a returns problem you can fix at the data layer, not the logistics layer. **AOV and attach rate.** Average order value and the rate at which a core SKU sells alongside an accessory, refill, or compatible part. Weak attribute data (missing "compatible with," missing dimensions, missing bundle-eligible flags) quietly suppresses cross-sell — shoppers can't tell what goes together, so they don't add it. ## Then track the leading indicators — the ones that predict the lagging ones These move faster and give you an early read before revenue numbers catch up. **Attribute completeness, weighted by purchase-decision attributes.** Not "percent of fields filled" — percent of the fields that actually drive a buying decision for that category (size chart for apparel, compatibility for parts, ingredients for consumables). A generic completeness score above 95% sounds great and still misses the one attribute — a fit measurement, a voltage rating — that was actually blocking the sale. **On-site search zero-results rate.** The share of internal searches that return nothing. Industry averages run 10–15%, with well-run catalogs closer to 5%; every point above that is a high-intent shopper hitting a dead end. Search users convert meaningfully higher than browsers — figures from recent industry data put searchers converting at roughly 1.7x to 3x the rate of non-searchers, and Amazon and Walmart both show multi-x conversion lifts when a visitor searches versus browses, per [Hello Retail's 2026 search data](https://helloretail.com/en/blog/2026-02-24-ecommerce-search-statistics/) and [Algolia's ecommerce search benchmarks](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics). Zero results usually trace back to two data problems: missing synonyms/attribute values, or thin catalog coverage for a category customers are actively searching. **Organic clicks to PDPs (not just sessions).** Pull this from Search Console or your SEO platform, segmented by PDP versus category page. Thin, duplicated, or templated PDP copy suppresses indexing and rankings; enrichment that adds genuine differentiated content usually shows up here first, weeks before it shows up in conversion. **AI referral / citation traffic.** A newer, smaller line item — track it in your referral-traffic report alongside organic and marketplace traffic, not as a standalone initiative. It's one more channel that rewards structured, complete, factually accurate product data, but it should sit next to search and marketplace traffic in your funnel view, not above it. ## The table version | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether the page itself closes the sale | GA4/analytics, segmented by completeness tier | | Return rate by reason code | Whether bad data is costing you post-sale | Returns platform, reason-code tagging | | AOV / attach rate | Whether shoppers understand what goes together | Order data, cross-sell attach % | | Weighted attribute completeness | Whether decision-critical fields are filled | PIM export, scored against category rubric | | Zero-results search rate | Whether on-site search is finding real gaps | Site search analytics | | Organic clicks to PDPs | Whether content is indexable and differentiated | Search Console, PDP-level segment | | AI referral traffic | One more discovery channel, tracked not obsessed over | Referral-source report | ## The vanity metrics worth skipping **Raw SKU count.** Catalog size isn't a quality signal. A 200,000-SKU catalog with thin data converts worse than a tight 20,000-SKU catalog with complete data. **"Percent complete" as a single blended score.** A field-fill percentage that treats a missing marketing bullet the same as a missing size chart hides the attributes that actually matter. **Support ticket volume alone.** Track it, but pair it with ticket *category*. "Where's my order" tickets are logistics. "Does this fit my model" tickets are a data gap — and a leading indicator of both lost sales and future returns. **Time spent in the PIM.** Enrichment hours logged is an input, not an outcome. Manual enrichment typically runs 30–45 minutes per SKU — a number worth knowing for cost math, but it tells you nothing about whether the resulting data moved a KPI. ## A starter scorecard Pick one metric from each row above, baseline it this month, and revisit monthly: weighted attribute completeness, zero-results rate, PDP conversion by completeness tier, and return rate by reason code. Four numbers, reviewed together, tell you more than a dashboard of forty. The common thread across every metric on this list is that they're all downstream of the same input: product data that's complete, accurate, and structured the way buyers and search systems actually consume it. Your PIM stores that data — Anglera continuously scores it, gap-fills it from real supplier and source documents, and keeps it current, so the KPIs above have something worth measuring in the first place. --- # Northern Tool + Equipment: The Retailer That Builds Its Own Brands Source: https://www.anglera.com/blog/northern-tool-distributor-playbook Published: 2026-06-15 Industries: building-materials ![Northern Tool + Equipment: The Retailer That Builds Its Own Brands](/og/hero-northern-tool-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Northern Tool + Equipment lands at BM #18 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the industry's annual scorecard of North America's largest distributors, with estimated FY2025 revenue MDM puts at $1.5 billion. That placement is a little strange on its face. Most names on that list are pure wholesale operations selling to contractors and industrial accounts. Northern Tool is a retail chain with parking lots and end caps, the kind of place a homeowner walks into for a pressure washer on a Saturday. The reason it shows up anyway is the real story here. ## A log-splitter business born in a recession Don Kotula started what became Northern Tool in 1981, working out of a garage in the Minneapolis suburbs after leaving a heavy-equipment sales job at Ziegler during the early-80s recession. The original venture, Northern Hydraulics, moved log splitters and hydraulic components by mail-order catalog, a channel that was the internet of its day for reaching rural buyers who had no big-box option nearby. Kotula grew it from a one-man operation into a national retailer before he passed away on January 20, 2024, at 78, according to [Hometown Focus](https://www.hometownfocus.us/articles/northern-tool-announces-passing-of-founder/) and [the Minneapolis/St. Paul Business Journal](https://www.bizjournals.com/twincities/news/2024/01/23/northern-tool-don-kotula-dies.html). Northern Tool + Equipment, headquartered in Burnsville, Minnesota, remained a family-controlled private company through his death, a rarity in a distribution sector where scale usually arrives via private equity or a public listing. ## The moat: it manufactures what it sells The mail-order catalog gave Northern Tool its customer list. What turned it into a distributor rather than just a reseller was the decision to build its own product lines instead of only carrying Milwaukee, Honda, and DeWalt. Brands like NorthStar and Powerhorse, pressure washers and generators engineered and partly built at the company's own facility in Faribault, Minnesota, sit alongside Klutch, Strongway, Ultra-Tow, Roughneck, Gravel Gear, Bannon, and Ironton across categories from shop equipment to trailers to work gear. That is nine proprietary brands running through a company with roughly 130 to 140 stores and three distribution centers. The commercial logic is straightforward. A retailer that only resells name brands competes on price against every other reseller of the same SKU, including Amazon. A retailer that also designs, specs, and in some cases manufactures its own equivalents controls its own margin, can price below the branded competitor, and captures wholesale-style revenue when trade professionals buy those house brands in volume rather than one unit at a time. That is the mechanism by which a company with a consumer storefront ends up ranked next to pure B2B wholesalers on MDM's list: enough of its revenue moves in distributor-style bulk, through its own labels, that it functions as one even while looking like a retailer from the parking lot. ## Two customers, one footprint Northern Tool has never fully picked a side between DIY consumers and trade professionals, and that dual focus shows up in how the stores and catalog are built. The same location that sells a homeowner a log splitter also stocks the welders, air compressors, and trailers a contractor needs to keep a crew running. Serving both means carrying more SKUs and more price points than a pure trade distributor would bother with, but it also means the company isn't dependent on either segment's cycle. A slowdown in residential DIY spending doesn't hit the same way it would for a big-box home center, because the trade side keeps buying through it. ## 2024 to 2026: the first chapter without a Kotula at the wheel | Year | Event | |---|---| | 1981 | Don Kotula founds Northern Hydraulics in a Minneapolis-area garage | | ~1990s | Rebrands to Northern Tool + Equipment, expands from catalog into retail stores | | 2020 | Suresh Krishna named President and CEO | | Jan 2024 | Founder Don Kotula dies at 78 | | May 2025 | Krishna departs to become CEO of Protolabs, per [Businesswire](https://www.businesswire.com/news/home/20250521200213/en/Protolabs-Appoints-Suresh-Krishna-as-President-and-CEO) and [the Star Tribune](https://www.startribune.com/protolabs-proto-labs-new-ceo-suresh-krishna-northern-tool-replace-rob-bodor/601359455) | That is a genuine strategic tension worth naming rather than glossing over. Northern Tool built a 44-year operating model under one founder's ownership and instincts, and within roughly sixteen months lost both the founder and the CEO who had been running day-to-day operations since 2020. Family-owned distributors that hit this juncture typically go one of two ways: a sale to a strategic buyer or private equity roll-up, or a quiet continuation under existing family and management structure with a new hire at the top. Nothing in the public record suggests Northern Tool is for sale, and the company's operating model, private-label manufacturing paired with a dual retail-and-trade customer base, does not require founder-level charisma to run. But it does require discipline in maintaining the house brands' quality and cost position, since that is the entire basis for showing up on a distributor ranking while looking like a retail chain. The building-materials vertical MDM tracks is full of companies whose edge is branch density or freight capacity. Northern Tool's edge is a set of brand names most of its customers have never heard of anywhere else, which is exactly the point. This is the fourth entry in Anglera's Distributor Playbooks series, profiles of the operating models behind MDM's largest North American distributors. --- # How Nordstrom Turned a Seattle Shoe Store Into a Retail Icon Source: https://www.anglera.com/blog/nordstrom-retailer-playbook Published: 2026-06-15 Industries: apparel ![How Nordstrom Turned a Seattle Shoe Store Into a Retail Icon](/og/hero-nordstrom-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Nordstrom lands at #33 on the [NRF Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $14.90 billion in 2025 U.S. retail sales, compiled annually by the National Retail Federation with Kantar. The company has been on that kind of list, in one form or another, for over a century, because it started as something much smaller: a single shoe store on a Seattle street corner, run by two men who had never sold apparel in their lives. ## A Gold Claim Bought a Shoe Store John W. Nordstrom left Sweden at 16 with almost nothing, arriving in the U.S. in 1887 with about $5 in his pocket. He worked logging camps and mines across the Pacific Northwest before joining the Klondike gold rush in 1897. He struck a claim, and rather than work it himself, sold his stake for $13,000, according to [Wikipedia's account of the company's founding](https://en.wikipedia.org/wiki/Nordstrom). He brought that money back to Seattle and, in 1901, went into business with a local shoemaker named Carl Wallin. Wallin & Nordstrom opened as a shoe store on Pike Street. Its first day of business rang up $12.50 in sales, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/nordstrom-inc-history/). Within four years, annual sales had climbed to $80,000. The founders retired in the late 1920s and handed the business to John's sons, Everett and Elmer, who spent the next three decades doing one thing extremely well: selling shoes. By 1950, Nordstrom was the largest independent shoe chain in the country. By 1959, its Seattle flagship carried 100,000 pairs in stock, the deepest shoe inventory anywhere in the U.S., per FundingUniverse. Shoes stayed central to the identity of the company for decades after it stopped being a shoe store; even into the 1980s and 1990s, footwear still accounted for roughly a fifth of total sales. ## The Pivot Nobody Saw Coming The single decision that turned a regional shoe chain into a department store came in 1963, when the family acquired Best's Apparel, a Seattle women's clothing retailer. It was a strange move for a company whose entire identity was built around fitting feet, and it easily could have diluted a brand built on doing one narrow thing well. Instead, apparel and shoes turned out to share the same underlying skill: a salesperson kneeling down, taking a measurement, and building a relationship one customer at a time. By 1971, the year Nordstrom went public on NASDAQ, it operated as a full-line department store. That transformation exposed something worth naming plainly, because it rarely shows up in retrospectives about Nordstrom's famous service culture: the company's legendary customer devotion was not primarily a training program or a slogan. It was a compensation structure. Nordstrom ran on commission sales from its earliest shoe-store days, and commission salespeople have every financial incentive to remember what a customer bought last time, follow up personally, and treat that customer as a long-term account rather than a transaction. Long before retailers had CRM software or loyalty databases, Nordstrom sales staff kept their own handwritten client books, called personal customers by name, and chased repeat business the way an independent insurance agent would. The famous stories, paying a customer's parking ticket, accepting a tire return at a store that never sold tires, were downstream of that incentive design, not the cause of it. ## Growing Up, Then Growing Pains Nordstrom expanded deliberately through the 1970s, 80s, and 90s: Alaska in 1975, Southern California in 1978, the Northeast by 1988, the Midwest by 1991, the Southwest by 1996, the Southeast by 1998. It launched Nordstrom Rack, its off-price division, out of a bargain basement in the downtown Seattle flagship in 1973, years before off-price became a retail category unto itself. The stock moved to the New York Stock Exchange in 1999 under the ticker JWN. The commission model that built the company's reputation also produced its hardest chapter. In 1990, Washington State's Department of Labor and Industries found Nordstrom had systematically failed to pay employees for off-the-clock work, including tasks the commission structure implicitly demanded, like writing thank-you notes and attending sales meetings, according to FundingUniverse. The company set aside a $15 million reserve and ultimately settled class-action suits for a combined $50 million. A decade later came a strategic misstep of a different kind. CEO John Whitacre pushed a youth-oriented merchandise overhaul under the tagline "Reinvent Yourself," alienating the core customers who had built the business. Whitacre was out by August 2000, and Bruce Nordstrom, a family member, stepped back in as chairman to steady the company. It was the clearest instance of a pattern that recurs across the company's history: professional management drifts, family stewardship corrects course. ## Full Circle That family control is now more literal than it has been in over half a century. In December 2024, the Nordstrom family announced a $6.25 billion deal to take the company private, retaining 50.1 percent ownership themselves, with the Mexican retailer El Puerto de Liverpool acquiring the remaining 49.9 percent. The stock came off the NYSE on May 20, 2025, ending a 54-year run as a public company that began the same year the family finished converting a shoe chain into a department store. | Year | Pivotal bet | |---|---| | 1901 | Wallin & Nordstrom opens as a Seattle shoe store | | 1963 | Best's Apparel acquisition begins the shift to full-line retail | | 1971 | IPO on NASDAQ as a department store chain | | 1973 | Nordstrom Rack launches as an off-price outlet | | 2024 | Family and Liverpool take the company private again | Not every retailer that leaves the public markets does so on its own terms. Nordstrom's second act as a private company started from a position most retailers would envy: a fourth generation of the founding family still running the stores, and a service model built into how salespeople get paid rather than what they're told to say. Sources: [Wikipedia, "Nordstrom"](https://en.wikipedia.org/wiki/Nordstrom); [FundingUniverse, "Nordstrom, Inc. History"](https://www.fundinguniverse.com/company-histories/nordstrom-inc-history/); [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers). This is one entry in an ongoing series on the companies behind American retail, the catalogs, stockrooms, and sales floors that most shopping never sees. --- # Lansing Building Products' Third-Generation Bet That Doubled It Source: https://www.anglera.com/blog/lansing-building-products-distributor-playbook Published: 2026-06-15 Industries: building-materials ![Lansing Building Products' Third-Generation Bet That Doubled It](/og/hero-lansing-building-products-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Lansing Building Products lands at #17 on the building-materials side of [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), with $1.5 billion in estimated FY2025 revenue per MDM's numbers. That figure is not a fluke of one good year. It is the second time in less than a decade that Lansing has hit that exact milestone, once organically and once by merger, and the story of how it got there is really a story about what kind of capital a family business is willing to take. ## Three generations, one company Ted Lansing came to Richmond, Virginia in 1947 as a CertainTeed roofing sales rep. In 1955 he struck out on his own, forming [Ted Lansing Supply Company](https://www.lansingbp.com/careers/why-lansing), which incorporated in 1957. When Ted died in 1980, his son Chris took over as president. In 2016, Chris's son Hunter became president, the third generation to run the place. That is the entire arc of most family-distribution profiles: founder, steady-hand successor, next-gen modernizer. Lansing's version has a twist in the middle that changes what the story is actually about. ## The twist: an insurance company, not a private equity fund By 2017, Lansing had built itself into a $500 million exterior-products distributor. Then, on March 16, 2020, [Markel Corporation announced it had agreed to acquire a majority interest in Lansing Building Products](https://ir.mklgroup.com/investor-relations/news/news-details/2020/Markel-announces-investment-in-combined-Lansing-and-Harvey-distribution-businesses-07-29-2021/default.aspx) — and in the same announcement, Lansing agreed to acquire the distribution business of Harvey Building Products, a Waltham, Massachusetts distributor founded in 1961 by the Bigony and Morrison families. The combined company would jump from 77 branches to 113, and from 25 states to 35. The mechanism matters more than the multiple. Markel is not a leveraged-buyout shop working a fund with a five-to-seven-year clock. It is a specialty insurer whose Markel Ventures arm invests permanent, non-fund capital in profitable private businesses and leaves operating control with existing management, the same "buy and hold forever" logic Berkshire Hathaway made famous in insurance-funded acquisitions. That structure let a founding family sell a majority stake without selling the company out from under itself. Hunter Lansing kept the title, the culture language ("Respect. Service. Excellence." still leads every page of the company's careers site), and the freedom to run a decades-long plan instead of a hold-period plan. This is the detail worth naming plainly: Lansing is a family-operated business inside an insurer's permanent-capital portfolio, at a moment when the rest of exterior-products distribution is consolidating under exit-driven private equity and public acquirers. Home Depot closed its [$18.25 billion acquisition of SRS Distribution](https://ir.homedepot.com/news-releases/2024/06-18-2024-153031934) in June 2024. QXO closed an [$11 billion acquisition of Beacon Roofing Supply](https://investors.qxo.com/news/news-details/2025/QXO-Completes-Acquisition-of-Beacon-Roofing-Supply/default.aspx) in April 2025 via tender offer. Both moves reshaped the roofing and siding aisle around acquirers answering to public shareholders on a quarterly clock. Lansing chose a version of scale that keeps a Lansing running Lansing. ## What the Harvey merger actually bought Doubling branch count in one transaction is not just arithmetic, and the deal's structure is its own tell. Lansing took only Harvey's distribution operations across the Northeast. Harvey's manufacturing division, which makes windows and doors under the Harvey, Thermo-Tech, and SoftLite names, stayed behind with prior owner Dunes Point Capital, which [went on to sell that manufacturing business to Cornerstone Building Brands in April 2024](https://www.prnewswire.com/news-releases/dunes-point-capital-lp-has-sold-the-manufacturing-business-of-harvey-building-products-to-cornerstone-building-brands-302123852.html) — four years after the distribution side had already gone to Lansing. Lansing bought density, not a factory. That is a deliberate stance: stay a pure-play distributor and let brand partners like James Hardie, Andersen, and Simonton keep owning production. Vertical integration would blur the neutrality that makes a multi-brand distributor useful to contractors in the first place. The growth kept compounding after the deal closed. Lansing crossed $1.5 billion in sales again in 2022, this time as the combined company, and has since pushed past 112 branches across more than 35 states with roughly 1,900 associates. The MDM #17 ranking and the $1.5 billion FY2025 figure are the same number the company hit three years earlier, which says less about stalling and more about a company that front-loaded its scale move and has spent the years since digesting it rather than chasing the next headline deal. ## The trade-off nobody prints on the press release Patient, control-preserving capital is a real advantage until it isn't. A permanent-capital owner won't force a sale at the top of a cycle, but it also won't hand Lansing the kind of acquisition war chest that a public roll-up like QXO is deploying to buy market share across an entire vertical in a single signed agreement. Lansing's next move, if there is one, will look like Harvey again: a single, carefully chosen, geography-filling merger rather than a buying spree. In a channel where scale increasingly buys negotiating leverage with manufacturers and freight networks, that discipline is either the smartest form of restraint in the sector or a pace that eventually falls behind acquirers with no family name left to protect. ## Where the story sits Lansing's average branch manager has been there 11 years, the kind of number that shows up when incentives are built for decades rather than for a fund's exit window. Three generations of the same surname running a $1.5 billion distributor, majority-owned by an insurer that made its money the same patient way, is not the typical building-materials growth story in 2026. It might be the more durable one. Distribution rewards the boring things done consistently: a catalog that's accurate, a branch network that's dense enough to matter, a data layer nobody outside the industry ever sees. Lansing's ownership structure is unusual; the daily discipline behind its branch count is not, and that's the part every distributor on this list has to get right regardless of who signs their checks. --- # How Gulfeagle Supply Stayed Independent While Rivals Sold Out Source: https://www.anglera.com/blog/gulfeagle-supply-distributor-playbook Published: 2026-06-15 Industries: building-materials ![How Gulfeagle Supply Stayed Independent While Rivals Sold Out](/og/hero-gulfeagle-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Gulfeagle Supply lands at #15 on the building-materials side of [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), up from #19 in the prior report, with an estimated $2.2 billion in FY2025 revenue. That number matters less than the timing behind it. Gulfeagle spent 2024 doing the same thing its two biggest rivals in roofing distribution did that year: getting bigger through acquisition. The difference is that Gulfeagle stayed family-owned while doing it, and its rivals didn't stay independent at all. ## The single branch that became 140 Jim Resch started the company in 1973 as Gulfside Supply, a single roofing-supply branch in Tampa. Five decades later it operates as Gulfeagle Supply from more than 135 locations across the country, still headquartered in Tampa with a satellite office in Phoenix, and still run by the Resch family, with Brad Resch now serving as president, according to the [company's own history page](https://www.gulfeaglesupply.com/company/). The growth path is a familiar one for roofing distribution: acquire adjacent regional players, layer on new branches, add job-site delivery capacity. Gulfeagle's own list of deals includes American Wholesale, JEH/Eagle Supply, Kimal Lumber, and R&S Supply, each one folded into a national full-line distributor of residential and commercial roofing and building products. ## The Elite deal, and the year everyone else got bought The pivotal recent move came in 2024. Gulfeagle announced it would acquire Elite Roofing Supply that April and closed the deal that June, pushing the combined company past 140 branches and, per [Roofing Contractor's coverage of the announcement](https://www.roofingcontractor.com/articles/99449-gulfeagle-supply-to-acquire-elite-roofing-supply), into position as the fourth-largest roofing distributor in the United States. President Brad Resch called it a fit for "our long-term growth strategy," and Elite's Sarah Weiss stayed on running the legacy Elite team, reporting to Resch, according to [Gulfeagle's press release announcing the closed deal](https://www.gulfeaglesupply.com/gulfeagle-supply-acquires-elite-roofing-supply-becoming-nations-largest-family-owned-and-operated-independent-distributor-2/). That same June, The Home Depot completed its own acquisition of SRS Distribution, a roofing, landscaping, and pool-supply distributor, for roughly $18.25 billion, an event MDM covered as [Home Depot's $18 billion purchase of SRS](https://www.mdm.com/news/top-distributor-sectors/building-materials-construction/home-depot-completes-18-billion-purchase-of-srs-distribution/). Ten months later, in April 2025, the newly formed roll-up QXO closed an $11 billion deal for Beacon Roofing Supply, a nearly 600-branch distributor, a transaction MDM described in [its coverage of the completed QXO-Beacon deal](https://www.mdm.com/news/top-distributor-sectors/building-materials-construction/done-deal-qxo-completes-11b-purchase-of-beacon/). Within roughly twelve months, two of the largest names in roofing distribution stopped being independent companies. Gulfeagle used the identical playbook, buying a well-run regional competitor to add scale and branch density, and came out the other side owned by the same family that started it. ## The unglamorous version of a moat That is the insight worth naming: Gulfeagle isn't winning by avoiding consolidation. It is winning by being the consolidator that doesn't cash out. Every deal on its list reads like a smaller, quieter version of what Home Depot and QXO just did at ten-figure scale, except the acquirer's ownership structure never changes. For a contractor customer, that has a practical effect. Pricing, branch relationships, and rep continuity don't reset on a new corporate owner's timeline. For a founder at a regional roofing supplier weighing a sale, Gulfeagle can credibly pitch something SRS and Beacon no longer can: join a company that isn't going to get flipped to a public strategic buyer next year, because there's no outside capital structure pushing toward an exit. That pitch only works as long as Gulfeagle keeps growing without the balance sheet stress that usually forces family-owned distributors to sell. Roofing distribution runs on thin margins and heavy working capital tied up in inventory and job-site logistics; scaling to 140-plus branches through cash and debt, not PE money, is a real constraint that Home Depot and QXO don't have to manage. Gulfeagle's answer, so far, has been to keep the executive bench professionalized without diluting family control: Brad Powers, a 27-year distribution veteran who joined Gulfeagle in 2020 and ran the Southeast region, was named the company's first Chief Revenue and Operations Officer in October 2025, per [the announcement covered by the Arizona Construction Contractors newsletter](https://www.arizcc.com/post/gulfeagle-supply-appoints-brad-powers-as-chief-revenue-and-operations-officer). That is a company hiring operating discipline from outside the family while keeping the Resch name on the door. ## What the next roll-up wave tests Roofing distribution now has three tiers: a public-market consolidator in QXO explicitly built to keep buying, a retail giant in Home Depot using SRS as its pro-channel wedge, and a shrinking pool of large independents where Gulfeagle is now one of the last standing at real scale. The next few regional sellers will decide whether "family-owned and stays that way" is worth a lower headline price than a strategic buyer might offer. Gulfeagle's bet is that for both customers and sellers, continuity is the premium feature, not the discount. Distribution's biggest advantages rarely show up on the P&L. Gulfeagle's is a name on a stock certificate that hasn't changed in fifty years, in a category where two rivals just proved how easily that changes for everyone else. This is the second installment of Distributor Playbooks, a series on the operating models behind the companies that move the physical world's inventory. --- # Syndicating grocery & cpg data to every channel without the re-keying Source: https://www.anglera.com/blog/grocery-cpg-syndication Published: 2026-06-15 Industries: grocery-cpg ![Syndicating grocery & cpg data to every channel without the re-keying](/og/hero-grocery-cpg-syndication.jpg) A box of cereal that looks complete on the shelf can still vanish online. Not because a buyer rejected it, but because a marketplace's data engine flagged a missing GTIN, a malformed nutrition panel, or an allergen field that didn't match its template, and quietly stopped showing the listing. Grocery and CPG brands now sell through Amazon, Walmart, Instacart, Target Plus, and a lengthening list of retail media and AI shopping surfaces, and every one of them enforces its own content and identifier bar, none of which map cleanly onto each other or onto the feed you already have. ## The failure mode is suppression, not rejection Marketplaces rarely tell you a listing is broken. Amazon in particular adds required attributes to categories over time without notifying sellers, so a cereal SKU that was fully compliant last quarter can silently drop out of search results this quarter because a field that used to be optional became mandatory. One documented case: an ASIN doing roughly $3,200 a day was suppressed for 11 days over a single missing attribute, a loss of more than $35,000 before anyone noticed ([Emplicit](https://emplicit.co/fixing-amazon-listing-suppression-issues-a-step-by-step-guide/)). Missing main images and incomplete details are the most common triggers, and the fix is rarely visible in seller-facing dashboards until sales already stopped. For grocery and CPG specifically, the stakes are higher because the required field set is longer than for general merchandise: nutrition facts, ingredient statements, allergen declarations, net weight, and Price Per Unit all have to be present and formatted to spec before a listing is even eligible to rank. ## The bar every channel enforces Strip away the branding differences and most grocery marketplaces converge on the same three layers: | Layer | What it means | Where it bites | |---|---|---| | Identifier | A valid GTIN/UPC from GS1 or an authorized source, matched consistently across every channel | Amazon blocks submissions with unauthorized or reused GTINs; retailers reject new-item setup without one | | Attribute | Nutrition facts, allergens, ingredients, net weight, dietary claims (organic, kosher, gluten-free) in the channel's exact schema | Amazon's consumables template does not accept packaging text as-is; claims must be substantiated and visible ([Inriver](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)) | | Content | Title, bullet points, 6+ images on pure white background, A+ or enhanced content | Missing images or thin bullets suppress ranking even when the item is technically "live" | Amazon's own guidance treats these as gating, not cosmetic: A+ Content, once enrolled in Brand Registry, is credited with lifting sales 8-20% depending on complexity, which is really a statement about how much conversion a bare-minimum listing is leaving on the table. ## A box of cereal, before and after Here's what a mid-size cereal brand's raw internal feed typically looks like next to what Amazon's Grocery & Gourmet Foods template actually requires: | Attribute | Raw feed | Channel-ready | |---|---|---| | Title | `Toasted Oats Cereal 18oz` | `Brand Toasted Whole Grain Oat Cereal, Family Size, 18 oz Box, Low Sugar` | | GTIN | Internal SKU only | Valid 12-digit UPC from GS1, matched to case pack GTIN | | Net weight | `18 oz` in free text | Structured `net_weight: 18 OZ` field, PPU calculated | | Ingredients | Pulled from label PDF, inconsistent line breaks | Formatted ingredient string matching Amazon's consumables schema | | Allergens | Not listed separately | Explicit allergen field: "Contains: Wheat. May contain: Tree nuts, Peanuts." | | Claims | "Heart Healthy" on box art only | Claim tied to a visible, substantiated attribute (e.g., whole grain content) | | Images | One product shot, off-white background | 6+ images, pure white main image, lifestyle and nutrition-panel shots | Nothing here required new data collection from a lab. It's the same product, described to the standard each channel already published. ## Syndication is a network problem, not a channel problem The GDSN (Global Data Synchronization Network) adds a layer most CPG teams underestimate: Walmart, Kroger, Albertsons, Target, and Wegmans require new-item data to arrive pre-synced through a certified GDSN data pool, with 1WorldSync and Syndigo the two largest pools in North America ([Opener](https://blog.getopener.ai/1worldsync-vs-syndigo-data-syndication)). That means a cereal brand isn't just fixing an Amazon listing and a Walmart listing separately; it's maintaining one validated source record that has to satisfy GDSN's structured attribute rules before it ever reaches a retailer's PIM, on top of whatever bespoke fields Amazon or Instacart layer on afterward. The identifier layer is also about to get denser. GS1's Sunrise 2027 initiative is moving retail point-of-sale toward 2D barcodes that can carry batch/lot numbers, production and expiration dates, and richer product data than a 12-digit UPC ever could — and GS1's own research found 79% of consumers are more likely to buy when a scannable code provides additional information, with 62% willing to pay more for it ([GS1 US](https://www.gs1us.org/industries-and-insights/by-topic/sunrise-2027)). Grocery data completeness is not a one-time compliance project; the bar keeps moving. ## The AI shopping test Ask an AI shopping assistant to "recommend a low-sugar oat cereal under $5" and watch what happens to a listing with a thin feed: no structured sugar content, no price-per-unit, no allergen field, and it simply doesn't surface as a candidate, regardless of how good the product actually is. AI shopping agents don't infer missing attributes from a product photo. They read structured data, and incomplete structured data reads as "does not qualify." Anglera continuously scores and gap-fills product data against the specific attribute, content, and identifier requirements of each channel, so a cereal SKU reaches Amazon, Walmart, and Instacart channel-ready without a team re-keying the same nutrition panel three different ways. It plugs into the PIM you already run, additive rather than a replacement, and keeps every listing in sync as the bar moves. --- # Demand forecasting in Grocery & CPG: the attribute layer your models are missing Source: https://www.anglera.com/blog/grocery-cpg-demand-forecasting Published: 2026-06-15 Industries: grocery-cpg ![Demand forecasting in Grocery & CPG: the attribute layer your models are missing](/og/hero-grocery-cpg-demand-forecasting.jpg) A new snack SKU launches with zero sales history. The planning system needs a demand curve for it by next Monday's replenishment run. Where does that curve come from? Not from the SKU itself, it has no past. It comes from whatever the system can infer about products like it, and that inference runs entirely on attributes: category, pack size, flavor family, shelf life, private label versus national brand. If those fields are thin, wrong, or buried in a free-text description, the model borrows from the wrong analogs, and the first eight to twelve weeks of forecast, the exact window when a new item either earns permanent shelf space or gets delisted, are wrong from day one. This is the part of demand forecasting that planning teams talk about least and fight with most. Everyone budgets for better statistical models. Almost nobody budgets for the fact that the attributes those models read are often the last thing anyone cleaned up. ## A forecast is an aggregation, not a single number Grocery and CPG demand plans are built from rollups: category to subcategory to segment to item, then re-sliced by pack type, channel, and region. Every one of those rollups depends on an attribute being populated the same way across every SKU in the group. If "pack size" is stored as `12oz` on one item, `12 OZ` on another, and `340g` on a third because a supplier fed metric units, the aggregation either silently splits into three buckets or a human has to reconcile it before the forecast run. Neither outcome is what the planner wanted, and both erode the accuracy of the number leadership sees. The [GS1 US guidance on product data quality](https://www.help.gs1us.org/product-data-quality) exists precisely because this problem is structural to the industry: retailers and manufacturers exchange product data across systems that were never designed to agree on how to represent the same physical fact. Net content, unit of measure, and packaging hierarchy (each, inner pack, case, pallet) all need to be expressed consistently for a forecast to roll up cleanly from case-level shipment data to shelf-level consumption. When those fields drift, the forecast doesn't fail loudly. It just gets quietly less accurate at every level above the SKU. ## Where new items actually get their forecast from New product introductions are the hardest forecasting problem in the category, full stop. There's no sales history to anchor against, so the system has to borrow a demand curve from something else, usually a set of attribute-similar items with an established sales pattern. This is often called analog forecasting or cold-start forecasting, and the quality of the analog match is entirely a function of attribute completeness. Consider a plant-based yogurt line extension. A forecasting engine trying to find its analogs needs to know, at minimum: dairy-alternative category, oat versus almond versus coconut base, cup size, flavored versus plain, and whether it's positioned as private label or national brand. If the base ingredient sits inside a free-text product description instead of a structured field ("Made with real oats and probiotic cultures!"), the model can't filter on it, and it defaults to a broader, noisier peer group, maybe every yogurt in the case, not just the oat-milk ones. The resulting forecast is a blend of curves that don't actually resemble the new item, and the retailer either over-orders and eats markdowns or under-orders and stocks out during the exact launch window that determines whether the item survives its first reset. ![Diagram: a new SKU with no sales history borrowing a demand curve from attribute-similar historical SKUs](/diagrams/coldstart-similarity.svg) ## Three attributes that quietly break grocery forecasts **Shelf life and perishability class.** A fresh, short-dated item and a shelf-stable version of a similar product need completely different forecast logic, tighter review cycles, smaller order quantities, markdown timing baked in near the expiration window. When shelf-life data is missing or approximate, planning systems apply generic reorder logic to perishables, which is a direct driver of the waste and forced-markdown problem grocery already struggles with. Recent research on [discounted sales of expiring perishables](https://arxiv.org/pdf/2602.04464) frames this as a core forecasting challenge specific to grocery retail practice, not a generic retail problem, because the cost of a bad forecast compounds daily as product ages. **Pack size and unit of measure, normalized.** As above: if the same physical count isn't expressed the same way across every SKU in a category, rollups fragment and analogs get missed. This sounds like a minor formatting issue. At scale, across tens of thousands of SKUs from hundreds of suppliers, it's one of the largest sources of silent forecast error, because nobody notices a rollup that's slightly wrong; they just see a number that's directionally plausible and move on. **Private label versus national brand equivalency.** Store brand and branded versions of essentially the same product (frozen vegetable blend, paper towel count, canned tomato variety) often need to be forecast as related but distinct demand streams, since price elasticity and promotional response differ even when the underlying product attributes are nearly identical. If that brand-tier flag isn't a clean, consistent field, forecasting tools either merge streams that should stay separate or split streams that should inform each other. ## The accuracy math planners already live with None of this is theoretical for the teams running these systems. Grocery and CPG planners typically target forecast error (MAPE) in the low double digits for high-velocity items, and new items miss that bar by a wide margin precisely because of the cold-start problem above. Vendors across the [demand forecasting landscape](https://www.relexsolutions.com/resources/demand-forecasting/), from RELEX to Blue Yonder to o9 to newer AI-forecasting entrants, are all converging on the same conclusion: better models help less than better inputs. A more sophisticated algorithm run against inconsistent pack sizes and free-text ingredient descriptions still produces a forecast built on a fragmented peer group. Garbage attributes in, confidently-wrong rollup out. | Attribute state | What the forecast engine does | Practical effect | |---|---|---| | Structured, consistent (oat-milk, 32oz, private label) | Matches tight analog set, clean rollup | Accurate cold-start curve, right initial order | | Free-text or missing (base ingredient buried in a marketing blurb) | Falls back to broad category average | Blended, noisy forecast, over- or under-stock | | Inconsistent units across suppliers (oz vs g vs mL) | Rollup fragments or requires manual reconciliation | Slower planning cycle, silent accuracy loss | None of this requires ripping out the planning system or the PIM that feeds it. It requires the attributes underneath both to be extracted consistently, validated against source documents like spec sheets and nutrition panels, and kept current as new items and reformulations arrive. That's the layer Anglera works on: pulling structured, quality-scored attributes out of the tech packs, imagery, and legacy fields retailers and CPG brands already have, normalizing them against the categories forecasting and planning tools actually read, and flagging conflicts instead of silently picking a side. The forecast doesn't get smarter. The data it's built on finally holds still. --- # Why appliances products go invisible: the attribute gaps that filter you out Source: https://www.anglera.com/blog/appliances-attributes Published: 2026-06-15 Industries: appliances ![Why appliances products go invisible: the attribute gaps that filter you out](/og/hero-appliances-attributes.jpg) A shopper filters by counter-depth, 20-23 cubic feet, and ENERGY STAR, and your French-door refrigerator never shows up, not because it's a bad match, but because three fields in the feed are blank. Appliances are one of the most attribute-dependent categories in retail: shoppers filter hard, AI shopping agents filter harder, and a product without the right spec fields simply isn't in the running. This is a structural problem, not a copywriting one, and it has a structural fix. ## The attributes that actually gate appliance discovery Appliance shoppers don't browse. They filter by fit and function, because a refrigerator that doesn't fit the cabinet cutout or the outlet isn't a refrigerator they can buy. That makes a specific set of attributes load-bearing across the category: - **Physical dimensions**: width, height, depth, and door-swing clearance, often down to the eighth of an inch - **Capacity**: total cubic feet, and often the fridge/freezer split - **Depth class**: counter-depth vs. standard-depth, which is its own filter on nearly every major retailer - **Configuration**: French door, side-by-side, top-freezer, bottom-freezer, four-door - **Finish**: fingerprint-resistant stainless, black stainless, matte, panel-ready - **Energy certification**: ENERGY STAR status, and increasingly the estimated annual kWh - **Connectivity**: smart/Wi-Fi enabled, compatible app - **Install type**: freestanding, built-in, or fits-existing-cutout - **Ice and water**: through-door dispenser, in-door ice maker, filtered vs. unfiltered - **Voltage/plug type and venting requirements**, for anything beyond a basic refrigerator None of these are nice-to-haves. Each one is a facet on a real retail filter, and in appliances the [GS1 Global Data Model](https://www.gs1.org/standards/gs1-global-data-model-attribute-implementation-guide/13-1) treats physical dimensions as core enough that a dimension change of more than 20 percent requires an entirely new GTIN. That's how load-bearing depth and width are considered to be in this category: they're identity attributes, not descriptive flourishes. ## What happens when one of these is missing Faceted search on a category page is really a chain of AND filters. A shopper picks "counter-depth," then "20-23 cu. ft.," then "French door," then "ENERGY STAR." Every one of those is a separate attribute field on the backend. If your feed has capacity but no depth class, you drop out at the second click, invisibly, with no error and no signal that anything went wrong. You still rank fine in a plain text search for "refrigerator." You just never reach the shopper who already knows what they want, which in appliances is most of them. The AI layer makes this worse, not better. A shopping agent parsing a query like "counter-depth French-door fridge under 24 cu ft with an ice maker" is doing exactly what the faceted filter does, matching structured fields, not reading marketing copy. [OpenAI's Agentic Commerce product feed spec](https://developers.openai.com/commerce/specs/file-upload/products) asks for dimensions, weight, material, and a full taxonomy path as structured fields precisely because the model needs values it can filter and compare, not a paragraph it has to interpret. A missing depth field isn't invisible to a human filter and visible to an AI agent. It's invisible to both, and the AI agent has less patience for guessing. ## A French-door refrigerator, before and after Here's a real-shape example: a mid-range French-door refrigerator as it typically lands in a raw supplier feed, versus what it needs to clear filters and answer AI queries. | Attribute | Raw feed | Enriched | |---|---|---| | Title | "Refrigerator, stainless, large" | "36-in. Counter-Depth French-Door Refrigerator, 22.1 cu. ft., Fingerprint-Resistant Stainless" | | Capacity | Not provided | 22.1 cu. ft. total (14.9 fridge / 7.2 freezer) | | Depth class | Not provided | Counter-depth | | Configuration | "French door" (free text) | French door, 4-door, bottom freezer | | Width | Not provided | 35.75 in. | | Finish | "Stainless" | Fingerprint-resistant stainless steel | | Energy | Not provided | ENERGY STAR certified | | Ice/water | Not provided | In-door ice and water, filtered | | Connectivity | Not provided | Wi-Fi enabled, companion app | | Install type | Not provided | Freestanding, fits standard 36-in. opening | The raw version isn't wrong, it's just thin. Thin is enough for a browse page. It is not enough for a filter or a chat query, and appliances are a category where most traffic arrives already filtering. ## Ask an AI to recommend one Try this yourself: ask an AI shopping assistant to "recommend a counter-depth French-door refrigerator around 22 cubic feet that's ENERGY STAR certified with an ice maker." Watch which retailers' products get named. It's almost never the retailer with the best price. It's the one whose product data actually contains all four of those values in a structured, matchable form. Everyone else's inventory, including plenty of equally good products, gets silently passed over. [ENERGY STAR notes that certified refrigerators run about 9 percent more efficient](https://www.energystar.gov/products/refrigerators) than the federal minimum, a real differentiator shoppers actively filter for, but only if that certification is a field on the product record and not just a badge in a hero image. ## Anglera's role Anglera continuously audits your appliance catalog against the attributes that actually gate filtered and AI search, capacity, depth class, configuration, finish, energy certification, connectivity, install type, flags the gaps, and fills them from spec sheets and manufacturer data so nothing sits half-tagged. It plugs into whatever PIM or feed you already run, without a rip-and-replace migration. Your PIM stores the data; Anglera makes sure every appliance in it is actually filterable. --- # UFP Industries: One Wood Engine, Two Distribution Businesses Source: https://www.anglera.com/blog/ufp-industries-distributor-playbook Published: 2026-06-14 Industries: building-materials ![UFP Industries: One Wood Engine, Two Distribution Businesses](/og/hero-ufp-industries-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Modern Distribution Management's [2026 Top Distributors report](https://www.mdm.com/top_distributors) put UFP Industries at #16 in Building Materials and, separately, put its packaging arm at #6 in JanSan/Packaging with $1.6 billion in revenue. Most companies on that list show up once, in the vertical where they compete. UFP shows up twice, in two verticals that have almost nothing to do with each other on the surface, a deck board and a shipping pallet. The reason is worth unpacking, because it is not really two businesses. It is one raw-material engine wearing two uniforms. ## The trick is upstream, not downstream UFP Industries, based in Grand Rapids, Michigan, was founded in 1955 as a lumber supplier to the manufactured housing industry, and it grew into what the company's own investor materials describe as [North America's largest converter of softwood lumber and the world's largest pressure-treater](https://www.ufpinvestor.com). That single capability, buying logs and dimensional lumber at scale, cutting and treating it efficiently, is the actual asset. Everything downstream of it is optional. Most distributors build a moat around a customer relationship or a category of parts. UFP built its moat around a commodity-processing capability and then went looking for every end market that commodity could feed. Retail lumber and lawn-and-garden products for Home Depot and Lowe's aisles. Structural components for homebuilders. And, less obviously, wood pallets and industrial packaging for anyone shipping freight. Three demand curves that rarely move together, run off one supply chain. That is the unique insight here: the dual MDM listing is not a coincidence of category overlap, it is the visible proof of a deliberately hedged business model. ## From mobile homes to two-by-fours to pallets The company's founding story is unglamorous by design. Peter Secchia and William Currie started what was then Universal Forest Products in 1955 to supply lumber to Michigan's manufactured-housing builders, a corner of the housing market that has always been more cyclical and less prestigious than site-built construction. William Currie's family stayed with the company for decades; he remains chairman today, per [Wikipedia's summary of the company's public record](https://en.wikipedia.org/wiki/UFP_Industries), a rare thread of continuity for a company that went public on Nasdaq in 1993 under the ticker UFPI. The pivotal bet came after the 2008-2009 housing collapse gutted manufactured housing and site-built lumber demand at the same time. UFP's response was structural, not just financial: it reorganized from a geography-based operating model, branches reporting by region, into a market-based one, three segments built around who buys the wood rather than where the mill sits. UFP Retail sells to home centers. UFP Construction sells to builders and factory-built housing. UFP Packaging sells pallets and industrial crating. That reorg, completed in stages and formalized when the company renamed itself from Universal Forest Products to UFP Industries in January 2020, is the actual origin of the two-vertical MDM footprint. It was not an accident of product mix. It was a deliberate answer to a near-death experience. ## The packaging wing is quietly become the interesting one By 2025, UFP as a whole reported [$6.32 billion in annual revenue](https://stockanalysis.com/stocks/ufpi/), down from prior-year levels as housing and retail demand cooled, a reminder that diversification dampens cycles but does not cancel them. The packaging segment, the one that earned the #6 JanSan/Packaging placement, has been the site of recent acquisition activity even as the broader company pulled back: Berry Pallets extended its Upper Midwest reach, and the roughly $48 million purchase of Coatesville, Pennsylvania-based John Rock Inc. added pallet manufacturing capacity in the Northeast. While retail and construction demand softened, packaging kept getting bolted onto. That is the honest tension in the model. A single softwood supply chain feeding three markets smooths out any one market's downturn, but it also means UFP's fortunes are still, at bottom, a bet on how much lumber North America needs, whether that lumber ends up as a fence panel, a roof truss, or a pallet. Diversifying the demand side does not fully hedge the supply side. When lumber and freight volumes soften broadly, as they did into 2026, all three segments feel it at once, just not by the same amount or on the same schedule. ## Why the model still works What keeps the model from being merely defensive is that UFP treats pressure-treating and lumber conversion as genuine engineering, not commodity buying. Being the largest treater in the world means owning process expertise, in wood preservation, that a retail lumber customer and a pallet customer both need, even though they will never meet each other. That shared technical core, more than any brand or logo, is what lets one company answer to two completely different sets of distribution economics without either side subsidizing the other. For a company most people associate with decking boards at a big-box store, showing up in a packaging ranking is the tell. It says the real product was never lumber. It was the conversion capability underneath it, sold three different ways. Distribution's biggest advantages rarely show up in the showroom. They live in the mill, the treating plant, and the catalog that decides which market gets the wood next. This series looks at the companies that built theirs deliberately. --- # TopBuild: How an Insulation Roll-Up Became One Itself Source: https://www.anglera.com/blog/topbuild-distributor-playbook Published: 2026-06-14 Industries: building-materials ![TopBuild: How an Insulation Roll-Up Became One Itself](/og/hero-topbuild-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* TopBuild landed at #14 on [Modern Distribution Management's 2026 Top Distributors](https://www.mdm.com/top_distributors) list for building materials, with $2.52 billion in FY2025 distribution revenue behind the ranking. That number describes a company that spent a decade buying up the insulation trade one regional player at a time. It says nothing about what happened three weeks after the list closed: TopBuild agreed to be bought whole. ## A ninth of a share TopBuild did not start as a startup or a family shop. It started as a line item Masco Corporation wanted off its books. On July 1, 2015, Masco completed a tax-free spinoff, handing shareholders one share of the new TopBuild Corp for every nine Masco shares they held, per the [PR Newswire release](https://www.prnewswire.com/news-releases/topbuild-spin-off-from-masco-corporation-completed-and-trading-as-independent-company-begins-300107321.html) marking the day trading began. The carve-out bundled two businesses that had lived inside Masco's contractor-services arm: TruTeam, an insulation installer, and Service Partners, a distributor of insulation and related building products. Neither had ever operated as a standalone public company. Both were about to. ## One ticker, two very different jobs Most distributors in this series pick a lane: sell product, or install it, rarely both at scale. TopBuild built its whole structure on refusing that choice. TruTeam grew into a nationwide installation network of roughly 200 branches, the labor arm that shows up on job sites and hangs the batts and blows the cellulose. Service Partners, later joined by Distribution International and Crossroads C&I, ran the distribution side: warehouses, trucks, and counter sales moving insulation and adjacent building products to contractors who install it themselves. The distribution half is what earns TopBuild its MDM building-materials ranking. The installation half is what makes the company unusual in the vertical: it doesn't just supply the trade, it also is the trade, on a scale few of its distribution peers can match. ## Buying the category branch by branch Once independent, TopBuild treated M&A as its primary growth lever rather than an occasional tool. The largest swing came in 2021, when it paid roughly $1.0 billion in cash to acquire Distribution International from Advent International, a deal that pushed TopBuild deep into the roughly $5 billion mechanical-insulation and MRO market and brought fabrication capabilities it hadn't owned before. That was one deal in a steady rhythm, not an outlier: TopBuild kept adding smaller distributors and installers most years after the spinoff, with 2021 and 2024 each bringing roughly a half-dozen add-ons. The strategy was never disguised. It was consolidation of a fragmented, regional insulation trade into a national platform, executed acquisition by acquisition rather than through organic branch openings. ## The roll-up got rolled up Here is the part that makes TopBuild's story worth reading closely rather than filing under "another building-products distributor." The company that spent a decade perfecting the art of buying fragmented regional players became, in 2026, the target of the same playbook run at a larger scale. On April 19, 2026, QXO Inc., the building-products consolidator built by former XPO and United Rentals chief Brad Jacobs, announced a [roughly $17 billion agreement](https://www.businesswire.com/news/home/20260419123389/en/QXO-to-Acquire-TopBuild-for-$17-Billion) to acquire TopBuild outright. Stockholders on both sides approved it overwhelmingly in late June, and the deal [closed](https://www.mdm.com/news/top-distributor-sectors/building-materials-construction/qxo-completes-17b-topbuild-deal-pushing-annual-revenue-past-16b/) on July 1, 2026, pushing QXO's annual revenue past $16 billion and folding TopBuild in alongside QXO's earlier purchases of Beacon Roofing Supply and Kodiak Building Partners. July 1, 2026 is exactly eleven years to the day after TopBuild began trading as its own company. The symmetry is real, not manufactured: a business born from one giant conglomerate's decision to shed a division became, on its own anniversary, absorbed into someone else's much larger one. TopBuild spent those eleven years proving that owning both the distribution counter and the installation crew was a durable moat in a fragmented trade. It turned out to be durable enough, and legible enough, to be worth $17 billion to a buyer running the exact same consolidation logic one tier up the industry. That is the insight worth naming plainly: in a roll-up sector, being good at rolling up others does not exempt you from being rolled up yourself. It can be the reason someone bigger writes the check. ## What the timeline shows | Date | Event | |---|---| | July 1, 2015 | Spins off from Masco as independent public company (TruTeam + Service Partners) | | October 2021 | Acquires Distribution International for ~$1.0B, entering mechanical insulation | | 2024 | Adds roughly six further acquisitions across installation and distribution | | April 19, 2026 | QXO announces ~$17B deal to acquire TopBuild | | July 1, 2026 | Deal closes, eleven years to the day after the Masco spinoff | Distribution businesses rarely announce themselves with a founder's garage story. More often they arrive as a spreadsheet line someone else wanted gone, and they leave the same way, folded into a bigger owner's balance sheet. What sits in between, branch counts, fill rates, the unglamorous work of moving material through a fragmented trade, is the part of the industry this series keeps coming back to. --- # O'Reilly Auto Parts: How Two Missourians Built an Empire Source: https://www.anglera.com/blog/oreilly-retailer-playbook Published: 2026-06-14 Industries: automotive-aftermarket ![O'Reilly Auto Parts: How Two Missourians Built an Empire](/og/hero-oreilly-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* O'Reilly Auto Parts ranks #30 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $17.07 billion in 2025 U.S. retail sales, compiled annually by the National Retail Federation with Kantar. The chain now runs more than 6,500 stores across the U.S., Mexico, and Canada. It started as one rented building in Springfield, Missouri, staffed by 13 people who had just quit their jobs. ## A Father, a Son, and a Bad Transfer Offer In November 1957, Charles F. O'Reilly and his son Charles H. "Chub" O'Reilly worked at Link Motor Supply, a wholesale auto parts jobber in Springfield. The company was reorganizing, and the plan called for retiring the 72-year-old Charles F. and shipping Chub off to run an office in Kansas City. Chub said no. By his own account, Kansas City was "too big," with too much hustle, bustle, and traffic for his taste, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/o-reilly-automotive-inc-history/). So father and son walked out and started their own shop instead. O'Reilly Automotive opened with 12 to 13 employees in a rented building and did $700,000 in sales its first full year, 1958. Three years later, combined with a jobber subsidiary called Ozark Automotive Distributors, formed in 1960, the operation was doing $1.3 million. That second entity, Ozark, is easy to skip past, but it set the pattern for everything that followed. From the start, O'Reilly sold to two different customers under one roof: do-it-yourself car owners buying parts over the counter, and professional mechanics and independent jobbers buying wholesale through Ozark. Most of the chain's future rivals picked a lane. AutoZone built its identity on the DIY counter. NAPA and Carquest built theirs on the professional jobber network. O'Reilly refused to choose, and it never sold tires or offered installation labor either, a discipline it has kept for nearly seventy years. That dual-market posture, wholesale and retail running through the same inventory and the same trucks, is the unique insight in O'Reilly's story: it is the reason the company could later absorb chain after chain without ever having to decide which kind of retailer it was. ## The Slow Roll, Then the Big Swing Growth stayed regional and patient for decades. Nine stores by 1975, all in southwestern Missouri. Family control passed to the next generation, with Chub's four children, Charles, Lawrence, David, and Rosalie O'Reilly Wooten, running operations by 1980. The company went public on NASDAQ under the ticker ORLY on April 23, 1993, and used the capital to accelerate a strategy of buying regional competitors rather than building stores from scratch one at a time. | Year | Move | Why it mattered | |---|---|---| | 1998 | Acquired Hi/LO Auto Supply, 182 stores in Texas and Louisiana | First major acquisition; brought a Houston distribution center and entry into a new region | | 2001 | Acquired Mid-State Automotive Distributors, 82 stores | Extended reach across seven states | | 2008 | Acquired CSK Auto, 1,273 stores in 12 states | Largest deal in company history, done in the shadow of a rival's accounting scandal | | 2019 | Acquired Mayasa Auto Parts | First entry into Mexico | | 2023 | Acquired Groupe Del Vasto (Vast-Auto) | First entry into Canada | The CSK deal deserves the closest look. CSK Auto had been assembled in 1987 as Northern Automotive, a roll-up of three older West Coast chains: Checker Auto Parts (founded 1969), Schuck's Auto Supply (founded 1917), and Kragen Auto Parts (founded 1947). CSK grew aggressively through the late 1990s and early 2000s, swallowing Trak Auto, Big Wheel, Al's, Grand Auto Supply, and Murray's along the way, and by 2006 it ran 1,273 stores. That same year, CSK dismissed its chief operating officer and chief administrative officer after an internal investigation turned up accounting irregularities; the SEC would later file civil charges against four former executives over fraud dating to 2002-2004, according to [Wikipedia's account of CSK Auto](https://en.wikipedia.org/wiki/CSK_Auto). O'Reilly signed the agreement to buy CSK in April 2008, for roughly a billion dollars including assumed debt, and closed the deal that July. It was a bet that a disciplined operator could fix a chain a scandal had weakened, and it worked: O'Reilly rebranded every CSK store under its own banner by 2011, and the acquisition nearly doubled its footprint in one stroke, a scale jump the company had spent fifty years building toward one region at a time. ## What the Discipline Bought The payoff of running both channels through one network shows up in the plumbing. By the late 1990s, O'Reilly stores were linked by computer to regional distribution centers stocking more than 100,000 SKUs, with a policy the company called Right Part, Right Price, Right Now: if a store didn't have one of roughly 15,000 commonly requested parts on hand, the customer got a 5% discount and next-day delivery from another store or warehouse, per [Wikipedia's history of O'Reilly Automotive](https://en.wikipedia.org/wiki/O%27Reilly_Auto_Parts). That redundancy, more than any single acquisition, is what let O'Reilly keep absorbing regional chains without breaking its promise to either kind of customer. Today the company runs from a 117,000-square-foot Springfield headquarters, employs more than 93,000 people, and sits in both the S&P 500 and the NASDAQ-100. It stayed nonunion and family-influenced through generations of leadership, and under current CEO Brad Beckham it has kept extending the same playbook into Mexico and Canada rather than inventing a new one. O'Reilly's whole history is really a case study in supply chains built to move a $4 alternator as reliably as a $400 one, one warehouse, one truck route, one acquisition at a time. That kind of unglamorous infrastructure work, done consistently for seven decades, is what this series keeps finding at the bottom of retail's biggest names. --- # The ROI of product data in MRO & Industrial: the numbers that actually move Source: https://www.anglera.com/blog/mro-industrial-roi Published: 2026-06-14 Industries: mro-industrial ![The ROI of product data in MRO & Industrial: the numbers that actually move](/og/hero-mro-industrial-roi.jpg) Most MRO and industrial distributors already know their product data is uneven — half-filled attributes, missing spec sheets, thread pitch and material certs buried in a PDF nobody indexed. What's harder is proving the fix pays for itself. Finance doesn't approve budget for "cleaner catalogs." It approves budget for specific, measurable movement in conversion, traffic, returns, and order value. Here's how to find that movement and build a case that survives a CFO's questions. ## The metrics that actually move | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether a buyer who found the right part actually completes the order | Product-detail-to-cart and cart-to-purchase rate, segmented by attribute completeness score, in GA4 or your commerce platform's analytics | | Organic search traffic | Whether your catalog is discoverable for spec-level queries (part numbers, dimensions, compatibility) | Landing-page sessions and impressions in Search Console, filtered to PDP/PLP URLs, tracked before/after enrichment | | AI-referral traffic | A newer, smaller discovery channel worth watching alongside search | Referral traffic segment in GA4 for known AI/answer-engine domains, plus branded query volume | | On-site search performance | Whether buyers can even find what's already in your catalog | Zero-result-query rate and search-to-cart conversion inside your site search tool (Algolia, Bloomreach, Klevu, etc.) | | Return rate, split by reason | Which returns are preventable data problems vs. genuine defects or buyer error | Reason-code breakdown from your ERP or returns system, isolating "wrong item," "not as described," and "incompatible" codes | | AOV and attach rate | Whether complete data (kits, accessories, compatible parts) is driving bigger baskets | Average order value and cross-sell attach rate by category, compared for enriched vs. unenriched SKU cohorts | | Support ticket load | Hidden cost of buyers calling in because the PDP couldn't answer the question | Ticket volume tagged "product question" or "wrong part shipped" per 1,000 orders | ## PDP conversion is the highest-leverage lever Industrial and B2B purchase-conversion rates already run low relative to consumer retail — commonly cited in the low single digits for complex categories, and B2B distribution overall sits in a similar band, because deals involve technical validation, multiple stakeholders, and long research cycles. You can't change the buying committee. You can change whether the PDP answers their questions on the first visit instead of the third. For MRO specifically, the buyer question is rarely "do I like this product" — it's "does this fit." Thread pitch, voltage, IP rating, material cert, cross-reference to the OEM part they're replacing. When that data is missing or buried in an attached spec-sheet PDF, the buyer doesn't guess — they leave, call your counter, or check a competitor's listing for the same part number. Segment PDP conversion by attribute-completeness score (percent of required fields populated for that category) and you'll almost always find a gap between complete and incomplete listings that's large enough to build a case around. ## Traffic: search, on-site, marketplaces — AI is one more channel, not the whole story Buyers now research across a genuinely omnichannel set of touchpoints. [McKinsey's B2B Pulse research](https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/five-fundamental-truths-how-b2b-winners-keep-growing) has tracked B2B buyers using roughly ten channels across a purchase journey, up sharply from a handful a decade ago, with self-serve digital channels now driving over a third of B2B revenue where offered. That means product data has to work across all of them — your own site search, organic search, marketplace listings, and increasingly AI answer engines that surface spec answers directly. None of those channels replaces the others. A distributor with strong organic visibility but a broken on-site search (high zero-result-query rates on part numbers) is still losing the sale — the buyer found the site and then couldn't find the part. Track all four side by side: organic sessions to PDPs, on-site search zero-result rate, marketplace listing quality scores, and AI-referral sessions as a smaller supplementary line. Complete, structured, consistently formatted attributes are what each of these channels indexes and surfaces on — the mechanism is the same whether the destination is a search results page or a chat answer. Large MRO distributors already treat digital as the primary growth channel: [Modern Distribution Management](https://www.mdm.com/) has reported that leaders like Grainger, Fastenal, and MSC Industrial now generate more than two-thirds of sales digitally, which raises the stakes on catalog data quality since there's no counter rep to compensate for a missing spec. ## Returns: the cost hiding in "not as described" Returns are a lagging but very real signal, and the data on this is specific enough to act on. [Retail Dive's coverage of a Product Information Report](https://www.retaildive.com/spons/study-reveals-poor-product-contents-impact-on-digital-sales/419987/) found that 40% of consumers had returned an online purchase because of inaccurate product content, and more than 90% had abandoned a cart outright, with inadequate descriptions and images among the top reasons cited. For MRO, a "not as described" return isn't a sizing issue — it's a wrong dimension, a missing compatibility note, or a spec that didn't match what shipped, and it often comes with a restocking cost, a freight cost, and a support ticket attached. Pull return reason codes for the last two quarters and isolate the ones tied to data — wrong item, incompatible, spec mismatch — versus genuine quality or shipping issues. That split is your baseline. After enrichment, track whether the data-driven share shrinks. It's a clean before/after comparison because the reason code already exists in most ERPs. ## AOV and attach rate: the upside case, not just the defense Complete data doesn't just prevent losses — it can lift order value. When a PDP correctly lists compatible parts, required accessories, and kit components, attach rate goes up because the buyer doesn't have to leave the page to figure out what else they need. Compare AOV and attach rate for SKUs with fully enriched cross-sell and compatibility data against a matched cohort that hasn't been touched yet. This is the metric that turns a defensive "reduce returns" pitch into a growth pitch finance actually gets excited about. ## Building the before/after case finance believes Pick one measurable slice — a category, a supplier line, a few thousand SKUs — enrich it, and hold everything else constant as your control group. Track PDP conversion, organic sessions, on-site search performance, return reason codes, and AOV weekly for 60-90 days against the untouched control. Finance doesn't need a philosophy of data quality; it needs a chart with a treatment group and a control group moving apart. The reason most distributors never build this case is that manual enrichment doesn't scale fast enough to generate a clean before/after window — hand-enriching a catalog runs somewhere in the 30-45 minute range per SKU, which turns a 5,000-SKU test into a multi-month project before you've measured anything. That's the gap Anglera is built to close: it plugs into whatever PIM a distributor already runs, or works from a flat file if there isn't one, extracts and quality-scores attributes from supplier documentation rather than inventing them, and can get a meaningful cohort enriched in weeks — fast enough to actually run the before/after test finance wants to see. --- # From enriched data to the page: a technical-SEO checklist for any PDP Source: https://www.anglera.com/blog/enriched-data-to-page-checklist Published: 2026-06-14 ![From enriched data to the page: a technical-SEO checklist for any PDP](/og/hero-enriched-data-to-page-checklist.jpg) Getting a product page enriched — full attributes, specs, use-cases, identifiers — is only half the job. If that data never makes it into the actual HTML response, buyers and AI agents never see it. This checklist walks through the technical layer that carries enriched data from wherever it lives (PIM, commerce platform, metafield) onto a page that both humans and crawlers can parse, in the order to check it. ## 1. Rendering: get content into the HTML response Google still processes JavaScript through a two-wave system: it crawls the raw HTML first, then queues a second pass through headless Chromium to render client-side content, sometimes hours or days later. Server-side rendering, static generation, or hydration remain Google's recommended patterns over pure client-side rendering, mainly because they make the first HTML response meaningful on its own ([Understand JavaScript SEO Basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)). The bigger issue in 2026 is that most AI crawlers don't execute JavaScript at all. GPTBot, ClaudeBot, Claude-User, Claude-SearchBot, and PerplexityBot fetch raw HTML and generally do not run a rendering pass. If your enriched attributes, specs, or use-case copy only appear after a client-side fetch call resolves, these agents see an empty shell. Practical checklist: - Enriched attributes, specs, and descriptions should be present in the initial server response, not fetched client-side after load. - If you must ship a client-rendered app, add server-side rendering or static pre-rendering for product routes specifically — this is the one route type where it matters most. - Verify with `view-source:` or `curl` (see validation section below) rather than trusting what you see in DevTools, which always shows the post-render DOM. ## 2. Structured data: JSON-LD Product markup Google's Product structured data requires `name` plus at least one of `offers`, `review`, or `aggregateRating`; once one of those three is present, the rest (image, description, brand, `sku`, `mpn`, `gtin`) become recommended rather than required ([Product snippet structured data](https://developers.google.com/search/docs/appearance/structured-data/product-snippet)). A minimal but solid block looks like this: ```json { "@context": "https://schema.org", "@type": "Product", "name": "Example Widget 400", "sku": "WID-400-BLK", "gtin13": "0012345678905", "mpn": "W400-BLK", "brand": { "@type": "Brand", "name": "Example Brand" }, "description": "Enriched product description with specs and use-case detail.", "image": [ "https://example.com/images/widget-400-1x1.jpg", "https://example.com/images/widget-400-4x3.jpg", "https://example.com/images/widget-400-16x9.jpg" ], "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "129.00", "availability": "https://schema.org/InStock", "url": "https://example.com/products/widget-400-black" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "212" } } ``` One rule matters more than any field name: Google's structured data guidelines state markup must reflect what's genuinely visible on the page, not content hidden behind toggles, absent from the DOM, or fabricated to win a rich result ([General Structured Data Guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)). If your enrichment pipeline populates a spec table that's rendered, JSON-LD can mirror it. If a field only exists in the feed and never on the page, leave it out of the markup. For products sold in multiple sizes, colors, or configurations, use the `isVariantOf`/`ProductGroup` pattern rather than duplicating one `Product` block per variant on a single URL — variants need their own URLs or the group pattern to stay compliant. ## 3. Identifiers: GTIN, MPN, brand, SKU Identifiers are what let a crawler or shopping agent match your PDP to the same product elsewhere, and they matter for both structured data and any Merchant Center feed you run alongside it. Google's guidance: provide GTIN together with MPN and brand where products have them, because missing or incorrect identifiers limit matching and visibility ([About unique product identifiers](https://support.google.com/merchants/answer/160161)). For genuinely unbranded, custom, or pre-GTIN products, set `identifier_exists` to `false` in the feed rather than leaving fields blank or inventing values — a fabricated GTIN is worse than an honest "no identifier." Keep identifier fields consistent across three places: the PIM/source of truth, the on-page JSON-LD, and the feed (Merchant Center, marketplace, or affiliate feed). Mismatches between these are a common cause of "incorrect identifier" flags. ## 4. Attributes and specs on the page itself Structured data supplements the page; it doesn't replace a rendered spec table. Enriched attributes (dimensions, materials, compatibility, certifications) should appear as real text in the DOM — a definition list, table, or labeled grid — not only inside JSON-LD or an alt attribute. For attribute-heavy categories, `additionalProperty` (`PropertyValue` pairs) can carry structured attribute data in JSON-LD, but only alongside a visible on-page version. ## 5. Media - Serve product images at multiple aspect ratios (Google recommends including images in the 1:1, 4:3, and 16:9 range within the `image` array) at reasonable resolution. - Write real, descriptive `alt` text per image, not the product name repeated verbatim. - Avoid `loading="lazy"` on the primary hero image — it can delay Largest Contentful Paint measurement and, in edge cases, prevent the image from appearing in a lightweight-fetch snapshot. ## 6. Meta and on-page tags - Unique title tag and meta description per product; don't template them so tightly that every variant reads identically. - Self-referencing canonical tag defined in the original HTML, not injected only by JavaScript. - Open Graph tags (`og:title`, `og:description`, `og:image`) for link previews and citation cards; these are also read by many AI agents when summarizing a page. - If you run localized or multi-currency PDPs, use distinct URLs per locale/currency with correct `hreflang`, matching Google's guidance that Product markup should not mix currencies on one URL. ## 7. Performance Core Web Vitals thresholds — Largest Contentful Paint under 2.5s, Interaction to Next Paint under 200ms, Cumulative Layout Shift under 0.1 — are still the bar Google references for good page experience ([Understanding Core Web Vitals](https://developers.google.com/search/docs/appearance/core-web-vitals)). For PDPs specifically, the usual offenders are render-blocking third-party scripts (reviews widgets, chat, personalization) loaded above the fold, and layout shift caused by images or price blocks that load without reserved space. Reserve height for images and dynamic price/rating blocks with explicit width/height or aspect-ratio CSS. ## 8. AI crawler access Rendering and markup only matter if agents are allowed to fetch the page. Check robots.txt against the specific tokens each provider uses — blocking one does not block the others. Anthropic runs three independent bots: `ClaudeBot` (training), `Claude-SearchBot` (search indexing), and `Claude-User` (fetches a page when a user asks Claude about it directly); all three honor robots.txt but need separate directives ([Anthropic crawler documentation](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)). If your PDPs are meant to be citable in AI answers, confirm you aren't accidentally disallowing `Claude-User`, `Claude-SearchBot`, `OAI-SearchBot`, or `PerplexityBot` while trying to block training crawlers. ## How to validate - **View-source vs. rendered DOM**: open `view-source:https://yourdomain.com/product/slug` and confirm the enriched description, attributes, and JSON-LD are present in the raw response — not just visible in DevTools' Elements panel, which shows the post-hydration DOM. - **Curl check**: `curl -A "Googlebot" https://yourdomain.com/product/slug` (or no user agent at all) and grep for a known attribute string or `"@type": "Product"` to confirm it's server-rendered. - **Rich Results Test**: run the live URL through [Google's Rich Results Test](https://search.google.com/test/rich-results) to confirm Product eligibility and catch missing required fields. - **Search Console**: check the Product Snippets report periodically for identifier or markup errors surfacing at scale, not just on one URL. - **robots.txt spot-check**: fetch `/robots.txt` and confirm the crawler tokens you intend to allow aren't disallowed by a broader rule higher in the file. Verified as of July 2026 against Google Search Central, Google Merchant Center Help, and Anthropic's published crawler documentation; check these sources directly before implementation, since structured data requirements and crawler behavior do shift between releases. None of this checklist matters if there's nothing enriched to render. Anglera keeps the underlying data — attributes, specs, use-cases, identifiers — continuously enriched inside whatever PIM or commerce platform you already run, so the page-side work above has accurate, complete content to put in front of buyers and agents in the first place. --- # BlueLinx Holdings: Escaping the Lumber Cycle One Deal at a Time Source: https://www.anglera.com/blog/bluelinx-distributor-playbook Published: 2026-06-14 Industries: building-materials ![BlueLinx Holdings: Escaping the Lumber Cycle One Deal at a Time](/og/hero-bluelinx-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* BlueLinx Holdings lands at #12 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for building materials, on $3.0 billion in 2025 revenue. That placement undersells the more interesting fact: BlueLinx has spent the better part of a decade trying to make that revenue number matter less than what generates it, because the company that Georgia-Pacific spun off in 2004 was built on the most volatile product category in the entire vertical. ## A carve-out with a commodity problem BlueLinx exists because [Georgia-Pacific decided in 2004](https://en.wikipedia.org/wiki/BlueLinx) it no longer wanted to own the distribution warehouses attached to its mills. Senior managers, backed by Cerberus Capital Management, bought the division and put it on the NYSE that December as BXC. The predecessor operation traced back to 1954, when Georgia-Pacific ran a network of plywood warehouses; by the time of the spinoff that had grown to more than 130 locations. Cerberus stayed the controlling shareholder for over a decade, trimming its stake by roughly 3.9 million shares in a 2017 secondary offering as the company stabilized. What Georgia-Pacific handed off, though, was fundamentally a lumber and panel distributor: plywood, OSB, dimensional lumber, gypsum, the framing-and-sheathing products that move construction starts and get crushed on price whenever a housing cycle turns. That business is huge and necessary, but it is also brutally cyclical and thin-margin, as the 2021 lumber price spike and subsequent collapse demonstrated across the entire industry. A distributor whose fortunes rise and fall with framing lumber futures is a hard business to run predictably, and it is the business BlueLinx started as. ## The specialty pivot is the strategy The clearest read on how BlueLinx competes now is what it has bought and built since. The 2018 acquisition of Cedar Creek Holdings from Charlesbank Capital Partners doubled the company's footprint and, more importantly, weighted it toward specialty products: siding, trim, moulding, millwork, outdoor living, roofing, specialty flooring, decorative panels. Those categories carry gross margins that structural commodity lumber cannot touch, and they don't reprice overnight the way OSB futures do. The pattern kept repeating. Vandermeer Forest Products in 2022 pushed BlueLinx further into the West and further into specialty categories. The [Disdero Lumber acquisition in November 2025](https://www.stocktitan.net/news/BXC/), a roughly $96 million deal funded entirely from cash on hand and described by the company as immediately accretive, extended the same western specialty build-out again. In April 2026 BlueLinx rolled out TruExterior siding and trim across a dozen of its markets, and it has been expanding a distribution partnership with Oldcastle APG that doubled the number of locations carrying RDI railing products from eight to sixteen. None of these moves individually would qualify as a bold strategic swing. Stacked together over eight years, they are the strategy: use scale in commodity structural products to fund a steady march toward higher-margin, less-cyclical specialty lines, one regional or category bolt-on at a time. Today the company runs more than 60 distribution facilities, a private fleet of over 700 trucks, and relationships with more than 750 suppliers serving 15,000-plus customers, according to its own [company fact sheet](https://www.bluelinxco.com/company-overview/). That is scale built for the original commodity business, redeployed to carry a different product mix. ## The tension nobody at BlueLinx will call a tension Here is the honest strategic bet, stated plainly: BlueLinx has not exited structural products, and it cannot. Lumber, panels, and gypsum remain the volume base that makes 60-plus distribution centers economical to run, the freight that fills those 700 trucks, and the relationship anchor with home centers and dealer cooperatives that specialty sales ride alongside. The company is simultaneously trying to grow away from commodity exposure and depending on that same commodity exposure for the scale that makes the specialty business viable. Its first-quarter 2026 results made the tension visible in the numbers: net sales of $731 million and a gross margin near 16%, but a net loss of $1.5 million even as adjusted EBITDA held at $23.5 million, a gap that tracks with how choppy structural pricing has been through the housing downturn of the mid-2020s. The company's own capital allocation shows it is betting on the pivot rather than the base: $37.7 million in share repurchases through 2025 and acquisitions funded from a balance sheet carrying $659 million to $726 million in liquidity across the year, rather than debt-fueled scale plays. That is a distributor telling you, with its checkbook, which half of its business it thinks will define its next decade. Leadership continuity matters here too. CEO Shyam Reddy has overseen the Vandermeer and Disdero deals, and the December 2025 handoff of the chief commercial officer role from Mike Wilson to internal promote Leo Oei suggests the strategy is meant to outlast any single executive's tenure, not pivot again with new leadership. For a company built on plywood warehouses in the 1950s and cut loose from a paper giant in 2004, the through-line is not the wood. It is the willingness to keep buying its way out of the parts of the business it can't control the price of. This piece is part of an ongoing series examining the strategic operating models of North America's largest distributors, the companies whose branches, fleets, catalogs, and data quietly keep entire industries supplied. --- # How beauty shoppers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/beauty-aeo Published: 2026-06-14 Industries: beauty ![How beauty shoppers search now — and why your catalog isn't the answer](/og/hero-beauty-aeo.jpg) Beauty shoppers used to start with a search box. Now they start with a question: "recommend a fragrance-free retinol serum for sensitive skin under $40." ChatGPT, Google's AI Mode, and Gemini answer that question by reading product data directly, not by sending someone to browse your PDP. If your catalog can't answer the question in structured form, you don't get considered at all. ## The path to purchase already moved Google's AI Overviews now show up on roughly [14% of all shopping queries](https://almcorp.com/blog/google-ai-overviews-shopping-queries/), a jump the report describes as a 5.6x increase in four months. That's not a niche feature anymore, it's a default layer sitting between a shopper's question and your product listing. Beauty is moving even faster than the category average. Ulta Beauty didn't wait for this to become optional: it partnered with Google to put its catalog inside Gemini's AI Mode, letting shoppers get [recommendations, comparisons, and checkout directly inside Google's conversational interface](https://www.retaildive.com/news/ulta-ai-agent-gemini-shopping-experience/818308/). Sephora has done something similar with an app inside ChatGPT, and Fenty Beauty built an advisor on WhatsApp. None of these are experiments anymore; they're distribution. The mechanism matters more than any single retailer's rollout. An AI answer engine doesn't "browse" your site the way a shopper does. It queries structured data sources, parses `schema.org/Product` markup, and matches the product whose attributes fit the shopper's constraints. Text on a page can help, but agents read structured fields with far more confidence and far less latency than they read prose. If a field is empty, it's a query your product simply cannot win. ## Ask an AI to recommend one Try this exact prompt in ChatGPT or Google's AI Mode: "recommend a vitamin C serum for oily, acne-prone skin, fragrance-free, under $35, that ships to a US zip code by Thursday." That single sentence encodes six filters: ingredient, skin type concern, allergen exclusion, price ceiling, and delivery speed. An AI shopping agent can only apply a filter if your catalog exposes the matching attribute in a structured field. Most beauty PIMs don't. A typical raw feed carries a title, a price, and a marketing description that buries the actual formulation in adjectives. Here's what that gap looks like for one SKU: | Field | Raw feed (as exported from PIM) | Enriched (agent-readable) | |---|---|---| | Title | "Glow Boost Brightening Serum" | Vitamin C Brightening Serum, 15% L-Ascorbic Acid | | Key ingredient | not populated | `l-ascorbic acid`, 15% concentration | | Skin type | not populated | oily, combination, acne-prone | | Fragrance | not populated | fragrance-free | | Allergen flags | not populated | no essential oils, no alcohol denat. | | Price | $32.00 | $32.00, `priceCurrency: USD` | | Return policy | not in schema | 60-day, `hasMerchantReturnPolicy` declared | | Shipping | not in schema | 2-day delivery, `deliveryTime` declared | | Reviews | 4.6 stars (image only, no markup) | `aggregateRating: 4.6`, 1,240 reviews, machine-readable | The raw version and the enriched version describe the identical bottle. Only one of them is answerable. ## Why "good enough" copy still fails This is the part retailers get wrong most often: a beauty PDP can read beautifully to a human and still be invisible to an agent. Marketing copy like "luminous, radiance-boosting formula" contains zero of the filterable facts a shopper's AI prompt is actually asking for. The concentration, the skin type fit, the allergen exclusions, the shipping promise, these have to live in structured fields, not adjectives. Independent audits back this up. Roughly [65% of pages cited by Google's AI Mode and 71% of pages cited by ChatGPT carry structured data](https://alhena.ai/blog/schema-markup-ai-search-ecommerce/) of some kind, but a meaningful share of that markup is incomplete or invalid, meaning the page still fails to answer the query even though a schema tag is technically present. Having schema on the page isn't the bar. Having the *right fields populated correctly* is. For beauty specifically, the fields that decide whether a product surfaces in an AI answer are narrower and more specific than general retail: | Attribute category | Why AI agents query it | |---|---| | Active ingredient + concentration | Matches "retinol," "vitamin C," "niacinamide" style prompts | | Skin/hair type and concern | Matches "for oily skin," "for curly hair," "sensitive" | | Fragrance and allergen flags | Filters out disqualifying products before ranking begins | | Size/format (trial vs full) | Matches budget and "travel size" prompts | | Certifications (cruelty-free, clean, vegan) | Trust signals AI models weight when multiple products tie | | Return policy and delivery window | Answers "can I get this by Thursday" style constraints | | Review volume and rating, structured | Social proof an agent can cite without visiting the page | Trust signals carry real weight here too: products carrying verified certifications and badges get surfaced by AI models noticeably more often than otherwise-identical products without them, according to reporting on how [ChatGPT selects which beauty products to recommend](https://www.gcimagazine.com/retail/digital-e-commerce/news/22968759/the-top-sites-chatgpt-is-using-for-beauty-recommendations). The models are weighing SKU-level completeness alongside brand reputation, not just brand reputation alone. ## The fix isn't a new platform, it's finished data None of this requires ripping out your PIM or standing up a new commerce stack. Your PIM stores the SKU; the gap is that most beauty catalogs were built for a human scanning a grid of thumbnails, not an agent resolving six filters in one query. Getting from "raw feed" to "agent-readable" means filling in the ingredient, skin-type, allergen, certification, and policy fields your PIM already has room for but nobody populated at scale. Anglera plugs into your existing PIM or commerce platform, additive rather than rip-and-replace, and continuously scores, gap-fills, and enriches exactly these attributes across a full beauty catalog. It turns marketing copy into the structured, agent-readable fields that ChatGPT, AI Mode, and Gemini actually query, so the next shopper who asks an AI to recommend a serum gets your product back as an answer, not a link they never click. --- # AutoZone: How a Grocer's Side Bet Built an Auto-Parts Giant Source: https://www.anglera.com/blog/autozone-retailer-playbook Published: 2026-06-14 Industries: automotive-aftermarket ![AutoZone: How a Grocer's Side Bet Built an Auto-Parts Giant](/og/hero-autozone-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* AutoZone ranks #31 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $15.94 billion in 2025 U.S. retail sales. It is also, by one measure, one of the strangest balance sheets in American retail: a company with more debt than assets, run that way on purpose for two decades. To understand why, you have to start in a grocery warehouse in Memphis. ## A wholesaler's side bet AutoZone did not begin as a car-parts idea. It began inside Malone & Hyde, a Memphis wholesale grocery distributor, where Joseph R. "Pitt" Hyde III ran operations. Hyde noticed something obvious in hindsight: the same high-volume, low-margin distribution logic that moved groceries could move auto parts, if someone built the stores and warehouses to match. On July 4, 1979, that idea opened its doors in Forrest City, Arkansas, as Auto Shack. First-day sales were $300, according to the [company's Wikipedia history](https://en.wikipedia.org/wiki/AutoZone), a number small enough that almost nothing about the launch signaled what would follow. What followed was a Walmart-style rollout applied to a category nobody had modernized. Most auto parts stores in 1979 were dim counters run by mechanics for mechanics, stocked from behind the register and staffed by people who assumed you already knew what you needed. Auto Shack, as [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/autozone-inc-history/) describes it, bet on clean, well-lit stores, centralized distribution, and clerks trained to help a do-it-yourselfer who did not know a caliper from a carburetor. The company opened roughly one store a week through its first decade, targeting lower- and middle-income men aged 18 to 49 who maintained their own cars out of necessity rather than hobby. Eight stores by 1980. Twenty by 1981. A hundred by 1983. Nearly 200 across thirteen states by 1984. ## The rename nobody chose voluntarily Here is the detail most customers never learn: AutoZone was not the original name, and the switch wasn't a branding refresh. It was a legal retreat. RadioShack sued over trademark infringement, arguing "Auto Shack" traded too closely on its own name. Rather than fight it out, Hyde's company rebranded to AutoZone in 1987, the same year Hyde separated the chain entirely from the Malone & Hyde grocery business it had grown up inside. The forced rename turned out to be a gift. "AutoZone" read as a destination category name rather than a knockoff of an electronics retailer, and it arrived at exactly the moment the company was scaling past its regional roots. A 1984 management buyout with KKR had already put the company on a path toward independence; the 1987 name change completed the separation. By 1989, AutoZone was the third-largest auto parts retailer in the country. It went public on the NYSE in April 1991 under the ticker AZO, with KKR retaining a controlling stake as debt came down. ## Building the parts, not just selling them Most retailers resell what manufacturers make. AutoZone went further, building Duralast, its private-label parts brand, starting in 1986 and expanding it through 1988. Pairing that with an Express Parts Service model and lifetime warranties on tens of thousands of parts, AutoZone stopped competing purely on price and location and started competing on trust in its own name on the box. Vertical integration cut out distributor markups. It also gave AutoZone a lever competitors selling only national brands didn't have: the ability to price, warranty, and market a part exactly the way it wanted to. The 1990s brought the acquisitions that filled out the map: Auto Palace, Chief Auto Parts, and TruckPro in 1998, plus entry into Mexico that same window. ALLDATA, a repair-information software company, joined in 1996 for $56 million, quietly building a data asset that would matter more as cars grew more complex. By fiscal 1999, sales had reached $4.1 billion. Store count crossed 1,000 in 1995, in Louisville, Kentucky, and kept climbing. ## The pivot to the garage, not just the driveway The clearest strategic shift in AutoZone's more recent history is the one least visible to a walk-in customer: the move into commercial sales, the parts sold to repair shops and mechanics rather than weekend DIYers. Industry shorthand calls this DIFM, "do it for me," as opposed to DIY. AutoZone built a "hub, feeder, and satellite" distribution network starting in 2002 specifically to get obscure parts to commercial customers within hours, then layered "mega hub" superstores on top of that model, crossing 100 mega hubs by 2024. The bet: as cars get more complex and fewer owners do their own brake jobs, the money migrates to the shops doing the work, and whoever gets parts to those shops fastest wins the account. ## The insight the About page won't tell you Here is the fact that best explains how AutoZone actually operates. As of its most recent fiscal year, the company reported total assets of roughly $19.4 billion against total shareholder equity of negative $3.4 billion. That is not a typo and not distress. AutoZone has spent decades funneling free cash flow into share buybacks rather than dividends, buying back stock aggressively enough, year after year, to run the accounting equity line permanently underwater while the business keeps generating cash and paying down debt on schedule. Most public companies treat negative equity as an emergency signal. AutoZone treats it as a capital-allocation strategy, and Wall Street has largely agreed with the bet for over twenty years running. Today AutoZone operates 7,657 stores across the United States, Mexico, Brazil, Puerto Rico, and the U.S. Virgin Islands, all corporately owned with no franchise model, employing roughly 130,000 AutoZoners. It is a long way from a wholesale grocer's warehouse in Memphis, and further still from a $300 first day in Forrest City. Every part on that shelf exists because someone, decades ago, decided a car owner without grease under their fingernails deserved a well-lit store and a clerk who could explain what a caliper does. That is the quieter infrastructure retail runs on: not just the stores, but the catalogs, warehouses, and data behind them. --- # One enriched catalog, every wholesale partner Source: https://www.anglera.com/blog/wholesale-partner-product-data Published: 2026-06-13 ![One enriched catalog, every wholesale partner](/og/hero-wholesale-partner-product-data.jpg) A regional buyer opens the spec sheet a brand just sent over: a product name, a wholesale price, a case pack, and a paragraph of marketing copy. No fiber content in a structured field. No fit notes. No certifications called out anywhere a system can read them. So the buyer's merchandising team does what every merchandising team does with a thin file: they fill it in themselves, in their own words, against their own template. Multiply that by forty retail partners and the same product ends up with forty slightly different descriptions, forty different size logics, and at least a few outright errors that never make it back to the brand that made the thing. This is the quiet cost of wholesale distribution. A brand can nail its own product data and still lose control of how the product looks everywhere it's actually sold, because the brand doesn't own the last mile of merchandising. The partner does. ## Thin data doesn't stay thin, it gets rewritten When a brand hands a retail partner a spreadsheet with gaps, the partner doesn't leave the gaps blank. Onboarding a new SKU into a retailer's system means fitting it into that retailer's category tree, mandatory fields, and image specs, and someone on the partner side has to make judgment calls about anything the brand didn't specify. One retailer decides "water-resistant" belongs in the description. Another invents an attribute for it. A third skips it entirely because nobody on their catalog team had the tech pack in front of them. None of this is malicious. It's just what happens when structured facts are missing and a human has to improvise a template deadline. The result shows up as brand inconsistency the brand rarely sees directly, because it's scattered across other companies' storefronts. A [2025 product experience report cited by Syndigo](https://syndigo.com/blog/avoid-hidden-costs-inconsistent-product-data/) found that incomplete data pushes a large share of shoppers toward a negative view of the brand behind it, and estimates businesses lose real revenue annually to inconsistent or incomplete product data. That's not one bad listing. That's compounding damage across every partner who had to guess. Retailers themselves aren't the villain here, and standardizing across all of them isn't as simple as it sounds. As one industry analysis put it, [product data syndication stays messy](https://trailbreakers.ai/why-is-product-data-syndication-such-a-mess-understanding-the-need-for-standardization/) partly because a fashion retailer wants fabric composition and size charts while an electronics retailer wants battery specs and compatibility codes, and partly because brands have historically resisted normalized data out of fear it flattens their differentiation. Even the industry's attempt at a shared backbone, GS1's Global Data Synchronization Network, [runs on a standard covering thousands of attributes across a network of tens of millions of registered items](https://www.gs1.org/services/gdsn/global-data-model) — and still, individual data pools layer on their own "top off" fields that don't travel between systems. Full standardization across every wholesale channel isn't coming. What's within a brand's control is the quality and completeness of the one dataset it sends out. ## Treat the catalog as a syndication asset, not a one-time export The fix isn't asking retail partners to agree on a shared schema. It's giving every partner a dataset so complete that there's nothing left to improvise. Fiber content, care instructions, fit and sizing logic, certifications, country of origin, dimensions, hazard or compliance flags — extracted once from tech packs, spec sheets, and imagery, validated against the source, and mapped into whatever structure each partner's system expects. ![Diagram: where Anglera fits — sources in, enrichment in the middle, then MDM, PIM, ERP and channels out](/diagrams/stack-fit.svg) That mapping step matters more than it sounds like it should. Two retailers can both want "sleeve length," and one wants it in inches as a number, the other wants it as a size-chart row inside a text block. The underlying fact doesn't change; the shape it needs to arrive in does. Once a brand's attributes exist as clean, validated values rather than a paragraph of prose, remapping them into a new partner's template is a data operation, not a rewrite-the-copy-from-scratch project. That's the difference between a new wholesale account launching in days versus weeks, and it's also the difference between a partner's on-site filters actually working ("100% recycled nylon," "UPF 50+," "machine washable") versus silently disappearing because the field behind them was empty. | | Thin data handed to partners | Enriched, attribute-complete dataset | |---|---|---| | New partner onboarding | Partner re-keys and guesses at gaps | Attributes map directly into partner's template | | Product description on partner sites | Varies by whoever filled it in | Consistent facts, partner-specific copy layered on top | | On-site filters (material, fit, certification) | Break or return zero results | Populate correctly because the field has a value | | Brand control over how the product reads | Lost after the file leaves the brand | Retained at the source, re-syndicated on change | ## The planning payoff: comparable sell-through, finally There's a second reason this matters that has nothing to do with how the product looks on a partner's site. Every wholesale brand wants to compare sell-through across accounts — is the same style moving faster through outdoor specialty than through a big-box channel, and by how much. That comparison only works if the product is described the same way everywhere it's sold. If one partner tags a shoe's width as "wide" and another logs it under a completely different field, or skips it, a planner trying to roll up sell-through by width, by fabric, or by certification is aggregating apples against unlabeled fruit. The forecast doesn't fail loudly. It just quietly weights toward whichever channel happened to keep cleaner records, and nobody notices until the reorder is wrong. An attribute set that's complete and consistent at the source is what makes cross-channel sell-through actually comparable, because every partner is reporting against the same underlying facts even if their storefronts look nothing alike. Anglera doesn't build the retailer connections or run the syndication pipes — that's what a PIM or a distribution platform is for. What it does is make sure the data going into that pipe is complete, accurate, and consistent before it ever reaches a partner, working from tech packs, imagery, spec sheets, and whatever's already in a brand's PIM or a flat CSV export. Get that right once, at the source, and every partner downstream inherits a catalog worth building on instead of one they have to fix themselves. --- # ShopRite: The Co-op That Outlived the Chain That Quit It Source: https://www.anglera.com/blog/wakefern-retailer-playbook Published: 2026-06-13 Industries: grocery-cpg ![ShopRite: The Co-op That Outlived the Chain That Quit It](/og/hero-wakefern-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Wakefern Food Corporation lands at #28 on [NRF's Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual ranking compiled with Kantar, with $19.57 billion in 2025 U.S. retail sales. Almost nobody outside the grocery trade has heard the name Wakefern. Nearly everyone in New Jersey, New York, Connecticut, Pennsylvania, Delaware, and Maryland has shopped at ShopRite, the banner it owns. That gap between the corporate name and the storefront is the whole story. ## Seven grocers and a thousand dollars each The company was born out of desperation. After World War II ended price controls and rationing, independent grocers in and around Newark, New Jersey found themselves outgunned by chains like A&P, which could buy in volume and undercut them on price. A Del Monte Foods sales representative, watching the same small grocers struggle store by store, suggested they stop competing with each other and start buying together. On December 5, 1946, a group of independent grocers formalized that idea into Wakefern Food Corp., each putting up $1,000. The name is an acronym built from founders' surnames, among them Kesselman, Aidekman, and Fern, according to [Wikipedia's entry on Wakefern](https://en.wikipedia.org/wiki/Wakefern_Food_Corporation) and the founding account preserved by [FundingUniverse](https://www.fundinguniverse.com/company-histories/wakefern-food-corporation-history/). It nearly didn't survive its own first few years. Manufacturers considered the new cooperative too small and too undercapitalized to extend credit, until a personal connection got Campbell's Soup to take the risk. The founders ran the operation out of a 1,000-square-foot Newark storefront, splitting deliveries and bookkeeping among themselves and using their own cars to move product. Some members had to sell items at a loss just to stay price-competitive with the chains they were trying to outrun. It was a cooperative held together by necessity, not capital. ## The bet that made the name For its first five years the group operated as an unbranded buying pool. In 1951 the founders took a real gamble: they pooled money for a single newspaper advertisement, priced at $1,500, to launch a unified brand across their stores. Only nine members signed on for that first ad. It worked. Within a year, membership had passed 50 stores. The brand was ShopRite, and it gave a scattered group of family grocers something a single-owner chain already had for free: one name shoppers could trust across every location. That October, the co-op also put out its first private-label product, a batch of Halloween doughnuts, seeding what would grow into a full store-brand program. By 1956, the cooperative had grown to more than 70 stores and $100 million in annual sales. Two years later, when the rest of the grocery industry was chasing customers with trading stamps, Wakefern's members went the other direction and cut retail prices ten percent, betting on being the low-price leader instead. It cost them in the short run and paid off over the long one, cementing a price-first identity ShopRite still trades on. ## The break that should have killed it The cooperative's sharpest test came in 1968. Supermarkets General Corporation, formed by a merger of two of Wakefern's largest members controlling 65 stores, pulled out entirely and relaunched those locations under its own name: Pathmark. Overnight, Wakefern lost roughly half its volume and its foothold in the entire Long Island market. For a cooperative built on shared buying power, losing its two biggest members at once should have been fatal. It wasn't. The members who stayed leaned into expansion rather than retrenchment, and the co-op rebuilt its volume within about three years, per [Wikipedia's account of ShopRite's history](https://en.wikipedia.org/wiki/ShopRite). ## The unique insight: the one that left didn't make it Here's the detail that doesn't show up on either company's About page. Pathmark, the chain that walked away from the cooperative to go it alone as a conventional corporate operator, spent the next four decades on a very different track than the one it left. It grew fast in the 1970s, pioneered 24-hour stores in 1972, and became a top-ten U.S. chain by the early 1980s. Then it filed for Chapter 11 in 2000, was bought by A&P in 2007, and when A&P itself collapsed into bankruptcy in 2015, every remaining Pathmark store was closed or sold off within months, according to [Wikipedia's history of Pathmark](https://en.wikipedia.org/wiki/Pathmark). Wakefern, the slower, messier, member-governed cooperative that Pathmark's founders judged not worth staying in, is still standing eighty years after seven grocers each wrote a $1,000 check. That is not a coincidence of timing. It is what the cooperative structure is actually built to do: spread risk across independent owners with skin in their own stores, rather than concentrate it in a single balance sheet that one bad decade can break. Wakefern formalized this with a "one member, one vote" governance rule adopted in the 1970s, giving a member with two stores the same say as one with twenty, which kept the group's incentives aligned even as individual members grew unevenly. ## What ShopRite looks like today The cooperative now counts roughly four dozen member companies operating a few hundred ShopRite stores across the Mid-Atlantic and Northeast, alongside banners like Fresh Grocer and PriceRite that joined through member acquisitions over the years. Wakefern itself runs central distribution, warehousing, and one of the region's larger private trucking fleets, functions no single family-owned grocer could justify alone but that make sense split eighty ways. ShopRite introduced its Price Plus loyalty card in 1989, launched online grocery ordering in 1999, and has kept building private-label lines since that first batch of doughnuts in 1951. None of it looks like a Silicon Valley growth story. It looks like what it is: seven grocers who couldn't beat A&P separately, so they didn't try to. Retail's biggest advantage rarely photographs well. It lives in warehouses, delivery schedules, and who owns which register, not in a mission statement, and Wakefern's eighty years are a reminder of how much of retail's staying power comes from getting that unglamorous machinery right. --- # Server-side rendering on Unilog: making product data visible to Google and AI Source: https://www.anglera.com/blog/unilog-ssr-rendering Published: 2026-06-13 Platforms: unilog ![Server-side rendering on Unilog: making product data visible to Google and AI](/og/hero-unilog-ssr-rendering.jpg) Distributors running Unilog's CX1/CIMM2 platform usually get the base product template server-rendered, but real-world sites layer in search widgets, personalization overlays, and custom theme scripts that can quietly push attribute data into a client-side render pass. The distinction matters more than it used to: search engines eventually run JavaScript, but the major AI crawlers currently don't render it at all, so whatever isn't in the first HTML response may never reach either audience. Here's how to check what your Unilog instance is actually shipping, and how to fix it if the answer is "not enough." ## How Unilog product pages typically render CX1/CIMM2 is built on a traditional server-rendered architecture: product, category, and brand pages resolve through numeric-ID routes (for example `/2871737/product/mcguckin-adt5000nav-sm` or `/52247781/brand/elkhart-products/`), which is a routing convention typical of server-templated .NET applications rather than a client-side single-page app. In the default setup, the PIM-managed title, description, specifications, and images that live in CIMM2's product content module get compiled into the HTML template on the server before the response goes out — no browser JavaScript execution required to see them. Where this gets muddied is in per-implementation customization, which is common on Unilog because most distributor sites run custom themes and bolt-on modules: - **Search and faceted navigation widgets.** Unilog's own materials describe using on-site search and facets to "auto-generate a massive number of SEO-impactful dynamic pages" for category and brand landing pages. If that facet/search layer is a third-party JavaScript widget (Unilog integrates with providers like HawkSearch) rendering results client-side after the page loads, those generated pages can look empty to anything that doesn't execute JS. - **Personalization and pricing overlays.** Customer-specific pricing and inventory pulled from an ERP or POS system is often fetched via an AJAX call after initial page load, which is appropriate for account-gated pricing — but if the underlying spec/attribute block is bundled into that same deferred call instead of the base template, it disappears along with the pricing. - **Custom theme scripts.** Agencies and internal teams frequently inject descriptions, spec tables, or badges via tag-manager scripts or theme-layer JavaScript for design reasons. Convenient to build, invisible to non-rendering crawlers. Because rendering behavior depends on your specific theme, template overrides, and installed widgets, don't assume based on the platform name alone — verify your own instance using the steps below. ## Why this matters for crawlers and AI agents differently Google documents a three-phase pipeline for JavaScript-heavy pages: crawl, render, index. Googlebot fetches the URL, queues it for rendering, and only when Chromium executes the JavaScript does the rendered HTML get parsed and indexed — and Google is explicit that "server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript" ([Google Search Central, JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)). Rendering is also queued separately from crawling, so JS-dependent content can be discovered and indexed on a real delay relative to your server response. The gap is starker for AI agents. Independent traffic analysis published by Vercel found that none of the major AI crawlers — OpenAI's GPTBot and OAI-SearchBot, Anthropic's ClaudeBot, Meta-ExternalAgent, ByteDance's Bytespider, and PerplexityBot — currently render JavaScript; they fetch and parse raw HTML only, occasionally downloading a JS file without executing it ([Vercel, "The rise of the AI crawler"](https://vercel.com/blog/the-rise-of-the-ai-crawler)). Practically: if your spec table, materials, dimensions, or compliance attributes only exist after a client-side render pass, Googlebot will eventually see them (with a lag), but ChatGPT, Claude, and Perplexity answering a buyer's sourcing question will not — they see whatever arrived in the initial response and nothing more. ## What "good" looks like on a Unilog page The base, non-personalized product content — title, long description, attributes/specs, category and brand context, images with real `src` URLs and alt text, and identifiers (MPN, UPC/GTIN, manufacturer part number) — should all be present in the raw HTML the server returns, before any script runs. It's fine, and often correct, for volatile data like live inventory count or account-specific net pricing to arrive via a follow-up call; that data changes per buyer and per second, and isn't the kind of thing you want cached in a crawl anyway. The failure mode to avoid is bundling static attribute content into that same deferred call for convenience. It's also worth adding `Product` structured data server-side, since Unilog's default templates don't guarantee schema markup out of the box: ```json { "@context": "https://schema.org", "@type": "Product", "name": "Elkhart 3/4 in. Copper Pressure Fitting", "sku": "EP-10142334", "mpn": "10142334", "description": "Wrot copper pressure coupling for potable water and HVAC piping systems.", "brand": { "@type": "Brand", "name": "Elkhart Products" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "availability": "https://schema.org/InStock" } } ``` ## How to validate Compare the raw server response against the fully rendered DOM to find the gap: ```bash # 1. What the server actually sends, no JS executed curl -s -A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" \ https://yourdomain.com/12345/product/example-sku | grep -i "specifications\|description" # 2. Compare against Googlebot's own view via Search Console # GSC > URL Inspection > "View Crawled Page" > Screenshot / HTML tabs ``` Then check view-source (`view-source:https://yourdomain.com/...`, which shows the unexecuted HTML) against the browser's rendered DOM in DevTools (Elements panel, which shows the post-JS state). If a spec table or description appears in DevTools but not in view-source or the curl output, that content is client-rendered only. Run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm both the rendered HTML and any `Product` schema are actually detected, and re-check after any theme or search-widget change — a redesign or new merchandising widget can silently move content from server to client rendering. **Verified as of July 2026:** platform-specific behaviors (default template rendering, search widget integrations, theme customization options) are based on Unilog's public product materials and case-study sites; because Unilog doesn't publish a formal rendering specification and behavior varies by theme and installed modules, treat the checks above — not the platform name — as the source of truth for your own site. None of this replaces the harder problem: having complete, accurate attributes, specs, and identifiers to put on the page in the first place. That's the side Anglera works on — continuously enriching product data in your PIM or feed so the fields above (specs, use-cases, identifiers) actually exist and stay current, without requiring a rip-and-replace of Unilog. Once that data is enriched, the rendering checks in this guide are how you confirm it's actually reaching buyers and AI agents, not just sitting in the PIM. --- # SiteOne Landscape Supply: Rolling Up a $25 Billion Market Source: https://www.anglera.com/blog/siteone-distributor-playbook Published: 2026-06-13 Industries: building-materials ![SiteOne Landscape Supply: Rolling Up a $25 Billion Market](/og/hero-siteone-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* SiteOne Landscape Supply landed at #10 in building materials on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual ranking of North America's largest wholesale distributors, on 2025 revenue of $4.7 billion. That placement undersells what SiteOne actually is: the only company that has ever tried to build a national footprint in landscape supply, in an industry where every other competitor is regional at best. ## An industry with no other national player Landscape supply is a roughly $25 billion market in the U.S. and Canada, and it is [still highly fragmented](https://www.fool.com/coverage/filings/2026/02/03/inside-a-usd4-1-million-bet-on-a-usd25-billion-market-why-siteone-s-680-branch-scale-matters-now/) — hundreds of independent yards and regional distributors selling irrigation parts, fertilizer, grass seed, hardscapes, and nursery goods to the crews who design and maintain outdoor spaces. SiteOne now runs about 680 branches and four distribution centers across 45 U.S. states and six Canadian provinces. No competitor operates at a fraction of that scale. That is the entire strategy in one sentence: be the only national option in a category built for local operators, and let density do the rest of the work. Density matters more here than in most distribution categories because the product itself is bulky, perishable, or both. Mulch, pavers, and bagged goods do not travel well or cheaply. A landscaper needs a yard close enough to load a truck twice a day during peak season. SiteOne's answer was never a flagship superstore model — it was to blanket the map with branches small enough to be useful within a 20-minute drive of a job site, then stock all 100,000-plus SKUs behind a common purchasing and technology backbone so a national account manager can quote the same irrigation controller in Tucson and Toronto. ## Built by a roll-up, now running one Here is the part of the story that does not show up on the company's About page. SiteOne itself is a product of consolidation. It began as John Deere Landscapes, the distribution arm Deere & Co. had assembled through its own acquisitions, until [Clayton, Dubilier & Rice bought a 60% stake for $465 million in October 2013](https://en.wikipedia.org/wiki/Clayton,_Dubilier_%26_Rice), with Deere retaining 40%. The business was renamed SiteOne and went public on the NYSE in May 2016 under the ticker SITE, [according to the company's public filings](https://stockanalysis.com/stocks/site/). In other words, SiteOne was itself somebody's roll-up before it became the industry's. That history matters because SiteOne's current growth engine is the mirror image of its own origin. Instead of one large financial buyer assembling scattered assets, SiteOne is now the buyer of record for dozens of small, often multi-generation family businesses every year — the closest thing the landscape supply industry has to an institutional succession plan. Recent deals show the pattern: [Reinders](https://www.stocktitan.net/news/SITE/), a fifth-generation family distributor with a dozen locations across Wisconsin, Michigan, Illinois, Indiana, Kansas, and Minnesota, joined SiteOne in March 2026. Bourget Flagstone, a hardscapes distributor serving the Santa Monica and Malibu markets, joined in January 2026. CC Landscaping Warehouse Plus, a nursery and bulk products distributor, joined in [November 2025](https://www.businesswire.com/news/home/20251117653096/en). None of those deals moves the revenue needle much on its own. That is the point. SiteOne's M&A machine is not built for splashy megadeals; it is built to be the default exit for an aging owner-operator who has spent thirty or forty years building a regional yard and has no obvious successor. A family business that might otherwise close, sell to a generic private-equity roll-up, or get picked apart by liquidation instead keeps its branch, its local reputation, and often its name, while plugging into SiteOne's purchasing scale and logistics network. The company that was assembled by financial engineers in 2013 has turned around and become the preferred landing spot for the exact kind of founder-owned business that assembled it in the first place. ## What the growth targets say about the next decade SiteOne has told investors it is targeting [$7 billion to $8 billion in net sales and $900 million to $1 billion in adjusted EBITDA by 2030](https://stockanalysis.com/stocks/site/), against 2025 revenue of roughly $4.7 billion. Closing that gap requires both organic same-branch growth and a steady cadence of tuck-in acquisitions, which is why the company keeps recruiting deal-sourcing talent alongside branch managers — a March 2026 leadership change brought in a new EVP of strategy and development to keep the acquisition pipeline moving. The tension worth watching is margin discipline while the base gets bigger. Buying dozens of small distributors a year means absorbing dozens of different back-office systems, pricing habits, and local cultures every year, indefinitely. SiteOne's own reporting shows gross margin expanding even as branch count climbs, evidence the integration playbook works, but the math only holds if each new tuck-in gets folded into the common systems fast enough to avoid becoming permanent overhead. Scale is the moat here, but scale acquired one family business at a time is also the hardest kind to keep clean. Distribution rarely looks glamorous from the outside, but SiteOne's growth is really a bet on the unglamorous machinery underneath it: a shared catalog, a common branch playbook, and enough consistent product data to make thousands of small acquired yards behave like one company. This is one entry in Anglera's Distributor Playbooks series, profiling the operators shaping how the channel actually works. --- # The office supplies attributes shoppers filter on — and most catalogs miss Source: https://www.anglera.com/blog/office-supplies-attributes Published: 2026-06-13 Industries: office-supplies ![The office supplies attributes shoppers filter on — and most catalogs miss](/og/hero-office-supplies-attributes.jpg) A shopper filtering for "high-yield black toner" or asking an AI agent to "find a compatible cartridge for my HP LaserJet Pro" is running a structured query against structured data. If the attribute isn't there, the product isn't either. Office supplies is a category where the differentiators are almost entirely spec-level, not descriptive, which makes it especially punishing when catalogs skip them. ## Why office supplies breaks on missing attributes more than most categories Apparel shoppers browse. Office supplies shoppers search with intent: a specific printer model, a specific ring size, a specific paper weight. That intent maps directly onto facets. When an attribute is blank, the product doesn't rank lower in that facet — it disappears from it entirely, because faceted search and AI shopping agents both filter on structured fields, not on adjectives buried in a title. The same logic applies to AI answers. When someone asks ChatGPT, Gemini, or Google's AI Mode to recommend a toner cartridge for a specific printer, the model is reasoning over whatever structured attributes it can extract from the page or feed — compatible models, page yield, color, cartridge type. A title like "Premium Toner Cartridge — Black" gives an AI shopping agent nothing to match against a query like "ask an AI to recommend a high-yield toner for my Brother HL-L2350DW that won't void the warranty." No compatibility field, no yield number, no OEM/compatible flag — no recommendation. ## The attributes that actually carry office supplies Every office supplies subcategory has its own small set of load-bearing attributes. Miss these and the product is functionally invisible in filtered search, regardless of how good the copy is. | Subcategory | Attributes shoppers filter on | |---|---| | Toner/ink cartridges | Page yield, cartridge type (ink vs. toner), color, compatible printer model(s), OEM part number, OEM vs. compatible/remanufactured | | Copy/printer paper | Sheet size, weight (lb/gsm), brightness rating, sheets per ream, recycled content % | | Pens/markers | Ink type (gel, ballpoint, dry-erase), tip/point size, color, pack count | | Staplers/staples | Staple gauge, sheet capacity, throat depth | | Binders/filing | Ring size, ring style (D-ring vs. round), spine width, sheet capacity | | Labels | Label size, sheets per pack, adhesive type, printer compatibility (laser/inkjet) | None of these are marketing language. They're the fields a facet filter or an AI agent's structured-data parser is built to read. A "premium" or "professional-grade" toner cartridge tells a shopper nothing about whether it fits their printer. ## Worked example: a toner cartridge, raw feed vs. enriched Here's what a typical raw supplier feed looks like for a toner cartridge, next to what filtered search and AI agents actually need. **Raw feed (as received from supplier):** | Field | Value | |---|---| | Title | Black Toner Cartridge | | Description | High quality replacement toner, long lasting | | Brand | (blank) | | Category | Office Supplies / Ink and Toner | | Price | $34.99 | **Enriched (Anglera-normalized):** | Field | Value | |---|---| | Title | Compatible Black Toner Cartridge — HP 410X Replacement (CF410X) | | Cartridge type | Toner | | Color | Black | | Page yield | 6,500 pages at 5% coverage (ISO/IEC 19798) | | Compatible printer models | HP Color LaserJet Pro M452, M377, MFP M477 series | | OEM/compatible status | Compatible (non-OEM) | | OEM equivalent part number | HP CF410X | | Brand | Generic-brand name | | Category | Office Supplies / Ink and Toner / Laser Toner / Compatible Cartridges | The raw version can't answer "will this fit my printer," "how many pages will I get," or "is this OEM or compatible" — the three questions every toner buyer actually asks. The enriched version answers all three in structured fields a facet filter and an AI agent can both parse. Page yield specifically needs to be normalized against the actual test standard, not just copied from a supplier's marketing claim. Page yield for laser cartridges is measured under [ISO/IEC 19752](https://www.ldproducts.com/blog/what-is-page-yield/) at 5% page coverage — a standardized text-document benchmark that makes yields comparable across brands. A number without that context, or one that's inconsistent with the standard, is a data-quality gap even if it's technically present. The OEM-vs-compatible distinction matters just as much. [Compatible cartridges are typically priced 50-70% below OEM equivalents](https://www.tonerbuzz.com/blog/toner-cartridges-genuine-oem-vs-compatible-vs-remanufactured/) for the same yield and spec, which is exactly the kind of comparison shoppers and AI agents are trying to make when they filter or ask. If that field is missing, the product can't surface in either an "OEM only" filter or a "cheapest compatible option" query. ## Structuring for both facets and feeds Google's own product data guidance backs this up outside the office supplies niche: brand, GTIN or MPN, and category-specific attributes like color and size are required or conditionally required for products to appear correctly in [Merchant Center listings](https://support.google.com/merchants/answer/7052112). Office supplies has its own version of that requirement set — page yield and printer compatibility function the same way brand and GTIN do elsewhere. If they're not structured as discrete, normalized fields (not sentences inside a description), they don't count as present for filtering purposes. The fix isn't rewriting descriptions — it's separating spec data into its own normalized fields, cross-referencing against known standards (ISO page yield, OEM part numbers), and keeping compatibility lists current as printer lines change. Anglera plugs into whatever PIM or feed a retailer already runs, scores each SKU against the attribute set its category actually needs, and gap-fills missing fields like page yield, cartridge type, and printer compatibility from source data rather than guesswork. Your PIM stores the data. Anglera does the work of making sure the fields that decide whether a toner cartridge shows up in a filter or an AI answer are actually there. --- # Kodiak Building Partners: The Roll-Up That Got Rolled Up Source: https://www.anglera.com/blog/kodiak-building-partners-distributor-playbook Published: 2026-06-13 Industries: building-materials ![Kodiak Building Partners: The Roll-Up That Got Rolled Up](/og/hero-kodiak-building-partners-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Kodiak Building Partners spent fifteen years perfecting a strategy: buy local building-materials dealers, leave their names on the sign, and let each one keep running like nothing changed. It worked well enough to land Kodiak at #13 on [Modern Distribution Management's 2025 Top Distributors](https://www.mdm.com/top_distributors) list for building materials, on $3.0 billion in 2024 revenue. It does not appear on MDM's 2026 Top Distributors lists. In early 2026, the exact playbook Kodiak had run for a decade and a half got run on Kodiak itself. ## A roll-up that refused to look like one Steve Swinney co-founded Kodiak in 2011 in Englewood, Colorado, with a bet that cut against the usual consolidation script. Most roll-ups buy small dealers and fold them into one national name, chasing brand recognition and a single ERP. Kodiak did the opposite: it bought family-run lumberyards, door shops, millwork houses and drywall suppliers, and left the local identity alone. The pitch to a seller was simple. You get liquidity and back-office scale, your customers never notice a change of ownership, and your name stays on the truck. Over time that added up to a genuinely large distributor hiding behind dozens of small ones. By 2026, [QXO's own transition page for the business](https://go.qxo.com/kodiak) listed more than three dozen former Kodiak brands still operating under their own names, among them Albeni, American Builders Supply, AO Doors, Barnsco, Barton, Builders Alliance, Christensen, Direct Lumber, Gross Yowell, Jenkins, Ponderosa, San Antonio, Simonson, Sunrise, Western and Zarsky. Most contractors buying lumber from Barton or windows from AO Doors likely never knew they were customers of the same $3 billion company. ## Concentration where the growth was Kodiak's footprint wasn't spread evenly. According to [Benzinga's coverage of the sale](https://www.benzinga.com/m-a/26/02/50537881/qxo-to-acquire-kodiak-for-2-25-billion-builds-bigger-runway-for-earnings), roughly 40 percent of the company's 2025 revenue came out of Florida and Texas alone, the two fastest-growing homebuilding markets in the country. That's not an accident of geography. It's the acquisition strategy showing its hand: Kodiak and its private equity backer, Court Square Capital Partners, weren't buying dealers at random. They were buying density in Sun Belt and Mountain West markets where housing starts, and the lumber, doors, windows and concrete supply that go with them, were growing fastest. A roll-up built on preserving local brands still needs a portfolio thesis behind which brands it buys, and Kodiak's was population growth. ## The insight: the roll-up got rolled up Here's the part of the story that makes Kodiak worth studying rather than just noting. On February 11, 2026, [QXO agreed to acquire Kodiak](https://www.housingwire.com/articles/qxo-kodiak-building-partners/) for roughly $2.25 billion, structured as $2.0 billion in cash plus 13.2 million shares of QXO stock (subject to a repurchase option) and rollover equity for Kodiak employees, according to [Insider Monkey's reporting on the deal](https://www.insidermonkey.com/blog/heres-what-qxo-incs-qxo-acquisition-of-kodiak-building-partners-means-for-shareholders-1736513/). Swinney himself stayed on, tapped to lead the new lumber and building materials division inside QXO. The deal closed that April. QXO is Brad Jacobs' latest consolidation vehicle, already the largest publicly traded distributor of roofing and waterproofing products in North America after absorbing Beacon Roofing Supply in 2025, and it moved to acquire TopBuild for roughly $17 billion just weeks after closing Kodiak. The Kodiak deal was explicitly framed as market expansion: it pushed QXO's addressable market past $200 billion and gave the roofing-focused company its first real foothold in lumber and general building materials, with an eye on selling more categories to the large homebuilders both companies already served. Strip away the tickers and the math, and the pattern underneath is the interesting part. Kodiak built a $3 billion distributor by buying dozens of smaller distributors and running them as a quiet federation under one balance sheet. QXO just did the same thing to Kodiak, one level up, at ten times the scale, with the same logic: shared procurement, shared technology, shared capital, and local operators left mostly alone to run what they know. The roll-up that built its whole identity on absorbing others without erasing them became, in turn, a single line item absorbed by a bigger one. Kodiak's playbook didn't fail. It got out-scaled by an identical playbook with a larger checkbook behind it. ## What it says about the moment There's a real tension sitting inside that story, and it's worth naming rather than glossing over. The federation model that let Kodiak grow fast and keep local trust intact is the same model that made Kodiak itself an easy, clean acquisition: no messy rebrand to unwind, no customer relationships tied to a national name that a buyer would have to protect. Scale built through preserved local identity is portable. That's a feature for a buyer and, it turns out, a vulnerability for the seller once someone bigger decides the category is worth consolidating further. For a private equity owner like Court Square, that portability is exactly the exit thesis: build something a strategic acquirer with a bigger platform can bolt on cleanly, then sell at the moment consolidation appetite peaks. Building materials distribution is in one of those moments right now, with a single public acquirer moving through roofing, lumber and building products in back-to-back multibillion-dollar deals inside of three months. Kodiak's own history explains, better than any press release could, exactly why it was buyable. This series exists because distribution's real advantage rarely shows up on a homepage. It's in the branch network nobody notices, the catalog that stayed accurate through a change of ownership, and the local team that kept answering the phone the same way the week the sign changed. --- # GMS Inc: The Wallboard Roll-Up That Got Rolled Up Source: https://www.anglera.com/blog/gms-distributor-playbook Published: 2026-06-13 Industries: building-materials ![GMS Inc: The Wallboard Roll-Up That Got Rolled Up](/og/hero-gms-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* GMS Inc. landed at #9 in building materials on [Modern Distribution Management's 2025 Top Distributors list](https://www.mdm.com/top_distributors), the annual accounting of North America's largest distributors, on the strength of roughly $5.5 billion in trailing revenue. It was GMS's last appearance on the list; the company does not chart on MDM's 2026 Top Distributors lists. The ranking captured a company at the exact moment its fifty-year identity flipped. For half a century GMS grew by buying other people's businesses. In the summer of 2025, it became the business somebody else bought. ## A single Atlanta yard, then fifty years of tuck-ins GMS started in 1971 as one drywall distribution point in Atlanta, built by two partners around a simple bet: local ownership and service would beat the big suppliers on responsiveness, even if not on price. Private equity firm AEA Investors backed the company's expansion in the 2000s, and GMS went public on the NYSE in May 2016, pricing 7 million shares at $21 and raising $154 million on the back of $1.7 billion in trailing revenue, according to [the company's own history](https://www.gms.com/about-us). The IPO didn't slow the buying. By its own count, [GMS completed more than 50 acquisitions since 2014](https://www.gms.com/acquisitions) alongside a steady cadence of greenfield branch openings, stitching together a national network out of the same kind of independent, family-run wallboard and ceilings yards it had started as. By 2025 that network spanned more than 300 distribution centers and nearly 100 tool sales, rental, and service locations across more than 40 U.S. states and five Canadian provinces, under CEO John Turner Jr. ## Why the model worked: density plus a second business line Wallboard is a brutal product to move. It is heavy, easily damaged, and delivered to jobsites on tight schedules with boom trucks, which rewards a distributor with a branch close to every job over one with a bigger warehouse far away. GMS's answer was never to out-build the category on any single mega-facility. It was to keep buying density: acquire the local yard that already had the relationships and the trucks, fold it into national purchasing and back-office systems, and let it keep operating under a name contractors already trusted. The tool rental and sales business is the less obvious half of the model. Nearly 100 of those locations sell and rent the drills, lifts, and fastening tools contractors need on the same jobs where they're buying wallboard and steel framing, turning GMS into a supplier of both the material and the means of installing it. It is a smaller, higher-margin business layered onto a low-margin one, and it is the kind of adjacency a company only builds once it has enough branches to make the rental fleet worth deploying. ## Summer 2025: the buyer becomes the target On June 18, 2025, QXO Inc., the building-products roll-up run by Brad Jacobs and fresh off an $11 billion acquisition of Beacon Building Products, sent GMS's board an unsolicited proposal to buy the company for $95.20 per share in cash, a deal [QXO valued at roughly $5 billion](https://www.businesswire.com/news/home/20250618673043/en/QXO-Proposes-to-Acquire-GMS-for-%2495.20-Per-Share-in-Cash) and pursued whether or not GMS's board cooperated. GMS did not have to accept a hostile process to get a deal. On June 30, twelve days later, it signed a friendly agreement to be acquired instead by SRS Distribution, the professional-contractor distribution arm Home Depot had itself bought for [$18.25 billion in June 2024](https://ir.homedepot.com/news-releases/2024/06-18-2024-153031934) to widen its addressable market toward roofing, landscaping, and specialty trades. The SRS offer beat QXO's outright: $110 per share, an enterprise value of about $5.5 billion including debt. The tender closed fast. By September 4, 2025, [79.5% of GMS's outstanding shares had tendered](https://ir.homedepot.com/news-releases/2025/09-04-2025-133535262), and GMS became a wholly owned subsidiary of Home Depot, absorbed into SRS's growing multi-category platform. ## The insight GMS spent fifty years perfecting the exact playbook that made it a target. Buying up fragmented, independently owned wallboard yards is what built the scale, the branch density, and the balance sheet that made GMS worth $5.5 billion to somebody else. The same consolidation logic that GMS ran on smaller players for a decade got run on GMS itself, twice, within the same two weeks, by two buyers who had each just finished (or were finishing) a bigger version of the same trade: QXO off Beacon, Home Depot off SRS. Being the best-run consolidator in a category doesn't exempt a company from consolidation. It just moves the company from one side of the table to the other once it gets big enough to matter. | Milestone | Date | |---|---| | Founded (single Atlanta location) | 1971 | | NYSE IPO | May 2016 | | QXO unsolicited proposal ($95.20/share) | June 18, 2025 | | Home Depot/SRS agreement ($110/share) | June 30, 2025 | | Acquisition completed | September 4, 2025 | What GMS built survives the ownership change even if the ticker doesn't: the branch names, the local sales relationships, and a tool-rental business that only makes sense at scale. Home Depot's stated rationale, cross-selling synergies between SRS and GMS across a wider building-products catalog, only works if the underlying branch network keeps behaving like GMS's always did. Distributors like GMS win or lose on unglamorous machinery: which branch has the SKU today, which yard can price a delivery correctly, whose data tells a buyer where the truck actually is. That machinery outlasts whoever signs the acquisition papers, which is exactly why it's worth studying on its own terms. --- # Foundation Building Materials: A Roll-Up Lowe's Bought for $8.8B Source: https://www.anglera.com/blog/fbm-distributor-playbook Published: 2026-06-13 Industries: building-materials ![Foundation Building Materials: A Roll-Up Lowe's Bought for $8.8B](/og/hero-fbm-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Foundation Building Materials lands at BM #6 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for building materials, up from #12 in 2025, with $6.5 billion in pro forma FY2024 revenue. That ranking is already out of date in the most consequential way possible: by the time it published, FBM had been sold. Its fourteen-year run is less a case study in operating a distribution network than in engineering one to be handed off, again and again, until the buyer stopped being a private equity fund and became a home improvement retailer. ## A company built to change hands Ruben Mendoza founded FBM in 2011 in Santa Ana, California, with a simple thesis: the interior building products trade (drywall, metal framing, acoustic ceilings, the unglamorous stuff that goes up before paint) was fragmented enough to consolidate fast. Independent, often family-owned wallboard and ceiling distributors dotted every metro market. FBM's play was to buy them, standardize their operations under one brand, and keep buying. It worked at a pace few building-products distributors ever hit. By the deal disclosed when Lowe's announced its acquisition, FBM had posted roughly 25% revenue CAGR and 30% adjusted EBITDA CAGR from 2019 to 2024, according to [Lowe's own announcement](https://corporate.lowes.com/newsroom/press-releases/lowes-announces-agreement-acquire-foundation-building-materials-leading-north-american-distributor-interior-building-products-08-20-25). That kind of growth curve in a mature, low-margin trade is almost never organic. It is acquisitions, stacked on acquisitions, on a platform designed from day one to look attractive to the next owner. ## Four owners in fourteen years That is the part of FBM's story that a "how they win" profile would skip past and a "how they got here" profile has to sit with. FBM has changed hands more times than most distributors change ERP systems. | Year | Event | |---|---| | 2011 | Ruben Mendoza founds FBM in Santa Ana, CA | | 2015 | Lone Star Funds acquires FBM | | 2017 | FBM goes public on the NYSE (ticker FBM) | | 2021 | American Securities takes FBM private for roughly $1.4 billion, or $19.25/share | | 2024 | Clayton, Dubilier & Rice joins as a co-investor | | 2025 | Lowe's acquires FBM for $8.8 billion, closing October 9 | Two things stand out. First, Mendoza stayed through all of it. Founders who sell to private equity, take the company public, then get taken private again rarely remain in the operating seat — most cash out at the first or second turn. Mendoza is staying on again, running FBM as a standalone division inside Lowe's, according to [Lowe's completion release](https://corporate.lowes.com/newsroom/press-releases/lowes-completes-acquisition-foundation-building-materials-10-09-25). That continuity is the actual reason the growth compounded across four ownership structures instead of stalling at each handoff, the way roll-ups often do when new owners swap out management. Second, the price kept climbing. American Securities paid about $1.4 billion for FBM in 2021. Four and a half years later, Lowe's paid $8.8 billion — 13.4x adjusted EBITDA, per the deal terms. Whatever else changed, the underlying asset (branches, contractor relationships, a multi-trade catalog) got dramatically more valuable to a buyer outside the distribution industry than it apparently was to buyers inside it. ## One catalog, four trades, one truck The operating model behind those numbers is straightforward and worth naming plainly, because it explains why FBM was worth buying rather than replicating. Most specialty building-products distributors specialize in one trade: wallboard, or steel framing, or acoustic ceilings. FBM sells all of them, plus doors, hardware, and insulation, out of the same 370-plus branches to the same commercial and residential contractors, according to [MDM's coverage of the deal](https://www.mdm.com/news/top-distributor-sectors/building-materials-construction/lowes-completes-8-8b-fbm-acquisition-in-under-2-months/). A drywall contractor who also needs track and stud, or a general contractor coordinating ceiling and door packages on the same job, can source it in one call instead of four. That bundling is what let FBM absorb dozens of single-trade regional players without cannibalizing them: each acquisition added a trade or a territory to a catalog contractors were already ordering from. ## The insight: the buyer isn't a distributor anymore Here is the detail that matters more than the price tag. FBM's three prior sales, to Lone Star, to the public markets, to American Securities, were all financial buyers or a stock listing. Lowe's is neither. It is a big-box retailer buying a wholesale distribution platform outright, its second major distribution acquisition in a year after Artisan Design Group, specifically to chase what CEO Marvin Ellison called a $250 billion addressable market in large Pro contractor spend. That is a different kind of buyer making a different kind of bet: that owning the distribution layer, not just the store network, is how a retailer wins professional customers away from independent distributors and each other. For FBM's former private-equity owners, that was the exit. For the rest of the building-materials channel, it is the more interesting signal, a big-box retailer deciding the fastest way to compete for Pro wallet share is to stop selling to a distributor and become one. It is worth noting MDM's 2025 ranking captured FBM's reported $3.0 billion 2024 revenue, while Lowe's cited a larger $6.5 billion pro forma figure in its own announcement, a reminder that a roll-up's "revenue" depends heavily on which trailing acquisitions get folded in and when. Both numbers describe the same company; neither is wrong, and the gap between them is roll-up accounting in miniature. Every distributor on MDM's list runs on the same unglamorous infrastructure: branches that stock the right SKU, catalogs that price it correctly, and data that tells a buyer what actually moved. Foundation Building Materials just proved that infrastructure is valuable enough for a retailer, not just a rival, to pay for outright. --- # Dollar Tree: The Discipline Behind a Single-Price Empire Source: https://www.anglera.com/blog/dollar-tree-retailer-playbook Published: 2026-06-13 ![Dollar Tree: The Discipline Behind a Single-Price Empire](/og/hero-dollar-tree-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Dollar Tree lands at #29 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, with $18.93 billion in 2025 U.S. retail sales. That figure covers the Dollar Tree banner alone, which is itself the tell: this is a company whose defining strategic move of the past two years was becoming smaller on purpose. ## A Toy Store That Became a Five-and-Dime The roots go back to 1953, when K.R. Perry opened a Ben Franklin variety store in Norfolk, Virginia, that grew into K&K 5&10. In 1970, Perry, his son J. Douglas Perry, and Macon Brock launched K&K Toys, a mall-based chain that reached more than 130 East Coast locations. Toys built the balance sheet. They were not, however, the founders' last idea. In 1986, Doug Perry, Macon Brock, and H. Ray Compton incorporated a new venture in Virginia under the name Only $1.00, opening five stores across Georgia, Tennessee, and Virginia stocked largely with closeout merchandise, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/dollar-tree-stores-inc-history/). The first store to carry the Dollar Tree name opened on April 27, 1989, at Jessamine Mall in Sumter, South Carolina. ## The Pivot That Made the Format Work The early closeout model had an obvious flaw: closeout inventory is unpredictable, and a store built around a fixed price point cannot afford unpredictable inventory. Around 1991 and 1992, management remade the concept from the ground up, moving away from distressed goods toward a curated, repeatable assortment of basic merchandise, still capped at one dollar. That shift, more than the founding itself, is what turned a regional closeout chain into a format other retailers would spend decades trying to copy. The company sold K&K Toys to a Melville Corporation subsidiary in October 1991 to fund the pivot fully, then renamed itself Dollar Tree Stores in 1993, with Brock installed as CEO. Stores moved out of enclosed malls and into strip centers anchored by Kmart, Target, and Walmart, standardized around a roughly 3,200-square-foot footprint. Dollar Tree went public in 1995, the same year it opened its 500th store and crossed $300 million in sales, per [Wikipedia's account of the company's history](https://en.wikipedia.org/wiki/Dollar_Tree). ## Buying Growth, One Chain at a Time Through the late 1990s and 2000s, Dollar Tree grew as much by acquisition as by new construction: Dollar Bill$ in 1996, Only $One in 1999, Dollar Express in 2000, Greenbacks in 2003, and the 138-store DEAL$ chain in 2006. The company entered all 48 contiguous states by 2004, opened its 3,000th store in 2006 on the 20th anniversary of the $1 price point, made the Fortune 500 in 2008, and pushed into Canada in 2010 by acquiring Dollar Giant. Every one of those deals shared a logic: buy a chain, convert the stores, keep the price fixed. The 2015 deal broke that pattern entirely. ## The Family Dollar Gamble On July 28, 2014, Dollar Tree announced an agreement to acquire Family Dollar for $8.5 billion plus roughly $1 billion in assumed debt. Dollar General crashed the deal with a $9.7 billion counteroffer that August, but Family Dollar's board stuck with Dollar Tree, betting that a Dollar General combination would draw a harder antitrust fight. To close its own deal, Dollar Tree divested 330 stores to Sycamore Partners in June 2015 to satisfy regulators. The acquisition made Dollar Tree, Inc. a two-banner company running well over 14,000 stores, but it also imported Family Dollar's weaker real estate, thinner margins, and a supply chain that never fully merged with Dollar Tree's own. A decade later, the company reversed course. In March 2025 it agreed to sell Family Dollar for roughly $1 billion to Brigade Capital and Macellum Capital, a fraction of the original purchase price, and the divestiture closed on July 7, 2025. That is the unique thread in Dollar Tree's history that rarely makes the retrospectives: the company has now unwound a major diversification twice. It sold its founding toy business in 1991 to focus on the dollar format, then sold the largest acquisition in its history in 2025 to focus on that same format again. Both times, the strategic conclusion was identical: run one banner, at one kind of price point, extremely well, rather than two banners adequately. ## Breaking Its Own Price Cap The other defining move of the last five years happened inside the surviving banner. For 32 years, Dollar Tree held the line at $1, a promise baked into the name. CEO Michael Witynski announced in September 2021 that prices would rise, and by late 2021 most items across roughly 8,000 stores moved to $1.25. In 2024 the company went further, rolling out a "3.0" format with price points running up to $7 on select shelves, alongside a 2024 quarter that included a $1.71 billion loss, nearly 1,000 planned store closures, and the loss of a distribution center to a tornado in Marietta, Oklahoma. It also picked up leases and intellectual property from the collapsed 99 Cents Only chain that May, a reminder of how unforgiving the fixed-price category can be for operators who get the cost side wrong. Michael C. Creedon Jr., who joined as COO in 2022, became permanent CEO in December 2024 and is now running a company that looks, structurally, close to what it was before 2015: a single-banner, small-box variety retailer, just one with a higher price ceiling and a much longer memory of what happens when the format drifts. Retail history keeps circling back to the same unglamorous question: what belongs on the shelf, at what price, and how do you know before the customer tells you. Dollar Tree's answer has changed twice in forty years. The next installment in this series picks up that same question at a different retailer. --- # Clean data and complete data are not the same thing Source: https://www.anglera.com/blog/clean-data-is-not-complete-data Published: 2026-06-13 ![Clean data and complete data are not the same thing](/og/hero-clean-data-is-not-complete-data.jpg) Two words get used interchangeably in catalog projects, and the confusion is expensive. **Cleansing** and **enrichment** solve different problems, and a team that does one while believing it did both ends up with a catalog that looks finished and performs like it isn't. ## The difference in one line - **Data cleansing** fixes what already exists: it dedupes, corrects errors, standardizes "in" vs "inch," and reconciles conflicting values. - **Data enrichment** adds what was never there: missing attributes, a real description, lifestyle imagery, compatibility, compliance flags. Cleansing makes your data *consistent*. Enrichment makes it *complete*. A SKU can be flawlessly clean — one title, one category, no duplicates — and still be three attributes and a description short of getting found or chosen. ## Why clean-but-thin still loses Search engines, marketplaces, and AI answer engines rank on the presence of signal, not the tidiness of it. A spotless listing with five attributes loses to a complete one with thirty, every time. Cleansing removes noise; it doesn't add the signal that wins placement and answers the buyer's question. This is why "we already cleaned our data" so often precedes flat results. The cleanup was real. It just wasn't the part that drives discovery and conversion. ## Do them in the right order There is a sequence, and getting it backwards wastes effort: 1. **Cleanse first.** Enriching on top of a messy foundation just spreads bad data faster and wider. Standardize and reconcile before you build. 2. **Then enrich.** With a clean base, add the attributes, copy, media, and categorization that make each SKU complete and channel-ready. 3. **Then keep both running.** Catalogs drift. New SKUs arrive thin, suppliers change formats, channels add required fields. One-time projects decay; the teams that stay ahead run cleanse-and-enrich as a standing loop. ## Don't stop at clean If your catalog audit came back "clean," that's the starting line, not the finish. The question that actually predicts performance is *complete* — does each SKU carry enough structured, accurate detail to be found, compared, and chosen? That second step is the work [Anglera](/) does: gathering and filling what's missing, scored against your standards, and written back to your source of truth — so your catalog isn't just tidy, it's ready to sell. Clean is table stakes. Complete is the catalog that performs. --- # US LBM: The Building-Materials Roll-Up That Refuses to Rebrand Source: https://www.anglera.com/blog/us-lbm-distributor-playbook Published: 2026-06-12 Industries: building-materials ![US LBM: The Building-Materials Roll-Up That Refuses to Rebrand](/og/hero-us-lbm-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* US LBM lands at #5 in building materials on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), MDM's annual ranking of North America's largest distributors, on an estimated $6.8 billion in FY2025 revenue. It got there in sixteen years flat, starting from thirteen lumberyards in 2009. The company that took the fewest years to reach that spot is also the one that has spent the least effort making itself look like a single company. ## A holding company that never merges the signage Founder L.T. Gibson built US LBM in 2009 with sixteen locations across three states, according to the company's own account of the deal that brought in [Platinum Equity as a co-owner in 2023](https://www.platinumequity.com/news/platinum-equity-to-acquire-co-controlling-stake-in-us-lbm/). Sixteen years and, by the company's count, more than 80 acquisitions later, US LBM operates upward of 450 locations across 34 states. What it does not operate is a single brand. Walk US LBM's own list of "our brands" and you find Foxworth-Galbraith, Higginbotham Brothers, Lampert Lumber, Arrow Building Center, Bailey Lumber & Supply, Deering Lumber and dozens more, each keeping the name a contractor in that county has known for decades. This is the opposite of the standard roll-up move. Builders FirstSource spent years collapsing acquired yards under one national mark after its 2015 merger with ProBuild. US LBM went the other way on purpose: buy the yard, keep the sign, keep the counter staff, keep the relationships a builder built with a specific person in a specific town. The parent company supplies capital, purchasing scale and back-office systems; the local brand supplies the thing a national name can't fake, which is twenty years of a builder's superintendent trusting the guy who answers the phone. That is the unique bet worth naming plainly: US LBM's moat isn't the US LBM brand. It's the deliberate absence of one. In a category where scale usually means erasing the acquired company's identity, US LBM has built scale by preserving it, betting that a builder's loyalty to "Foxworth-Galbraith" survives a change of ownership better than loyalty to a logo they've never heard of. ## The acquisition list has quietly shifted from yards to plants Look at what US LBM has actually bought over the past two years and a second pattern shows up. The 2024-2025 acquisition run includes Milton Truss and Automated Products (truss manufacturing in Florida and Wisconsin), Better Built Truss in Northern California, Holderness Supplies (an Arizona truss plant), and a run of door-and-window specialists: Nix Door and Hardware, Gregory Door & Window, Old Mission Windows, XO Windows. These aren't lumberyards. They're manufacturing capacity for the components builders can least substitute on short notice — engineered trusses cut to a specific house plan, doors and windows sized to a specific opening. That's a different kind of moat than branch count. A distributor that only resells lumber competes on price and delivery speed against anyone with a truck. A distributor that also owns the truss plant supplying an engineered roof system is harder to route around mid-project, because switching means re-engineering, not just re-ordering. US LBM's M&A engine has been quietly reallocating toward exactly that kind of vertical integration, buying its way into the value-added, harder-to-substitute end of the building-materials supply chain rather than just adding more yards that sell the same commodity lumber everyone else sells. ## Staying independent while the sector consolidates around it The stranger part of the US LBM story is who owns it. Bain Capital took a majority stake in 2020. In October 2023, Platinum Equity bought in alongside Bain as a co-controlling owner, splitting governance evenly between two private equity firms rather than either one cashing out to a strategic buyer or an IPO. US LBM has now been through two rounds of financial-sponsor ownership without ever becoming a public company or getting folded into a bigger distributor's balance sheet. That choice looks more pointed against what happened around it. Home Depot bought SRS Distribution for $18.25 billion in 2024. QXO bought Beacon Roofing Supply for roughly $11 billion in 2025 after a public standoff. Both moves turned major building-products distributors into subsidiaries of larger public acquirers, part of a wave Webb Analytics has tracked as accelerating sharply across the lumber and building-materials sector. US LBM sits in the middle of that consolidation wave as one of the last big independents, still running its own acquisition program rather than being the target of someone else's. The tension is real. Two-owner PE governance is not a permanent arrangement, and a jointly held company in a sector where a strategic buyer just paid $18 billion for a competitor is not guaranteed to stay independent forever. But for now, US LBM keeps doing what it did in 2009: buying local, keeping the name on the building, and quietly moving up the value chain one truss plant at a time. Every distributor on this list wins the same unglamorous way, one branch, one truck route, and one accurate catalog at a time. --- # Server-side rendering on OroCommerce: making product data visible to Google and AI Source: https://www.anglera.com/blog/orocommerce-ssr-rendering Published: 2026-06-12 Platforms: orocommerce ![Server-side rendering on OroCommerce: making product data visible to Google and AI](/og/hero-orocommerce-ssr-rendering.jpg) OroCommerce ships with a server-rendered storefront out of the box, which is good news for distributors worried about crawlability. But two common changes — a headless/PWA frontend bolted on for a custom buyer experience, and price or availability blocks that are cached and swapped client-side — can quietly pull product data out of the HTML a crawler or AI agent actually receives. This guide covers how OroCommerce renders product pages today, where the gaps show up, and how to check your own storefront in five minutes. ## How OroCommerce renders product pages by default OroCommerce's storefront is built on the Oro Layout component, which composes a page from layout blocks and renders them through Twig — the same server-side templating approach used across the platform's back-office and storefront. According to Oro's own frontend documentation, the storefront "is not using the SPA approach," and pages are assembled from layout blocks mapped to Twig block themes at request time. JavaScript (built on a Chaplin/Backbone module system) handles interactivity — accordions, sliders, quantity steppers, the mini-cart — not the initial delivery of product content. A product view page is itself a layout with named containers, including `product_view_main_container`, `product_view_description_container`, and `product_specification_container`, each populated by data providers that pull product name, SKU, attributes, and description directly into the server response. In the unmodified storefront, this means a `curl` request and a browser's rendered DOM should return substantially the same product content, because there's no client-side data fetch standing between the response and the page. Two features are relevant to what's actually in that server HTML: - **SEO meta fields.** The OroSEOBundle extends the Product entity with Meta Title, Meta Description, and Meta Keywords fields (stored as localized values per locale) and writes them into the page's title tag and meta description tag at render time. - **Schema.org microdata.** OroCommerce embeds Schema.org Microdata (`itemprop` attributes in the HTML, not JSON-LD) into the product template. Per-website settings under System, then Websites, then your website, then Commerce, Guests, SEO control which field feeds the Schema.org description (`Used Product Description Field`, choosing between the long description, SEO meta description, or short description) and whether to suppress microdata on products without an assigned price (`Disable Product Microdata Without Price`) — useful if guest/anonymous price lists aren't configured for a given catalog. ## Where product data can end up client-only The risk isn't the default storefront — it's what gets layered on top of it. **Headless and PWA frontends.** OroCommerce's REST/GraphQL Web API is commonly used to power a decoupled React or Next.js storefront (Oro's own extension directory lists headless-storefront options, and this pattern shows up in agency-built PWAs). If that frontend fetches product data client-side after an empty (or app-shell) HTML response — rather than using SSR or static generation — crawlers and AI agents that don't execute JavaScript will see a near-blank page regardless of how rich the underlying catalog is. This is worth auditing explicitly if your team, or an implementation partner, has replaced the native Twig storefront with a separate frontend application. **Render caching with live price substitution.** OroCommerce's storefront render-cache layer lets you cache an entire product block "forever" (`cache: true`) while carving out sub-blocks — most often price — that are excluded from the cache and refreshed on each request or via a follow-up call (`maxAge: 0` on the price sub-block, or an anonymous-only condition such as `if: '=!context["is_logged_in"]'`). This is normally implemented as a fragment re-render at request time, not a pure client-side AJAX call, so it typically still lands in the HTML response before it's sent — but if a custom theme or extension implements the price refresh as a browser-side fetch instead (common when price lists are customer- or contract-specific and teams want to avoid caching authenticated pricing), the number a crawler sees in view-source can differ from, or be entirely absent compared to, what a logged-in buyer sees. Confirm which pattern your theme uses before assuming price is server-rendered for guests. **Custom product widgets.** Configurable-product variant selectors, spec-sheet accordions, and comparison widgets are frequently built as Underscore.js templates rendered by JS components after page load. If attribute or variant data is fetched via AJAX into one of these widgets rather than passed into the initial layout context, that data won't appear in the raw HTML even though it's visible on screen. ## Getting enriched product data onto the page If your PIM or Anglera-enriched attributes (use-cases, compatibility, expanded specs, identifiers) live in custom product attributes, the practical goal is making sure those attributes are wired into the product view layout as server-rendered blocks, not JS-fetched widgets: - Confirm the attribute is added to the relevant attribute group and is set to show on the storefront product page (Attribute Family / Product Attributes configuration in the back-office). - If a custom layout update is needed, add the attribute's data provider output into a Twig block inside `product_specification_container` (or a custom container) rather than a JS template — this is what determines whether it survives to the server response. - For the description that feeds Schema.org microdata, make sure the enriched long-form description is the one selected in `Used Product Description Field`, not a thin default. ## How to validate Check what a non-JavaScript client actually receives, then compare it to the rendered page: ```bash # Raw server response — this is what most crawlers and AI agents see curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \ https://your-store.example.com/product/12345 | grep -i "itemprop\|meta name=\"description\"" ``` - **View-source vs. rendered DOM**: In Chrome, compare `view-source:` on the product URL against the DOM in DevTools' Elements panel after the page finishes loading. If the price, description, or key specs appear in Elements but not in view-source, that content is being injected client-side. - **Microdata check**: Search the curl output (or view-source) for `itemtype="https://schema.org/Product"` and nested `itemprop` attributes for `name`, `description`, `sku`, `offers`, and `price`. If a product has no price and `Disable Product Microdata Without Price` is enabled, expect the Product microdata block to be absent by design — verify that's intentional for that catalog. - **Google's Rich Results Test**: Run the live product URL through [Google's Rich Results Test](https://search.google.com/test/rich-results) to confirm the Product markup parses and which properties (price, availability, ratings) it detects. - **Headless/PWA setups**: If a decoupled frontend is in play, repeat the curl check against the storefront domain (not the OroCommerce API endpoint) to confirm the framework is doing SSR/SSG and not shipping an empty shell. ## Verified as of July 2026 Details above reflect current OroCommerce documentation on the Oro Layout/Twig rendering model, SEOBundle meta fields, Schema.org microdata settings, and storefront render caching. Field names and menu paths can shift slightly between OroCommerce versions and community/enterprise editions — confirm against your installed version's docs before scripting a layout override. Once the page side is rendering correctly, the harder problem is having enough good data to put there. Anglera plugs into whatever PIM or commerce platform already stores your product data — OroCommerce included — and continuously enriches attributes, specs, and use-cases so those server-rendered blocks have something substantive to show, without requiring a re-platform. --- # Server-side rendering on a headless storefront: making product data visible to Google and AI Source: https://www.anglera.com/blog/headless-ssr-rendering Published: 2026-06-12 Platforms: headless ![Server-side rendering on a headless storefront: making product data visible to Google and AI](/og/hero-headless-ssr-rendering.jpg) Enriching product data is only half the job — it also has to land in the HTML that Google, Bing, and AI agents actually read. Headless storefronts split rendering work between server and client in ways that can quietly leave your richest product data out of the document a crawler sees. This guide covers how that split works, where data typically falls through, and how to confirm it's actually in the response. ## How a headless storefront renders a product page A headless storefront is a frontend — Next.js, Nuxt, Remix, or Shopify's Hydrogen — that calls a commerce API or PIM for product data and turns it into HTML. There are three ways that HTML gets built, and they behave very differently for crawlers: - **Server-side rendering (SSR):** the frontend server calls the product API on each request and returns fully formed HTML, with title, price, description, and attributes already in the markup. This is the default in Next.js with [Server Components](https://nextjs.org/docs/app/getting-started/server-and-client-components), and it's how Hydrogen works via React Router loaders that fetch data server-side before rendering. - **Static generation / ISR:** the same idea, but the HTML is built ahead of time (at build, or on a revalidation interval) instead of per request. Good for catalog pages that don't change every second. - **Client-side rendering (CSR):** the server returns a near-empty HTML shell — essentially an empty root container element — and a JavaScript bundle fetches product data in the browser after load, then paints it into the DOM. The initial HTTP response contains none of the product content. Most modern headless builds are a mix: a server-rendered shell carrying the product's core facts, with small "islands" of client-side interactivity — an add-to-cart button, a size selector, a reviews widget — hydrated on top. The question that matters for SEO isn't "SSR or CSR" as a whole-app choice; it's which fields land in the server response versus which are fetched client-side after mount. ## Why client-only rendering hides product data from crawlers and AI agents Google's own developer documentation on JavaScript SEO describes indexing as happening in two waves: Googlebot crawls and queues a URL, then queues it separately for a rendering pass where a headless Chromium instance executes the JavaScript before Google indexes the rendered result. That rendering pass isn't instant — it runs on Google's own schedule, and pages that depend on it are exposed to delay and occasional script errors that silently drop content. The docs note that "not all bots can run JavaScript," and still recommend server-side or pre-rendering because it's faster for users and crawlers alike. See [Understand JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics). Two consequences matter for a product page. First, many non-Google crawlers — including bots behind AI answer engines and shopping agents — don't render JavaScript at all, or budget very little for it; they fetch the raw HTML and reason over that alone. If title, price, availability, and specs only exist after a client-side `fetch()` call, those systems see an empty shell. Second, even engines that do render JavaScript still treat server-rendered HTML as the first and most reliable signal: it's what gets picked up fastest, what feed validators and structured-data testers read by default, and what survives if a client-side fetch fails or times out. ## Where product data typically leaks out of server-rendered HTML The most common failure pattern isn't "we used React" — it's specific fields quietly moved to the client for convenience: - Price and availability fetched client-side to reflect real-time inventory, while everything else is server-rendered. - Attributes, specs, or long-form descriptions loaded lazily on scroll or on a tab click, so they never appear in the initial document. - JSON-LD injected into the DOM after hydration via a client-side script instead of rendered into the initial HTML. - Variant data (color, size, configuration) held entirely in client-side state and never reflected in the markup for the default variant. None of these are wrong choices for the interactive experience — they're wrong only when the same data has no server-rendered fallback. ## Getting product data into the server-rendered HTML The fix: fetch and render the core product facts on the server, and keep only true interactivity — state, event handlers, cart mutations — as client components layered on top. In a Next.js App Router storefront, that's a Server Component for the page and a small Client Component for the interactive bits: ```tsx // app/products/[handle]/page.tsx — Server Component (default, no "use client") import { getProduct } from '@/lib/commerce' import AddToCartButton from './add-to-cart-button' export default async function ProductPage({ params, }: { params: Promise<{ handle: string }> }) { const { handle } = await params const product = await getProduct(handle) const jsonLd = { '@context': 'https://schema.org', '@type': 'Product', name: product.title, description: product.description, sku: product.sku, gtin13: product.gtin, brand: { '@type': 'Brand', name: product.brand }, offers: { '@type': 'Offer', priceCurrency: product.currency, price: product.price, availability: `https://schema.org/${product.availability}`, }, } return (

{product.title}

{product.description}

    {product.attributes.map((a) => (
  • {a.name}: {a.value}
  • ))}

{product.price}

``` This filter covers standard fields — name, brand, image, offers, price, availability — but it does not know about your custom metafields, so an enriched attribute like material composition or a certification code won't appear there automatically ([structured_data filter](https://shopify.dev/docs/api/liquid/filters/structured_data)). To surface enriched attributes to machine readers, the reliable pattern is a second, custom-authored JSON-LD block that adds them as `additionalProperty` entries, which is the schema.org-sanctioned way to attach arbitrary named attributes to a `Product`: ```liquid ``` Using the `json` filter (not raw output) on each value is what keeps quotes and special characters from breaking the JSON. Whether you extend the theme's existing structured_data block or add an adjacent one, keep the source of truth in the metafield — the JSON-LD should read from the same value that renders on the page, never a separately hand-typed copy. ## How to validate Confirm the data actually reached the delivered HTML, not just the Shopify preview or the DOM after client-side scripts run: - **View-source vs. rendered DOM.** Liquid renders server-side, so a correctly wired metafield should appear in "View Page Source" (`Cmd+Option+U` / `Ctrl+U`), which shows the raw response — the same thing a non-JS crawler or AI agent sees. If an attribute only shows up in the browser's Inspector/Elements panel (the live DOM) but not in view-source, it's being added by JavaScript after load and many bots won't see it. - **curl the page directly**, which mimics a bot request with no JS execution: ```bash curl -s https://yourstore.com/products/your-handle | grep -o '' curl -s https://yourstore.com/products/your-handle | grep -o 'metafield-rich_text_field.\{0,200\}' ``` - **Validate the JSON-LD** with Google's [Rich Results Test](https://search.google.com/test/rich-results) or the [Schema Markup Validator](https://validator.schema.org/), both of which will flag malformed JSON (a common cause: forgetting the `json` filter on a value with quotes or line breaks). - **Check theme scope.** Dynamic sources and the `metafield_tag`/`structured_data` filters only work on Online Store 2.0 themes; a legacy Vintage theme requires hand-written Liquid throughout and won't expose the theme-editor connection UI. Verified as of July 2026 against Shopify's current admin (Settings, then the "Metafields and metaobjects" / "Custom data" section — naming varies by store), the Liquid metafield object and `metafield_tag`/`structured_data` filters, and the Dawn reference theme. Field names, filter behavior, and menu paths are current for Online Store 2.0 themes; confirm against your specific theme's documentation if it was built before that architecture shifted in 2021. None of this rendering plumbing has anything to render without a metafield that already holds a real, verified value — which is the part Anglera is built for. Anglera continuously enriches product attributes, specs, and use-case data and writes them back into your existing Shopify metafields (or your PIM, if that's the system of record), so the moment a theme section or JSON-LD block is wired up to point at `custom.material_composition` or its equivalent, there's substantive, current data behind it rather than a blank field. It plugs into the store you already have; nothing about your metafield structure or theme needs to change. --- # QXO: How Brad Jacobs Turned Beacon Into His Next Roll-Up Source: https://www.anglera.com/blog/qxo-distributor-playbook Published: 2026-06-11 Industries: building-materials ![QXO: How Brad Jacobs Turned Beacon Into His Next Roll-Up](/og/hero-qxo-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* QXO landed at #4 on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors) for building materials, on $6.84 billion in FY2025 revenue. The name on that ranking barely existed a year earlier. Until March 2025 this business was Beacon Roofing Supply, a 97-year-old public company. What happened in between is less a distribution story than a financial-engineering one, and it is worth understanding on its own terms. ## A century of branches, three owners deep Beacon Sales Company opened in Charlestown, Massachusetts in 1928, selling roofing materials off a single lot. It stayed small and regional for decades. Andrew Logie bought a majority stake in 1984 when annual sales sat around $17 million, pushed the company into residential roofing alongside its commercial base, and had it to $72 million across seven branches by 1997, according to [Beacon's own company history on Wikipedia](https://en.wikipedia.org/wiki/Beacon_Roofing_Supply). That year, private equity firm Code, Hennessy & Simmons bought in, renamed it Beacon Roofing Supply, and ran the acquisition playbook that still defines the sector: buy the regional distributor next door, keep its sales reps and local relationships, fold the back office into a shared platform. Revenue passed $500 million by 2002. Beacon went public on Nasdaq in 2004, kept buying (Shelter Distribution in 2005, North Coast Commercial Roofing Systems in 2007, dozens more), and crossed $2 billion in sales by 2012. By the end of 2023 it operated 533 branches across all 50 states and six Canadian provinces with more than 8,000 employees. That is the version of Beacon most of the industry still pictures: a disciplined, PE-bred, publicly traded roll-up of roofing and exterior-products distributors, third-largest or so in its category, unglamorous and durable. ## The takeover nobody in roofing saw coming The disruption came from outside the industry entirely. Brad Jacobs has built and sold roll-ups in three unrelated sectors: he consolidated rural waste haulers into United Waste Systems and sold it for $2.5 billion in 1997, built United Rentals into the equipment-rental leader the same year, then spent the 2010s turning a small trucking brokerage into XPO Logistics before spinning off GXO Logistics ($7 billion, 2021) and RXO ($5 billion, 2022), per [Wikipedia's account of his career](https://en.wikipedia.org/wiki/Brad_Jacobs_(businessman)). In June 2024 he moved into building products. He did not found a new company or file for an IPO. He took control of SilverSun Technologies, a small Nasdaq-listed accounting-software reseller, injected roughly $1 billion in new equity led by his own Jacobs Private Equity vehicle, and renamed the shell QXO, according to [QXO's own investor announcement](https://investors.qxo.com/news/news-details/2024/QXO-Completes-1-Billion-Equity-Investment/default.aspx). It is the same move he made with XPO in 2011, when he bought into a struggling public freight broker to get an instant listing rather than wait on an IPO calendar. Nine months after the SilverSun deal closed, QXO paid roughly $11 billion in cash for Beacon, delisting it from Nasdaq on April 29, 2025. That is the insight worth naming plainly: QXO did not buy a distributor so a distributor could keep running its own show. It bought a distributor to be the initial payload inside a financier's acquisition vehicle, built the exact same way he has built three roll-ups before it. Beacon supplied the branches, trucks, supplier relationships and 8,000-plus employees. QXO supplied the capital-markets access and the appetite to keep buying immediately. | Year | Ownership event | |---|---| | 1928 | Founded as Beacon Sales Company, Charlestown, MA | | 1984 | Andrew Logie takes majority control | | 1997 | Code, Hennessy & Simmons buys in, renames it Beacon Roofing Supply | | 2004 | IPO on Nasdaq | | 2024 | Brad Jacobs takes over shell company SilverSun Technologies, renames it QXO | | 2025 | QXO acquires Beacon for ~$11B; Beacon delists | ## Why the buying didn't stop A normal acquirer integrates and pauses. QXO kept moving. In February 2026 it closed a $2.25 billion purchase of Kodiak Building Partners, the fourth-largest lumber distributor in North America, and in April 2026 it agreed to buy TopBuild, the largest insulation distributor in the country, for roughly $17 billion, according to details on [QXO's own site](https://www.qxo.com). Jacobs has said the growth plan "does not depend on a housing recovery," which is another way of saying the thesis is consolidation itself, not a bet on construction volume. The company now describes itself at more than 1,150 locations, 28,000-plus employees, and an 11,000-vehicle fleet, and it has layered a tech story on top: mobile ordering, storm-tracking tools for roofing contractors, and integrations with contractor software like Acculynx and ServiceTitan, positioning itself as a "tech-forward" operator rather than a traditional building-materials wholesaler. Whether that framing holds up is the honest tension in the story. Beacon spent a century earning branch-by-branch trust with roofing contractors on price, inventory depth and delivery reliability, the unsexy fundamentals that make a distributor useful. QXO is now stacking three of those hard-won networks (Beacon, Kodiak, TopBuild) on top of each other in under two years, betting that shared technology and combined purchasing scale outrun the integration friction of merging that many field operations at once. Roll-ups that move this fast either compound advantages faster than anyone can copy them, or they strain the local relationships that made each acquired distributor valuable in the first place. Jacobs has beaten that bet twice before. Whether a third industry behaves the same way is the open question the rest of the building-products channel is now watching. The MDM Top Distributors list will keep tracking the entity by whatever name it operates under. What sits underneath that name, and how well it still serves a contractor calling a branch at 6 a.m. for shingles, is the part no ranking captures. --- # Product data is an asset, not a chore: measuring what it returns Source: https://www.anglera.com/blog/product-data-as-an-asset Published: 2026-06-11 ![Product data is an asset, not a chore: measuring what it returns](/og/hero-product-data-as-an-asset.jpg) Most retail and manufacturing teams still book product data as an operating cost: something you pay a team or a vendor to keep "compliant" so nothing breaks. That's backwards. A well-enriched catalog earns on every channel it touches — organic search, on-site search, the PDP itself, even the AI answer engines shoppers are starting to route through — for as long as it stays accurate. A neglected catalog does the opposite: it quietly taxes conversion, inflates returns, and loads work onto support, month after month, invisibly. Treat product data like the asset it is and you can measure exactly what it returns. ## Why "cost center" thinking undercounts the damage When product data lives under a compliance or operations budget, the only metric anyone tracks is completion rate at launch: did every SKU get a title, a price, and enough fields to pass the PIM's validation rules. That's a pass/fail gate, not a performance measure. It tells you nothing about whether the data actually converts, ranks, or reduces friction downstream. The asset framing asks a different question: what does this SKU's data earn, this month, compared to last month, compared to a comparable SKU with richer content? That's a return you can track over time, the same way you'd track yield on any other asset on the balance sheet. ## The funnel product data actually touches Good data doesn't help in one place — it compounds across the whole path from intent to purchase: | Stage | What complete/accurate data does | What to measure | |---|---|---| | Discovery (organic + on-site search) | Full attributes and structured specs give search engines and site search more to match against | Organic sessions to PDP by SKU; on-site search zero-result and click-through rate | | Evaluation (the PDP) | Complete specs, sizing, compatibility, and imagery answer the question before the shopper has to ask it | PDP conversion rate, scroll depth, add-to-cart rate by data-completeness tier | | Decision (cart to checkout) | Accurate fit, materials, and compatibility data set the right expectation before purchase | Cart abandonment rate segmented by attribute completeness | | Post-purchase | Data that matched the product reduces "not as described" returns and support load | Return rate by reason code; support tickets per 1,000 orders | | Retention / attach | Rich category and compatibility data enables cross-sell and accessory attach | AOV and attach rate on enriched vs. unenriched SKUs | The point isn't that any one row is dramatic on its own. It's that the same underlying asset — clean, complete, accurate product data — is what's compounding (or decaying) at every stage simultaneously. A gap in the spec sheet doesn't just cost you the sale today; it costs you the search ranking tomorrow, the support ticket next week, and the return next month. ## Measure it like an asset, not a project Three things separate asset-style measurement from compliance-style measurement: **1. Baseline against a real comparison group, not a launch checklist.** Pick a cohort of SKUs with thin data (missing 3+ key attributes, generic or short descriptions) and a cohort with rich data in the same category and price band. Compare PDP conversion rate and organic sessions over a trailing 90 days. Retailers running this comparison consistently find enriched, fully-attributed listings converting at multiples of thin ones — [Sales Layer's ROI analysis](https://blog.saleslayer.com/how-pim-improves-roi) and PIM-vendor field data both put complete, professionally enriched SKUs in the 2-4x conversion range versus poorly enriched ones in similar categories. Don't take that number as gospel for your catalog — rerun the comparison on your own SKUs, because the gap varies by vertical and price point. **2. Track return reason codes, not just return rate.** Aggregate return rate is a lagging, noisy metric — it mixes sizing preference, buyer's remorse, damage in transit, and genuine data mismatches into one number. Break out the "not as described," "wrong fit," and "missing/incorrect specs" reason codes specifically. Those are the ones enrichment work can move. Independent return-cause research consistently shows sizing and fit information as the single largest driver of returns industry-wide — [ClickPost's 2025 return statistics roundup](https://www.clickpost.ai/blog/ecommerce-return-statistics) puts sizing and fit issues at 40-50% of returns — which means the spec fields you're most tempted to leave "good enough" (dimensions, fit notes, materials) are the ones with the most leverage on your return-reason breakdown. **3. Treat incremental organic and AI-referral traffic as yield, not vanity metrics.** When you enrich a SKU with the attributes and structured specs it was missing, watch what happens to organic sessions and referral traffic from AI answer engines on that SKU over the following weeks, alongside the on-site search terms that used to return zero results for it. None of these channels alone should carry your business case — but together they're the leading indicator that shows up before the conversion and return numbers catch up. [Baymard Institute's product-description research](https://baymard.com/blog/product-descriptions) found that even among the largest e-commerce sites, a meaningful share fail to sustain consistently detailed product descriptions — which is exactly the gap that shows up as abandoned PDPs and unanswered searches before it ever shows up in a return. ## What under-investment actually caps The reason this matters strategically, not just operationally, is that thin product data doesn't fail loudly. It doesn't throw an error. It just quietly caps the ceiling on every growth initiative you run downstream of it. Paid acquisition sends more traffic into PDPs that convert at half the rate they could. SEO investment builds authority into pages search engines have less to index. A new marketplace listing launches with the same gaps it had in your own PIM. Every dollar spent driving demand toward an under-enriched catalog is a dollar with a lower ceiling than it should have. That's the asset case in one sentence: complete, accurate, current product data isn't the thing you finish before the real work starts — it's the multiplier sitting underneath everything else you spend on growth, and it's measurable in the same terms as any other investment you'd defend in a budget review. ## Where Anglera fits This is the problem Anglera exists to solve — not as a new system of record, but as the layer that keeps the asset compounding. Your PIM stores the data; Anglera continuously scores it, fills the gaps from real supplier and source documentation, and flags what's drifted out of date, so the metrics in that table above move in the right direction without a multi-year rebuild. Most teams see it live against their catalog in 30 days or less, working from whatever data they already have — because an asset only pays off once someone is actually maintaining it. --- # Pet Supplies on marketplaces: the listing data that wins the buy box Source: https://www.anglera.com/blog/pet-supplies-syndication Published: 2026-06-11 Industries: pet-supplies ![Pet Supplies on marketplaces: the listing data that wins the buy box](/og/hero-pet-supplies-syndication.jpg) A 30-pound bag of dog food looks simple on a shelf. On a marketplace feed, it's a dozen required fields, a handful of optional ones that decide rankings, and at least one identifier that has to match a barcode nobody on your team has physically checked in years. Most pet brands lose the buy box not on price, but on data completeness. ## The buy box isn't a price war anymore Amazon's Featured Offer algorithm has moved away from the old assumption that lowest price plus Prime badge wins. The [May 2025 update shifted weight toward customer satisfaction signals, delivery reliability, and content quality](https://www.bebolddigital.com/blog/amazon-buy-box-algorithm), and by late 2025 Amazon was explicitly loosening the grip fulfillment method and seller tenure used to have on the decision. Landed price still matters, and Amazon still penalizes offers priced [more than 5% above the lowest competing offer](https://www.repricer.com/blog/what-is-amazon-buy-box/), but price parity alone no longer guarantees the box. What's filling the gap is data quality. Amazon scores every detail page with an [Item Data Quality (IDQ) score from 0-100](https://sellerise.com/blog/amazon-idq-score-explained/), grading categorization accuracy, bullet completeness, image count, and attribute fill rate. Listings above roughly 90 get better placement, higher click-through, and access to programs like Lightning Deals. Listings with missing required fields don't rank lower — they get suppressed outright, pulled from search entirely until the gap is fixed. Pet supplies feels this more than most categories, because the required field list is longer than it looks. ## The bar pet supplies specifically has to clear Three things stack on top of the standard marketplace content checklist for pet food and treats: **Regulatory documentation.** Because dog food touches ingestion and animal health, Amazon and most marketplaces gate the subcategory. Sellers need [GMP or GFSI-recognized manufacturing certificates](https://myamazonguy.com/amazon-product-launch/selling-pet-supplies-on-amazon/) before a listing goes live, and the category enforces this at the SKU level, not just the brand level. **A longer mandatory attribute set.** Pet listings routinely fail on the fields shoppers actually decide with: life stage, breed size, primary protein, calorie content per cup, ingredient sourcing, and feeding guidelines. Titles need brand, product type, key feature, pet size, and quantity in a specific order, and any one missing field can flip a listing from "active" to "incomplete." **A clean identifier.** Every variant, every bag size, needs its own GTIN, and it has to match what's on the physical package. This is about to get more complicated, not less: GS1's industry-wide transition (branded "Ambition 2027" by GS1 and widely called Sunrise 2027 across retail) pushes brands toward dual-marking packaging with both a [linear barcode and a 2D barcode carrying richer data](https://ref.gs1.org/guidelines/2d-in-retail/) — batch numbers, expiration dates, sourcing links. Retailers are already asking for GTINs that resolve cleanly today, before that transition even lands. ## What an incomplete feed looks like next to a channel-ready one Here's a 30-pound bag of adult dry dog food as it typically arrives from a distributor feed, next to what marketplaces actually need to rank and stay in stock. | Attribute | Raw distributor feed | Channel-ready | |---|---|---| | Title | `Chicken Dog Food 30lb` | `Brand X Adult Dry Dog Food, Chicken & Rice, 30 lb Bag, Large Breed` | | GTIN | Blank or shared across sizes | Unique 12-digit UPC per size, verified against barcode scan | | Life stage | Not specified | Adult | | Breed size | Not specified | Large breed (defined weight range) | | Primary protein | "Chicken" (unqualified) | Chicken (named source, first ingredient) | | Calorie content | Missing | 362 kcal/cup, feeding chart by weight | | Ingredient list | PDF attachment only | Structured field, searchable | | Certifications | Not listed | AAFCO statement, GMP certificate on file | | Bullet points | 2, generic | 5, benefit-led with size and life stage called out | | Images | 1 front-of-pack | 6+, including nutrition panel and feeding guide | The left column is enough to get a product live. It is not enough to win the buy box, survive an Amazon content audit, or show up when a shopper's AI assistant is asked to compare options. ## The AI shopping layer raises the bar again Ask ChatGPT, Gemini, or Google's AI Mode to "recommend a large-breed dry dog food under $60 without corn or soy," and the assistant is reading structured attributes, not marketing copy. If breed size, ingredient exclusions, and price-per-pound aren't machine-readable on your listing, that assistant recommends a competitor's bag instead, one whose feed happens to answer the question directly. This is the same completeness bar marketplaces enforce, applied by a buyer who never scrolls past the fold. ## Getting to channel-ready, at catalog scale The hard part isn't writing one good listing. It's holding hundreds of SKUs and every retailer's variant of "complete" to that standard as new sizes, formulas, and channels get added. That's the maintenance problem, not the one-time content project. Anglera plugs into whatever PIM or feed system a pet brand already runs and continuously checks every SKU against each channel's actual required-and-recommended fields, flags gap-fills before a bag of dog food gets pushed live, and keeps GTINs, life-stage attributes, and ingredient data in sync as catalogs grow. Your PIM stores the data. Anglera does the work of keeping it complete enough to win the buy box and get recommended. --- # Macy's: A Star Tattoo, a Rollup Century, and Its Reverse Source: https://www.anglera.com/blog/macys-retailer-playbook Published: 2026-06-11 Industries: apparel ![Macy's: A Star Tattoo, a Rollup Century, and Its Reverse](/og/hero-macys-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Macy's ranks #25 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual sales ranking compiled with Kantar, with $21.68 billion in 2025 U.S. retail sales. The company that logo suggests permanence: a red star, unchanged for more than a century. The man who put it there almost never got the chance. ## A Whaler's Tattoo and Four Failed Stores Rowland Hussey Macy was born on Nantucket in 1822, into a Quaker family that made its living from the sea. At fifteen he shipped out on the whaler Emily Morgan, and somewhere on that voyage a sailor inked a red star onto his hand or forearm, accounts differ on which. Between 1843 and 1855 Macy opened four dry goods stores, in Massachusetts and in Gold Rush California with his brother Charles. All four failed. In 1858 he tried a fifth time, on Sixth Avenue at 14th Street in Manhattan, deliberately north of the established retail district where rents were cheaper and foot traffic was building. Opening day receipts came to $11.08. He kept the star as his mark, and it is the same star on the shopping bags today, a permanent souvenir of a career that had already run through four bankruptcies before it produced a single success ([Wikipedia](https://en.wikipedia.org/wiki/Rowland_Hussey_Macy)). ## The Brothers Who Bought the Basement Macy's own tenure at the top was short. He died in 1877, and the store passed through a series of owners before Lazarus Straus, a Bavarian immigrant selling crockery, struck a deal after the Civil War to run a china and glassware concession in Macy's basement. His sons Isidor and Nathan ran that department, and in 1888 they became full partners in the store itself. By 1896 the Straus brothers owned R.H. Macy & Co. outright. Isidor Straus turned out to be the more consequential builder: alongside Macy's he and Nathan bought a controlling stake in Wechsler & Straus in 1893 and renamed it Abraham & Straus, seeding a second department store empire before either brother had a clear sense they were founding an industry pattern. Isidor also served a term in Congress and died on the Titanic in 1912, refusing a seat in a lifeboat while his wife Ida refused to leave without him. It is a genuinely tragic footnote to a retail biography, and it is also, unusually for this era of American business, the origin story of two separate department store chains that would later end up owned by the same company ([Wikipedia: Isidor Straus](https://en.wikipedia.org/wiki/Isidor_Straus)). ## A Parade to Sell Coats By 1902 the flagship had moved to Herald Square, eventually swallowing most of a city block, and by 1924 Macy's needed a way to keep shoppers in the store through the holiday season. Store employees, many of them recent European immigrants, marched to Herald Square that November dressed in costumes borrowed from festival traditions back home. A quarter million people showed up on the first try. Live zoo animals gave way to Tony Sarg's puppet-designed balloons in 1927, helium lifted them off the ground in 1928, and the whole affair went dark from 1942 to 1944 so the rubber and gas could go to the war effort. It came back in 1945, got a permanent boost from the 1947 film Miracle on 34th Street, and now draws crowds that make the 1933 count of one million look modest. Few retail marketing stunts have run continuously for a century; almost none of them were invented to move winter coats ([Wikipedia: Macy's Thanksgiving Day Parade](https://en.wikipedia.org/wiki/Macy%27s_Thanksgiving_Day_Parade)). ## The Rollup Century Here is the part the store's own history page tends to undersell. Macy's did not grow into a national chain by opening new Macy's stores in new cities. It grew by buying other people's department stores and, eventually, erasing their names. Bamberger's in Newark, Davison-Paxon in Atlanta, and O'Connor Moffat in San Francisco joined the fold between 1929 and 1945. Federated Department Stores, founded that same year of 1929 as a holding company for regional chains including Abraham & Straus, Filene's, and Lazarus, eventually acquired Macy's itself in 1994, after Macy's own 1992 bankruptcy following a failed leveraged buyout. Then, in 2005, Federated bought the May Department Stores Company for $11 billion and spent the next two years converting roughly 330 stores, Marshall Field's in Chicago, Filene's in Boston, Famous-Barr in St. Louis, Foley's in Houston, into stores simply called Macy's. Federated renamed itself Macy's, Inc. in 2007. The signage changed practically overnight in city after city; the shopping habits of entire regions got reassigned to a single national brand in a matter of months ([Wikipedia: Macy's](https://en.wikipedia.org/wiki/Macy%27s), [Wikipedia: Macy's, Inc.](https://en.wikipedia.org/wiki/Macy%27s,_Inc.)). | Year | Move | |---|---| | 1858 | R.H. Macy opens on Sixth Avenue after four prior failures | | 1896 | Straus brothers take full ownership | | 1902 | Flagship relocates to Herald Square | | 1929 | Federated Department Stores founded; Bamberger's and Davison-Paxon acquired | | 1994 | Federated acquires Macy's out of bankruptcy | | 2005-07 | May Company acquired; ~330 stores rebranded Macy's; company renamed Macy's, Inc. | | 2024 | Plan announced to close 150 stores by 2026 | ## When the Rollup Ran in Reverse That is the unique observation worth naming plainly: Macy's is not really a story of one store's organic growth, it is a century-long consolidation machine that kept absorbing regional retail identities into a single nameplate, and it is now running that same machine in reverse. In February 2024 the company announced it would close roughly 150 locations, about 30 percent of its footprint, by 2026, after Arkhouse Management and Brigade Capital had spent months trying to take the whole company private for as much as $6.6 billion, an offer the board rejected as too low. The rollup that once turned Marshall Field's and Filene's into Macy's is now, under CEO Tony Spring's "Bold New Chapter" plan, shrinking the same footprint it once assembled, trading square footage for a smaller set of stores meant to carry the whole banner's weight the way the Herald Square flagship once did alone ([Wikipedia: Macy's, Inc.](https://en.wikipedia.org/wiki/Macy%27s,_Inc.)). The star tattoo survived a teenager's whaling voyage and four bankruptcies to become one of the most recognized marks in American retail. The chain under it has spent a hundred years proving that the real product was never a single store, it was the ability to absorb one. This is part of an ongoing series on the companies that built American retail, told through the unglamorous infrastructure, catalogs, supply chains, stores, and data, that actually makes a name-brand nameplate mean something. --- # The state of product data in Health & Supplements retail (2026) Source: https://www.anglera.com/blog/health-supplements-state Published: 2026-06-11 Industries: health-supplements ![The state of product data in Health & Supplements retail (2026)](/og/hero-health-supplements-state.jpg) Supplement catalogs are some of the most attribute-heavy in retail — dosage, form, serving size, active ingredients, allergens, certifications, flavor — and also some of the most inconsistently documented. The category hit [$72.9 billion in 2025, growing 5.5% year-over-year](https://www.newhope.com/market-data-and-analysis/supplement-industry-sees-big-growth-big-challenges-in-2026), but the product data underneath most catalogs hasn't kept pace with the SKU count. That gap is now showing up in search, conversion, returns, and — increasingly — in whether AI shopping tools recommend a product at all. ## Where supplement catalogs actually break Talk to anyone who has audited a mid-size supplement retailer's feed and the same problems surface every time. **Variant explosion outruns the data model.** A single pre-workout SKU with 12 flavors, 5 serving sizes, and 2 formula strengths can produce more than 100 real combinations. Most catalogs handle this by cloning a parent listing and hoping the variant-level attributes (actual per-serving dosage, allergen flags, flavor-specific ingredients) get filled in later. They often don't. **Taxonomy drifts by supplier.** One brand's feed calls something "magnesium glycinate," another calls it "magnesium (as glycinate)," a third buries the form in a PDF supplement-facts panel that never made it into structured fields. Multiplied across hundreds of suppliers, this is what turns a retailer's catalog into a patchwork rather than a system — [taxonomy inconsistency is one of the biggest hidden costs as catalogs scale](https://www.digitalapplied.com/blog/product-feed-optimization-decision-matrix-2026-ecommerce), because every downstream system — search, filtering, recommendations — inherits the mess. **Compliance fields get bolted on, not built in.** FDA structure/function claims, allergen disclosures, and third-party certification marks (NSF, Informed Sport, USP) frequently live in marketing copy or a static PDF label image rather than as queryable attributes. That's a legal exposure issue and a discoverability issue at the same time — a shopper filtering for "third-party tested" won't find a product whose certification only exists as text on a label photo. **Core dosing attributes are missing more often than they're wrong.** The gap usually isn't inaccurate data — it's blank fields: no per-serving mg amount, no confirmed third-party-tested flag, no allergen declaration, no explicit "form" (capsule vs. gummy vs. powder vs. liquid) as a filterable attribute. Here's what that looks like on an actual product before and after enrichment: | Attribute | Raw supplier feed | Enriched | |---|---|---| | Product name | "Magnesium Complex 60ct" | Magnesium Glycinate Complex, 60 Capsules | | Form | (blank) | Capsule | | Dosage per serving | (blank) | 200 mg elemental magnesium | | Servings per container | (blank) | 60 (1 capsule/serving) | | Allergens | "see label" | Free from: gluten, dairy, soy, tree nuts | | Certifications | (blank) | NSF Certified for Sport | | Diet compatibility | (blank) | Vegan, Non-GMO | The raw row is technically "in stock." It just isn't answerable to a real question — including the one shoppers are increasingly asking a chatbot instead of a search box: "recommend a vegan, third-party-tested magnesium supplement under $25." A listing with blank dosage, allergen, and certification fields is functionally invisible to that query, no matter how good the product is. ## What thin data actually costs None of this is abstract. Thin attribute data shows up in three measurable places. *Search and filtering.* A shopper filtering by "gluten-free" or "vegan capsule" only sees products that have those fields populated as structured attributes — not products where the same information exists only in a paragraph of marketing copy. Every blank field is a product that silently drops out of a filtered result set. *Conversion.* Supplement shoppers routinely cross-reference the supplement-facts panel before buying — form, dosage, and third-party testing are the three questions that close or kill the sale. If that information isn't on the PDP in scannable form, the shopper either bounces to compare on Amazon (where it usually is standardized) or abandons the decision entirely. *Returns and support load.* Ambiguous serving-size or flavor variant data is a direct driver of "this isn't what I ordered" returns and support tickets — a cost that rarely gets attributed back to the data gap that caused it, but shows up in the margin line regardless. ## Why 2025-2026 raises the urgency Two forces are compounding the cost of thin data right now. First, AI shopping agents have gone from novelty to a real acquisition channel, and they're unusually literal about structured attributes. AI-referred traffic to U.S. retail sites [grew 393% year-over-year in Q1 2026](https://elogic.co/blog/chatgpt-commerce-statistics/), and for the first time, AI-referred shoppers are converting *better* than average traffic rather than worse. But that channel only works for products it can parse. Pages with structured data are [cited roughly 3x more often in AI Overviews](https://elogic.co/blog/chatgpt-commerce-statistics/), and platforms like Perplexity are reported to [treat products without a GTIN as effectively invisible](https://www.digitalapplied.com/blog/product-data-ai-shopping-merchant-prep-guide) — the same logic almost certainly extends to a supplement missing dosage or allergen fields when a shopper asks an agent to filter by them. An AI agent won't guess that "see label" means "gluten-free." It will simply move to the next result that says so explicitly. Second, marketplace and channel pressure is squeezing supplement retailers from the other side. TikTok Shop is a small slice of the category today but [growing at roughly 71% year-over-year](https://www.newhope.com/market-data-and-analysis/supplement-industry-sees-big-growth-big-challenges-in-2026), and every additional channel is another feed with its own required fields, its own rejection rules, and its own tolerance for stale or malformed data. A catalog that can barely keep one storefront's attributes current is not built for three or four. Put together: the categories growing fastest in supplements — sports nutrition, weight management, specialty formulas — are exactly the ones with the most variants, the most compliance fields, and the least patience from either shoppers or AI agents for a blank cell where a dosage number should be. ## Where this leaves retailers The fix isn't a bigger content team re-typing supplement-facts panels by hand — that doesn't scale past a few hundred SKUs, let alone the tens of thousands a multi-brand supplement retailer carries. It's treating attribute completeness as an ongoing operation, not a launch-day checklist. Anglera plugs into whatever PIM or feed a retailer already runs — no migration, no rip-and-replace — and continuously scores, gap-fills, and enriches product data so dosage, allergen, form, and certification fields are actually populated and consistent across every SKU and channel. Your PIM stores the data; Anglera does the work of keeping it complete enough for shoppers and AI shopping agents to act on. --- # The questions health & supplements shoppers ask that your product page must answer Source: https://www.anglera.com/blog/health-supplements-guide Published: 2026-06-11 Industries: health-supplements ![The questions health & supplements shoppers ask that your product page must answer](/og/hero-health-supplements-guide.jpg) A shopper picking a vitamin D3 bottle isn't just checking price. They're asking whether it's third-party tested, whether the dose matches what their doctor recommended, and whether it will interact with something else in their cabinet. If the product page doesn't answer those questions, the sale either doesn't happen or it happens and then reverses as a return. Here's what belongs on the page, why the gaps are costly, and how to close them systematically. ## The questions a supplements shopper actually asks Before adding a bottle to cart, a health-conscious buyer is running through a mental checklist that looks nothing like a typical apparel or electronics purchase: - What form is the active ingredient in (D3 vs D2, methylcobalamin vs cyanocobalamin), and does that matter for absorption? - What's the actual dose per serving, and how many servings are in this bottle? - Is it third-party tested, and by whom (USP, NSF, ConsumerLab)? - Is it vegan, gluten-free, non-GMO, allergen-free? - What are the other ingredients (fillers, binders, capsule material)? - Will it interact with medications or other supplements I take? - What does a serving actually look like (one softgel, two capsules, a scoop)? - Where is it manufactured, and under what quality standard? None of these are edge-case questions. They're the default filter. A page that answers price and a marketing blurb but skips potency, form, and certification is answering a different question than the one being asked. ## A real bottle: raw feed vs. enriched Here's a typical raw supplier feed for a vitamin D3 softgel, next to what an enriched product page should carry. | Attribute | Raw feed | Enriched | |---|---|---| | Title | "Vitamin D3 Softgels 120ct" | "Vitamin D3 (Cholecalciferol) 5,000 IU Softgels, 120-Day Supply" | | Serving size | (missing) | 1 softgel | | Servings per container | (missing) | 120 | | Active ingredient form | (missing) | Cholecalciferol (D3), the form your body uses most efficiently vs. D2 | | % Daily Value | (missing) | 625% DV per serving | | Third-party tested | (missing) | USP Verified, batch-checked for potency and contaminants | | Other ingredients | (missing) | Extra virgin olive oil, gelatin capsule, glycerin | | Dietary flags | (missing) | Gluten-free; not vegan (gelatin capsule) | | Manufacturing | (missing) | Made in a GMP-certified facility | The "raw" version isn't wrong, it's just incomplete. Every field marked "(missing)" is a question the shopper is going to ask anyway, either on the page, in a review section, in a support ticket, or by returning the bottle when the answer turns out to be "not vegan" or "not what I expected." ## Why the gaps turn into returns and lost sales Two failure modes show up constantly in supplements categories specifically: 1. **Silent non-purchase.** A shopper who can't confirm dose, form, or certification in 15 seconds moves to a competitor listing that answers those questions, or abandons the category search entirely. This never shows up as a "return," it shows up as a conversion rate that's lower than it should be. 2. **The return itself.** A product not matching its description is [one of the most commonly cited reasons shoppers send items back](https://www.corso.com/post-purchase-resource-center/the-most-common-ecommerce-return-reasons), across categories generally. In supplements specifically, that shows up as "not vegan," "capsule not tablet," "wrong dose," or "expected a powder, got softgels." Those are attribute-level gaps, not product defects, and they're fixable before the bottle ever ships. Supplements also carry a returns wrinkle other categories don't: once a bottle is opened, many retailers and marketplaces won't accept it back for hygiene reasons, which means the cost of an information gap often lands as a refund with no restock, not a resellable return. That makes getting the page right upfront more valuable per-unit than in almost any other category. ## The certification trap Third-party testing claims are also where supplement pages get sloppy in a way that creates real risk. A product that says "USP quality" or "meets USP standards" in body copy is not the same as one carrying the actual USP Verified mark, and shoppers are increasingly told to [check the actual seal rather than trust the wording](https://myvaluedrugstore.com/usp-verified-supplements-list/). If your feed says "third-party tested" but doesn't name the certifying body, that's a gap worth closing before it becomes a trust problem or a compliance one. The FDA requires that the declared amount, form, and % Daily Value for each dietary ingredient appear accurately on the [Supplement Facts label](https://www.fda.gov/food/dietary-supplements-guidance-documents-regulatory-information/dietary-supplement-labeling-guide-chapter-i-general-dietary-supplement-labeling), so page copy should match the panel exactly rather than paraphrase it. ## The "ask an AI" moment Try this test on your own catalog: ask an AI shopping assistant to "recommend a vegan vitamin D3 with at least 2,000 IU that's third-party tested." The assistant is going to parse structured attributes, form, dose, dietary flags, certification, not marketing prose. A bottle with those facts sitting in an unstructured paragraph, or missing entirely, gets skipped in favor of a competitor whose page states them plainly. That's true whether the shopper is a person scanning the page or an agent scanning it on their behalf. ## The checklist Before a health and supplements product page goes live, confirm it states: active ingredient and form, exact dose and % Daily Value, servings per container, serving size in plain terms, third-party certification and certifying body by name, full other-ingredients list, allergen and dietary flags (vegan, gluten-free, non-GMO), and manufacturing standard (GMP-certified facility). If any of those are blank, treat it as a defect, not a nice-to-have. Anglera plugs into whatever PIM or feed you already run and continuously checks supplement listings against that exact list, flagging missing dose fields, unverified certification language, and incomplete other-ingredients data before shoppers or AI agents ever see the gap. It doesn't replace your PIM; it keeps the data inside it complete, accurate, and ready to answer the questions your customers are already asking. --- # The ROI of product data in Grocery & CPG: the numbers that actually move Source: https://www.anglera.com/blog/grocery-cpg-roi Published: 2026-06-11 Industries: grocery-cpg ![The ROI of product data in Grocery & CPG: the numbers that actually move](/og/hero-grocery-cpg-roi.jpg) Grocery and CPG teams don't lack data about their products, they lack agreement on which numbers prove that fixing product data was worth the spend. Finance doesn't fund "better content." Finance funds a spreadsheet with a before, an after, and a dollar sign. This is a working list of the metrics that actually move when product data improves, how each one connects back to a mechanism you can explain in a sentence, and how to structure the comparison so it survives a budget review. ## Why grocery and CPG data problems compound A center-store SKU shows up in a retailer's catalog, on the brand's own DTC site, on Instacart, and often on Amazon, each with its own attribute schema, image requirements, and character limits. Net weight, allergen statements, ingredient lists, and pack-size claims have to be exactly right in every one of those places, not approximately right. Grocery also churns faster than almost any other catalog, with reformulations, seasonal SKUs, and pack-size changes landing weekly. A PIM stores the record. It does not know that a supplier updated a nutrition panel or that a new claim needs to propagate to four channels before the next ad flight goes live. That gap is where the metrics below get worse quietly, one SKU at a time, until someone finally pulls a report. ## The metrics that move, and the mechanism behind each | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether the page answers the buyer's actual questions before they bounce | Sessions-to-purchase on the PDP in GA4 or your commerce platform, segmented by SKUs enriched vs. not yet enriched | | Incremental organic traffic | Whether the page is findable and rankable for the terms buyers actually use | Organic sessions and rankings for target queries in Google Search Console, pre/post publish date | | On-site and marketplace search visibility | Whether the product surfaces at all when a shopper searches your own site or Instacart/Amazon | Zero-result-query rate and internal search click-through in your site search analytics; retailer/marketplace search rank reports | | AI-referral traffic | Whether answer engines can extract and cite your product correctly, as one discovery path among several | Sessions from ChatGPT, Perplexity, Gemini, Copilot referrers in GA4, tracked as a share of total, not the headline | | Return rate (data-caused) | Whether the product that arrived matches what the listing promised | Return reason codes tagged "not as described," "wrong item," or "size/quantity mismatch," pulled from your returns or reverse-logistics system | | Support ticket volume | Whether missing specs are pushing buyers to ask a human instead of self-serving | Ticket volume and time-to-resolution tagged by SKU or product category in your helpdesk tool | | AOV and attach rate | Whether complete data on the anchor product pulls related items into the cart | Average order value and units-per-order for orders that include an enriched SKU vs. a matched control set | Each row is a symptom of the same root cause: a shopper, a search engine, or an AI assistant couldn't get a straight answer from the listing. Grocery shoppers convert unusually well when they trust what they're looking at. Food and beverage regularly posts some of the highest ecommerce conversion rates of any category, in the mid-single digits versus a low-single-digit cross-category average, per [ConvertCart's 2026 industry benchmark](https://www.convertcart.com/blog/ecommerce-conversion-rate-by-industry). That high baseline is exactly why data gaps are expensive here: you're not fighting for a purchase decision, you're fighting to not lose one that was already close. ## Returns: the line item everyone underweights Returns get treated as a supply-chain problem. In grocery and CPG, a meaningful share of them are a content problem. Salsify's [2025 Consumer Research Report](https://www.salsify.com/resources/report/2025-consumer-research) found that 71% of shoppers have initiated a return after the physical product didn't match its online listing, and 54% have abandoned a purchase outright over inconsistent product content across channels. Akeneo's research on the same dynamic found that roughly [two-thirds of consumers abandoned a significant purchase](https://www.akeneo.com/blog/how-poor-product-data-is-costing-you-sales/) because information was missing or inaccurate, and that dissatisfaction with product data comprehensiveness more than doubled between 2023 and 2025. For a grocery brand, the equivalent failure is a pack-size mismatch, an outdated ingredient panel, or an allergen claim that doesn't match what's on the physical label. Pull your return-reason codes and see how many fall into "not as described." If that bucket is more than a rounding error, you have a data problem wearing a logistics costume, and it is one of the fastest lines to fix because it doesn't require new photography or new SKUs, just accurate ones. ## On-site and marketplace search: the traffic you already paid for Grocery retail media and marketplace placements soak up most of the acquisition budget, but a real chunk of that traffic dies in your own search box. Industry benchmarks put zero-result search rates in the [10-15% range for a typical ecommerce catalog](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics), and roughly 8 in 10 shoppers abandon a site after a failed search. Zero-result rate is trivially measurable in almost any site-search tool, and it's directly fixable with better attribute coverage and synonym handling, both of which depend on the underlying product data being complete enough to match against. ## Building the before/after case finance believes Finance will not accept "we enriched 4,000 SKUs and conversion went up," because too many other things also changed that quarter. Structure it as a controlled comparison instead: 1. Pick a cohort of SKUs to enrich and a matched control cohort with similar category, price point, and current traffic that stays untouched. 2. Set a baseline window (4-8 weeks is usually enough in grocery given purchase frequency) and record PDP conversion, return rate, organic sessions, and support tickets for both cohorts. 3. Enrich the treatment cohort and hold everything else constant, no pricing changes, no new ad spend on those SKUs. 4. Compare the delta between cohorts, not just before-and-after on the treatment group, so seasonality and promotions wash out. 5. Translate the conversion and return deltas into dollars using your actual AOV and margin, and translate the traffic and support deltas into cost avoided. That structure holds up in a QBR because it isolates the one variable you changed. It also tends to surface the real value driver: incomplete data doesn't just lose sales, it manufactures returns and support load that erase margin on the sales you do close. ## Where this connects back to the work None of this requires ripping out your PIM or adding a new system of record. Your PIM stores the data; the work is continuously checking it against source documents, filling the gaps, and pushing corrected values back out to every channel before a shopper, a search engine, or an AI assistant has to guess. Anglera does that work in the background so the metrics in the table above move in the direction finance wants to see, without adding another platform migration to the roadmap. --- # Builders FirstSource: From Lumberyard Rollup to Buyback Machine Source: https://www.anglera.com/blog/builders-firstsource-distributor-playbook Published: 2026-06-11 Industries: building-materials ![Builders FirstSource: From Lumberyard Rollup to Buyback Machine](/og/hero-builders-firstsource-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Builders FirstSource ranks #2 on [Modern Distribution Management's 2026 Top Distributors](https://www.mdm.com/top_distributors) list for building materials and construction, with $15.2 billion in FY2025 revenue per MDM's report. That scale did not come from organic branch openings. It came from two distinct eras of dealmaking, separated by a merger so large it doubled the company overnight, and it is still running today even as housing starts fall. ## A Pulte spinout, not a founder's dream Builders FirstSource did not start as somebody's garage lumberyard story. In 1998, private equity firm JLL Partners bought Builders' Supply and Lumber Company from homebuilder Pulte Corporation and began stitching together regional lumberyards under a single name, per the company's own history as recorded on [Wikipedia](https://en.wikipedia.org/wiki/Builders_FirstSource). The company went public on the NYSE in 2005 and used the IPO capital the same way it had used JLL's: buying more yards, more truss plants, more millwork shops, reaching $2 billion in revenue within five years of listing. That is the first pattern worth naming. Builders FirstSource has never really been a distributor that grew a footprint and then bolted on acquisitions as a side activity. Acquisition has been the footprint-building mechanism since year one. ## The merger that changed the math Everything before 2021 was prologue to one deal. In August 2020, Builders FirstSource and BMC Stock Holdings announced an all-stock merger valued at roughly $2.5 billion, creating a combined company with more than $11 billion in annual sales, about 26,000 employees, and over 550 locations, according to [Wikipedia's summary of the transaction](https://en.wikipedia.org/wiki/Builders_FirstSource). The deal closed in January 2021, and BMC's president, Dave Flitman, took the CEO seat of the combined firm. Mergers of equals in distribution rarely stay equal in outcome, and this one did not produce a stable leadership picture right away. Flitman led through 2022, Dave Rush ran the company from late 2022 through 2024, and Peter Jackson, previously the CFO, took over in November 2024. Three CEOs in four years is a lot of turnover for a company simultaneously trying to integrate a merger of this size, and it is worth noting plainly rather than glossing over: the BMC deal solved a scale problem and created a leadership-continuity problem that took years to settle. ## Buying through the downturn, not around it What is unusual is what came after integration finished. Between 2023 and 2025, Builders FirstSource closed 21 acquisitions, according to company disclosures summarized on Wikipedia, including regional lumber supplier Alpine Lumber, which brought more than $500 million in 2024 sales, and Pleasant Valley Homes, a move into modular home manufacturing. In January 2026 the company added Premium Building Components, and it separately picked up Truckee Tahoe Lumber to extend its geographic reach, per [an analysis of the company's 2025 strategy](https://www.ainvest.com/news/builders-firstsource-strategic-resilience-navigating-housing-downturns-capital-discipline-digital-innovation-2508/). Those deals landed while the top line was shrinking. Builders FirstSource's full-year 2025 sales fell 7.4% as housing weakness persisted, [MDM reported](https://www.mdm.com/news/top-distributor-sectors/building-materials-construction/builders-firstsource-annual-sales-fall-7-4-as-housing-weakness-persists/), and third-quarter 2025 net sales came in at $3.9 billion, down 6.9% year over year, with gross margin compressing 240 basis points, according to the [company's own Q3 2025 results](https://investors.bldr.com/news/news-details/2025/Builders-FirstSource-Reports-Third-Quarter-2025-Results/default.aspx). Single-family housing starts were projected to decline 10-12% and multifamily starts by mid-teens percentages across the year. Most distributors pull back the M&A checkbook when their core market contracts. Builders FirstSource kept buying anyway, betting that a downturn is exactly when weaker regional competitors become available at reasonable prices and when a well-capitalized acquirer can add capacity cheaply for the recovery. ## The insight: a distributor that buys back more than it builds Here is the pattern that does not show up on the company's About page. Since 2021, Builders FirstSource has repurchased roughly 102.6 million of its own shares, close to half of its outstanding stock, per the Wikipedia summary of its capital actions, deploying close to $2 billion in capital returns through buybacks even in 2025 alone. That is not incidental capital allocation. It is the dominant use of cash at a company whose entire founding premise was buying other companies. Put those two facts side by side and the strategic posture becomes clear: Builders FirstSource has effectively decided that its own stock, not another regional lumberyard, is often the best acquisition available. It still buys physical operators (21 deals in three years says so), but it treats its equity as a third arm of the M&A program, competing for capital against every bolt-on target its corporate development team surfaces. Few distributors run both playbooks simultaneously and at this scale, and fewer still keep doing it while revenue is falling. ## Where the moat actually sits The buybacks matter because of what backs them. Builders FirstSource is not a lumber reseller exposed purely to commodity swings. It runs manufactured structural components including roof and floor trusses, wall panels and pre-cut framing, plus doors, windows and millwork, across roughly 565 locations in 43 states, [per the company](https://www.bldr.com/about-us), reaching 91 of the top 100 metro markets. Production homebuilders that source engineered wall panels and pre-hung doors from a single supplier do not swap that relationship over a lumber price blip, and that stickiness is what generates the cash the buyback program spends. | Milestone | Year | |---|---| | JLL Partners buys Builders' Supply and Lumber from Pulte | 1998 | | IPO on NYSE | 2005 | | BMC Stock Holdings merger closes | January 2021 | | 21 acquisitions completed | 2023-2025 | | Premium Building Components acquired | January 2026 | Distribution rewards the companies that treat catalogs, branch networks and acquisition pipelines as the product, not the overhead. Builders FirstSource is this series' clearest case of a distributor whose real competitive weapon is capital discipline applied to its own supply chain. --- # Past the first click: how richer data lifts AOV and attach rate Source: https://www.anglera.com/blog/average-order-value-product-data Published: 2026-06-11 ![Past the first click: how richer data lifts AOV and attach rate](/og/hero-average-order-value-product-data.jpg) Getting a shopper to the right product page is only half the funnel. What happens next — whether the site can credibly say "this fits your grill" or "these three items go together" — depends entirely on whether the underlying attribute data is structured, correct, and complete. Recommendation engines don't reason about products; they match on fields. If compatibility, dimensions, and material attributes are missing or wrong, the "customers also bought" and "works with" modules degrade into noise, and the AOV lift retailers expect from cross-sell never shows up in the numbers. ## Why recommendation quality is a data problem, not a model problem Most teams treat weak cross-sell performance as an algorithm problem and reach for a better recommendation engine. Often the real bottleneck is upstream: the engine is only as good as the attributes it's matching on. A compatibility engine that's supposed to say "this filter fits that refrigerator model" needs a clean, standardized model-number field on both SKUs — not a free-text description where the model number is buried in paragraph three, spelled two different ways across two supplier feeds. This is the same failure mode AI answer engines run into with thin product feeds — [feed quality matters even more in a conversational environment, because thin data means fewer match opportunities](https://www.adventureppc.com/blog/chatgpt-ads-for-ecommerce-product-feed-integration-and-shopping-ads-in-2026) — and it applies just as directly to the recommendation carousel on your own PDP. Garbage attributes in, irrelevant "you might also like" rows out. Three attribute types do most of the work for cross-sell, bundles, and compatibility recommendations: | Attribute type | What it enables | Failure mode when missing/wrong | |---|---|---| | Compatibility fields (model numbers, fit specs, "works with") | Accurate accessory and replacement-part matching | Recommends parts that don't fit; drives returns and support tickets | | Dimensional/technical specs | Size- and capacity-based bundling (e.g., matching mattress + frame) | Bundle suggested at wrong size, buyer abandons cart | | Category/attribute taxonomy consistency | Cross-category cross-sell (e.g., "complete the look") | Products fall into inconsistent buckets, recommendation engine can't group them | ## What "richer data" actually changes downstream Structured, verified attributes let a recommendation engine move from co-purchase guesswork ("people who bought X also bought Y") to rules that are actually true ("this cable fits this device"). That distinction matters because co-purchase models can be popular but wrong for a given SKU, while attribute-based compatibility matching is either correct or it isn't — there's no probabilistic middle ground when a part doesn't physically fit. Attribute-driven improvements in product discovery and recommendation relevance are the mechanism behind reported AOV gains — for example, [Tatcha reported a 38% AOV uplift alongside a 3x lift in conversion rate after improving product data completeness](https://www.akeneo.com/blog/product-data-attribute-enrichment/), tied to better product discovery, search, and recommendation relevance. Treat any single number like that as directional rather than a guarantee for your catalog — the mechanism (more complete, more consistent attributes feeding search and recommendations) is the durable takeaway, not the exact percentage. ## Measuring the lift: the four numbers to track Don't rely on a single "did revenue go up" read. Isolate the effect of data quality on the funnel with metrics you can actually attribute to attribute changes: 1. **AOV (average order value).** Track it segmented by category or SKU cohort — specifically the SKUs you re-enriched versus a control group you haven't touched yet. A blended site-wide AOV number will hide the effect; a matched cohort comparison won't. 2. **Units per order.** AOV can rise from price alone; units per order isolates whether people are actually adding more items, which is the signal that cross-sell and bundling are working. 3. **Attach rate.** Calculate it directly: (add-on units sold ÷ primary product units sold) × 100, [tracked per accessory or add-on category](https://www.surebright.com/blog/what-is-attach-rate-and-how-it-helps-you-boost-revenue-without-more-traffic) rather than blended. Segment by whether the primary SKU has complete compatibility data versus incomplete — that split alone often explains most of the variance in attach rate across a catalog. 4. **Recommendation CTR and add-to-cart rate from the recommendation module itself.** Most commerce platforms and recommendation vendors expose module-level analytics — use them to see whether people are clicking the "works with" or bundle rows at all, before looking downstream at conversion. A low CTR on a recommendation widget is often a data problem (irrelevant matches) rather than a placement or design problem. Run this as an A/B or phased rollout: enrich attributes for one category or supplier feed, hold a comparable category as control, and compare AOV, units per order, and attach rate over a matched time window (same seasonality, same traffic mix). That isolates the data effect from marketing or promo noise. ## The returns and support cost hiding on the other side Attach rate and AOV get the attention because they show up as revenue, but incorrect compatibility data has a cost that shows up elsewhere: returns from parts that don't fit, and support tickets from buyers who trusted a "works with" recommendation that was wrong. Both are measurable — return reason codes tagged "incompatible" or "wrong fit," and support-ticket categories tied to product-fit questions — and both should be tracked alongside the upside metrics. A recommendation engine that lifts attach rate by suggesting the wrong part isn't actually creating value; it's moving the cost from the top of the funnel (a sale that didn't happen) to the bottom (a return that did). ## Where this connects back to the data layer None of this requires a new recommendation engine or a rip-and-replace of the PIM. Your PIM stores the attributes; the work is making sure those attributes are complete, standardized, and verified against source documentation before they ever reach the recommendation layer. Anglera plugs into whatever catalog structure you already have, scores attribute completeness and accuracy at the SKU level, and fills the compatibility and spec gaps that cross-sell, bundling, and "works with" logic depend on — so the lift you're trying to measure in AOV and attach rate has real data behind it, not a coin flip. --- # AT&T Retail: How Ma Bell's Stores Became a Top 25 Chain Source: https://www.anglera.com/blog/att-retail-retailer-playbook Published: 2026-06-11 Industries: consumer-electronics ![AT&T Retail: How Ma Bell's Stores Became a Top 25 Chain](/og/hero-att-retail-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* AT&T lands at #23 on the [NRF Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), compiled with Kantar, with $22.10 billion in 2025 U.S. retail sales. That figure comes from a company that spent its first hundred years as a regulated monopoly with no retail stores at all, no competitors, and no reason to want either. The path from there to a national chain of storefronts selling phones is one of the stranger arcs in American business, and it runs through a court-ordered breakup, a corporate buyback of its own parent, and a decision by Apple to bet its most important product on the weakest carrier in the room. ## A monopoly with no storefronts Alexander Graham Bell patented the telephone in March 1876, and a year later he co-founded the Bell Telephone Company with Thomas Watson, Gardiner Greene Hubbard, and Thomas Sanders, according to [Wikipedia's history of AT&T](https://en.wikipedia.org/wiki/AT%26T). American Telephone and Telegraph was chartered in 1885 as Bell's long-distance subsidiary, and by 1899 AT&T had absorbed its parent outright, consolidating Western Electric, Bell Laboratories, and the regional operating companies under one roof. By 1907 it controlled more than 80 percent of the U.S. telephone market. This was "Ma Bell": a regulated utility, not a retailer. You didn't shop for a phone. You leased one from the phone company, and the phone company decided what you got. That arrangement held for most of the 20th century, propped up by regulators who treated phone service as a natural monopoly. It also funded Bell Labs, source of the transistor, the laser, and Unix, from a company with zero incentive to compete on price or experience, because there was nowhere else for a customer to go. ## The breakup that created the players The Department of Justice sued AT&T for antitrust violations in 1974. The case settled in 1982, and on January 1, 1984, the Bell System split into AT&T Corp, which kept long distance and equipment, and seven independent Regional Bell Operating Companies, the "Baby Bells," per [Wikipedia](https://en.wikipedia.org/wiki/AT%26T). One of those Baby Bells was Southwestern Bell Corporation, later renamed SBC Communications. Under CEO Edward Whitacre, SBC spent the 1990s buying up its siblings: Pacific Telesis for $16.5 billion in 1996, Southern New England Telecommunications for $4.4 billion in 1998, and Ameritech for $62 billion later that year, according to [FundingUniverse's history of SBC Communications](https://www.fundinguniverse.com/company-histories/sbc-communications-inc-history/). By 1998 the combined company was pulling in $46 billion in revenue and ranked among the top 15 in the Fortune 500. Then, on November 18, 2005, SBC did something almost no company ever does: it bought its own former parent. SBC paid $16 billion for AT&T Corp, the entity the government had carved it out of two decades earlier, and immediately renamed itself AT&T Inc., claiming the 1877 lineage even though the surviving corporate structure and stock history were SBC's. A regional Baby Bell had, in effect, reabsorbed Ma Bell and taken her name. ## The brand that beat its own subsidiary Here is the detail that rarely makes the official version of this story, and it is where the retail business actually starts. In April 2000, SBC and BellSouth formed a wireless joint venture called Cingular, combining more than 100 regional cellular operators. In February 2004, Cingular won a bidding war against Vodafone for a struggling rival named AT&T Wireless Services, paying $41 billion, more than double where the company traded, according to [Wikipedia's history of AT&T Mobility](https://en.wikipedia.org/wiki/AT%26T_Mobility). The October 2004 merger folded 46 million subscribers into Cingular, making it the largest U.S. wireless carrier, and retired the AT&T Wireless brand. Two years later, once AT&T Inc. bought out BellSouth's stake in December 2006 and owned Cingular outright, it renamed Cingular back to AT&T. The carrier that had just spent $41 billion erasing a company called "AT&T Wireless" put the AT&T name back on its own storefronts anyway, under a different parent that had earned the right to it by buying the original AT&T Corp the year before. It's a small irony most retail histories skip: the AT&T brand outlived the operating company that once carried it, purely because of who ended up owning the trademark, not anything that happened at the store level. ## Why the stores actually matter now The rebrand finished in June 2007, the same month Apple launched the original iPhone, exclusively through AT&T. Apple had approached carriers with a device it refused to let anyone redesign by committee, an approach that had killed earlier phone-maker partnerships. Cingular's willingness to hand over hardware and software control, described in [Wikipedia's account of the first-generation iPhone](https://en.wikipedia.org/wiki/IPhone_(1st_generation)), came from a $150 million, thirty-month collaboration that a stronger, more entrenched carrier had less incentive to accept on Apple's terms. AT&T's retail footprint, dismissed for decades as a phone-company afterthought, became ground zero for the decade's biggest electronics launch, mostly because AT&T needed the deal more than Verizon did. | Year | Pivotal bet | |---|---| | 1984 | Bell System breakup creates SBC and six other regional carriers | | 1998-99 | SBC buys Pacific Telesis, SNET, and Ameritech | | 2004 | Cingular pays $41B for AT&T Wireless | | 2005 | SBC buys AT&T Corp, renames itself AT&T Inc. | | 2007 | AT&T stores become exclusive iPhone launch channel | | 2015-18 | DirecTV and Time Warner acquisitions | | 2021-25 | WarnerMedia and DirecTV both unwound | That store network has since been through its own churn. AT&T bought DirecTV for $48.5 billion in 2015 and Time Warner for $108.7 billion in 2018, chasing a content bundle, then reversed course under nearly $200 billion in debt: DirecTV was spun off starting in 2021 and fully sold in July 2025, and WarnerMedia merged into Warner Bros. Discovery in April 2022, per Wikipedia. What's left is a retailer whose roughly 2,300 company-owned stores, alongside authorized retailers and partners like Prime Communications, exist to sell connectivity, devices, and increasingly fiber broadband following the February 2026 purchase of Lumen's mass-market fiber business. ## The unlikely retailer AT&T's presence on a list of top American retailers is an accident of regulation and brand ownership more than a retail strategy anyone designed on purpose. A company built to have no competitors ended up running thousands of storefronts because a breakup forced a fight for customers, and because one desperate carrier said yes to Steve Jobs when a confident one might have said no. Every catalog, contract, and store shelf in this series eventually traces back to some decision made under pressure, not in a boardroom slide deck. AT&T's is a reminder that the infrastructure behind American retail is rarely as tidy as the sales figures suggest. --- # ABC Supply: Why Staying Private Is the Whole Strategy Source: https://www.anglera.com/blog/abc-supply-distributor-playbook Published: 2026-06-11 Industries: building-materials ![ABC Supply: Why Staying Private Is the Whole Strategy](/og/hero-abc-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Twenty thousand associates, more than a thousand branches across the U.S. and Canada, $20.2 billion in FY2025 revenue, and not one share traded on any exchange. That combination put ABC Supply Co. at No. 1 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for building materials. The more interesting fact isn't the rank. It's that ABC Supply is now the last major private company standing in a vertical where its two closest rivals both sold in the last eighteen months. ## The single-store start ABC Supply began in 1982 as American Builders and Contractors Supply, one store in Beloit, Wisconsin, started by Ken and Diane Hendricks. By 1992 it was Wisconsin's 12th-largest privately held company. By 2002 it had 256 locations. Ken Hendricks died in December 2007 after a fall at a construction site, and Diane Hendricks took over as chair, a role she still holds. She's now worth an estimated $21.9 billion, per [Forbes](https://en.wikipedia.org/wiki/Diane_Hendricks), and has been called the wealthiest self-made woman in the U.S. That succession, an owner-founder's widow running a $20-billion distributor for close to two decades, is itself unusual in a sector where control routinely gets sold off after the founding generation exits. ## An M&A engine that never needed a public shell ABC Supply's growth reads like a standard distributor playbook until you notice what's funding it: retained cash and family capital, not stock swaps or sponsor leverage. The [company's own history timeline](https://www.abcsupply.com/about-us/our-history/) lays out the pattern. Superior Supply in 2012 for New Jersey density. L&W Supply, bought from USG in 2016 for $670 million cash and 136 branches, which gave ABC Supply its interiors business (drywall, ceiling tile, steel framing) to sit alongside its roofing and siding core. Cedar Grove Supply for a Canadian foothold, John S. Wilson Lumber, Thermal Tech. Then, in 2022, Feldman Lumber, which ABC Supply picked up from US LBM, a direct roll-up competitor, effectively buying market share from a rival's own divestiture. Most recently, Koch Building Products, expanding coverage along the Lake Erie shoreline. In 2026 the company folded these pieces into a cleaner three-brand structure: ABC Supply Co. for exteriors, ABC Supply Interiors (the former L&W Supply, 270-plus locations), and ABC Supply Outdoor Solutions (the former Town & Country Industries, 36 locations), plus its Canadian operations. Two decades of bolt-ons, consolidated under one name, still 100% Hendricks-owned. ## The branch manager is the operating unit, not the store The less-told part of the model is how ABC Supply keeps a thousand-plus branches from becoming a thousand-plus fiefdoms without stripping out local judgment. Its Managing Partners program puts branch managers who hit sustained marks on associate development, customer satisfaction, and branch performance onto the company's National Branch Advisory Board, a standing channel from the field straight to leadership. More than 400 managers now hold that status, with fresh cohorts of 45-plus inducted most years. Combine that with a 20th consecutive Gallup Exceptional Workplace Award in 2026 and you have a genuinely rare thing in low-margin, high-turnover distribution: a culture metric that has held for two decades through multiple recessions and a change in ownership generation. ## The insight: the last one who didn't sell Here's the strategic tell worth naming directly. In March 2024, SRS Distribution, ABC Supply's closest roofing-distribution peer by revenue, agreed to sell to [Home Depot for $18.25 billion](https://ir.homedepot.com/news-releases/2024/06-18-2024-153031934), a deal that closed that June. In April 2025, [Beacon Roofing Supply completed its sale to QXO](https://investors.qxo.com/news/news-details/2025/QXO-Completes-Acquisition-of-Beacon-Roofing-Supply/default.aspx) for roughly $11 billion via tender offer, making QXO the largest publicly traded distributor in roofing and waterproofing. Two of the three companies that have anchored roofing distribution for a generation are now owned by a big-box retailer and a public roll-up vehicle, respectively. ABC Supply is the one that didn't sell. | Company | 2024-2025 outcome | New owner | |---|---|---| | SRS Distribution | Sold, June 2024, $18.25B | The Home Depot | | Beacon Roofing Supply | Sold, April 2025, ~$11B | QXO | | ABC Supply | No sale; No. 1 on 2026 MDM list at $20.2B | Hendricks family | That's not an accident of timing. It's a trade-off ABC Supply has made consistently: no public currency to fund a single $10-billion-plus acquisition, but also no board, no activist, and no leverage covenant dictating the next move. The company grows by buying regional and mid-size distributors with cash, one Koch Building Products or Feldman Lumber at a time, rather than swinging for a peer-scale merger. That's a real limitation if the vertical keeps consolidating around two or three giant balance sheets. It's also exactly why ABC Supply can keep running a 400-person branch-manager governance layer and a two-decade Gallup streak instead of a post-merger integration plan. Distribution rankings measure revenue, but the harder thing to rank is what happens to a company's culture and capital discipline once its two biggest rivals decide the future belongs to somebody else's balance sheet. ABC Supply's answer, so far, has been to keep the branch, the manager, and the ownership all pointed the same direction. This is the first in Anglera's Distributor Playbooks series, profiling the strategies behind MDM's largest North American distributors. --- # Server-side rendering on WooCommerce: making product data visible to Google and AI Source: https://www.anglera.com/blog/woocommerce-ssr-rendering Published: 2026-06-10 Platforms: woocommerce ![Server-side rendering on WooCommerce: making product data visible to Google and AI](/og/hero-woocommerce-ssr-rendering.jpg) WooCommerce renders classic product pages server-side by default, which is good news for SEO and AI visibility. But headless storefronts, page builders, and certain block or plugin setups can quietly move product data into client-side JavaScript, where it never reaches the initial HTML response. This guide covers how WooCommerce's rendering actually works, where things go wrong, and how to check. ## How a standard WooCommerce product page renders A classic (non-headless) WooCommerce store is built on WordPress's PHP template hierarchy. For a single product, WordPress looks for a slug-specific template such as `single-product-example-widget.php`, then `single-product.php` (WooCommerce's default, found in `plugins/woocommerce/templates/`), then falls back to `single.php` or `singular.php`. Whichever template resolves, WooCommerce's template functions (`woocommerce_template_single_title`, `woocommerce_template_single_price`, `woocommerce_show_product_images`, `woocommerce_template_single_excerpt`, and so on) run on the server and write title, price, gallery, short description, attributes, and stock status directly into the HTML PHP sends to the browser. The full product description renders the same way, output via `woocommerce_output_product_data_tabs` in the tabs beneath the summary. There's no client-side fetch required to see a product's name or price — it's baked into `view-source`. This is the [template hierarchy WooCommerce's own developer docs describe](https://developer.woocommerce.com/docs/theming/theme-development/template-structure/), and it's the reason WooCommerce has historically been a reasonably safe platform for SEO: the default rendering path is server-side. WooCommerce also writes `Product` structured data (JSON-LD) into the page automatically, without a theme or plugin needed. The `WC_Structured_Data` class hooks its `generate_product_data()` method into the same `woocommerce_single_product_summary` action that renders the product summary, and outputs a JSON-LD script tag (type `application/ld+json`) containing `name`, `image`, `description`, `sku`, `offers` (with `price`, `priceCurrency`, `availability`), and seller/organization data, per the [WooCommerce structured-data documentation](https://github.com/woocommerce/woocommerce/wiki/Structured-data-for-products). The same class separately writes breadcrumb and website-level markup via the `woocommerce_breadcrumb` and `woocommerce_before_main_content` actions. Like the rest of the page, this JSON-LD is rendered server-side and present in the raw HTML — you don't need JavaScript to see it, and you can extend or override it with the `woocommerce_structured_data_product` filter. ## Where client-side rendering creeps in That default is easy to lose. Watch for these patterns, which are common in real WooCommerce stores: - **Headless / decoupled storefronts.** Stores built with the WooCommerce Store API or WPGraphQL/WooGraphQL feeding a React, Vue, or plain SPA frontend often render entirely client-side unless the frontend framework is explicitly configured for server-side rendering (SSR) or static generation (SSG). A Next.js storefront using SSR or SSG will output full HTML per request or at build time; the same storefront running as a client-only single-page app will ship a near-empty HTML shell and build the product page in the browser after a data fetch. From the outside, both "look" identical to a shopper — the difference only shows up in the raw response a crawler sees. - **Page builders and dynamic widgets.** Elementor, Divi, and similar builders sometimes render "dynamic" product data — related products, upsells, variation swatches, tabbed descriptions — via AJAX calls that fire after the initial page load rather than at PHP render time. - **Variation data fetched on demand.** WooCommerce's built-in variable-product handling embeds all variation data (per-variation price, SKU, description, image) as a JSON blob in a `data-product_variations` attribute on the form, which JavaScript reads to update the display when a shopper picks options — this data is already in the HTML. The anti-pattern is a plugin or custom build that instead fetches variation-specific data via a live AJAX call, meaning only the parent product is in the source HTML and the specific variant a customer (or an AI agent) lands on isn't. - **"Load more" / infinite scroll on the gallery or specs tab.** Content that renders only on scroll or click, backed by a fetch call, isn't in the initial HTML at all. None of this breaks the shopping experience for humans in a browser. It matters because Google — and AI crawlers, most of which do not execute JavaScript at all — read the page differently than a browser does. ## Why this matters for crawlers and AI agents Google's own guidance describes rendering as a two-wave process: Googlebot fetches raw HTML immediately and can index it right away, then a second, JavaScript-executing rendering pass happens later, with a delay that can range from seconds to days or weeks depending on rendering-queue load, per [Google Search Central's JavaScript SEO documentation](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics). Content only visible after JavaScript execution is in Wave 2 — delayed, and dependent on Google being able to execute your JS correctly at all. Most non-Google AI crawlers and agent fetchers (used for answer engines, shopping assistants, and LLM-based research tools) skip JavaScript execution entirely and only ever see Wave 1's raw HTML. If a product's price, availability, GTIN, or specs only exist after a client-side fetch, those systems never see them, full stop. ## How to validate Check the difference between what's sent and what's rendered directly: 1. **View-source vs. rendered DOM.** Open the product page, use "View Page Source" (raw HTML, no JS executed), and separately open DevTools → Elements (the live, JS-modified DOM). If price, SKU, description, or availability appear in Elements but not in View Source, that data is being added client-side. 2. **Curl the page.** Run a plain HTTP request with no JS engine and grep for the fields you care about: ```bash curl -s https://example.com/product/example-widget/ | grep -i "application/ld+json" -A 20 curl -s https://example.com/product/example-widget/ | grep -i "product_variations" ``` If your product name, price, and JSON-LD block show up in that output, they're server-rendered. If they don't, they're arriving via JavaScript. 3. **Google's Rich Results Test.** Paste the product URL into the [Rich Results Test](https://search.google.com/test/rich-results) to confirm your `Product` JSON-LD parses correctly and see exactly what Google's renderer extracts. 4. **Disable JavaScript.** In Chrome DevTools, Command Menu → "Disable JavaScript," then reload. Whatever's missing from the page at that point is invisible to most non-Google crawlers. ## Verified as of July 2026 Template hierarchy, `WC_Structured_Data`, and the `data-product_variations` mechanism reflect current WooCommerce core behavior; headless/SSR behavior depends on the specific frontend framework and its configuration, so confirm your store's actual rendering setup against the checks above rather than assuming based on platform alone. Getting product data into server-rendered HTML only pays off if the data itself is worth serving — complete specs, accurate identifiers, real use-case detail, not a thin description and a price. That's the piece Anglera handles: it continuously enriches product attributes, specs, and identifiers in the systems you already use, so whichever rendering approach your WooCommerce store takes, there's substantive data to put on the page. Your PIM stores the data; Anglera does the work of keeping it accurate and complete. --- # Ross Stores: How a Near-Death Crisis Built an Off-Price Giant Source: https://www.anglera.com/blog/ross-retailer-playbook Published: 2026-06-10 ![Ross Stores: How a Near-Death Crisis Built an Off-Price Giant](/og/hero-ross-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Ross Stores lands at #22 on [NRF's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $22.70 billion in 2025 U.S. retail sales. The name on the door dates to 1950. The company that actually built that number didn't exist until three decades later, and it was nearly destroyed within its first four years. ## A name that survived two owners and one total reinvention In 1950, a man named Morris "Morrie" Ross opened a junior department store in San Bruno, California. He sold it in 1958 to William Isackson, who grew it to six stores around the Bay Area over the next two decades, per [Wikipedia's account of the company's founding](https://en.wikipedia.org/wiki/Ross_Stores). By the early 1980s it was still a modest regional chain selling mid-tier department-store merchandise, nothing like the business that carries the Ross name now. That original Ross Department Store had no off-price model, no treasure-hunt buying strategy, and no relationship to the retailer described in this piece beyond a signature painted on six storefronts. The name is essentially all that carried forward. ## The 1982 buyout that invented the real Ross In August 1982, a group of investors led by Stuart Moldaw and Donald Rowlett bought those six stores. Moldaw had already built and sold three off-price concepts, including Pic-A-Dilly and Country Casuals. Rowlett had run F.W. Woolworth's J. Brannam off-price division, growing it to 36 units. Among the backers was Mervin Morris, founder of Mervyn's, according to [Funding Universe's company history](https://www.fundinguniverse.com/company-histories/ross-stores-inc-history/). Together they saw an underserved gap in California retail: branded, designer-label apparel sold at 20 to 60 percent off, in stripped-down stores that skipped the fitting-room fuss and full-price overhead of department stores. The pace of what followed is the part that reads like a dare. Two stores converted in fall 1982. Eighteen more opened in 1983, alongside a push into Nevada. By 1984 the chain had jumped into Arizona, Washington, Texas, and Oklahoma, adding a Texas and Oklahoma footprint through the acquisition of 15 Handyman division stores from Edison Brothers Stores. Headquarters moved into a 494,000-square-foot facility in Newark, California that same year. Ross went public on Nasdaq on August 8, 1985, priced at $17 a share, with 107 stores open and sales up 79 percent to $375.9 million. ## The crash that taught Ross what off-price actually means Growth this fast eventually meets ground it hasn't tested. Texas and Oklahoma's economies weakened in 1986, and Ross had planted stores across both on the strength of momentum rather than proven demand. The chain still opened 39 new locations that year, pushing to 121 stores in 16 states, but 25 of the new Sun Belt units were unprofitable enough to require closure. The company posted a $41.4 million loss for 1986, per Funding Universe's history. Rowlett, one of the two founders, left in 1987. Norman Ferber, the merchandising executive who was promoted to president and COO that year and became CEO in January 1988, ran the recovery alongside Moldaw. Their fix wasn't a new gimmick. It was restraint: only 11 new stores opened in 1987, and expansion narrowed to three proven regions, the West Coast, the Washington D.C. area, and Florida. They cut domestics departments that weren't earning their shelf space and added higher-margin categories instead, cosmetics, fragrance, sport coats, silk dresses. By 1989, 95 percent of the chain's 140 stores carried full cosmetics and fragrance sections staffed with beauty consultants. Ross turned an $11.5 million profit in 1987, one year after the loss. This is the part of the story worth naming plainly, because it's not on Ross's own About page: the buying discipline that defines off-price retail today, narrower assortments bought deeper on fewer, better categories rather than broad selection chasing every customer, wasn't the founders' original 1982 concept. It was a scar left by a near-collapse in Texas and Oklahoma. Ross didn't invent treasure-hunt merchandising as a strategy; it stumbled into the strategy while stopping the bleeding, then kept it because it worked. ## Scaling the discipline The 1990s vindicated the recovery. Ross crossed $1 billion in annual sales in 1992, reached 292 stores across 18 states by 1995 with $1.4 billion in revenue, and pushed sales per square foot from roughly $214 in 1991 to $230 by 1995, a climb that happened during a national recession rather than in spite of one. Michael Balmuth, who'd joined the company in 1989, took over as CEO in September 1996 and ran the company through its scale-up into the 2000s, sharpening the buying model that now defines the chain: opportunistic purchases from overproduction, canceled orders, and closeouts across thousands of vendors, resold fast in no-frills stores with low occupancy costs. Headquarters moved from Newark to Pleasanton in 2003, then to neighboring Dublin in 2014, the same year Barbara Rentler took the CEO seat and became the 25th female Fortune 500 chief executive. The company had also built out dd's DISCOUNTS, a value-tier banner aimed at even more price-sensitive Sun Belt shoppers, now running 353 locations alongside roughly 1,800 Ross Dress for Less stores, per Ross's own [investor materials referenced in its Wikipedia entry](https://en.wikipedia.org/wiki/Ross_Stores) and confirmed store counts. James Conroy, who previously ran Boot Barn, succeeded Rentler as CEO in February 2025. By 2026, Ross reported roughly $22.8 billion in annual revenue and around 111,000 employees, according to [Forbes' company profile](https://www.forbes.com/companies/ross-stores/), a business more than fifty times the size of the six Bay Area stores that got bought out in 1982. Every catalog line, every SKU, every store's worth of inventory that Ross buys deep and sells fast started as somebody else's overrun. That unglamorous plumbing of retail, matching surplus goods to shelf space at speed, is the same problem this series keeps finding at the center of every great American retailer's story. --- # Meijer: The Family Grocer That Invented the American Hypermarket Source: https://www.anglera.com/blog/meijer-retailer-playbook Published: 2026-06-10 Industries: grocery-cpg ![Meijer: The Family Grocer That Invented the American Hypermarket](/og/hero-meijer-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Meijer sits at #21 on [NRF's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $22.82 billion in 2025 U.S. retail sales. It is still owned entirely by the family that founded it, which is unusual enough at that scale. What is more unusual is that the format every big-box grocer in America now runs on, one roof holding groceries and general merchandise, was built first in Grand Rapids, Michigan, by a barber who needed somewhere to put a store. ## A Barbershop With a Grocery Problem Hendrik Meijer emigrated from the Netherlands in 1907 and settled into cutting hair in Greenville, Michigan. By 1934, in the depth of the Depression, he was looking to expand his shop and couldn't find anyone willing to rent him adjacent space. So he opened a grocery store instead, stocked with $338.76 in goods bought on credit, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/meijer-inc-history/). His 14-year-old son Frederik worked the store from the start. That detail matters because Fred is the one who turned a barber's side hustle into a format the whole industry would eventually copy. ## The Basket That Changed the Store In 1935, Fred designed something new for the shop floor: hand-held baskets and a sign inviting customers to gather their own groceries instead of handing a list to a clerk behind the counter. Self-service sounds obvious in hindsight. In 1935 it was a genuine break from how American grocery stores operated, and it let Meijer move more customers through the store faster than competitors who still staffed a full counter service model. The store grew on that idea. Cedar Springs got a location in 1942, Ionia in 1946, and the company opened its first Grand Rapids store in 1949, per [Wikipedia's account of the company](https://en.wikipedia.org/wiki/Meijer). By the late 1950s Meijer ran more than ten stores across Michigan. ## Betting Against Stamps In 1961, with trading stamps (the loyalty currency of the era, redeemable for merchandise) nearly universal among grocers, Meijer dropped them. The company chose to compete on price instead of on a rewards gimmick every rival was already running. It was a contrarian call at the time, and it previewed a pricing philosophy Meijer would return to more than once, including a second break from double coupons in 1990. ## Thrifty Acres: Building the Format First The pivotal bet came in 1962. Meijer opened Thrifty Acres at 28th Street and Kalamazoo Avenue in Grand Rapids: a 180,000-square-foot store that combined a full grocery department with general merchandise under one roof. It is widely credited as the first hypermarket in the United States. Hendrik Meijer died in 1964 at age 57, two years after that store opened. Fred, then in his mid-40s, kept building. Thrifty Acres locations were renamed Meijer in 1986, and the company pushed further into modernizing the shopping experience: 24-hour store operations by 1988, early electronic checking technology by 1989. This is the fact worth sitting with. Walmart didn't open its first Supercenter, its own version of groceries-plus-general-merchandise under one roof, until 1988. Meijer had been running that format for 26 years by then. The company that is now synonymous worldwide with the combined supercenter model was not the one that invented it. ## Why the Inventor Stayed Regional That gap between inventing the format and dominating it is the piece of this story that doesn't show up on Meijer's own history page. Meijer had a two-decade head start on the hypermarket and never used it to go national, go public, or franchise aggressively. Fred Meijer passed operational control to his sons Doug and Hank in 1990 but stayed chairman until his death in 2011, and the company kept expanding methodically rather than explosively: Indiana in 1994, Illinois in 1995, Kentucky in 1996, reaching $6 billion in revenue with 117 supercenters across five states by 1997, per FundingUniverse. Compare that pace to Walmart's national buildout over the same years and the contrast is stark. Meijer chose depth in the Midwest over breadth across the country, and it chose to stay private while doing it. That's the unique insight here: the company that solved the hypermarket problem first is also the case study in choosing not to scale it the way the format's eventual winner did, and both companies were reacting to the same discovery, one just optioned it for national conquest and the other didn't. The company kept its patient-expansion posture well past Fred's death. Wisconsin got its first stores in 2015, Michigan's Upper Peninsula in 2017, Ohio in 2019, with Pennsylvania entry planned as of 2025, according to [Wikipedia](https://en.wikipedia.org/wiki/Meijer). Today Meijer operates roughly 259 supercenters plus smaller-format stores, employs about 70,000 people, and remains 100 percent owned by the Meijer family, now into a fourth generation of leadership. Fred Meijer's grandson Peter Meijer would go on to represent Michigan's 3rd congressional district, a footnote to a family whose fortune was built one grocery aisle at a time, as detailed on [Wikipedia's page for Frederik Meijer](https://en.wikipedia.org/wiki/Frederik_Meijer). Ninety-one years after a barber ran out of room to expand his shop, the company still runs on the same instinct that built it: solve the format problem first, and let the growth follow at its own pace rather than someone else's. Every era of American retail runs on the unglamorous machinery behind the storefront, whether that's a basket of self-served groceries in 1935 or a supply chain feeding 259 supercenters today. This profile is part of an ongoing series on the companies that built that machinery. --- # Locke Supply Co: How an Employee-Owned Distributor Wins Source: https://www.anglera.com/blog/locke-supply-distributor-playbook Published: 2026-06-10 Industries: plumbing ![Locke Supply Co: How an Employee-Owned Distributor Wins](/og/hero-locke-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Locke Supply Co. charted at #39 on the electrical side of [Modern Distribution Management's 2025 Top Distributors list](https://www.mdm.com/top_distributors), the annual ranking of North America's largest wholesale distributors, on $738 million in 2024 revenue, but does not appear on MDM's 2026 lists. That placement undersells the company slightly: Locke started, and still largely operates, as a plumbing house, with electrical and HVAC layered on top. The more interesting fact is who owns it. In a channel where private equity has spent two decades buying up regional wholesalers, Locke Supply is a 100 percent employee-owned S-corporation, and has been since the year 2000. ## A mobile store, not a fixed one Don and Wanda Locke opened a wholesale plumbing supply outlet in Bartlesville, Oklahoma in 1955, a two-person operation with no other employees. The business relocated to Oklahoma City within two years, and in 1958 it opened a second branch, according to the company's own history published on [lockesupply.com](https://www.lockesupply.com/About). That second branch mattered more than the number suggests. It set the pattern Locke has repeated for almost 70 years: rather than build a handful of mega-branches, put a smaller store within reach of every contractor in the territory, then let density do the selling. Today that adds up to more than 200 store locations across six states — Oklahoma, Texas, Missouri, Kansas, Arkansas and Virginia — a footprint [PHC&P Pros traced](https://www.phcppros.com/articles/21229-locke-supply-co-a-legacy-of-growth-and-innovation) back to the same "take the store to the customer" logic Don Locke used when he opened that 1958 branch. Virginia is the outlier on that list, and it tells its own story. Locke bought RESCO, a three-location Richmond electrical distributor, in 2019 — what [Electrical Trends called](https://electricaltrends.com/2019/08/20/the-electrical-acquisition-market-is-heating-up/) "Locke's first foray outside its marketplace." Nearly every other Locke branch sits inside a contiguous Southwest cluster it built organically over decades. The Virginia beachhead is the exception that shows what Locke does when it wants a new region: it buys a small, already-profitable local operator instead of parachuting in a greenfield branch, then leaves the backfilling for later. ## Ownership as the actual strategy The employee-ownership structure is not a footnote, it is the mechanism that explains everything else Locke does. Don Locke converted the company to a 100 percent ESOP before his death in 2000, according to PHC&P Pros, trading family ownership for employee ownership rather than a sale to a strategic buyer or a private equity sponsor. That decision runs against the grain of the wholesale plumbing and electrical channel, where consolidators like WinSupply's franchise-style rollups and PE-backed regional platforms have absorbed dozens of family distributors over the past fifteen years. An ESOP changes the math on big, slow-payoff bets. Locke has just finished one: a $150 million, 1.5-million-square-foot headquarters and distribution center in southeast Oklahoma City's OKC 577 development, a four-year build the company marked alongside its 70th anniversary in 2025, per [Oklahoma Farm Report](https://www.oklahomafarmreport.com/2025/08/29/locke-supply-celebrates-70-years-with-state-of-the-art-distribution-center/). Roughly 400 of the company's headquarters staff work out of the new facility. A PE-owned distributor sizing that investment against a five-to-seven-year hold period runs a very different calculation than an ESOP company answerable to the associates who will still be working there in twenty years. It also owns Cloak Freight, its own trucking and third-party logistics operation based at the new hub, meaning the same private-fleet logic that vending-machine and technical-sales distributors use to lock in accounts here shows up as controlled linehaul between 200-plus branches instead. That same long-horizon culture shows up in who runs the place. Oklahoma Farm Report highlighted John Orman, Locke's Head of Innovation, who was hired at 18 while still in high school — a promote-from-within path that is common to talk about in distribution and rarer to actually staff a headquarters function with. ## The tension worth naming The plain insight here: Locke Supply competes at real scale, $738 million and 200-plus branches, without ever taking outside capital to get there, in a sector where nearly every peer of comparable size has. That buys patience for capital projects and immunity from a sponsor's exit clock. It also means growth funds itself branch by branch and acquisition by acquisition, out of retained earnings and ESOP-friendly debt, which is a slower flywheel than a PE-backed platform doing five tuck-ins a year. Locke has effectively traded speed for control. Seventy years in, on the evidence of a $150 million headquarters it just built for itself, that trade still looks like the right one. ## Timeline | Year | Milestone | |---|---| | 1955 | Don and Wanda Locke open a wholesale plumbing outlet in Bartlesville, OK | | 1958 | Second branch opens, setting the multi-branch model | | 2000 | Company converts to a 100% ESOP; Don Locke dies | | 2019 | Acquires RESCO, a three-location Richmond, VA electrical distributor | | 2025 | Opens $150M, 1.5M-square-foot HQ and distribution center; marks 70th anniversary | Distribution rewards the companies willing to fund the unglamorous parts, the extra branch, the owned truck, the catalog nobody outside the trade ever sees, years before the payoff shows up on a P&L. Locke Supply built its whole ownership structure around being able to do exactly that. --- # 95% complete, still wrong: why fill rate isn't data quality Source: https://www.anglera.com/blog/fill-rate-vs-accuracy Published: 2026-06-10 ![95% complete, still wrong: why fill rate isn't data quality](/og/hero-fill-rate-vs-accuracy.jpg) A merchandising director we'll call typical pulls up the quarterly data quality dashboard: sleeve length, 95% filled. Fabric weight, 91%. Fit, 98%. Every KPI is green. Six weeks later, a rebuy recommendation for "short-sleeve knit tops" undershoots by a third, because a meaningful chunk of the SKUs tagged short-sleeve are actually three-quarter or long-sleeve styles, mislabeled at intake and never checked again. The field was full. It just wasn't true. This is the trap sitting inside almost every data governance program in retail and distribution: completeness and accuracy are different properties, measured differently, owned by different people, and only one of them shows up on the scorecard. ## What fill rate actually measures Fill rate answers one question: is there something in the cell. It is cheap to compute, easy to trend, and satisfying to report because it only ever moves in one direction as a catalog matures. A [field is complete](https://dqops.com/master-data-management-vs-data-quality/) when all required data is present in the record. Nowhere in that definition is a check against reality. Accuracy answers a harder question: does the value match the real-world product. That check requires a source of truth outside the record itself, imagery, a spec sheet, a lab test, a customer who actually wore the thing, and a process to compare the field against it. Most PIM and MDM tooling was built to enforce the first property. Almost none of it was built to enforce the second, because the second requires domain judgment the system doesn't have. Master data teams know this gap exists. It's one reason poor data quality still [costs organizations an average of $12.9 million a year](https://www.atrocore.com/en/blog/master-data-quality-management), and why a recent IBM study found data problems near the top of operating leaders' concerns even at companies that consider their master data "governed." Governance disciplines who can edit a field and when. It rarely disciplines whether the edit was correct. ## Nobody owns correctness Ask a data governance lead who owns the fabric composition field and you'll get an answer: merchandising, or product development, or whoever loaded the PIM at launch. Ask who verified that a specific SKU's fabric composition is right, today, and the answer gets vague fast. The team that owns the field structurally is rarely the team with product-level knowledge to judge a specific value, and the team that could judge it, buying, design, QA, has no workflow that routes values back to them for a second look. That's the structural reason "95% complete" persists as a metric while "95% correct" almost never appears anywhere. Nobody is positioned to compute the second number, so nobody reports it, so leadership manages to the number that exists. Three failure patterns show up constantly once you go looking: - **Attribute contradicts the asset.** The spec field says short-sleeve; the product photo shows long-sleeve. The description was likely written from an early tech pack, and the garment changed in a late sample revision that never made it back into the PIM. - **Copied from a sibling SKU.** A new colorway or a new season style gets seeded from the closest existing item to save time, and half the spec carries over unchanged, including attributes that should have changed with it, like weight, fabric blend, or care instructions. - **Legacy values nobody revisits.** A field was populated correctly for a product line that no longer exists in that form, and every successor SKU inherited the value by default because updating it wasn't anyone's job. None of these show up as a blank cell. All three pass a fill rate check with a perfect score. ![Quadrant: fill rate versus accuracy, where high fill with low accuracy is the 95-percent-complete trap](/diagrams/fill-vs-accuracy-quadrant.svg) ## Why this corrupts planning specifically, not just the PDP An e-commerce filter that shows the wrong sleeve length costs a handful of bad add-to-carts and some returns. A forecast built on the same wrong field is worse, because forecasting aggregates. A demand plan for "short-sleeve knit tops" sums every SKU tagged that way into one series, and a like-item forecast for a brand-new style leans on the sales history of items sharing its attributes, a technique demand planners increasingly rely on precisely because [new products lack their own history](https://www.toolsgroup.com/blog/how-ai-powered-demand-forecasting-transforms-new-product-introductions/). If the attribute used to find those analogs is wrong, the new item gets grouped with the wrong comparison set, and the forecast inherits someone else's demand curve. The output doesn't look broken. It looks like a normal plan with a normal-looking confidence interval, wrong for a reason that never surfaces in a forecast accuracy review, because the review checks whether the number was hit, not whether the inputs describing the product were true. Multiply that across an assortment and it compounds with global [inventory distortion already running around $1.73 trillion a year in lost sales and excess stock](https://www.ihlservices.com/news/analyst-corner/2025/09/retail-inventory-crisis-persists-despite-172-billion-in-improvements/), a good share of which traces back to plans built on the wrong picture of what's actually in the warehouse. ## From filled to verified | State | What it tells you | What it misses | |---|---|---| | Blank field | Nothing was captured | Everything | | Filled field | Something was captured | Whether it's correct | | Verified field | Captured value matches an independent source | Little, if the sources are good | Turning "filled" into "verified" means cross-checking the text value against something other than the record itself. Does the sleeve-length field match what the product photo shows. Does the fabric weight in the PIM match the number on the actual spec document or lab test. Does the fit description match what reviewers repeatedly say about true-to-size or runs-small. Where two sources disagree, the disagreement should be flagged for a human to resolve, not silently overwritten by whichever source ran last. That's a mechanical process, not a philosophical one: extract a candidate value from imagery, tech packs, and review text; compare it against the field on record; score the agreement; route mismatches to a queue instead of letting them sit. It's also the layer most PIMs and ERPs were never built to run, because they're built to store a value, not to interrogate whether it's still true. That's the specific gap Anglera works: it plugs into whatever PIM, MDM, or flat file already holds the catalog and cross-validates attributes against imagery, spec documents, and reviews, flagging conflicts instead of hiding them behind a fill rate number. The point isn't a prettier dashboard. It's giving planning teams attributes they can aggregate on without silently baking someone else's mislabeled SKU into next quarter's buy. --- # Edges Electrical Group Chose Cooperation Over a Buyout Source: https://www.anglera.com/blog/edges-electrical-distributor-playbook Published: 2026-06-10 Industries: electrical ![Edges Electrical Group Chose Cooperation Over a Buyout](/og/hero-edges-electrical-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Edges Electrical Group charted at #40 on [Modern Distribution Management's 2025 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical vertical but does not appear on MDM's 2026 lists, one of the few names on that ranking to have stood on its founding family's terms rather than a private equity term sheet. The company's path there runs through a 2014 merger, a 2023 outside CEO hire, and a 2024 decision to double down on independence by joining a buying group instead of selling out. That sequencing, not any single branch count or SKU catalog, is the story worth reading. ## Two Rivals, One Name Edges did not start as Edges. It started as two separate companies covering opposite ends of Northern California: Electrical Distributors Co., founded in San Jose in 1948, and Granite Electrical Supply, based in Sacramento. In December 2014 the two merged, and the combined entity took the name Edges Electrical Group, per [Electrical Marketing's coverage of the deal](https://www.electricalmarketing.com/news/industry/article/20911353/electrical-distributors-and-granite-electrical-join-forces-to-expand-northern-ca-coverage). At announcement, Electrical Distributors was running about $70 million in sales, Granite about $58 million, and the combined company projected a jump into the low 60s on the Electrical Wholesaling Top 200 with 11 locations under Scott Lehmann and Bob Powers. The stated logic was geographic, not defensive. Bay Area contractors were already working Sacramento Valley jobs and vice versa, so two regional distributors kept tripping over each other's customers. Merging solved that without either side buying the other out. It's a quieter version of consolidation than the roll-up stories dominating the rest of the electrical channel: two family-scale operators recognizing that a shared name beat a shared competitor. ## The Outside Hire A decade after the merger, Edges made a leadership move that a lot of family-adjacent distributors avoid: it hired a CEO from outside the company entirely. In May 2023, Isaac Madarieta became president and CEO, a role [tED magazine covered](https://tedmag.com/edges-electrical-group-names-new-president-and-ceo/) as Edges reaching "its next level of success." Madarieta's resume is unusual for the seat. He started as a journeyman electrician in Idaho, worked his way through distribution roles including VP of Operations and COO, then spent time on the manufacturing side in agricultural irrigation, running channel management for North America. That irrigation-industry stint matters more than it looks. Agricultural irrigation runs on the same playbook electrical distribution does: seasonal demand, dealer networks, a manufacturer relying on channel partners to actually move product and service it after the sale. Edges didn't hire a career electrical-industry lifer to run the next chapter. It hired someone who had sat on the manufacturer's side of a channel relationship and knew what that counterparty wanted from a distributor. By the time he took over, Edges was running 12 branches and roughly 350 employees, per the same announcement. ## Buying Group, Not Buyout The real strategic tell came seven months later. Effective January 1, 2024, Edges joined AD's Electrical US division as a new owner-member, according to [AD's own announcement](https://www.adhq.com/about/ad-news/edges-electrical-group-joins-ad-s-electrical-us-division). AD is a member-owned buying and marketing cooperative, not a strategic acquirer. Distributors who join it pool purchasing volume, share e-commerce infrastructure, and get access to a wider supplier network, but they keep their own name, their own P&L, and their own equity. That distinction is the piece of this profile that would not show up on a company About page. In electrical distribution, a family-owned business with roughly $360 million in sales, per 2022 figures reported by [Electrical Wholesaling](https://www.ewweb.com/business-management/marketing/article/21277816/edges-electrical-group-joins-ads-electrical-us-division), and an EW Top 150 ranking sits squarely in the size band where private equity buyers and national roll-ups (Sonepar, Rexel, WESCO among them) have spent the last decade shopping. Selling was an available option. Edges took the other one: it bought scale through cooperative membership rather than selling scale to a strategic buyer. CEO Lehmann called AD "the perfect partner to match our future needs and goals," and president Matt Russello framed it as alignment on vision, language that reads less like an exit and more like a hedge against needing one. ## The Bet Underneath the Bet Joining a buying group is not free of trade-offs. AD membership means sharing category strategy and technology roadmaps with other independent owners, some of whom compete for the same regional accounts Edges serves. It also means Edges's growth ceiling is now partly a function of AD's collective bargaining power with manufacturers, not just its own branch expansion. Edges made a parallel bet on operational technology in July 2024, selecting Blue Ridge for supply chain planning, per [Blue Ridge's press release](https://www.blueridgeglobal.com/press-releases/edges-electrical-group), aimed at tightening inventory allocation across its 12 locations and channels. That is the unglamorous work behind the buying-group strategy: cooperative purchasing power only pays off if the branches underneath it can actually execute allocation and fill rate at the SKU level. The pattern across the last decade of Edges's history is consistent even as the moves look different on the surface. Merge instead of compete. Hire a channel operator instead of promoting a lifer or handing the keys to a financial sponsor. Join a cooperative instead of taking a buyout offer. Each choice traded a faster, more dramatic outcome for a slower one that kept the company's name on the door. Every distributor on the MDM list runs on the same unglamorous infrastructure underneath the branch count: a catalog that has to be right, inventory that has to be where the order says it will be, and data that has to move as fast as the trucks do. --- # DGI Supply: The Distributor Born Inside a Manufacturer Source: https://www.anglera.com/blog/dgi-supply-distributor-playbook Published: 2026-06-10 Industries: mro-industrial ![DGI Supply: The Distributor Born Inside a Manufacturer](/og/hero-dgi-supply-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* DGI Supply lands at No. 22 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) in the MRO category, one of only a handful of names on that list that has never had an IPO, a private equity sponsor, or a public parent. It has had exactly one owner-lineage since 1927. That is the whole story in miniature: a cutting-tool distributor that grew up not around a manufacturer but inside one, and never fully left the nest. ## A distributor with a factory's last name Most of MDM's top-ranked MRO players started as a catalog operation, a hardware store, or a buying group that scaled into a supply chain. DGI Supply's history runs the other direction. The company traces its roots to 1927 and today still markets itself as ["a DoALL Company since 1927,"](https://www.linkedin.com/company/dgi-supply) a direct reference to the DoALL Company, the Illinois manufacturer whose founder Leighton Wilkie is widely credited with popularizing the metal-cutting band saw. DGI Supply began as the arm that got that equipment and its consumables into factories, not as an independent middleman shopping for suppliers to represent. That distinction still shows up in how the company describes itself. A 2009 profile in [American Machinist](https://www.americanmachinist.com/news/article/21893886/dgi-supply-acquires-tool-crib-supplys-metalworking-base) identified DGI Supply as a "full-line industrial distributor" carrying more than 1,500 brand names, headquartered out of Wheeling, Illinois, with 41 sales offices across North America, and quoted Bill Henricks at the time not as a DGI executive but as chief operating officer of DoALL, DGI's parent. Seventeen years later, per its current [LinkedIn profile](https://www.linkedin.com/company/dgi-supply), DGI Supply still describes itself as "family owned and operated," now running roughly 38 supply centers across North America, including eight regional warehouses in Canada, and partnering with more than 1,000 manufacturers to serve metalworking, metal forming, fabrication, and general manufacturing shops. | Year | Milestone | |---|---| | 1927 | Founded as the distribution arm tied to DoALL, the band-saw manufacturer | | 2009 | Absorbs Tool Crib Supply's metalworking base, consolidating fulfillment into its Wheeling, Illinois hub | | 2026 | Ranks No. 22 in MRO and No. 48 in Industrial Supplies on MDM's Top Distributors list | ## Growth by absorption, not acquisition headlines DGI Supply's expansion has rarely looked like the roll-up strategy common elsewhere in industrial distribution, where a platform buys a logo, keeps the name on the door for a press release, and integrates the back office later. The 2009 Tool Crib Supply deal is a clean example of the model instead: DGI, per American Machinist, hired Tool Crib's employees directly, took over its metalworking customer relationships, and folded the combined inventory into its own Wheeling warehouse and automated fulfillment systems. Henricks framed the logic plainly at the time: combined inventory would improve service levels while DGI's own systems reduced errors. It is a distributor swallowing capacity into an existing operating backbone rather than bolting on a new brand. That is a quieter growth story than the debt-fueled consolidation that built several of DGI's larger MRO peers, and it is consistent with a business still funded by its own balance sheet rather than sponsor capital looking for an exit multiple. ## Still family-owned in a sector that keeps consolidating Here is the detail worth naming directly: DGI Supply does not disclose revenue, an industrial distributor operating in a vertical where scale increasingly means being owned by Grainger, Fastenal, MSC Industrial, or a private equity platform stitching together regional players. DGI has stayed independent and family-run for essentially a full century, tied to the same manufacturing lineage it started with. That is unusual longevity in a channel where "family owned" is more often a chapter in a company's history than a current-tense fact. The trade-off is real, and it cuts both ways. Staying private and manufacturer-adjacent has let DGI build a technical, applications-heavy selling culture around cutting tools, band saws, and fluid management, categories where a customer's tool crib is not a commodity purchase but an engineering conversation. It has also kept the company's physical footprint modest relative to the giants at the top of MDM's MRO list, whose branch counts and e-commerce reach run an order of magnitude larger. A distributor with roughly three dozen supply centers competes on depth in its categories and relationship density with its accounts, not on being everywhere. ## The bet embedded in the model The honest tension for DGI Supply is whether a century-old, single-lineage ownership structure that has served it through decades of consolidation can keep pace with a channel now being reshaped by digital procurement and vendor-managed inventory at massive scale. Its answer so far has been to stay narrow and technical rather than chase breadth: a smaller network of supply centers, a brand-heavy catalog built around names like Sandvik, 3M, OSG, and Norton alongside its own DoALL lineage, and customer relationships built on tool-crib expertise rather than a national footprint. Whether that specialization is a moat or a ceiling probably depends on how much of MRO distribution stays a relationship business versus a logistics one over the next decade, and DGI Supply has made its bet on the former. Distribution rankings like MDM's measure revenue and reach, but underneath every name on that list sits the same unglamorous machinery: a catalog that has to stay accurate, a warehouse network that has to stay full, and a data trail that has to hold up when a customer's tool crib runs dry at 2 a.m. DGI Supply's century inside a manufacturer's shadow is one way of solving that problem. It won't be the last company in this series to try a different one. --- # United Electric Supply: Growth Funded by Employee Ownership Source: https://www.anglera.com/blog/united-electric-distributor-playbook Published: 2026-06-09 Industries: electrical ![United Electric Supply: Growth Funded by Employee Ownership](/og/hero-united-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* United Electric Supply lands at #39 on the electrical vertical of [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual accounting of North America's largest wholesale distributors across 20 product categories. The Wilmington, Delaware-based company has spent six decades building a Mid-Atlantic electrical supply business the ordinary way: branches, technical services, supplier relationships. But its growth engine for the last several years has been anything but ordinary, and it says a lot about what independent distributors have left to compete with when private equity and multinational strategics are buying up the category. ## A 1965 startup that never sold United Electric was founded in 1965 and has stayed in Delaware ever since, running Regional Service Centers out of New Castle and Culpeper, Virginia, alongside branches spread across Delaware, Pennsylvania, New Jersey, Maryland, and Virginia. What sets it apart from most sixty-year-old distributors its size is what didn't happen along the way: it never got sold to a strategic buyer, never got rolled into a private equity platform. Instead it converted to a 100% Employee Stock Ownership Plan, and the ESOP is now central to how the company both retains talent and grows. That distinction matters more than it sounds like it should. Electrical distribution has consolidated hard over the past two decades. Sonepar, WESCO, and Rexel have absorbed dozens of regional and family-owned electrical houses, and PE-backed platforms have rolled up plenty more. Every acquisition removes one more independent brand from the map and usually installs private-equity-style cost discipline in its place. United took the opposite structural bet: instead of selling itself, it started buying others and offering them the ESOP as the reason to join. ## Using the ESOP as an acquisition currency That strategy became explicit in January 2024, when United [merged with Kovalsky-Carr Electric](https://tedmag.com/united-electric-merges-with-kovalsky-carr/), a Rochester, New York, distributor that has served residential, commercial, and industrial customers since 1921. Kovalsky-Carr didn't get absorbed and rebranded. It became a subsidiary that keeps operating under its own name, in its own territory, with its own customer relationships intact. Then-CEO George Vorwick described the move as part of a "long-term objective to become a multi-regional distributor supporting independent operating brands." Arnold Kovalsky's stated reason for joining was almost entirely about ownership structure: "Being part of United Electric and their ESOP will support our long-term goal to invest in our associates and expand our business." That is the piece worth naming plainly. United isn't pitching acquisition targets on price or synergy. It is pitching them on a form of exit that lets a founder-owned electrical distributor gain scale, working capital, and succession planning without disappearing into a holding company's branding or a PE firm's hold-and-flip timeline. In a vertical where the alternative exits are usually "sell to a giant" or "sell to a fund," an ESOP-funded holding structure that preserves the acquired company's name is a genuinely different offer. It only works, of course, because United itself has decades of ESOP discipline to point to as proof the model survives leadership transitions and doesn't get sold out from under its employee-owners later. The company had already used a version of this playbook once before: its 2018 acquisition of Westway Electric Supply brought in Tony Buonocore, Westway's owner, who joined United rather than simply cashing out. Buonocore spent the years since running sales, marketing, and field services, was named President, and in May 2026 becomes President & CEO, succeeding Vorwick. ## The succession is the proof, not just an event Vorwick's own arc underlines the model. He spent [47 years in the electrical industry](https://tedmag.com/george-vorwick-announces-retirement/), rose through sales roles, became CEO in 2009, and in 2024 received the Arthur W. Hooper Award, one of the industry's most senior honors. His retirement, effective May 1, 2026, was handled as a multi-year internal handoff rather than a search: Buonocore moves up from President, Greg Sundberg becomes EVP of Sales after two decades at the company, and Lindsey Cropper continues as Chief Human Resources Officer overseeing what United now describes explicitly as a succession-and-talent-development strategy tied to the ESOP. That is not incidental color. A company that sells acquisition targets on ownership continuity has to demonstrate it can hand off its own executive suite without disruption or an outside buyer stepping in. United just ran that test in public, promoting from within at every level from CEO down through warehouse management, and used the occasion to restate the ownership pitch rather than treat it as routine. ## The technical layer underneath the ownership story None of this would matter if United were purely a commodity electrical house. It isn't. The company runs an OnPoint Automation division and has been a Schneider Electric EcoXpert partner in Digital Power technologies since roughly 2020, [named a 2025 Exemplary Partner](https://tedmag.com/united-electric-supply-named-2025-ecoxpert-exemplary-partner/) for depth in energy management and building electrification work. Its branch teams carry VFD, PLC, and HMI programming capability, motor repair, and lighting design services alongside standard wire and gear distribution — the kind of applications engineering that turns a distributor from an order-taker into a design partner on industrial and commercial projects. The company also runs a disciplined annual supplier scorecard: its [2026 supplier awards](https://tedmag.com/united-electric-supply-announces-2026-supplier-award-winners/) went to Atkore for overall performance and to Schneider Electric and RAB Lighting for second consecutive years in their categories, built from branch, sales, and logistics feedback weighted against the prior year's data. That is vendor management run like a discipline, not a formality, and it is the kind of unglamorous rigor that tends to separate distributors who can absorb an acquisition cleanly from ones who can't. United Electric's bet is that ownership structure is itself a competitive asset in a category otherwise being consolidated by capital. Whether that scales past a handful of regional mergers is the open question the next few years will answer. This is part of an ongoing series on the distributors that keep North America's supply chains running, one branch, one catalog, and one data record at a time. --- # How Schaedler Yesco Turned a Family Firm Into an ESOP Powerhouse Source: https://www.anglera.com/blog/schaedler-yesco-distributor-playbook Published: 2026-06-09 Industries: electrical ![How Schaedler Yesco Turned a Family Firm Into an ESOP Powerhouse](/og/hero-schaedler-yesco-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Three brothers selling light fixture parts out of Philadelphia in 1924 is not the kind of origin story that usually survives a century, let alone landed a company at [#37 on Modern Distribution Management's 2025 Top Electrical/Data/Security Distributors list](https://www.mdm.com/top_distributors) — a list it no longer appears on in 2026. Schaedler Yesco Distribution did both. What makes the company worth studying isn't just the longevity. It's the ownership structure the family built to get there, and the strange, quietly effective real-estate arrangement it uses to open new branches. ## From sibling partnership to fourth generation Harry, Andrew, and William Schaedler founded Schaedler Brothers in 1924, plating and assembling light fixture parts before the company incorporated in 1944. The second generation arrived with Tom Schaedler Sr. in 1946. By the 1970s and '80s, Jim, Henry, and Tom Schaedler Jr. had joined, and the firm had added industrial automation and data-communications divisions to keep pace with what electrical contractors actually needed on jobsites. The defining merger came in 1999, when Schaedler Brothers combined with York Electrical Supply Co., a Pennsylvania competitor that happened to share the acronym YESCO, to form Schaedler Yesco Distribution. A fourth generation, five Schaedler descendants in all, had fully joined the business by 2011, and Greg Schaedler succeeded his father Jim as CEO in 2021, per the [company's own timeline](https://www.sydist.com/LandingPages/Timeline). In 2024 the company marked 100 years in business, a milestone MDM covered as [Schaedler Yesco going "from hometown seller to a regional leader"](https://www.mdm.com/news/top-distributor-sectors/electrical/schaedler-yesco-celebrates-a-century-in-operation/). That arc, sibling shop to fourth-generation regional distributor, is common enough in electrical distribution. What isn't common is what the family did with ownership along the way. ## The insight: family control, employee-owned capital Schaedler Yesco describes itself as "family- and employee-owned," and that phrasing is doing real work. At some point the company adopted an Employee Stock Ownership Plan, broadening the capital base beyond the Schaedler family while keeping operating control inside it. The family holds the CEO seat and the board; the ESOP gives every employee, from warehouse staff to branch managers, a direct stake in the company's value. It's a structural bet against two more common paths in a sector that has spent two decades consolidating under private equity: sell to a strategic buyer and disappear into a national platform, or sell to a PE sponsor and get flipped again in five to seven years. Schaedler Yesco did neither. It diluted family equity into employee hands instead of outside capital, which locks in a workforce with a genuine ownership stake while leaving the Schaedlers running the company they still bear the name of. It also explains a detail that would otherwise be a throwaway line: the company has been named a Best Place to Work in Pennsylvania for 16 consecutive years and won a national Top Workplace Culture Excellence Award in three categories in 2024. Culture programs are cheap to announce and hard to sustain. An ESOP gives one a financial reason to be real. ## Growing branches without building all of them The second unusual choice shows up in how Schaedler Yesco expanded its footprint. Starting in 2006, the company began opening branches jointly with two unrelated, non-competing distributors: APR Supply, an HVAC and plumbing wholesaler, and Industrial Piping Systems (IPS), a PVF distributor. Rather than each company building and staffing its own facility in a new market, Schaedler Yesco, APR, and (in some locations) Rumsey Electric co-locate under one roof, sharing overhead while each partner sells its own separate product line to its own customers. Trade press covering APR Supply's 2018 Supply House of the Year award called out ["longstanding joint ventures with distributors Schaedler Yesco, Industrial Piping Systems"](https://www.supplyht.com/articles/101651-supply-house-of-the-year-2018-apr-supply) as a point of pride for that company too. It's a capital-efficient way to plant a flag in a new town: three independent, family-run wholesalers splitting the real estate bill on a branch none of them could justify alone. Nothing else in the MDM electrical rankings runs on quite this model. ## The acquisitions did the rest Layered on top of the ESOP and the joint-venture branches is a steady acquisition cadence: B&R Electric (2008), the electrical division of H&S Supply (2008), Gertz Electric (2009 and 2011), Service Electric Company's Pittsburgh-area branches (2010), Queen City Electrical Supply (2015), two Rexel locations including the company's first branch outside Pennsylvania, in Johnson City, New York (2020), and, in 2023, a five-location purchase of YESCO Electrical Supply of Youngstown, Ohio, an unrelated company with a coincidentally identical name, plus Clarion Electric Supply. That last pair of deals pushed headcount past 480 and gave the company its current footprint of 29 locations across Pennsylvania, Ohio, and New York. Farrah Mittel, who has led the company as president since 2019 following Matt Brnik's 2004-2018 tenure in the role, was named the [National Association of Electrical Distributors' 2024 Women in Industry Trailblazer](https://www.mdm.com/news/top-distributor-sectors/electrical/schaedler-yesco-celebrates-a-century-in-operation/) for that stretch of growth, another sign that day-to-day leadership sits with a professional executive even as the Schaedler family holds the boardroom. Distribution runs on unglamorous fundamentals: what's on the shelf, what's in the truck, and whether the branch nearest the customer actually opened this decade. Schaedler Yesco's centennial is a reminder that the ownership structure behind those decisions matters just as much as the decisions themselves. --- # The planner's ROI case for product data: find the money Source: https://www.anglera.com/blog/planner-roi-product-data Published: 2026-06-09 ![The planner's ROI case for product data: find the money](/og/hero-planner-roi-product-data.jpg) Every planning team has a line item called the markdown budget, and every planning team treats it like weather. It isn't. Markdowns are downstream of buys, buys are downstream of forecasts, and forecasts are downstream of the attributes a system used to group items that behave alike. When those attributes are thin, wrong, or free-text, the forecast is guessing with better formatting. The ROI case for fixing product data has mostly been told as an e-commerce story: cleaner filters, better search, a few points of conversion. That case is real but small. The planning case is bigger, and it's the one a CFO will actually fund. ## The four places the money hides Retailers already track most of these losses. They just attribute them to demand volatility instead of to the data quality problem sitting underneath the demand model. **Buy quality.** A forecast that treats "navy," "Navy Blue," and "NVY" as three different items, or that has no field at all for closure type, sole material, or pattern, can't tell you which navy actually sold. It averages across a group that was never really one group. The buy gets built on a blended signal, so the org over-orders the losers and under-orders the winners. **Dead inventory and markdowns.** Carrying cost on unsold inventory typically runs [20% to 30% of inventory value annually](https://www.netsuite.com/portal/resource/articles/inventory-management/inventory-carrying-costs.shtml) once you count storage, insurance, capital cost, and obsolescence, and some retailers see it higher. Markdowns are the release valve for that pressure, and by at least one [NRF-sourced estimate](https://priceva.com/blog/markdown-pricing), more than 30% of retail inventory gets marked down in a given year. Both numbers are driven by the same root cause: the buy didn't match true demand at the attribute level, so excess sits in the wrong sizes, colors, or configurations. **New-product forecast misses.** New items have no sales history, so the model has to borrow from analogs, items that share enough attributes to behave similarly. If the attribute set is sparse, the analog match is bad and the launch forecast is a coin flip. Where retailers have invested in attribute-based forecasting for new introductions, the results are notable: one published case involving a company launching roughly 2,000 new styles a year cut new-launch forecast error (WMAPE) by [10%, with launch-specific accuracy improving around 30%](https://www.toolsgroup.com/blog/how-ai-powered-demand-forecasting-transforms-new-product-introductions/) after moving from a flat, historyless approach to one grouped by tested attributes. The lever wasn't a smarter algorithm. It was better inputs to an algorithm that already existed. **Returns avoided via fit signal.** This one gets filed under customer experience, but it's an inventory problem too: a returned item comes back as damaged, off-season, or unsellable at full price. In apparel and footwear, fit and sizing account for as much as [70% of returns](https://www.richpanel.com/learn/ecommerce-return-rates), and shoppers increasingly practice "bracketing," ordering multiple sizes and returning what doesn't fit, which inflates both return volume and the phantom demand a forecast thinks it saw. Clean, consistent fit attributes (true-to-size flags, width, fit-model notes pulled from tech packs and reviews) don't eliminate this behavior, but they narrow the gap between what a shopper thinks they're ordering and what actually shows up. ## Reading the demand curve, not just the sales report Most planning teams look at sell-through by SKU or by category. Few look at sell-through by attribute value, which is where the buy signal actually lives. Plot sell-through against attribute values within a category and you typically see a small cluster of values that dramatically outperform, a sharp break point where performance falls off, and a stretch of attribute combinations the catalog never carried at all, meaning nobody knows if that white space would have sold. ![Chart: sell-through by attribute value showing winning values, a sharp break point, and unserved white space](/diagrams/attribute-demand-curve.svg) That white space is where next season's buy either gets smarter or repeats last season's mistake. You can't see it if "material" is a free-text field with forty spellings of the same three fabrics. ## Sizing the case for a CFO Here's a rough way to frame the math, using ranges grounded in the sources above rather than invented precision. | Lever | Where it shows up | Typical driver | Rough sizing approach | |---|---|---|---| | Buy accuracy | Open-to-buy, initial allocation | Attribute-level demand blended into noisy averages | Estimate value of shifting 5-10% of unit buy from underperforming to top-decile attribute values | | Dead stock and markdowns | End-of-season clearance, aged inventory | Excess in wrong attribute combinations | Apply 20-30% carrying cost and 30%+ markdown-exposure rate to current excess inventory value | | New-product misses | Launch-period stockouts and overstock | Weak or missing attributes for analog matching | Compare launch forecast error before/after attribute enrichment on a pilot category | | Fit-driven returns | Return processing, unsellable returns | Missing or inconsistent size/fit attributes | Multiply return volume by share attributable to fit, then by unsellable-on-return rate | None of these levers needs a new forecasting engine to pay off. They need the attribute layer the existing engine already depends on to actually be trustworthy. ## Why the spend is small against any of this The natural objection is that fixing product data at scale sounds like a multi-quarter IT project. It doesn't have to be. Anglera plugs into whatever PIM, MDM, ERP, or flat file a retailer already runs, extracting and normalizing attributes from the source documents that already exist (tech packs, spec sheets, imagery, reviews) rather than asking anyone to re-platform. A style-number-and-SKU export is enough to start, most catalogs are live in 30 days or less, and a new attribute (say, a consistent fit-type field pulled from spec sheets) can be backfilled across thousands of SKUs in about a day, instead of the 30-45 minutes per SKU manual enrichment typically takes. Against a markdown budget that's touching a third of inventory or a returns line that's eating margin on fit alone, that's not a big ask. Product data enrichment doesn't replace the forecasting model, the buy meeting, or the planner's judgment. It fixes the dimensions those decisions get aggregated along, so the same models and the same people finally have inputs worth trusting. --- # Your PIM is a filing cabinet. So who's doing the work? Source: https://www.anglera.com/blog/pim-is-a-filing-cabinet Published: 2026-06-09 ![Your PIM is a filing cabinet. So who's doing the work?](/og/hero-pim-is-a-filing-cabinet.jpg) Ask a team where their product data lives and they'll name a PIM — Akeneo, Salsify, inRiver, Pimcore. Fair enough. A PIM is a great place to *store* product data: one schema, one source of truth, clean handoffs to every channel. But here's the question nobody likes answering: **who actually fills it?** ## A PIM is a system of record, not a system of work A filing cabinet doesn't write the documents. A PIM doesn't gather a missing spec sheet, normalize twelve suppliers' messy exports into one taxonomy, write a differentiated description, attach a Prop 65 warning, or notice that half your SKUs are missing a GTIN. It holds whatever you put in — and faithfully syndicates your gaps to every channel downstream. So the work lands on people. Analysts copy-pasting from supplier PDFs. A contractor in a spreadsheet. A category manager who "owns" 40,000 SKUs and touches maybe 200 a quarter. The PIM looks full. The data underneath is thin. ## The gap is widening, not closing Two things are pulling more demand through that gap at once: - **More SKUs, more attributes.** Every channel wants richer structured data — more fields, deeper taxonomy, tighter compliance. - **Machines are the new audience.** AI answer engines and agentic checkout read your feed directly. Thin data isn't just an internal annoyance now; it's the reason a model never surfaces you. The manual approach didn't scale when humans were the only readers. It definitely doesn't scale now. ## Fill the cabinet, don't just buy a bigger one The fix isn't another system of record. It's a system that does the *work* a PIM assumes already happened — pulling data from suppliers and the open web, normalizing it to your schema, enriching every SKU, and flagging what's wrong — then writing the result back into the PIM you already own. That's the line we draw at [Anglera](/): **PIM stores the data; Anglera does the work.** Keep your filing cabinet. Just stop expecting it to file itself. --- # Loeb Electric: 110 Years Independent in a Rolled-Up Trade Source: https://www.anglera.com/blog/loeb-electric-distributor-playbook Published: 2026-06-09 Industries: electrical ![Loeb Electric: 110 Years Independent in a Rolled-Up Trade](/og/hero-loeb-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Charles Loeb runs the electrical distributor his grandfather helped start in 1912. It landed at #35 on [Modern Distribution Management's 2025 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical vertical, MDM's annual ranking of North America's largest wholesale distributors across 20 product categories, but does not appear on MDM's 2026 list. What makes the placement worth a second look is the mailing address behind it: four retail stores, all in central Ohio, still owned by the family that founded the company. ## From radio parts to raceways The business started as the Avery & Loeb Electric Company, opened in Columbus in 1912 by Oscar Avery and Arthur Loeb Sr. to sell radios and electrical goods to a city just wiring up for the twentieth century, according to [Loeb Electric's own company history](https://www.loebelectric.com/about-us). Radio retail faded as a category decades ago. Loeb didn't. The company rebuilt itself around electrical distribution for contractors, and the family kept the wheel: Arthur Loeb Sr. handed off to Arthur Loeb Jr. after World War II, and Charles Loeb, the current president, took over in 1982 after starting his career at the sales counter, per [tED Magazine's account of the company's 110th anniversary](https://tedmag.com/loeb-electric-celebrates-110-years-of-customer-success/). Three generations, one surname on the door, no outside capital in the mix. That alone is unusual in a sector where the last two decades have been defined by consolidation: national platforms buying up regional wholesalers to add branch count, product lines, and geography in a single move. Loeb took the opposite bet and stayed put. ## Depth in one metro instead of sprawl across many Here's the tension a top-35 electrical distributor usually resolves by expanding: Loeb runs four retail stores and four distribution centers, backed by more than 400,000 square feet of warehouse space and a fleet of 35-plus delivery trucks, all concentrated in central Ohio, according to the [company's about-us page](https://www.loebelectric.com/about-us). From that single-metro base it processes over 500 orders a day across roughly 8,000 product lines and serves national accounts as well as local contractors, with a workforce of more than 350 people. That's the unique wrinkle in this profile. Most distributors that crack a national top-35 list get there by multiplying locations: buy a competitor in the next state, open a branch to chase a customer, repeat until the map is covered. Loeb reached that scale by going deep instead of wide, building enough logistics density and national-account capacity in one region to punch at a national weight class without a national footprint. It's a bet that the customer relationship and the fulfillment engine matter more than the pin on the map, and for 110-plus years the bet has held. ## "Anyone can sell materials" Loeb's public messaging leans hard into service over transaction. Charles Loeb put it plainly in the same tED Magazine anniversary piece: "Within these walls, the word 'trust' means more than any other. Anyone can sell materials. We pride ourselves on delivering unmatched service and the best possible customer experience." The company's marketing has carried that line into its branding directly. Its "More than a Material Supplier" campaign earned an honorable mention in [tED Magazine's 2021 Best of the Best awards](https://tedmag.com/2021-best-of-the-best-winners-advertisement-brand-awareness/) for advertisement and brand awareness, which suggests the trust pitch isn't just a quote for the anniversary press release. It's the company's actual positioning against commodity competition. ## Professionalizing without losing the family at the top A single-family company staying independent for a century usually has to answer one hard question eventually: who runs day-to-day operations as the business gets more complex than one owner-operator can hold in their head? Loeb's answer, per [tED Magazine's coverage of its 2022 leadership additions](https://tedmag.com/loeb-electric-announces-leadership-changes/), was to hire outside operating talent rather than promote only from inside the family. Adam Becker came in as chief operations officer with two decades of experience at Kraft Foods, US Foods, and Walmart. Erin Ryan joined as director of accounting and finance from Cameron Mitchell Restaurants and the Columbus Crew. Both report directly to Charles Loeb, who kept the top seat and the family name on the letterhead while adding professional management underneath it. The same year, Loeb relaunched its e-commerce platform at Shop.LoebElectric.com with cleaned-up product data across dozens of manufacturer catalogs and a mobile-first rebuild, noting that more than half its customers were already browsing on phones, according to [tED Magazine's report on the launch](https://tedmag.com/loeb-electric-launches-enhanced-ecommerce-experience/). Executive VP Doug Beh framed it as positioning Loeb for a bigger role in commercial construction e-commerce specifically. For a company whose whole identity rests on being the trusted counter guy, investing in accurate product data online is a quiet admission that the counter relationship increasingly starts on a screen. ## Loeb Electric timeline | Year | Milestone | |---|---| | 1912 | Founded as Avery & Loeb Electric Company, Columbus, Ohio | | Post-WWII | Leadership passes to Arthur Loeb Jr. | | 1982 | Charles Loeb becomes president, third generation | | 2021 | "More than a Material Supplier" campaign wins tED honorable mention | | 2022 | 110th anniversary; COO and finance director hired; e-commerce relaunch | | 2025 | Ranked #35 on MDM's Top Distributors electrical list; absent from the 2026 list | The insight here isn't that Loeb is big. At #35 in 2025, it wasn't the biggest name in electrical distribution and never claimed to be. The insight is that it got onto that list at all without ever leaving Columbus or selling to a strategic acquirer, in a vertical where scale and consolidation are treated as nearly synonymous. Depth of relationship and logistics, concentrated in one market, turned out to be a substitute for geographic reach. Distribution rankings measure revenue, but revenue in this trade is built branch by branch, catalog line by catalog line, on infrastructure nobody outside the industry ever sees. This series exists to look at that infrastructure directly. --- # IEWC: The Employee-Owned Wire Distributor Buying Upward Source: https://www.anglera.com/blog/iewc-distributor-playbook Published: 2026-06-09 Industries: electrical ![IEWC: The Employee-Owned Wire Distributor Buying Upward](/og/hero-iewc-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* IEWC lands at #28 on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for electrical, data, and security products, up from #38 the year before, sharing a page with giants like Wesco ($21.8 billion) and Sonepar North America ($16.4 billion). IEWC doesn't disclose revenue, and that's fitting: it has spent four decades quietly compounding while the top of its own category consolidated into a handful of PE-backed and multinational strategics. The company that emerges from its history is smaller, older, and structured differently than almost anything else on that list. ## A Milwaukee wire shop with a 1985 pivot IEWC's origin is unglamorous. In 1962, Ted Krzynski bought Martin Electric Sales in Milwaukee and renamed it, eventually settling on Industrial Electric Wire & Cable by 1964, per the company's own [history page](https://www.iewc.com/about-iewc/history). The early bet was operational, not strategic: cut-to-length respooling and just-in-time inventory, unusual disciplines for a wire distributor in the 1960s that let IEWC sell exact footage instead of full reels, cutting waste for OEM customers building harnesses and control panels. The decision that actually shaped the company came in 1985, when Krzynski sold Industrial Electric to its employees, converting it into an ESOP. He retired two years later after 25 years running the business. That single ownership choice is the throughline of everything that followed: three CEOs since (Chuck Mahaffey, David Nestingen, and current CEO Mike Veum since 2018), and a company that rebranded to the shorter "IEWC" in 2010 but never changed who owns it. ## Growth by acquiring other people's wire shops Once employee-owned, IEWC grew by doing to other regional wire distributors what Krzynski had once done to Martin Electric: buying them out. The history page lists a steady acquisition cadence: Colonial Wire & Cable (2006), Wyro Tech (2007), Peter Augsten Wire & Cable in Germany (2008), C3 Limited (2009), DAMSA in Mexico (2011), Almo Wire & Cable (2013), Westlake Electronic Supply (2014), Premier Cables (2015), Jupiter Communications (2020), and Cablcon (2021). Each deal added either geography or a product niche, and together they turned a Milwaukee-area distributor into a company with distribution points across the U.S., Canada, Mexico, Brazil, China, Germany, and the U.K. That's a conventional roll-up playbook. What's less conventional is who's writing the checks: not a private equity sponsor, not a public parent, but the employees who own the company outright. It's a model almost nobody else on MDM's electrical/data/security list uses. Sonepar and Rexel are French family- and shareholder-controlled multinationals. Wesco is public. CED is privately held but not employee-owned. IEWC's ESOP status means the acquisition math has to work for the people running the branches, not for an outside return horizon. ## The 2025 pivot: from distributing wire to building the thing it goes into The more interesting recent move isn't geographic, it's vertical. In February 2025, IEWC acquired Simcona, a Rochester, NY wire and cable supplier also founded in 1962, according to [MDM's coverage](https://www.mdm.com/news/top-distributor-sectors/electrical/iewc-acquires-simcona-in-ny/), which strengthened IEWC's OEM and Controls divisions. Two months later, in April 2025, IEWC acquired Bevco Engineering, a Sussex, Wisconsin company founded in 1965 that designs and manufactures electrical control panels for medical, data center, and industrial customers, per the deal advisor [TKO Miller](https://www.tkomiller.com/transaction/tko-miller-advises-bevco-engineering-company-inc-on-its-sale-to-iewc). Bevco isn't a wire distributor. It's a manufacturer. IEWC now lists a "President, Controls Group" on its executive team, a title that didn't need to exist when the business was purely cut-to-length distribution. Pairing a distributor's supply chain and inventory reach with a control-panel builder's design and assembly capability is a bet that OEM customers increasingly want one partner handling both the raw wire and the finished subassembly, rather than sourcing the two separately. It also pushes IEWC's margin profile away from pure distribution spread and toward something closer to contract manufacturing, a different risk and capital picture than the business Krzynski built. ## The tension worth naming The unique thing about IEWC isn't any single deal, it's the combination: a 40-year employee-owned holdout in a vertical where scale increasingly comes from private equity rollups and multinational consolidation, now placing a bet that its future growth looks less like buying more wire distributors and more like owning manufacturing. That's a genuine strategic fork. Staying employee-owned protects culture and long-term decision-making, exactly the kind of patience that let IEWC compound quietly for four decades without needing a headline-grabbing revenue number. But moving into control-panel manufacturing changes what kind of company IEWC is competing to become, and ESOP economics reward steady, distributable cash flow more comfortably than they reward the capital intensity of building out manufacturing lines. Whether IEWC can run both playbooks without diluting either is the question its next decade will answer. Distribution rarely gets the spotlight, but the companies that quietly master catalogs, branch networks, and product data are the ones still standing when the flashier consolidators move on. IEWC's next chapter, wire distributor turned wire distributor with a manufacturing arm, will be one to watch in that light. --- # 6 things you need to know to charge up your visibility in AI checkout Source: https://www.anglera.com/blog/google-ucp-feed-checklist Published: 2026-06-09 ![6 things you need to know to charge up your visibility in AI checkout](/og/hero-google-ucp-feed-checklist.jpg) Here's the shift nobody's ready for: Google's **Universal Commerce Protocol (UCP)** turns an AI conversation into a checkout. A shopper asks AI Mode in Search or Gemini for a jacket under $100, and — if your catalog is ready — buys it on the spot, never loading your site, never seeing a competitor. If you're not ready, you're not in the cart. You're not even in the conversation. And here's the part that stings: **your product feed decides everything.** Not your ad budget, not your homepage. The agent reads your feed to decide whether an item is eligible, what it costs, and which warnings it has to show. Get the feed right and you're the answer. Get it wrong and you're invisible. These are the 6 things that put you in the cart — and the gaps that keep you out. ## 1. Flip the switch — checkout is OFF until you say so UCP checkout is off by default. Set the `native_commerce` attribute (a single boolean) to `true` on every product you want eligible. Missing or `false` means the agent skips it. Push this through a **supplemental feed**, not your primary one, so a formatting mistake can't take down your core product data. ## 2. No return policy, no checkout — full stop UCP makes you the Merchant of Record, and Google won't let an agent check out against a product with no return policy. Set return **cost**, **window**, and a **link to the full policy** — globally in Merchant Center, or per-product with the `returns` attribute right in the feed. Set your customer-support info too; it becomes the "Contact Merchant" link on the confirmation screen. ## 3. Skip a legal warning and the agent skips you Anything with a regulatory warning — California Prop 65, safety disclaimers — needs a `consumer_notice` group with a `notice_type` and `notice_message`. These render prominently on the checkout screen. Multiple warnings on one SKU? Send each as its own repeated `consumer_notice`. Compliance is on you, and the agent will show exactly what you give it. ## 4. One mismatched ID and the sale dies after checkout The `id` in your feed has to line up with the product ID your Checkout API expects. If they already match, you're done. If not, map them with `merchant_item_id` — it takes precedence over `id` in agentic requests. Mismatch here, and orders fail silently after the shopper has committed. ## 5. Know exactly what UCP refuses to sell A long list of categories is ineligible: subscriptions, installments, personalized or engraved goods, pre-orders, refurbished and final-sale items, bundled warranties and installation, freight-shipped items, age-restricted goods, services, rentals, and digital/virtual items. Set `native_commerce` to `false` on these. Flagging an ineligible product as eligible is a broken checkout waiting to happen. ## 6. Eligible isn't enough — you still have to get *picked* Eligibility gets you in the cart. Getting *picked* is a data-quality problem. The agent isn't moved by a campaign — it's convinced by structure that proves fit: detailed product types two to three levels deep, accurate price and availability, and a **GTIN** wherever you have one. (Retailers with correct GTINs see ~20% more clicks on average; an agent reasoning over your feed leans on them even harder.) Loyalty perks like free shipping or a discount only count if they're structured cleanly enough for the agent to read them into its math. ## The one thing all six come down to Strip away the attribute names and every item on this list is the same demand wearing a different hat: **structured, complete, machine-legible product data across your whole catalog.** One perfect SKU moves nothing. Agentic checkout only pays off when your *entire* feed is eligible, accurate, and rich enough to be chosen. That's the work — and it's exactly what [Anglera](/) does. PIM stores the data; we get every SKU UCP-ready: attributes mapped, notices attached, IDs reconciled, gaps filled. So when a shopper asks an agent to buy, you're the one in the cart. --- # Getting furniture & home products recommended by ChatGPT, Gemini, and AI shopping Source: https://www.anglera.com/blog/furniture-home-aeo Published: 2026-06-09 Industries: furniture-home ![Getting furniture & home products recommended by ChatGPT, Gemini, and AI shopping](/og/hero-furniture-home-aeo.jpg) A shopper who used to start on Google Images now starts by typing "recommend a sectional under $1,500 that fits a small apartment" into ChatGPT or Gemini. The AI reads a feed, not your homepage, and it can only recommend what it can actually parse. In furniture and home, where fit, materials, and assembly details make or break a purchase, thin product data is the difference between being the answer and being invisible. ## The trip that skips your homepage Instant checkout is no longer a demo. OpenAI [launched Instant Checkout in ChatGPT](https://openai.com/index/buy-it-in-chatgpt/) with Etsy and Shopify merchants, built on the open Agentic Commerce Protocol it developed with Stripe, and has kept expanding merchant coverage since. Google has gone further on the discovery side: it's rolling out [dozens of new Merchant Center attributes built for conversational commerce](https://blog.google/products/ads-commerce/agentic-commerce-ai-tools-protocol-retailers-platforms/) on surfaces like AI Mode and Gemini, covering things like answers to common product questions and compatible accessories or substitutes. Neither of these systems crawls your PDP the way a person or a classic search bot does. Google AI Mode pulls from the Shopping Graph, which is populated by Merchant Center feeds and schema.org markup. ChatGPT and other agents lean on structured product data plus retailer feeds to decide what's even eligible to mention. If a field is blank, the product effectively doesn't exist for that query. ## Furniture is the category with the least room for error Home goods carry more decision-blocking attributes than almost any other vertical: dimensions in three axes, weight, material and fill composition, assembly requirements, warranty terms, and whether it ships flat-packed or fully built. A shopper asking an AI agent to shortlist a sofa isn't just asking "which one is cheapest." They're asking whether it clears a stairwell, whether the fabric is pet-friendly, whether it needs two people to carry it in. When that data is missing, agents don't guess. They drop the SKU from the answer or, worse, hallucinate a spec and set a return in motion before the box even ships. That's an expensive way to lose a customer who was ready to buy. Visual confidence compounds this. Furniture and home is one of the categories where 3D and AR previews move the needle hardest, and Shopify has published that [products with 3D or AR content see a 94% higher conversion rate](https://www.shopify.com/blog/ar-shopping) than flat images alone, with return rates dropping too. Agents that can point a shopper to a "view in your room" asset, versus a listing with a single stock photo, are choosing the retailer with the richer feed almost every time. ## What a raw feed looks like next to one an AI can actually use Here's a typical furniture feed entry versus what an enriched, agent-readable version looks like for the same product, a mid-century accent chair. | Attribute | Raw feed (as exported from PIM) | Enriched for AI shopping | |---|---|---| | Title | "Accent Chair - Blue" | "Mid-Century Velvet Accent Chair, Sapphire Blue, Walnut Legs" | | Dimensions | missing | 29"W x 31"D x 33"H, seat height 18" | | Weight | missing | 24 lb, 2-person carry not required | | Materials | "fabric" | "Performance velvet upholstery, solid rubberwood frame, high-density foam cushion" | | Assembly | missing | "Legs attach with included hardware, under 10 minutes" | | Room fit guidance | none | "Fits apartments and small living rooms; clears standard 32-inch doorways" | | Return policy | generic site-wide text | "30-day returns, free for defects, buyer pays return shipping on fit/color changes" | | Identifiers | internal SKU only | GTIN, brand, MPN, `identifier_exists: false` where no GTIN applies | The raw version isn't wrong. It's just too thin for an agent to use in a comparison. The enriched version answers the five questions a shopper would actually ask before buying furniture sight unseen. ## The "ask an AI" moment worth testing on your own catalog Try this prompt in ChatGPT or Gemini: "Recommend a queen bed frame under $600 that will fit through a narrow apartment stairwell and doesn't require two people to assemble." Watch what the AI does. It will either name specific products with dimensions and assembly notes cited, or it will hedge with generic advice like "look for one under 40 inches wide" because it couldn't find a retailer with the specific numbers. Run that test against your own top sellers. If the agent can't name your product with your actual specs, a competitor's feed is filling that gap instead. ## What machine-readable product content requires At minimum, agentic and AI-search systems expect complete schema.org Product markup and Merchant Center feed fields: name, brand, GTIN or MPN, price, currency, availability, material, color, dimensions, weight, and a real return policy, not boilerplate. Furniture-specific fields, assembly time, seating capacity, weight capacity, indoor/outdoor rating, matter as much as price. Coverage has to be consistent across the whole catalog, not just hero SKUs, because agents compare gaps between competing listings, not just headline items. Anglera plugs into whatever PIM or feed a retailer already runs, no rip-and-replace, and continuously scores, gap-fills, and enriches product data so furniture and home catalogs carry the dimensions, materials, and fit details AI shopping agents need to recommend them with confidence. Your PIM stores the data. Anglera does the work of keeping it complete enough to win the "recommend a ___" prompt. --- # When the image says rubber and the copy says leather: resolving attribute conflicts Source: https://www.anglera.com/blog/attribute-trust-hierarchy-conflicts Published: 2026-06-09 ![When the image says rubber and the copy says leather: resolving attribute conflicts](/og/hero-attribute-trust-hierarchy-conflicts.jpg) Pull the tech pack, the product copy, and a photo of the same SKU side by side and you will find disagreements more often than you'd expect. The copy says "genuine leather upper." The BOM lists a leather-and-synthetic composite. The hero image shows an obvious rubberized coating on the toe cap. All three describe the same style number, and most catalogs have no mechanism for deciding which one is right. What actually happens at most retailers and brands is simpler and worse: whichever value got typed in last wins. A merchandiser updates PDP copy for SEO and overwrites the material field with a friendlier word. A vendor resubmits a corrected BOM, and the enrichment team never re-checks the copy against it. Nobody flags the mismatch, because nothing is looking for it. ## Why this is a planning problem, not just a content problem E-commerce teams notice material conflicts when a shopper complains that a "leather" boot arrived with a synthetic panel, or when a filter search misses items because the field doesn't match the copy. That's a real cost, but it's the small one. The bigger cost shows up where nobody is reading the PDP at all. Demand forecasts, assortment plans, and like-item comparisons run on the attribute field, not the description. If material is wrong for even a meaningful share of SKUs, every rollup by material silently absorbs that error: sell-through by fabrication, markdown cadence by material category, vendor quality signals, even the reference set used to forecast a new style by matching it to "similar" past items. [Poor data quality is frequently cited as the root cause of forecast error](https://www.onepint.ai/insights/what-causes-forecast-errors-in-demand-planning), and misclassified attributes are a common way that shows up. As [one supply-chain analysis put it](https://itsupplychain.com/when-the-forecast-lies-how-data-quality-failures-break-supply-chain-decisions/), a forecasting problem is often a data quality problem in a different costume — no model architecture fixes a material field that was never true. ## Silent conflicts are worse than visible gaps A blank material field is annoying. It shows up in a completeness report, someone gets assigned to fill it, and the catalog is honest about what it doesn't know in the meantime. A wrong material field is worse, because it looks finished. It passes every completeness check and feeds a forecast, a filter, and a vendor scorecard with total confidence, and nothing about the pipeline signals the value might be false. You only find out when a rollup looks strange, and by then the bad value has already been read by every downstream system that trusted it. This is the case for treating conflict detection as its own step, separate from ordinary field completion. A missing attribute is a known unknown. A conflicting attribute, resolved by accident, is an unknown unknown wearing a checkmark. ## Detecting the conflict before resolving it Conflict detection means cross-referencing the same attribute across every source that mentions it, for every SKU, on an ongoing basis rather than at initial load: - **Copy vs. imagery.** Extract material, color, and pattern signals from product photography and compare them against what the copy claims. "Genuine leather" against a visibly synthetic texture is a flag, not a silent overwrite in either direction. - **Copy vs. BOM or tech pack.** Bill-of-materials documents are the most granular and least polished source, built for production rather than marketing, and they often list composite materials that get simplified in customer-facing copy. - **BOM vs. imagery.** Even structured documents go stale. A BOM revision shipped after the product photography can describe a change the image never reflects. - **Legacy ERP fields vs. everything else.** Old category or material codes often persist in the system of record long after the product changed. None of this requires a human to eyeball every SKU. It requires running the comparison at catalog scale, continuously, and keeping a record of where each value came from. ![Diagram: conflicting evidence from copy, imagery, and the BOM flagged and resolved through a defined trust hierarchy](/diagrams/attribute-conflict-detection.svg) ## Resolving conflicts with a trust hierarchy, not a coin flip Detection tells you where sources disagree. Resolution requires deciding, in advance, which source wins for which attribute — a rule set defined once and revisited when it stops making sense. Master data management calls this a survivorship rule, and the discipline applies just as well to product attributes as to customer records: [survivorship rules should be built on trust, recency, and usage context for each attribute](https://profisee.com/blog/mdm-survivorship/), not a single blanket policy for the whole record. A reasonable default hierarchy for physical product attributes, most specific and production-grounded source first: | Attribute | Typical trust order | Why | |---|---|---| | Material composition | BOM/tech pack over imagery over legacy copy | BOM is the production document; copy is often simplified for marketing | | Color | Imagery over copy over legacy code | Color names drift ("navy" vs. "midnight blue"); pixels don't | | Dimensions | Spec sheet over imagery over copy | Copy rounds; spec sheets carry tolerances | | Category/type | Current PIM taxonomy over legacy ERP code | Legacy codes lag taxonomy changes by years | The specific order matters less than having one, applied at the attribute level rather than the record level — a product can trust the BOM for material and the current PIM for category without those decisions conflicting with each other. ## Auto-resolve the confident cases, route the rest Not every conflict deserves the same handling. A useful split: **Auto-resolve** when the trust hierarchy gives a clear answer and confidence in the winning source is high — the BOM explicitly states "100% cowhide leather," the image confirms a leather grain texture, and the only outlier is stale marketing copy. Update the attribute, log the source and the override, and move on without a human in the loop. **Route to review** when sources genuinely conflict at comparable confidence, or the trust hierarchy doesn't clearly apply — the BOM lists a blend without percentages, the image is ambiguous, and no source is decisively more current than another. These go to a person with the conflicting evidence attached, not a blank field and a guess. This should stay conservative about what counts as confident. A forecast built on an attribute auto-resolved wrong is worse than one built on an attribute flagged as pending, because the flagged version doesn't pretend to be certain. ## What this requires operationally None of this needs a system replacement. It's a layer that reads whatever imagery, tech packs, BOMs, and copy already sit in a PIM, ERP, or flat file export, cross-references them continuously, applies the trust hierarchy, and writes back the resolved value with a confidence score and a source citation. Conflicts that clear the bar get auto-resolved; the rest surface in a queue instead of getting buried in a field that looks complete. The output is an attribute layer that a demand forecast or a like-item model can actually trust, because every value carries a record of where it came from and how sure the system is that it's right. That distinction, between populated and verified, is the difference between a catalog that looks done and one that's usable by the systems making buying and allocation decisions downstream. Anglera runs this conflict detection as an ongoing layer on top of whatever PIM, ERP, or flat file already holds the catalog — extracting attribute values from imagery, documents, and copy, flagging where they disagree, applying a trust hierarchy your team defines once, and routing only the genuinely ambiguous cases for review. Your PIM still stores the data; Anglera keeps it honest about what it actually knows. --- # Finding assortment white space with attribute-level demand Source: https://www.anglera.com/blog/assortment-white-space-attributes Published: 2026-06-09 ![Finding assortment white space with attribute-level demand](/og/hero-assortment-white-space-attributes.jpg) A style-color sell-through report will tell you the boot sold well. It will not tell you that every unit sold was under 9 inches of shaft height and the tall version has been marking down for two seasons. That distinction lives one level below where most planning reviews stop looking, and it's the level where the actual assortment decision gets made. ## The report that hides the pattern Most line reviews aggregate at style, then style-color, sometimes style-color-size. That's the grain vendors like [o9 Solutions](https://o9solutions.com/articles/advanced-size-curve-analysis) and [Impact Analytics](https://www.impactanalytics.ai/blog/how-to-improve-retail-assortment-planning-with-size-curves-based-demand-forecasting) build size curves on, and it's the right grain for allocation math. Nike's own approach, as Impact Analytics describes it, forecasts at style-color first and disaggregates down to size using historical share — if a size carried 10% of volume, it gets 10% of the buy. That works because size is a clean, always-populated attribute. Every SKU has one. The trouble starts with the attributes that aren't size and aren't always populated: shaft height, heel height, sleeve length, closure type, cushioning level, fabric weight. These are the dimensions that actually differentiate why a customer picked one style over another, and in most PIMs they're a free-text field, a spec-sheet PDF, or blank. When you aggregate sell-through at style-color, every shaft height variant inside a style gets averaged together. A style with three shaft heights and wildly different performance per height reports as one "average" number. Average away enough real variation and you get a report that says the category is healthy while a third of its shelf space is quietly deadweight. ## What changes when you regrind at the attribute level Take a boot category and re-aggregate sell-through not by style-color but by shaft height, holding everything else constant. Instead of one blended sell-through curve, you get a step function: - Ankle to mid-shaft (roughly 5-9 inches, per the range [JJ Footwear](https://us.jjfootwear.com/blogs/blog/everything-about-calf-width-and-shaft-height/) uses to define the category) sells through at a healthy clip across price points. - There's a sharp break somewhere around 9-10 inches. Below the break, demand is strong. Above it, sell-through drops off a cliff, not gradually — a break, not a slope. - A band above the break — call it 11 to 13 inches — still has search and browse traffic (people are looking) but almost no SKUs offered at accessible price points. That's unserved demand, not absent demand. - One specific cell — say, 13-15 inch shaft height at a mid-price tier — is heavily assorted with a dozen SKUs, and every one of them is turning slower than the category average. None of that is visible in a style-color report. It only shows up when shaft height is a clean, structured attribute you can group by, independent of style name or color name. ![Chart: sell-through by attribute value showing winning values, a sharp break point, and unserved white space](/diagrams/attribute-demand-curve.svg) ## From curve to matrix to decision The curve tells you where the break is. The next step is to cross that attribute against a second dimension, usually price band, to see where assortment depth and demand actually overlap. | Shaft height band | SKUs offered | Sell-through | Read | |---|---|---|---| | 5-8 in (ankle/mid) | 22 | Strong across price bands | Right-sized | | 9-10 in (break point) | 14 | Steep drop above 9.5 in | Trim above break | | 11-13 in, low-mid price | 3 | High for the few SKUs offered | Under-assorted — white space | | 13-15 in, mid price | 11 | Weak, slow-turning | Over-assorted — cut candidates | That's the shape a whitespace review is supposed to surface — a gap the assortment doesn't serve, a tier with no viable option, sitting next to a cell that's overbuilt for the demand it gets. [Profitmind's framing](https://www.profitmind.com/resources/what-whitespace-opportunity-analysis-reveals-about-your-retail-category-gaps) of whitespace as "a price tier with no viable options" or "a format or size range that competitors carry and you don't" describes exactly this pattern, just usually applied across price and format rather than down inside a single attribute like shaft height. The matrix view makes both problems visible on one page: cut the overbuilt cell, fund a low-price SKU in the underserved band, and stop treating the whole shaft-height range as one undifferentiated line. ![Matrix: price band by attribute value, dot size showing SKUs offered and color showing sell-through, with one over-assorted cell and one empty high-demand cell](/diagrams/assortment-whitespace-matrix.svg) ## Why this breaks the moment the attribute is dirty This entire analysis depends on one thing: shaft height (or heel height, or whatever attribute is driving the differentiation) being a structured, standardized value on every SKU — not "tall," not "9in approx," not a blank cell because the tech pack never made it into the PIM. In practice, apparel and footwear catalogs are inconsistent about exactly these secondary dimensions. Size and color get entered because the ERP requires them for a SKU to exist. Shaft height, heel height, and similar spec attributes often live in a PDF spec sheet, a supplier tech pack, or a merchandiser's memory — not in a queryable field. When a third of SKUs are missing the attribute, one of two things happens to the analysis: those SKUs get silently dropped from the grouping (understating both the winning band and the white space), or they get bucketed into an "unknown" catch-all that's now large enough to mask the pattern by itself. Either way, the break point blurs, the empty band looks smaller than it is, and the over-assorted cell doesn't look as bad as it actually performs. The planner reviewing the report never sees the decision that was sitting right there in the data. This is the case for treating attribute completeness as a planning input, not just a merchandising nicety. Anglera's PIM stores the data — Anglera reads the tech packs, spec sheets, and imagery behind each SKU and fills in the structured attribute values (shaft height, heel height, and the rest) that these curves and matrices depend on, flagging conflicts rather than guessing past them. A demand curve is only as sharp as the attribute column underneath it, and most catalogs have never had that column complete. Sources: - [o9 Solutions — Advanced Size Curve Analysis](https://o9solutions.com/articles/advanced-size-curve-analysis) - [Impact Analytics — Improve Assortment Planning with Size Curves](https://www.impactanalytics.ai/blog/how-to-improve-retail-assortment-planning-with-size-curves-based-demand-forecasting) - [Profitmind — What Whitespace Opportunity Analysis Reveals About Retail Category Gaps](https://www.profitmind.com/resources/what-whitespace-opportunity-analysis-reveals-about-your-retail-category-gaps) - [JJ Footwear — Everything About Calf Width and Shaft Height](https://us.jjfootwear.com/blogs/blog/everything-about-calf-width-and-shaft-height/) --- # Ace Hardware: How a Co-op of Rivals Beat the Big Boxes Source: https://www.anglera.com/blog/ace-hardware-retailer-playbook Published: 2026-06-09 Industries: building-materials ![Ace Hardware: How a Co-op of Rivals Beat the Big Boxes](/og/hero-ace-hardware-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Ace Hardware lands at #19 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, with $27.55 billion in 2025 U.S. retail sales, according to the National Retail Federation's annual ranking compiled with Kantar. That number is remarkable for a reason most shoppers never think about: Ace does not technically compete against Home Depot and Lowe's the way a normal chain would. It is not one company. It is more than 5,000 of them, bound together by a piece of financial engineering from 1973 that turned out to be the best defense the hardware business ever built. ## Five rivals who stopped competing The story starts in Chicago in the early 1920s, not with one founder but five: Richard Hesse, Frank Burke, Oscar Fisher, E. Gunnard Lindquist, and William Stauber, each running his own hardware store and each getting squeezed by the same wholesalers. Rather than keep fighting each other for scraps of margin, they pooled their purchasing power. They adopted the name "Ace" in 1927, after the World War I fighter pilots who "overcame all odds," and incorporated the following year, according to [Wikipedia](https://en.wikipedia.org/wiki/Ace_Hardware). Frank Burke served as the first president. Richard Hesse took over in 1930 and ran the organization for more than four decades, a tenure that shaped everything Ace became. Within two years of incorporation, the group had stopped merely negotiating discounts and started buying directly from manufacturers out of its own Chicago warehouse, cutting out the middlemen entirely, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/ace-hardware-corporation-history/). By the mid-1930s, 41 dealer-members were doing more than $650,000 in combined sales. By 1959, that figure had grown to $24.5 million across 325 locations. ## The move that mattered more than any store opening In 1973, Hesse retired. Instead of selling the company to an outside buyer or taking it public, he sold Ace to the very dealers who depended on it, converting a wholesale purchasing group into a dealer-owned cooperative. Members bought minimum equity stakes, kicked a share of their purchases back into national advertising, and received profits as cash or stock rebates. By 1976, ownership had fully transferred to the retailers themselves, with systemwide sales at $382 million. This is the detail worth sitting with. Ace's competitors, then and now, are chains: a single corporate parent owns the stores, sets the strategy, and keeps the profit. Ace flipped that. The people running the stores are the shareholders. When Ace negotiates a better price on fasteners or paint, that saving flows back to the same small-business owner who is competing for a customer's trust across the counter. Home Depot opened its first stores in 1979. Ace had already spent six years building an ownership structure that made every one of its dealers a true believer, not a franchisee paying up. ## Fighting scale with scale, without losing the neighbor The arrival of Home Depot and Lowe's in the 1980s and 1990s forced Ace to borrow the enemy's tools without becoming the enemy. It started manufacturing its own paint in 1984, eventually building a private-label catalog approaching 7,000 items, according to FundingUniverse. It opened 14 regional distribution centers by 1994 to keep small stores stocked at a price they could compete on. And in 1994, under its "New Age of Ace" initiative, it told dealers to route 80 percent of purchases through the co-op and standardize signage and computer systems, pushing thousands of independently minded entrepreneurs toward the discipline of a chain, just one they collectively owned. It worked. Ace overtook Cotter & Company, then the largest hardware cooperative and parent of rival True Value, in 1996. It passed TruServ to become America's largest hardware wholesaler in 2001. Sales climbed from $801 million in 1983 to over $2 billion by 1993 and past $5 billion by 2015. The unique insight here is not that Ace is "friendlier" than a big box, which is the marketing story everyone already knows from decades of "helpful hardware folks" ads with Connie Stevens and later John Madden. It is that Ace solved a coordination problem Home Depot never had to face: how do you get thousands of fiercely independent small-business owners to act with the discipline of a single national chain, without asking them to give up ownership. Most industries that tried this kind of federation, from grocery co-ops to real estate franchises, ended up either too loose to compete on price or too rigid to keep local operators loyal. Ace's rebate-funded governance threaded that needle for fifty years, and it is arguably why hardware is one of the only categories where a co-op, not a corporation, sits atop the field alongside the category killers. ## Where the ownership model is stretching today Under CEO John Venhuizen, Ace has started buying outright rather than only recruiting new member-dealers, acquiring Westlake Ace Hardware for $88 million in 2012 and adding home-service businesses like Handyman Matters (2019) and Legacy Plumbing (2022). By 2024, the network passed 5,000 domestic locations. It is a quiet admission that pure cooperative recruitment has limits, and that owning some stores directly is now part of keeping the model growing. Retail's biggest arms races get fought over square footage and same-day shipping. Ace's century-long story is a reminder that some of the most durable competitive advantages get built in the back office, in who owns what and who the profits belong to. Sources: [Wikipedia](https://en.wikipedia.org/wiki/Ace_Hardware), [FundingUniverse company history](https://www.fundinguniverse.com/company-histories/ace-hardware-corporation-history/), [Ace Hardware About Us](https://www.acehardware.com/about-us), [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) --- # The sale you never saw: measuring lost demand from thin data Source: https://www.anglera.com/blog/abandoned-search-lost-demand Published: 2026-06-09 ![The sale you never saw: measuring lost demand from thin data](/og/hero-abandoned-search-lost-demand.jpg) Your analytics tell you what happened after someone found your product. They say almost nothing about the buyer who searched, got nothing usable, and left. That gap — demand that existed but never converted because the product wasn't findable or answerable — is the most expensive line item most retailers never see. It doesn't show up as a bounce or a refund. It shows up as a customer who bought the same thing from a competitor an hour later. ## Why this cost is invisible by default Standard reporting is built to measure what converted, not what almost did. Google Analytics tells you sessions, conversion rate, and revenue per visitor for the traffic that landed on a PDP. It has no native concept of "a shopper typed a query your site couldn't answer" or "an AI assistant summarized your competitor's spec sheet instead of yours because yours was thin." Those events happen upstream of the funnel you're already measuring, in places most teams don't instrument: on-site search logs, impression data in Search Console, and exit behavior on pages that technically "worked." The result is a systematic undercount. Every dashboard looks calmer than the business actually is, because the demand that never converted never got logged as a loss. ## Four proxies that make lost demand visible You can't measure invisible demand directly, but you can triangulate it from four proxies that already exist in tools most teams have. | Proxy | What it shows | Where to measure it | |---|---|---| | Zero-result / low-result site searches | Buyers who described what they wanted in words your catalog couldn't match | On-site search analytics (Algolia, Klevu, Bloomreach, or your search vendor's query log) | | Impressions without clicks | Demand that found you in search results but didn't click through | Google Search Console — Performance report, filter by page, sort by impressions with low CTR | | High-exit PDPs with adequate traffic | Buyers who reached the product and left without adding to cart or asking a question | GA4 — engagement rate and exit rate by page, cross-referenced with content completeness | | Win/loss and support signals | Deals or purchases lost to a competitor, or repeat questions that indicate the page didn't answer them | CRM win/loss notes, live chat transcripts, support ticket tags, on-site "ask a question" logs | None of these is proof on its own. Together, they triangulate the size of the demand you're losing before it ever reaches a conversion funnel. ## Zero-result and low-result searches Site search users are disproportionately valuable — they convert at meaningfully higher rates than browsers and spend more per session, because a typed query is a stated intent. That's exactly why a failed search is expensive: it's not a casual visitor drifting off, it's a buyer telling you precisely what they want and getting nothing back. Industry benchmarks put zero-result rates well into double digits for stores that haven't actively tuned search, and shoppers who hit a bad search result are far more likely to abandon the session entirely rather than try again ([Algolia](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics)). The fix starts with the query log, not the search box. Pull the top zero-result and low-result queries by volume, and check whether the product actually exists in your catalog. Often it does — the query just doesn't match because the attribute that would have surfaced it (a synonym, a use-case term, a spec value) was never captured in structured data. That's a data completeness problem wearing a search-relevance costume. ## Impressions without clicks Search Console's Performance report is the closest thing you have to a receipt for demand that found you and passed. A page with rising impressions but flat or declining clicks is a page that's ranking for the right query but losing the click — usually because the title, snippet, or the underlying content doesn't answer the query as specifically as a competitor's does. Segment by page type: category pages behave differently from PDPs, and a PDP with high impressions and low CTR against a specific spec query (a size, a material, a compatibility term) is telling you the page doesn't contain that spec in a crawlable, matchable form. This same gap shows up beyond organic search — in marketplace search, in on-site search, and increasingly in how AI answer engines choose which product to cite. Treat it as one signal among several discovery channels, not the whole story. ## High-exit PDPs that "worked" A PDP that gets traffic and doesn't convert is not neutral — it's actively losing demand that already found the right product. Nearly half of shoppers report abandoning a purchase because they couldn't find sufficient information, and a large share bounce before they even finish scrolling the page ([Retail Dive](https://www.retaildive.com/spons/study-reveals-poor-product-contents-impact-on-digital-sales/419987/)). Cross-reference your highest-traffic, lowest-converting PDPs against a simple completeness check: does the page have full specs, real dimensions, compatibility or fit guidance, and enough imagery to answer the question a buyer would otherwise ask support? Pages that fail that check are your highest-leverage fix, because the traffic is already paid for. ## Win/loss and downstream signals The last proxy is the one sales and support teams already have and rarely share with the content team: deals lost to a named competitor, support tickets asking questions the PDP should have answered, and returns tagged "not as described." Returns tied to inaccurate or missing product information are a documented and sizeable share of total returns, and buyers who receive wrong information are far less likely to purchase from that retailer again ([360 Magazine](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/)). A support ticket about sizing or compatibility is a zero-result search that happened after checkout risk was already taken — it's the same underlying gap, just discovered later and at higher cost. ## Sizing the opportunity To put a number on it: take your top 50-100 zero-result or low-CTR queries, estimate their monthly search volume, and multiply by your site's average search-to-purchase conversion rate and AOV. Do the same for high-traffic, high-exit PDPs using your category's average conversion rate as the benchmark they're falling short of. Add the fully-loaded cost of returns and support tickets tied to "wrong or missing information" tags. The sum won't be precise, but it will be directionally large enough to justify fixing the underlying data — and specific enough to tell you which SKUs and categories to fix first. That's the practical case for treating product data as a demand-capture problem, not a back-office chore. Anglera plugs into whatever PIM you already run (or none) and continuously scores, gap-fills, and enriches product data from your own supplier and source documents — not invented values — so the specs, compatibility details, and answers buyers are already searching for actually exist on the page. Most catalogs can be live in weeks, not a multi-year rebuild, which means you can start closing the zero-result and high-exit gaps on the SKUs where they're costing you the most, this quarter. --- # 7-Eleven: From a Dallas Ice Dock to 85,000 Stores Worldwide Source: https://www.anglera.com/blog/7-eleven-retailer-playbook Published: 2026-06-09 ![7-Eleven: From a Dallas Ice Dock to 85,000 Stores Worldwide](/og/hero-7-eleven-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* 7-Eleven lands at #20 on the [National Retail Federation's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), compiled with Kantar, with $25.30 billion in 2025 U.S. retail sales. That number describes a chain of roughly 13,000 U.S. stores. It says nothing about the stranger fact underneath it: the company that invented the American convenience store nearly died in 1990, was bought by the overseas licensee it had trained a decade earlier, and spent the 1990s importing its own idea back from Japan. ## An Ice Dock in Dallas The story starts in 1927, not with a store but with ice. Southland Ice Company ran a chain of ice docks around Dallas, and one dock manager, John Jefferson Green, started stocking milk, bread, and eggs alongside the ice blocks so customers didn't have to make a separate trip to the grocer. Founder Joe C. Thompson Sr. noticed the sideline was working and turned it into policy across the company's docks. It was, by most retail historians' accounting, one of the first convenience stores in the country, built on a simple insight: people would pay a little more to buy a little less, a little closer to home. A year later a store manager named Jenna Lira staked an Alaskan totem pole outside her location as a promotional gimmick. It caught on enough that Southland rebranded its dock-stores as **Tote'm Stores** in 1928, the name playing on customers "toting" their purchases home. The company survived a bankruptcy of its own during the Depression in 1931, restructured under Thompson's leadership, and by 1939 had grown to 60 Tote'm locations across the Dallas-Fort Worth area, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/7-eleven-inc-history/). ## The Hours Became the Name In 1946 Southland renamed the chain again, and this time the name was the pitch: **7-Eleven**, for the store hours, 7 a.m. to 11 p.m., seven days a week. Keeping a store open sixteen hours a day, every day, was not standard retail practice in postwar America, and the hours alone became the brand's reason for being. Joseph Thompson's son, John P. Thompson, joined the board in 1948 and was named the company's second president in 1961 with a mandate to take Southland from $100 million to $1 billion in sales within a decade. The company hit $1 billion in sales by 1971, a year ahead of schedule. Along the way it picked up the moves that still define the chain: it acquired 100 SpeeDee Mart stores in 1963 to get into franchising, opened its first 24-hour location in Austin, Texas that same year after a store simply never closed because customers kept showing up, introduced the Slurpee in 1966, and rolled out the Big Gulp in 1976. By 1969 the chain counted 3,537 stores across the U.S. and Canada; the 5,000th store opened in 1974, fittingly built on the site of the original ice dock. ## The License Deal That Ate Its Parent Here is the turn most people miss. In 1973, flush with domestic growth, Southland granted an area license to sell 7-Eleven stores in Japan to a mid-sized general merchandiser called Ito-Yokado. It looked like a minor international footnote at the time, a licensing fee and a royalty stream from a market Southland had no intention of operating directly. Ito-Yokado's convenience-store unit, run by an executive named Toshifumi Suzuki, didn't just copy the American format. Suzuki built a proprietary inventory and ordering system tuned to small-lot, high-frequency deliveries, matching what each individual store sold hour by hour against what its truck brought next. Seven-Eleven Japan became more disciplined about single-store profitability than the American original had ever been. Southland, meanwhile, spent the 1980s on riskier ground: it bought Citgo Petroleum for $780 million in 1983 to lock up gasoline supply, then sold half of it back to Venezuela's state oil company in 1986 to raise cash. In July 1987 the Thompson family took the company private in a leveraged buyout that loaded on roughly $4 billion in debt right before a stock market crash and a wave of competition from oil companies opening their own convenience stores at the pump. Southland defaulted on $1.8 billion in public debt and filed for Chapter 11 bankruptcy in October 1990. The rescue came from the licensee. IYG Holding, jointly owned by Ito-Yokado and Seven-Eleven Japan, acquired 70 percent of Southland's common stock for $430 million as part of the reorganization, and the company emerged from bankruptcy in under five months, in March 1991, according to [Wikipedia's account of the restructuring](https://en.wikipedia.org/wiki/7-Eleven). The company that had licensed its name and format to Japan in 1973 now answered to the business it had created. ## Running the Playbook It Exported What followed was less a rescue than a reverse import. Southland exited distribution and food processing in 1992 to focus solely on running 7-Eleven stores, completed a chainwide remodel by 1996, and in 1994 began rolling out a retail information system modeled directly on the one Seven-Eleven Japan had spent two decades refining. The American parent was now studying its former student's operating manual. By April 1999 the company retired the Southland name entirely and became 7-Eleven, Inc., and it logged eight straight quarters of same-store sales growth heading into the millennium. Seven-Eleven Japan took full ownership in 2005, folding into the newly formed Seven & i Holdings later that year. The scale kept compounding. In 2021, Seven & i closed a $21 billion acquisition of Speedway from Marathon Petroleum, adding nearly 3,900 fuel-and-convenience stores across 36 states and making 7-Eleven, in combination with Speedway and its Stripes chain, one of the largest fuel retailers in the country. Today the network runs to roughly 85,000 stores across 20 countries, per Wikipedia, most of them independently franchised, still selling the same basic idea Joe Thompson Sr. noticed at an ice dock a century ago: a little more convenience, worth a little more money. The unglamorous throughline of 7-Eleven's story is data before it was fashionable to call it that: knowing exactly what a single store needs on a single day, and getting it there. That discipline, born out of a near-death experience and imported from an overseas licensee, still runs every shelf in the chain. This profile is part of Anglera's Retailer Playbooks series, chronicling the companies that built American retail. --- # Skincare is being reranked by AI shopping agents. Is your catalog readable? Source: https://www.anglera.com/blog/skincare-aeo Published: 2026-06-08 Industries: skincare ![Skincare is being reranked by AI shopping agents. Is your catalog readable?](/og/hero-skincare-aeo.jpg) A skincare shopper today rarely starts with your homepage. They open ChatGPT, Gemini, or Perplexity, describe a skin concern and a budget, and get a shortlist back in one turn. Adobe Analytics found AI-driven traffic to U.S. retail sites jumped 805% year-over-year on Black Friday 2025, and those AI-referred shoppers converted 38% more often than shoppers from other channels ([Adobe](https://business.adobe.com/blog/ai-driven-traffic-surges-across-industries)). Beauty and skincare are near the front of that shift, because ingredient and routine questions map almost perfectly onto how these agents work. The catalogs that show up in the answer are the ones an agent can actually read. ## What "ask an AI to recommend" looks like now Picture a shopper with reactive, acne-prone skin typing this into an AI shopping agent: "recommend a fragrance-free moisturizer with ceramides and niacinamide, non-comedogenic, under $40, that won't sting after retinol." That is a real, specific query pattern, and it is exactly the kind of question industry researchers say beauty shoppers ask more than shoppers in almost any other category ([BeautyMatter](https://beautymatter.com/articles/how-agentic-ai-is-reshaping-beauty-discovery)). To answer it, the agent needs to filter on attributes most product feeds don't carry in a usable form: fragrance status, comedogenicity, named active ingredients and their concentration, and compatibility with a retinoid routine. If that data lives only in a marketing paragraph or a scanned ingredient photo, the agent can't confidently match it, so it skips the product and recommends a competitor whose page states the same facts as clean, queryable fields. This is also why a small set of brands keeps showing up in these answers. Research from Business of Fashion found ChatGPT recommended La Roche-Posay in a striking share of facial skincare queries ([Business of Fashion](https://www.businessoffashion.com/articles/beauty/the-beauty-brands-chatgpt-tells-people-to-buy/)) — not because it's the only good product on the market, but because its ingredient and use-case information is unusually explicit and consistent across retailers. Consistency is a data problem before it's a marketing problem. ## Why thin data makes a catalog invisible Most skincare feeds were built for a search bar, not a reasoning model. A typical PIM record has a title, a hero image, a price, and a few paragraphs of brand copy. That's enough for a shopper who already knows the product name. It's not enough for an agent trying to decide, among forty moisturizers, which ones are fragrance-free, which are safe with retinol, and which suit oily-acne-prone skin at a given price point. Three gaps show up constantly in skincare catalogs: - Skin type and concern fields are missing or use inconsistent free text ("for sensitive skin!" instead of a structured `sensitive` tag). - Active ingredients and concentrations sit inside a paragraph instead of a parseable list, so an agent can't confirm "contains niacinamide" versus "mentions niacinamide as a category." - Fragrance-free, non-comedogenic, and cruelty-free claims aren't tied to any verifiable field, so agents that weight trust signals have nothing structured to check. None of this is exotic information. It's the same information a knowledgeable store associate would rattle off. The catalog just never wrote it down in a form a machine can act on. ## What machine-readable skincare data actually looks like Here's the same moisturizer before and after enrichment: | Attribute | Raw feed | Enriched | |---|---|---| | Title | Face Cream 50ml | Ceramide Repair Moisturizer, Fragrance-Free, 1.7 oz | | Skin type | (blank) | Sensitive, Dry, Acne-Prone | | Key actives | "with ceramides and more" | Ceramide NP, Ceramide AP, Niacinamide 5%, Hyaluronic Acid | | Fragrance | (blank) | Fragrance-free: yes | | Comedogenic rating | (blank) | Non-comedogenic | | Routine fit | "great for daily use" | AM/PM barrier moisturizer; safe to layer after retinoids | | Price | $28.00 | $28.00 | The enriched row doesn't add hype. It adds facts an agent can filter on and a shopper can trust. That's the difference between a product that surfaces in a comparison and one that never enters the candidate set. Underneath the table, this data should also exist as structured markup an agent's crawler can parse without guessing. Industry analysis of AI-cited pages found 65% of pages cited by Google AI Mode and 71% of pages cited by ChatGPT include structured data, with JSON-LD accounting for roughly 90% of that markup because it's cleanly separated from page HTML and doesn't require parsing the visual layout ([Alhena](https://alhena.ai/blog/schema-markup-ai-search-ecommerce/)). For skincare specifically, that means `Product` schema carrying brand, GTIN, and price alongside explicit fields for active ingredients, skin-type suitability, and fragrance status, not buried inside a description string. ## The mechanism, not the magic None of this requires chasing every AI platform's algorithm. The mechanism is simpler and more durable: agents recommend what they can verify quickly, and they verify fastest against structured, consistent fields. A catalog with complete skin-type tags, named actives with concentrations, and accurate fragrance and comedogenic flags gives every AI shopping agent, current and future, the same clean surface to reason over. That's a data maintenance problem, not a one-time SEO project, because ingredient reformulations, new claims, and pricing changes happen constantly and the fields drift out of sync with reality if nobody's watching them. ## Where Anglera fits Your PIM stores the data. Anglera does the work of keeping it complete: it scores every skincare listing for missing skin-type tags, unparsed ingredient lists, and unverified fragrance or comedogenic claims, then gap-fills and standardizes those fields so they read the same way to a shopper and to an AI agent. It plugs into whatever PIM or commerce platform you already run, no rip-and-replace, and it keeps re-checking the catalog as ingredients, claims, and prices change so the data doesn't go thin again six months later. --- # The jewelry & watches attributes shoppers filter on — and most catalogs miss Source: https://www.anglera.com/blog/jewelry-watches-attributes Published: 2026-06-08 Industries: jewelry-watches ![The jewelry & watches attributes shoppers filter on — and most catalogs miss](/og/hero-jewelry-watches-attributes.jpg) A shopper narrowing down a diamond ring filters by metal, carat, shape, and setting before she reads a single word of description copy. A watch shopper filters by movement, case size, and water resistance. When those specs live only inside a paragraph of marketing prose, faceted search can't find the product — and neither can an AI shopping agent asked to recommend one. Jewelry and watches are two of the most attribute-dense categories in retail, and two of the most commonly under-structured. Here's the specific attribute set that matters, why gaps in it are costlier than in most categories, and how to fix it with a real ring as the worked example. ## The attributes shoppers actually filter on For fine jewelry, the standard reference point is the GIA's 4Cs: cut, color, clarity, and carat weight, the framework the diamond trade has used for decades to grade and price a stone consistently ([GIA](https://4cs.gia.edu/en-us/4cs-of-diamond-quality/)). But shoppers filter on more than the stone. A realistic jewelry attribute set looks like this: | Attribute | Why it matters | |---|---| | Metal type & purity | White gold, yellow gold, rose gold, platinum, 14K vs 18K — a hard exclude for most shoppers | | Center stone shape | Round, oval, cushion, emerald, pear — the first filter most ring shoppers touch | | Carat weight (stone + total) | Price anchor; total carat weight differs from center-stone carat when there's a halo or pavé | | Color and clarity grade | Determines the "how white, how clean" quality tier within a shape and carat | | Stone origin (natural vs lab-grown) | Now a disclosure requirement, not just a preference filter (more below) | | Setting type | Prong, bezel, halo, pavé, hidden halo — style filter with real price implications | | Metal color / plating | Distinct from metal type; a rose-gold-plated piece is not a rose-gold piece | | Ring size range | Determines whether the listing even appears for a shopper's size | Watches carry a parallel but different set: movement type (quartz, automatic, mechanical, solar), case diameter in millimeters, case material, water resistance rating, band/strap material, lug width, crystal material, and complications like chronograph or GMT. Movement type alone often does more to segment intent and price tier than any other single field — a shopper choosing between automatic and quartz is making a fundamentally different purchase, not a stylistic one. ## Why the gaps hurt more here than elsewhere Faceted navigation treats a missing attribute as an exclusion, not a blank. A ring with no `stone_shape` value doesn't show up as "unspecified" in the shape filter — it simply doesn't appear when a shopper clicks "oval." The same is true for `water_resistance` on watches: a shopper filtering for "100m or more" never sees a product where that field is null, even if the spec sheet buried in the description says 100m in prose. AI shopping agents make this worse, not better. When ChatGPT, Google AI Mode, or Perplexity field a query like "oval lab-grown diamond ring under $3,000," they're matching against structured fields in a product feed, not parsing adjectives out of a product page. Feed guidance for these surfaces explicitly recommends structured attributes with consistent taxonomy values over descriptive copy, because the agent needs machine-readable fields to filter and rank against ([Google Merchant Center](https://support.google.com/merchants/answer/6324410)). ## Worked example: a diamond ring, before and after Here's a representative raw feed entry versus what an enriched one looks like: **Before (raw feed):** Title: "14K Gold Diamond Ring — Elegant Design" Description: "A stunning ring featuring a beautiful oval diamond in a delicate setting. Perfect for any occasion." **After (enriched):** | Field | Value | |---|---| | Metal type | White gold | | Metal purity | 14K | | Center stone shape | Oval | | Center stone carat weight | 1.02 ct | | Total carat weight | 1.24 ct | | Color grade | G | | Clarity grade | VS1 | | Stone origin | Lab-grown | | Setting type | Hidden halo, pavé band | | Ring size range | 4–9, half sizes available | Nothing in the "before" version is wrong — it's just unusable by a filter or an agent. The "after" version is the same product, made findable. ## Ask an AI to recommend one Try it yourself: ask ChatGPT or Google AI Mode to "recommend a 1-carat oval lab-grown diamond ring under $3,000 with a hidden halo setting." The agent can only surface listings whose feed encodes carat weight, shape, stone origin, setting style, and price as separate fields it can filter on. A product described only as "stunning oval diamond ring" in flowing prose won't match, even if it satisfies every criterion in the query. ## The compliance layer most catalogs miss Stone origin isn't optional metadata anymore. The FTC's Jewelry Guides require that lab-grown diamonds be described with a qualifier — "laboratory-grown," "laboratory-created," or similar — placed immediately before the word "diamond," clearly and in close proximity to the claim, not buried on an education page ([FTC](https://www.ftc.gov/news-events/topics/tools-consumers/jewelry-guides)). A catalog that doesn't carry `stone_origin` as a structured field can't enforce that disclosure consistently across thousands of SKUs, which turns a merchandising gap into a regulatory one. ## How to structure it Treat jewelry and watch attributes as first-class feed fields, not description content: separate `metal_type` from `metal_purity`, separate `center_stone_carat` from `total_carat_weight`, and give watches numeric fields like `case_diameter_mm` and `water_resistance_atm` so range filters ("40mm+", "100m or more") actually work. Keep stone origin and metal purity mandatory, not optional, since both carry disclosure or fit implications that a missing value can't safely default around. This is exactly the gap Anglera is built to close. Your PIM stores the product data; Anglera continuously audits it against category-specific attribute sets like the one above, flags missing carat weights, movement types, or stone-origin disclosures, and fills them from source documentation and supplier feeds — so every ring and watch stays filterable, compliant, and legible to the AI agents now doing a growing share of product discovery. --- # How Inline Electric Supply Chose Employees Over a Buyer Source: https://www.anglera.com/blog/inline-electric-distributor-playbook Published: 2026-06-08 Industries: electrical ![How Inline Electric Supply Chose Employees Over a Buyer](/og/hero-inline-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Inline Electric Supply lands at #34 on the electrical vertical of [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors), Modern Distribution Management's annual accounting of North America's largest wholesale distributors. MDM lists the company's fiscal 2025 revenue at $456 million. Inline has spent almost four decades building density across the Southeast without ever needing to court a public audience. The more interesting number in its file is 2012, the year it converted to full employee ownership. ## One branch, then thirty-nine more Inline opened its first counter in Huntsville, Alabama, in 1988, selling wire, conduit, and panels to the contractors building out a region that was then mostly aerospace and defense work. [The company's own account](https://www.inlineelectric.com/aboutus) of that period is plain: keep local inventory deep, keep pricing sharp, keep service fast enough that a contractor with a stalled jobsite doesn't have to think twice about calling. That is the entire playbook of a regional electrical house, and Inline ran it branch by branch for a quarter century before it became anything larger than a well-run Alabama company. The expansion since has been steady rather than dramatic. Inline now operates [41 locations](https://www.inlineelectric.com/locations) across Alabama, Tennessee, Georgia, and Florida, with more than 600 employees. Seventeen of those branches are in Alabama alone, a home-state density that mirrors how the best regional distributors actually grow: saturate the territory you understand before you go looking for a new one. Seven locations are dedicated lighting showrooms rather than standard supply counters, a signal that Inline treats lighting design and specification as its own discipline, not a shelf category bolted onto wire and conduit. ## The pivot that matters more than the branch count The branch map explains Inline's reach. It does not explain why the company still exists as an independent, privately held distributor in 2026, in a vertical where Sonepar, Rexel, and WESCO have spent two decades buying up exactly the kind of regional operator Inline was in the 1990s. The answer is the 2012 decision to convert to an employee stock ownership plan, making every employee a shareholder in the business they show up to run. That is the unique fact worth naming plainly: Inline chose to sell itself to its own workforce rather than wait for a strategic buyer or a private equity platform to make an offer. It joins a short list of electrical distributors, alongside names like Border States, that treat employee ownership as a long-term structural choice rather than a one-time liquidity event for a founder. For a company that had already spent 24 years building a reputation on being the branch that answers the phone and has the part, an ESOP is a bet that the people who built that reputation are also the ones best positioned to protect it, because they now personally own the outcome. ## What the ownership structure buys operationally The strategic logic shows up in how Inline is built, not just in who owns it. A branch manager whose retirement account is denominated in company stock has a very different relationship to inventory accuracy, customer retention, and counter service than a branch manager reporting quarterly numbers to a private equity sponsor three ownership layers away. Inline's [panel program partnerships with Eaton and Siemens](https://www.inlineelectric.com/) and its lighting-consultation and energy-audit services are the kind of higher-touch, relationship-dependent offerings that tend to survive best in organizations where frontline staff aren't rotating through a portfolio-company playbook every few years. There is a real trade-off, and it is worth naming rather than smoothing over. PE-backed and strategically owned rivals in electrical distribution can raise acquisition capital fast and roll up smaller houses in a single deal cycle. An ESOP structure finances growth more slowly, out of earnings and modest debt rather than sponsor equity, which is one reason Inline's expansion from one branch to 41 took nearly four decades instead of four leveraged years. The company has effectively chosen compounding branch density in four contiguous states over the kind of multi-region sprint that a buyout-funded competitor could execute. It is a slower flywheel, but it is one where the people spinning it keep the value it creates. ## The quiet advantage of staying put That patience is also why Inline's MDM placement is worth reading past the rank number. A #34 finish in electrical is not a company optimizing for the league table. It is a company that has spent since 1988 optimizing for the branch manager in Cullman or the counter clerk in Chattanooga having a direct stake in whether the truck gets loaded on time. In a vertical where scale increasingly comes from a buyer's balance sheet, Inline's scale still comes from tenure, density, and an ownership structure that keeps decisions close to the loading dock. Every distributor on the MDM list wins or loses on some version of the same unglamorous inputs: what's in stock, who picks up the phone, and how clean the underlying product data is behind both. This series looks at how the companies on that list actually built those advantages. --- # How Granite City Electric Stayed Family-Owned for a Century Source: https://www.anglera.com/blog/granite-city-electric-distributor-playbook Published: 2026-06-08 Industries: electrical ![How Granite City Electric Stayed Family-Owned for a Century](/og/hero-granite-city-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Granite City Electric Supply lands at #40 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical vertical, a slip from #34 the year before but still a solid mid-pack rank in a category dominated by national and multinational platforms. What makes the company worth a closer look isn't the rank. It's that a business founded in 1923 by an Italian immigrant electrician still answers to his family, in a channel where almost everyone else has sold to someone bigger. ## An electrician who couldn't find good supply Nicholas V. Papani arrived in the United States at 16, served in World War I, earned his master electrician's license, and then did what a lot of frustrated tradespeople have done before and since: he decided the supply house he needed didn't exist, so he built one. In 1923 he opened Granite City Electric in Quincy, Massachusetts, betting that contractors in the area needed a local source for wire, fittings, and fixtures they could actually get their hands on. A century later that same instinct, put local inventory close to the people installing it, still describes the company's branch network. ## The succession nobody expected in 1969 When Papani died in 1984, the company had already passed to his daughter, Phyllis Papani Godwin, who became principal owner and Chairman and CEO back in 1969. A woman running an electrical wholesale house was rare in that era; the trade was, and in many pockets still is, overwhelmingly male at the ownership level. Godwin didn't just hold the seat, she pushed the company's geographic expansion through the 1970s and 1980s, setting the template Granite City still follows: grow branch by branch into adjacent New England territory rather than chase a national footprint. ## Growing by buying family businesses, not by becoming one's exit This is the part of the story that doubles as the strategic insight. Electrical distribution has spent two decades consolidating into a handful of giant platforms, many of them private-equity-backed or owned by larger multinational groups. Granite City took the opposite path: it grew mostly by acquiring other small, family-run electrical distributors and keeping them intact rather than folding into a private-equity roll-up or selling itself to a Sonepar-scale acquirer. President Steve Helle, who joined in 1999, has overseen deals for JG Temple, C&I Electric, Electric Supply and Repair, The Whelan Co., Columbia Electric Supply, Major Electric, Baynes Electrical Supply, and, most recently, Barre Electric & Lighting Supply in August 2024, according to [tED magazine's coverage of the deal](https://tedmag.com/granite-city-electric-acquires-barre-electric-lighting-supply/). The Barre deal is instructive. Barre had been family-owned since 2002, serving Vermont contractors and homeowners. Rather than dissolve the acquired brand into a faceless "corporate" identity, Granite City kept owner Greg Isabelle on as senior sales manager. Helle framed it as building "future opportunities for mutual growth," and Isabelle talked about combining teams, not cashing out and leaving. That pattern, buy the family business, keep the family running it, repeats across the acquisition list. It's a roll-up strategy that trades the speed and leverage of a PE-style consolidator for continuity that customers and employees can feel. | Milestone | Year | |---|---| | Founded by Nicholas V. Papani in Quincy, MA | 1923 | | Phyllis Papani Godwin becomes Chairman/CEO | 1969 | | Steve Helle joins as President | 1999 | | Official Boston Red Sox electrical supplier | 2004 | | Barre Electric & Lighting Supply acquired | 2024 | | MDM 2026 Top Distributors, Electrical #40 | 2026 | ## The logistics bet that makes the branch model pay off None of this works if a contractor can't get product overnight. Granite City's answer is Night Train, a proprietary overnight delivery system that, per tED magazine's reporting on the Barre acquisition, moves nearly 70 percent of the company's orders to customers by the next morning. Combined with roughly three dozen branches spread across Massachusetts, New Hampshire, Vermont, Connecticut, Rhode Island, and the Albany, New York market, the logistics network turns a regional footprint into something closer to same-day availability across six states. That's the unglamorous engine underneath the family story: branch density plus a dedicated overnight fleet, not scale for its own sake. ## A hyper-local brand play in a commodity category Since 2004, Granite City has been the official electrical supplier to the Boston Red Sox, a sponsorship most electrical distributors its size would never consider. Wire and conduit are about as commodity as products get, so brand differentiation in this category usually comes down to price and delivery speed. A regional sports partnership is a bet that showing up as "the Red Sox's electrician" builds trade recognition and community trust that a catalog full of Lutron and Square D parts numbers cannot. ## The trade-off worth naming Staying family-controlled and growing by absorbing like-minded local businesses has kept Granite City's culture intact across a century, but it also caps how fast the company can scale against national platforms with access to public or private-equity capital. MDM doesn't disclose Granite City's revenue, itself a marker of how firmly private the company has remained, and its rank of #40 in electrical sits well below the sector's billion-dollar consolidators. The bet Granite City has made, repeatedly, is that a loyal regional customer base and a continuous ownership line are worth more than the growth rate a sale would unlock. A century in, that bet has held. Every distributor on this list runs on the same unglamorous plumbing: catalogs that have to be right, branches that have to be stocked, and data that has to move as fast as the trucks do. This series looks at how the largest ones built it. --- # Assortment planning in Furniture & Home: the gaps your style-level reports can't see Source: https://www.anglera.com/blog/furniture-home-assortment-planning Published: 2026-06-08 Industries: furniture-home ![Assortment planning in Furniture & Home: the gaps your style-level reports can't see](/og/hero-furniture-home-assortment-planning.jpg) A merchandising team at a mid-size furniture retailer pulls up the quarterly sectional report. Style 4410 is a top performer. Style 4410 stays in the line. That's the whole analysis, because that's the level the report was built at. Nobody asks why 4410 sells and 4180 doesn't, because the report can't see inside a style. It sees a name and a sales number, not the seat depth, fill type, or fabric performance rating that actually explains the gap. That's the problem with assortment planning built on style-level or even SKU-level rollups in furniture and home. A "style" is really a bundle of attribute values, and different bundles perform wildly differently even within the same style name. Two sectionals with the same silhouette but different cushion fill can have a 15-point difference in sell-through, and a style-level report averages them into one number that describes neither. ## What a rollup actually hides Furniture has more attribute depth than almost any other retail category: frame material, cushion fill (foam density, down blend, fiber wrap), fabric or leather grade, performance/cleanability rating, seat depth, arm style, finish, and dimensional footprint, often stacked on a single SKU. When those attributes live as free text in a PDM export ("performance fabric," "easy-clean," "stain-resistant" all meaning roughly the same thing, entered by three different vendors) or are simply missing for a third of the catalog, a planning system can't group by them. It can only group by category and style name. So it reports what it can see, and what it can see is coarser than the thing driving demand. This is not a new insight in assortment theory. Marshall Fisher and Ramnath Vaidyanathan's widely cited [demand estimation procedure for retail assortment optimization](https://pubsonline.informs.org/doi/10.1287/mnsc.2014.1904) treats a SKU as a bundle of attribute levels and estimates the demand share of each level separately, then reconstructs SKU-level demand from the combination. The method exists because attribute-level demand shares are more stable and more explanatory than SKU-level sales history alone, especially in categories with heavy variation like furniture. The practical version of that idea, for a merchandising team without a demand-science group, is simpler: build the report at the attribute-value level before you build it at the style level. ## The gaps a style report can't show Three patterns hide inside a style-level furniture report, and they matter for different reasons. White space is demand that exists at the attribute level with no SKU offered against it. If performance fabric sells well across price bands 500-900 and 1300-1800 but the line has nothing in performance fabric between 900 and 1300, that's an open gap, not a soft category. A style-level report shows "sofas" trending fine and never surfaces the hole. Over-assortment is the mirror image: too many near-identical SKUs stacked in one attribute cell, cannibalizing each other's sell-through while adjacent cells sit empty. [Toolio's assortment planning guide](https://www.toolio.com/post/the-ultimate-guide-to-retail-assortment-planning) frames this as the breadth-versus-depth tradeoff, and furniture lines chronically over-invest depth in whichever cushion fill or fabric family the buyer trusts, leaving true white space unaddressed elsewhere. Break points are the sharpest and least visible pattern. Demand often doesn't decline smoothly across an attribute range, it steps down at a specific value. Seat depth might perform identically at 21 and 22 inches, then drop hard at 24, because that's where a sofa stops reading as compact for smaller rooms. If the attribute is stored as a rounded bucket ("deep seating" vs. "standard") instead of the actual inch value, the break point disappears into the bucket and the line keeps assorting past the point where demand actually stops. ## One worked example Take a sectional program with three live attributes: fabric performance tier (basic, performance, premium performance), seat depth (20, 22, 24, 26 inches), and price band. Once those attributes are clean and every SKU is correctly tagged, plot sell-through against SKU count in each price-band by attribute-value cell. | Price band | Attribute value | SKUs offered | Sell-through | |---|---|---|---| | $900-1,300 | Basic fabric | 6 | 38% | | $900-1,300 | Performance fabric | 0 | — | | $1,300-1,800 | Performance fabric | 5 | 71% | | $1,800+ | Premium performance | 4 | 33% | The pattern reads instantly once it's laid out this way. Performance fabric is the strongest cell in the whole matrix wherever it's offered, but it's entirely absent in the $900-1,300 band, which is exactly where a value-conscious performance-fabric buyer would look first. Meanwhile premium performance above $1,800 is over-assorted relative to its sell-through, likely because someone liked the margin, not because demand asked for four SKUs there. The line decision writes itself: add one or two performance-fabric sectionals in the $900-1,300 band, cut the weakest premium SKU, and hold basic fabric flat. None of that is visible from a style-level report, and all of it depends on seat depth, fabric tier, and price being clean, standardized, and correctly attached to every SKU before the matrix gets built. ![Matrix: price band by attribute value, dot size showing SKUs offered and color showing sell-through, with one over-assorted cell and one empty high-demand cell](/diagrams/assortment-whitespace-matrix.svg) ## What the data has to be first Attribute-level assortment analysis only works if three conditions hold. Fill: every SKU carries a value for the attributes the matrix is built on, not just the flagship items with tidy tech packs. Standardization: "performance fabric," "easy-clean," and "stain-resistant" collapse to one controlled value instead of three, and seat depth is stored as a number, not a bucket. Correctness: the value on file matches what the product actually is, not what a vendor's spec sheet claimed six SKU generations ago. Getting there by hand is the reason most furniture catalogs never reach attribute-level planning. Manual enrichment runs somewhere around [30-45 minutes per SKU](https://www.toolio.com/post/the-ultimate-guide-to-retail-assortment-planning) once you count spec-sheet review, image inspection, and cross-checking against vendor claims, and furniture catalogs run thick with exactly those source types: tech packs, fabric performance certs, dimensional drawings, assembly instructions. This is the layer Anglera works on. It extracts and normalizes attributes like fabric tier, fill type, and seat depth from tech packs, spec sheets, and product imagery, validates them against multiple sources and flags conflicts instead of guessing, and fills the gaps across a catalog without requiring a rip-and-replace of the PIM or planning system already in place. A clean attribute layer doesn't tell a merchandising team what to buy. It just makes sure the report they're buying against is describing the line they actually sell. --- # The $2 billion data problem electrical distribution still hasn't fixed Source: https://www.anglera.com/blog/electrical-distribution-product-data-2026 Published: 2026-06-08 ![The $2 billion data problem electrical distribution still hasn't fixed](/og/hero-electrical-distribution-product-data-2026.jpg) In January 2023, the NAED Foundation and Gold Research published a *Product Data Journey Map* built on 60+ interviews across 42 manufacturers and distributors. Its headline finding was blunt: poor product data quality costs the electrical distribution industry **over $2 billion a year**. Three years later, the bill hasn't been paid. The data is still stuck in Excel, still hand-keyed, still inconsistent from one distributor to the next. What *has* changed is who's paying for it. In 2023 the cost showed up as returns and ecommerce friction. In 2026 it shows up somewhere harder to see: in the searches where your products never appear at all. ## What the 2023 report actually found The study identified **nine friction points** that show up at nearly every manufacturer and distributor. They were never really a technology problem: - **Incomplete data** — required attributes, images, and hierarchy missing. - **Inconsistent data** — `15W` vs. `15 Watts`, `BLK` vs. `Black`, the same product filed under different categories. - **Inaccurate data** — images that don't match the item, case prices entered as unit prices, duplicate or broken UPCs. - **Out-of-date data** — retired parts with no notice, spec sheets that changed and were never re-sent, dead links. - **Manual delivery** — manufacturers ship Excel; distributors re-key, QC, and re-automate every time a template changes. The economics were just as concrete. Returns run about **2% of distribution sales** and cost roughly **20% of order value**, much of it driven by buyers ordering the wrong part from a thin product page. One STIBO case study cited in the report cut data-quality-driven returns from **20% to 0.5%** after putting a PIM in place. ## The finding everyone skipped past Buried in the key findings was a line that reads very differently in 2026 than it did in 2023: > Improving product data quality is necessary to keep up with generational > changes with younger buyers, distribution sales, and product management staff. The report saw it coming. The buyer who used to call a counter rep and read a part number off a crumpled spec sheet is retiring. The buyer replacing them grew up on Amazon. They expect to filter, compare, and check compatibility on a phone in ninety seconds — and if your site can't do that, they assume you don't stock it. A short, all-caps ERP description (`CB 20A 1P 120/240V`) doesn't answer a single question that buyer has. And the same data gaps that frustrate a 28-year-old estimator are the ones that make your catalog invisible to the tools they increasingly search with first. ## The 2026 version of the same problem In 2023, "better ecommerce" meant your own website. In 2026, the front door moved again. A growing share of product research now starts inside an **answer engine** — ChatGPT, Perplexity, Google's AI Overviews — that reads the web and returns one synthesized recommendation instead of ten blue links. These engines don't reward clever copy. They reward exactly what the NAED report was asking for three years ago: complete, consistent, machine-readable product data. A model can only recommend a breaker it can parse — its amperage, poles, voltage, interrupting rating, and what panel it fits. Bury that in a PDF cutsheet or a paragraph of marketing fluff and you don't rank low. You don't exist. So the $2 billion never went away. It changed denomination: - **Then:** returns, inflated data-management headcount, lost order size. - **Now:** all of that, *plus* every "best 20A AFCI breaker for a 1960s panel" query that gets answered with a competitor's catalog instead of yours. ## What this looks like on one real SKU Take a part every electrical distributor stocks: the **Eaton BR120**, a 20-amp, single-pole Type BR circuit breaker that sells for about $8.78. Eaton Type BR 20-amp single-pole circuit breaker (BR120) On a strong product page, everything an answer engine needs is present and parseable: | Attribute | Value | | --- | --- | | Brand · SKU | Eaton · BR120 | | Amperage | 20 A | | Poles | 1 | | Voltage | 120/240 V, single phase | | Interrupting rating | 10 kAIC | | Width | 1 in | | Compatible panels | Eaton Type BR load centers; **UL-approved replacement for Bryant, Westinghouse, and Challenger** | | Listings | UL listed · HACR rated · switch-duty rated | | GTIN | 786676362108 | Now picture the same part in a typical distributor catalog, loaded straight from a supplier feed and never touched again: > `BREAKER BR 20A 1P 120/240` — *Eaton's residential BR circuit breakers are used > in load centers, panel boards, or similar devices…* Same part, same price. But the second version has no structured attributes, no interrupting rating, no width, and — critically — no mention that this breaker is a **UL-approved replacement for Bryant, Westinghouse, and Challenger panels**. That single fact is the buyer's entire question. > **Try it.** Ask ChatGPT or Perplexity for a 20-amp breaker to replace one in an > old Westinghouse or Bryant panel. To name the BR120, the model has to read a > page that states that compatibility in plain text. The distributor who reduced > it to `BREAKER BR 20A 1P` can't be the answer — the fact simply isn't on the > page. ## Where does your catalog sit today? The report scored data maturity on a curve from ad hoc to optimized. Three years on, the levels still describe the industry — and most distributors interviewed sat near the bottom of it. | Level | What your SKU data looks like | What it costs you | | --- | --- | --- | | **0 · Ad hoc** | Supplier Excel uploaded as-is; all-caps titles; few attributes | Invisible to search and AI; returns from wrong-part orders | | **1 · Managed** | Syndicated feeds auto-loaded, then hand-patched | Parity with every rival on the same feed; price is the only lever | | **2 · Defined** | A real data model; required attributes set per category | Pages are filterable, but the copy is still generic | | **3 · Measured** | PIM/DAM/ERP integrated; data-quality KPIs tracked | Sharp site search; you can prove the ROI of data work | | **4 · Optimized** | Enriched, buyer-specific, machine-readable content at full catalog scale | You're the cited answer — in site search, Google, and AI engines | The leap that matters is to level 4. In 2023 that read like a multi-year systems program. In 2026 it's mostly a content problem — and content is automatable. ## The fix is the same one the report prescribed The 2023 best practices still hold — an enhanced data model, governance, and automated PIM/DAM/ERP/ecommerce integration instead of manual Excel. The benchmarks the report cited are why it's worth doing: - Products to market **up to 6× faster** - Ecommerce growth **up to 50%** - Returns **23% lower**, customer inquiries **27% fewer** - Description error rates down **90%+** - Direct and organic ecommerce traffic up **2.6×** What's changed is that you no longer need a multi-year program and a new headcount to get there. A PIM stores the data; the bottleneck was always the work of *filling* it — normalizing units, mapping attributes to a taxonomy, writing buyer-specific copy, and reconciling every manufacturer's Excel quirks across tens of thousands of SKUs. That's the part Anglera automates. We take the messy supplier feeds the NAED report described and turn them into structured, enriched, AI-ready content that lands in the PIM you already run — in weeks, not quarters. The industry has known about its $2 billion problem since 2023. The difference in 2026 is that the buyers, and the engines they search with, have stopped waiting for it to be fixed. --- # Dollar General: How a Depression-Era Idea Built 20,000 Stores Source: https://www.anglera.com/blog/dollar-general-retailer-playbook Published: 2026-06-08 ![Dollar General: How a Depression-Era Idea Built 20,000 Stores](/og/hero-dollar-general-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Dollar General ranks #17 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual ranking compiled with Kantar, with $43.13 billion in 2025 U.S. retail sales. That figure sits on top of a business that started with $5,000 in cash and a truckload of liquidated merchandise in rural Kentucky, and it survived an accounting scandal and a $6.9 billion leveraged buyout to get there. ## A father, a son, and a truckload of bankrupt inventory In October 1939, James Luther "J.L." Turner and his son Cal opened J.L. Turner and Son in Scottsville, Kentucky. J.L. had spent the Depression years buying up the inventory of failed general stores and reselling it, learning the wholesale trade one bankruptcy at a time, according to [Wikipedia's history of the company](https://en.wikipedia.org/wiki/Dollar_General). The father-son shop wasn't glamorous. It was a Depression-economy hustle: buy what nobody else could move, sell it cheap, keep the lights on. It worked. By the early 1950s the business was doing more than $2 million a year, respectable money for a rural Kentucky operation with no name recognition beyond its own counties. ## The pivot that outgrew the company that made it The moment that actually built the company we know today came in 1955, and it wasn't a new store format or a financing trick. Cal Turner took a department store in Springfield, Kentucky and ran it as a "dollar day" promotion, the kind of gimmick discount stores used to clear inventory for a weekend. He kept it running. That store became the first Dollar General, and the one-price idea that was supposed to be a sale event became a permanent operating model, per [Dollar General's own account of its history](https://www.dollargeneral.com/about-us.html). This is worth sitting with, because it's the one insight that doesn't show up on the company's About page: Dollar General's entire identity is a promotional stunt that never ended. Most retailers that build a business around a pricing gimmick eventually graduate away from it as they scale. Dollar General did the opposite. It let the gimmick eat the parent company. J.L. Turner and Son, the wholesale liquidation business with the family name on the door, was absorbed entirely into the throwaway marketing line from a single Kentucky storefront. By 1968 the company was profitable enough to list on the New York Stock Exchange with more than $40 million in sales. ## Three generations, then a rupture J.L. Turner died in 1964 and Cal Sr. took over. Cal Turner Jr. joined the family firm in December 1965, worked his way up through the business, and became president in 1977. Under his leadership the chain grew past 6,000 stores and $6 billion in annual sales. But the Turner family story didn't end as a tidy multigenerational handoff: at one point Cal Jr. forced both his own father and his brother out of the business, according to [Wikipedia's account of Cal Turner Jr.'s career](https://en.wikipedia.org/wiki/Cal_Turner_Jr.). It's the kind of chapter family businesses rarely put in their own retrospectives, and it's part of how Dollar General ended up run by a single, singularly focused Turner for a quarter century. That focus had a dark side. In April 2001, the company settled for $162 million after being found liable for false statements about its financial results, and it restated three years of earnings for accounting irregularities that included allegations of fraud. A second restatement followed in 2005 over lease-accounting issues. Cal Turner Jr. retired in 2002, and David Perdue took over as CEO the following year. ## The buyout that arrived at exactly the right moment Perdue resigned in June 2007. One month later, a private equity consortium of KKR, Goldman Sachs, and Citigroup completed a $6.9 billion acquisition, taking the company private at $22 a share. The new owners closed more than 400 stores and pushed an "EZstore" remodel to strip out complexity and simplify the box. Here's the part that doesn't get said plainly enough: a debt-financed buyout is usually a company's most dangerous chapter, not its best one. Loading $6.9 billion onto a discount retailer's balance sheet right as the economy tipped into the worst recession since the Depression should have been a disaster. Instead, the operational discipline the new owners forced through arrived at the exact moment American shoppers started trading down in droves, and a leaner, simpler Dollar General was standing there to catch them. The buyout that was supposed to be a liquidity event became, almost by accident, the best-timed remodel in the company's history. Dollar General returned to the public markets in August 2009 with a $750 million IPO. What followed was the fastest expansion in the company's 85-year run: geographic pushes into Wyoming, Washington, Idaho, and Montana left only Alaska and Hawaii without a location, and the store count climbed past 20,000 across 48 states, according to Wikipedia. Todd Vasos, who first became CEO in 2015, stepped away in 2022 and returned to the role in October 2023, a rare round-trip at the top of a company this size. Along the way came new formats built to test whether the small-box model could stretch: Dollar General Market for groceries in 2003, DGX for urban instant-consumption shoppers in 2017, and pOpshelf in 2020 for higher-margin home goods under five dollars. ## The through-line Every era of Dollar General's history is really the same bet made over and over: that the fastest way to serve a town too small for anyone else to bother with is to keep the box small, the price simple, and the overhead lower than the competition can match. A liquidation wholesaler figured that out by accident in 1955. A leaned-out balance sheet proved it again by accident in 2009. This profile is part of Anglera's Retailer Playbooks series, which is really about a simpler idea: behind every storefront, however small, is a supply chain and a catalog of data working to keep the shelves right. --- # Adding Product JSON-LD on commercetools — and keeping it in sync Source: https://www.anglera.com/blog/commercetools-product-json-ld Published: 2026-06-08 Platforms: commercetools ![Adding Product JSON-LD on commercetools — and keeping it in sync](/og/hero-commercetools-product-json-ld.jpg) commercetools is headless: it stores products, prices, and reviews, but nothing about it renders HTML or emits structured data for you. That part lives in your storefront (Next.js, Nuxt, commercetools Frontend, or a custom build), and it's easy to get subtly wrong — a stale price in the JSON-LD, a `brand` attribute that doesn't exist on half your product types, an `aggregateRating` that never updates. Below is a field-by-field mapping from the commercetools data model to a valid Product JSON-LD block, plus the sync mechanics that keep it honest. ## Where this code lives There's no commercetools "SEO module" that outputs JSON-LD — you build it in the layer that renders the PDP, from the same API response that renders the visible page. In practice that means: - **Next.js / React storefronts**: build the JSON-LD object in the same server component (or `getServerSideProps`/route handler) that fetches the product for the page, and inject it via a ` ``` Example rendered output for a single simple product: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "12mm Titanium Hex Bolt, Grade 5", "sku": "TIT-HEX-12-G5", "gtin": "00812345678905", "brand": { "@type": "Brand", "name": "Ironclad Fasteners" }, "image": [ "https://www.example.com/media/catalog/product/t/i/tit-hex-12-g5_1.jpg" ], "description": "Grade 5 titanium hex bolt, 12mm x 40mm, DIN 933 thread.", "offers": { "@type": "Offer", "url": "https://www.example.com/12mm-titanium-hex-bolt-grade-5.html", "priceCurrency": "USD", "price": "4.85", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "38" } } ``` For configurable products with distinct child SKUs, either emit one `Product` per matching variant using `ProductGroup`/`isVariantOf`, or (simpler, and generally sufficient for search) emit the parent's data with an `AggregateOffer` covering the price range across children. ## Adding JSON-LD on Adobe Commerce Storefront (Edge Delivery Services) If you're on the EDS-based storefront, don't hand-roll this: Adobe's documented path is the metadata-generation script that reads product data from the Catalog Service GraphQL API and writes both meta tags and JSON-LD at build/publish time, with support for bulk metadata upload. Because EDS pages are largely pre-rendered, JSON-LD lands directly in the HTML response rather than being injected client-side — which matters for crawlers and AI agents that don't execute JavaScript. ## Keeping it in sync This is where JSON-LD quietly drifts from the visible page: - **Full-page cache.** If the JSON-LD block is cached as part of the full page but price or stock is rendered through an ESI/cache hole (as Magento's price block often is), a price change can update the visible page while the cached JSON-LD still shows the old value. Give the JSON-LD block real cache tags tied to the product entity (via `getIdentities()`), or render it through the same cache-hole mechanism as price. - **Price source.** Pull price from the product's `PriceInfo` (indexed) rather than a raw `price` attribute — Adobe Commerce computes final price through catalog rule and tier-price indexers, and reading the raw attribute will disagree with what shoppers see whenever a rule or special price is active. - **Stock and MSI.** With Multi-Source Inventory, "in stock" is a function of salable quantity per source/website, not a single stock flag — resolve availability the same way the add-to-cart button does, or the two will disagree during partial stockouts. - **Store view scope.** Currency, price, and even brand labels can vary by store view; generate JSON-LD per store view context, not from the default scope. - **Review aggregation lag.** Rating summaries are recalculated by an indexer/cron, not instantly on review submission — expect a short lag between a new review and the JSON-LD reflecting it, and make sure that indexer is actually running on schedule. - **EDS publish cadence.** Because EDS content is pre-rendered, a price or stock change is only reflected in JSON-LD after the page republishes — align publish/refresh frequency with how often your fast-moving fields (price, availability) actually change. ## How to validate - **View source, not just inspect element.** Run `curl -s https://www.example.com/your-product.html | grep -A 40 'application/ld+json'` (or use "View Page Source" in the browser) to confirm the JSON-LD is present in the raw HTML response, not injected only after JavaScript runs. - **Rich Results Test.** Paste the live URL into Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm the `Product` type is detected and see which rich-result eligibility (merchant listing vs. product snippet) it qualifies for. - **Schema Markup Validator.** Cross-check with [validator.schema.org](https://validator.schema.org/) for strict schema.org conformance independent of Google's eligibility rules. - **Spot-check against the DOM.** Compare the JSON-LD's price, availability, and rating values against what actually renders on the page for the same store view and currency — this is the check that catches cache and indexer drift. Verified as of July 2026 against Adobe's Commerce Frontend Development guide and Adobe Commerce Storefront (Edge Delivery Services) SEO documentation, and Google's Search Central Product structured-data guidance; menu paths and attribute names can vary by Adobe Commerce version and installed extensions, so confirm against your own instance before shipping. None of this JSON-LD is worth much if the underlying attributes — brand, gtin, accurate specs, use-case descriptions — are thin or missing in the PIM to begin with. Anglera enriches that product data continuously across attributes, identifiers, and specs, feeding whichever PIM or commerce platform you already run, so the block above has genuinely rich, current data to render rather than a handful of populated fields surrounded by nulls. --- # Getting enriched product data onto SAP Commerce Cloud product pages Source: https://www.anglera.com/blog/sap-commerce-data-to-page Published: 2026-06-06 Platforms: sap-commerce ![Getting enriched product data onto SAP Commerce Cloud product pages](/og/hero-sap-commerce-data-to-page.jpg) This guide walks through what happens after a product attribute is enriched and sitting in SAP Commerce Cloud — how it moves from the platform's data model, through the DTO and API layer, into whichever storefront you run, and finally into HTML a browser or crawler can read. The example uses an IP (ingress protection) rating, a common spec for distributors and manufacturers of electrical and outdoor equipment, but the mechanics apply to any enriched attribute (dimensions, certifications, compatible-with lists, use-case copy). ## Where the attribute actually lives SAP Commerce Cloud gives you two places to store a product attribute, and the choice determines every downstream step: - **Typed attributes** — defined on an item type (usually `Product` or a subtype) in `items.xml` and populated per SKU via ImpEx or Backoffice's Product Cockpit. These behave like first-class columns on the product. - **Classification attributes** — defined in a classification system (classes, categories, and features) and attached to products or inherited from a classifying category. These are the right fit for attribute sets that vary by product type (an IP rating applies to enclosures and outdoor fixtures, not to software licenses). The classification system itself — classes, features, attribute assignments — is typically modeled in Backoffice's Administration Cockpit or via ImpEx; the value for a given SKU is then set on that product's own Classification tab inside Product Cockpit's editor area. For an IP rating, most catalogs model it as a classification feature — e.g., a `Housing` class with a feature `ratingIP` of type `String` — assigned to a classifying category above the relevant product categories, so every enclosure or luminaire under it inherits the attribute. Loading (or updating) the value with ImpEx looks something like this (exact column layout and modifiers vary by version and by how your classification catalog is structured): ``` INSERT_UPDATE ClassAttributeAssignment;classificationClass(code,catalogVersion(catalog(id),version))[unique=true];classificationAttribute(code)[unique=true];position;attributeType(code[default=string]) ;Enclosures;ratingIP;1; $clAttrModifiers=system=Electronics,version=1.0,translator=de.hybris.platform.catalog.jalo.classification.impex.ClassificationAttributeTranslator,lang=en UPDATE Product;code[unique=true];@ratingIP[$clAttrModifiers] ;ENC-4500;IP66 ``` If Anglera (or any enrichment source) is writing the value, it ends up here — as a typed attribute or a classification feature value — via ImpEx, the Backoffice API, or a direct integration into these same item types. ## Binding it to the DTO layer Nothing in the storefront reads `ProductModel` (the platform-side object) directly. Everything goes through the **Converters and Populators** framework, which maps the model onto a Data Transfer Object — `ProductData` for products. A populator is a small class that copies one or a few fields from model to DTO; converters chain populators together. To surface `ratingIP` you add a populator: ```java public class RatingIpPopulator extends AbstractProductPopulator { @Override public void populate(final SOURCE productModel, final TARGET productData) { final String ratingIp = productModel.getRatingIP(); // typed attribute getter, // or, for classification // values, ClassificationService if (StringUtils.isNotBlank(ratingIp)) { productData.setRatingIP(ratingIp.trim()); } } } ``` then register it in the facade Spring config, appended to the existing populator list rather than replacing it: ```xml ``` `ProductData` itself needs the new field declared in your facades extension's `beans.xml` (the platform's own fields live in `commercefacades-beans.xml`) so the code generator emits a getter/setter. For classification-based values, you'd typically pull the value through the classification feature-value API (`ClassificationService`) rather than a generated model getter. ## Exposing it through the OCC API OCC (Omni Commerce Connect) is the storefront-facing REST layer — for example `/occ/v2/electronics/products/ENC-4500` — but it serializes a separate `ProductWsDTO`, not `ProductData` directly, so a new field generally needs adding to both, with a mapping between them declared in the webservices extension's DTO config. What a client actually receives is then controlled by **field sets** — `BASIC`, `DEFAULT`, `FULL`, or custom sets — configured in `dto-level-mappings-v2-spring.xml`. Add the field to the level(s) you want visible: ```xml ``` Skip this step and the field gets stripped from the response, even though the populator ran fine. ## Rendering it: Accelerator vs. Composable Storefront Which storefront you run changes the last mile: **Accelerator (JSP, server-rendered).** The controller resolves `ProductData` and hands it to the JSP view as a model attribute; you add a JSTL tag reference in the relevant product JSP (commonly under `/web/webroot/WEB-INF/views/responsive/product/`): ```jsp
Ingress protection: ${fn:escapeXml(product.ratingIP)}
``` This produces attribute text in the initial server-rendered HTML — no JavaScript required for it to appear in view-source. **Composable Storefront (Spartacus, Angular).** SAP renamed the Spartacus libraries "SAP Commerce Cloud, composable storefront" at version 5.0; it's now the primary storefront direction, with Accelerator in maintenance mode. Here the client never sees `ProductData` — it consumes OCC JSON and needs a normalizer plus a component: ```typescript declare module '@spartacus/core' { namespace Occ { export interface Product { ratingIP?: string; } } export interface Product { ratingIP?: string; } } @Injectable({ providedIn: 'root' }) export class RatingIpNormalizer implements Converter { convert(source: Occ.Product, target?: Product): Product { target = target ?? { ...(source as unknown as Partial) }; if (source.ratingIP) { target.ratingIP = source.ratingIP; } return target as Product; } } ``` ```typescript @Component({ selector: 'app-rating-ip', template: `
Ingress protection: {{ ratingIP }}
`, }) export class RatingIpComponent implements OnInit { ratingIP: string | undefined; constructor(protected currentProductService: CurrentProductService) {} ngOnInit(): void { this.currentProductService .getProduct() .pipe(filter(isNotNullable)) .subscribe((product) => (this.ratingIP = product.ratingIP)); } } ``` register the normalizer against `PRODUCT_NORMALIZER`, and slot the component into a CMS outlet (e.g., `ProductDetailOutlets.PRICE`) via `provideOutlet`. Because this is client-rendered, the attribute won't be in the initial HTML from the origin server — it arrives after Angular hydrates and the OCC call resolves, unless you're running SSR/prerendering, in which case it's baked into the served HTML on first response. ## How to validate - **View-source vs. rendered DOM.** Load the PDP, then compare `curl -s https://yourdomain.com/p/ENC-4500 | grep -i "ratingIP\|Ingress"` against the browser's Inspect Element. On Accelerator, both should show the value. On non-SSR composable storefront, view-source will be empty for this field while the rendered DOM has it — that gap is exactly what a JavaScript-blind AI crawler will miss. - **Confirm the API layer independently.** Hit the OCC endpoint directly: `curl "https://api.yourdomain.com/occ/v2/electronics/products/ENC-4500?fields=FULL"` and check the field is present. If it's missing here, the problem is the populator or field-set config, not the frontend. - **Structured data.** If the attribute should also appear in `Product`/`schema:additionalProperty` JSON-LD, run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm it's present in both the visible copy and the structured data. - **Cache check.** SAP Commerce Cloud's CDN and page caching can serve a stale copy for a while after an update; purge or wait out the cache before concluding a change didn't take. Verified as of July 2026 against current SAP Help Portal documentation for Converters and Populators, Classification Systems, and OCC field-set configuration, and current SAP Commerce Cloud, composable storefront (Spartacus 5.0+) product-model patterns. Field names, class names, and ImpEx modifiers are illustrative — confirm exact syntax against your installed version, since populator lists, DTO beans, and outlet IDs shift between releases. - [Converters and Populators — SAP Help Portal](https://help.sap.com/docs/SAP_COMMERCE/9d346683b0084da2938be8a285c0c27a/8b937ff886691014815fcd31ff1de47a.html) - [Classification Feature Value API — SAP Help Portal](https://help.sap.com/docs/SAP_COMMERCE/d0224eca81e249cb821f2cdf45a82ace/8b7a777486691014823afa6e0ed7bb61.html) - [Spartacus (SAP/spartacus) — GitHub](https://github.com/SAP/spartacus) None of this matters if the underlying data isn't there to begin with — a populator, field set, and component are only worth building if `ratingIP`, or whatever attribute you're wiring up, is actually filled in and correct across the catalog. That's the piece Anglera is built for: it enriches products continuously in the background — attributes, specs, identifiers, use-case copy — and writes them back into the same typed or classification attributes this guide assumes are already populated, so the plumbing above has something real to render. --- # Publix: How a Rejected Idea Built a $62.75B Grocery Chain Source: https://www.anglera.com/blog/publix-retailer-playbook Published: 2026-06-06 Industries: grocery-cpg ![Publix: How a Rejected Idea Built a $62.75B Grocery Chain](/og/hero-publix-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* George Jenkins pitched an idea to his bosses at Piggly Wiggly in 1930 and got nowhere. So he quit, borrowed less than $2,000, and opened a 27-by-65-foot store in Winter Haven, Florida, where he promised that every idea from every employee would get a hearing. Ninety-six years later that store is Publix Super Markets, and per the National Retail Federation's [Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), it ranks #12 in the country with $62.75 billion in 2025 U.S. retail sales, compiled with Kantar. It got there without ever selling a share to the public. ## A Depression-era bet on comfort Jenkins named his store after a struggling New York movie theater chain because, as he put it, he liked the sound of the word. The choice mattered more than it seemed. Publix was going to sell an experience, not just groceries, and Jenkins built the first store to prove it: air conditioning, Art Moderne styling, and a level of polish that had no business existing in a Depression-era grocery, according to [Wikipedia's history of the company](https://en.wikipedia.org/wiki/Publix). By 1935 he had five stores. Then in 1940 he made his real bet. Jenkins mortgaged an orange grove, a genuinely risky move for a citrus-country grocer, to build what's often called Florida's first true supermarket: 11,000 square feet with electric doors, frozen-food cases, piped-in music, and a paved parking lot. Competitors were still running counter-service groceries where a clerk fetched your items. Jenkins let shoppers walk the aisles themselves and feel the temperature drop as they walked in. The motto he coined then, "Where shopping is a pleasure," still hangs over the door of every store. ## The ownership decision that outlived a rival The pivotal chapter isn't a store format. It's a balance sheet decision made across the late 1950s: Jenkins began selling stock to his own employees rather than to Wall Street, laying the foundation for what would become the nation's largest employee stock ownership plan, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/publix-super-markets-inc-history/). By the 1990s, roughly 85 percent of Publix was owned by current and former employees. No public listing, no analysts to please every quarter, no outside board pushing for leverage to fund faster growth. That decision is easiest to see in contrast with the company Publix eventually eclipsed in its own backyard. Winn-Dixie, founded in 1925, was Florida's dominant chain for decades and the first Florida-based industrial company on the New York Stock Exchange, growing to nearly 700 stores across eleven states by the late 1950s, according to [Wikipedia's account of Winn-Dixie's history](https://en.wikipedia.org/wiki/Winn-Dixie). It was public, acquisitive, and for a long stretch, bigger than Publix. Then came the 2000s: 11,000 jobs cut in 2000, a Chapter 11 filing in 2005, a second bankruptcy under parent Southeastern Grocers in 2018, and by 2023 its remaining stores were being sold off to Aldi. Publix, meanwhile, never had a public shareholder base demanding the kind of debt-fueled expansion or margin extraction that hollowed out its rival. It just kept building stores, funded out of its own earnings, one Florida county at a time. That's the unique thread this piece wants to name plainly: Publix didn't just survive Winn-Dixie, it inherited its market by refusing to play the public-company game at all. ## The unglamorous machinery behind the pleasant part The "shopping is a pleasure" branding tends to overshadow how mechanically disciplined Publix has been underneath it. The FundingUniverse history credits the company with adopting bar-code scanners and ATMs ahead of most competitors in the 1980s, expanding frozen-food and yogurt sections before rivals spotted the trend, and running a merchandising operation precise enough to place high-margin items at eye level in every store, consistently. Decentralized store management gave individual managers real authority over their departments, an echo of the "every idea gets heard" promise Jenkins made on day one. The growth numbers tell the compounding story. $1 billion in sales by 1974. $5 billion by 1989. The 1,000th store opened in 2009. Today the company runs roughly 1,442 stores across eight Southeastern states with about 260,000 employees, according to Wikipedia's history page, and it has never conducted a layoff since 1930. ## A hard chapter, told straight None of this was frictionless. In 1995, eight women filed a gender discrimination suit alleging Publix clustered women into cashier and deli roles while systematically denying them promotion into management. A federal judge certified it in 1996 as a class action covering 120,000 current and former employees, at the time the largest sex discrimination case in U.S. history, per FundingUniverse. Publix settled in January 1997 for $81.5 million, the fourth-largest settlement of its kind nationally, and a separate EEOC racial discrimination claim was resolved for $3.5 million. It's a real scar on the company's record from the very decade it was being celebrated as one of America's best places to work. The company's response afterward, restructuring its management pipeline and diversity practices, is part of how it got from that lawsuit to the employer it is cited as today. ## Why the model still works Succession has mattered as much as ownership structure. When George Jenkins retired after a stroke in January 1990, his son Howard Jenkins took over at 38, inheriting 370 stores and $5.38 billion in sales, and pushed the company outside Florida for the first time, into Georgia in 1992. By 1996 Publix held 18 percent of the Atlanta market, second only to Kroger. The expansion pattern held: build slowly, fund it internally, keep the workforce that built the last store around to help build the next one. That patience is the real export of the Publix story. Retail chains chase quarterly growth all the time; almost none of them can resist the debt that eventually comes with it. Retail's biggest stories rarely happen at the register. They happen in the ledgers, warehouses, and ownership structures that decide who's still standing a century later. --- # PDP conversion rate: the metric complete product data moves most directly Source: https://www.anglera.com/blog/pdp-conversion-rate-product-data Published: 2026-06-06 ![PDP conversion rate: the metric complete product data moves most directly](/og/hero-pdp-conversion-rate-product-data.jpg) Every channel you invest in — paid search, organic, marketplace listings, an AI answer citing your catalog — exists to get one thing to happen: a qualified buyer lands on a product detail page. What happens next is decided almost entirely by the data on that page, not the channel that sent the visitor. If you want the single metric that most directly reflects the health of your product content, it's PDP conversion rate, and it deserves to be measured on its own, separate from site-wide conversion. ## Why the PDP is the real scoreboard Site-wide conversion rate blends everything: homepage bounces, category browsing, cart abandonment for shipping-cost reasons, checkout friction. PDP conversion isolates the moment a buyer who already wants *this product* decides whether they have enough information to commit. Industry benchmarks put average product page conversion around 1.5-3%, with top performers reaching 4-8% ([Foursixty](https://foursixty.com/blog/product-page-conversion-rate/)). That spread is too wide to explain with traffic quality alone — it's a data-completeness gap as much as a marketing one. Baymard Institute's ongoing usability research, based on tens of thousands of moderated test sessions across 155+ benchmarked sites, found that only 48% of desktop and 38% of mobile ecommerce sites deliver "decent" or "good" product page UX — the rest is mediocre or worse ([Baymard](https://baymard.com/blog/current-state-ecommerce-product-page-ux)). Most of that gap isn't visual design. It's missing or unclear product information: dimensions with no scale reference, sizing without a real guide, specs buried or absent, no way to ask a question before buying. ## The fields that actually move add-to-cart Not all data is equal. Some fields resolve a specific hesitation a buyer has in the seconds before they click add-to-cart. Others are nice-to-have. Prioritize the former. | Field | Objection it removes | Evidence | |---|---|---| | Complete technical specs | "Will this actually work for my use case?" | Baymard found spec-list quality directly affects whether shoppers misread or abandon; incomplete specs push buyers to a competitor's page to compare ([Baymard](https://baymard.com/blog/current-state-ecommerce-product-page-ux)) | | Compatibility / fit data | "Does this work with what I already own?" | Most common in parts, electronics, and industrial distribution — a missing compatibility field is a lost sale, not a support ticket, because the buyer just leaves | | Sizing and dimensional context | "Will this actually fit?" | 57% of sites still use dropdowns instead of visible size buttons, and 37% skip in-scale imagery showing the product against a known object — both add friction at the exact decision point ([Baymard](https://baymard.com/blog/current-state-ecommerce-product-page-ux)) | | Full imagery set, multiple angles | "Is this really what I'm getting?" | 23% of sites still skip human-model imagery for wearables, leaving size and fit to guesswork | | Q&A / structured attributes visible on-page | "What am I missing that isn't in the description?" | 73% of shoppers report struggling to find the product information they need before buying ([Home of Direct Commerce](https://homeofdirectcommerce.com/news/returns-are-rising-and-poor-product-information-is-to-blame/)) | The pattern across all five: each field answers a question the buyer would otherwise have to leave the page to resolve — via search, a competitor's listing, or a support chat. Every one of those detours is a chance to lose the sale, or to convert it and pay for it later in a return. ## A worked before/after Take a mid-tier product page for a distributed catalog item — say, a replacement part or a mid-price home good. **Before:** Title and price. One product photo, no scale reference. A two-sentence marketing description with no dimensions, no material spec, no compatibility list. No size chart if the category needs one. Zero customer questions answered on-page, because none were ever captured. Return policy lives on a separate page, not near the buy button. **After:** Title, price, and five to seven structured attributes surfaced above the fold (dimensions, material, compatible models, weight, care/use notes). Three to five images including one in-scale shot and, where relevant, a human-model or in-use shot. A short Q&A block seeded with the three questions buyers actually ask before purchasing this SKU — sourced from support tickets and search queries, not guessed. Return policy summarized in one line near the add-to-cart button. Nothing about the offer changed. Price is the same, the product is the same. What changed is that every real hesitation a buyer has gets answered on the page instead of forcing them off it. That's the entire mechanism behind a PDP conversion lift — it isn't persuasion copy, it's removing the reasons not to buy. ## Measuring it by completeness tier To see the effect, don't just watch aggregate PDP conversion — segment it by how complete the underlying product data actually is. | Step | What to do | Tool / report | |---|---|---| | 1. Score completeness | Tag each SKU by percentage of required attributes filled (specs, imagery count, sizing data, Q&A present) | Your PIM's completeness report, or an enrichment layer that scores this automatically | | 2. Bucket into tiers | Group SKUs into low / mid / high completeness (e.g. under 60%, 60-90%, 90%+) | Spreadsheet join of the completeness score against your product catalog export | | 3. Pull PDP-level conversion by tier | Compare add-to-cart rate and purchase conversion per tier, not just overall | GA4 item-scoped events, or your ecommerce platform's product analytics (Shopify, BigCommerce, Adobe Commerce) | | 4. Control for traffic source | Segment by channel (organic, paid, on-site search, marketplace, AI referral) so a conversion lift isn't confused with a traffic-quality shift | GA4 channel grouping crossed with the same completeness tiers | | 5. Re-run after enrichment | Re-measure the same SKUs 30-60 days after filling gaps, holding traffic mix roughly constant | Before/after cohort comparison on the same product set | Watch the same SKUs over time, not different SKUs against each other — that's what isolates the data effect from the product-quality effect. ## What else moves with it PDP conversion doesn't move alone. When it improves, watch for lower return rates on the same SKUs (fewer "not as described" returns), fewer support tickets asking questions the page should have answered, and often a lift in attach rate, since a buyer confident enough to purchase the primary item is also more receptive to a compatible add-on. If PDP conversion goes up but returns stay flat or rise, the page is persuading buyers past a gap the data should have closed honestly — worth auditing before you call it a win. Your PIM can store all of this. What determines whether it shows up correctly on the page — complete, accurate, consistent across every SKU in the catalog — is ongoing enrichment work most teams don't have the headcount to do at scale. That's the layer Anglera runs continuously on top of whatever system already holds your data, so the PDP a buyer lands on is the one that actually converts. --- # Main Electric Supply: One House, Three Independent Brands Source: https://www.anglera.com/blog/main-electric-distributor-playbook Published: 2026-06-06 Industries: electrical ![Main Electric Supply: One House, Three Independent Brands](/og/hero-main-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Main Electric Supply Company ranks #24 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical vertical, the annual scorecard of North America's largest wholesale distributors. It got there from a standing start most of its national competitors no longer have: a single Los Angeles storefront opened in 1946 by two men, Charles Vowels and Burt McCombs, that never sold to a strategic acquirer or a private equity roll-up. Eighty years later it is still doing business the way it started, just with sixteen more branches and two more names on the door. ## The house with three names on it Pull up Main's own branch locator and something unusual shows up: alongside sixteen Main Electric Supply branches spanning California, Nevada, and Utah, the same list carries United Electric Supply, with locations in Chino and San Diego, and SAF-COM, in San Dimas. All three appear on [Main's official locations page](https://www.mainelectricsupply.com/about/locations) as part of the same network, run from the same corporate house. That is a deliberate structural choice, not an accident of naming. National consolidators tend to fold every acquired counter under one master brand the moment the ink dries, chasing marketing efficiency and a single P&L story. Main has left United Electric Supply and SAF-COM standing as their own storefronts, in overlapping Southern California territory the flagship brand already covers. The likely logic: a contractor who has ordered from United Electric Supply for twenty years keeps ordering from United Electric Supply, under a name and a counter crew they already trust, while the parent company captures the volume, the purchasing scale, and the balance sheet underneath. It is a quieter way to grow share without asking anyone to change their habits. ## Three desks, not one price list Main organizes its quoting operation around three specialized departments rather than a single generalist sales desk. Per [Main's own services pages](https://www.mainelectricsupply.com/about/departments), a Lighting department builds product-list analysis and competitive packaging for fixture jobs; a Switchgear department runs job-variable analysis and multiple pricing scenarios to help contractors win distribution-equipment bids, with dedicated project-management and receivables staff; and a Commodities desk actively tracks wire, conduit, and raw-material markets to time purchasing. That structure matters more than it sounds. Lighting and switchgear are quoted and specified differently from a spool of THHN wire, on different timelines, against different competitors, with different margin math. A distributor that routes all three through one generalist counter either underprices the complex jobs or overstaffs the simple ones. Splitting the desks is a small operational bet that shows up as win rate on the bids that carry the best margin. ## The part that never shows up on an invoice Main also runs a service layer that looks more like a job-site subcontractor's toolkit than a wholesale counter's price sheet: pre-fabrication and kitting, on-site inventory management, night deliveries timed to avoid daytime site congestion, custom labeling, material take-offs, and in-house metal fabrication and powder-coating, according to [Main's services overview](https://www.mainelectricsupply.com/about/services). None of that is core to moving electrical product from a warehouse to a truck. All of it is labor-intensive, hard to staff, and genuinely difficult for a thinner competitor to copy quickly, which is exactly why a distributor with real branch density chooses to offer it. It converts a commodity purchase into a relationship a general contractor has to actively decide to leave. ## Three customer motions, one supply chain Main also splits its go-to-market by segment rather than treating "electrical contractor" as one buyer. It runs separate playbooks for commercial contractors, residential builders working custom, tract, and multi-family product, and industrial OEM and MRO accounts, per its [industries page](https://www.mainelectricsupply.com/about/industries). Each of those buyers cares about a different thing first: the commercial contractor wants total acquisition cost and specification compliance, the residential builder wants a program that scales with a subdivision schedule, the industrial MRO buyer wants uptime. Running three go-to-market motions off one inventory pool is harder than running one, but it is how a mid-size regional distributor competes with national accounts teams without matching their headcount. ## The insight: still independent, eighty years in The plain observation worth naming: Main Electric Supply has stayed privately held for eight decades in a channel where the recognizable national names have mostly changed hands, merged, or been assembled by outside capital over the last two decades. Main did the opposite. It built scale by adding branch brands under its own roof rather than being added to someone else's, and it shows up as a 2024 Inc. 5000 honoree and a named Top Workplace, both signals of an organization still growing on its own terms rather than being optimized for a sale. That is a real trade-off, not just a nicer story. An independent regional player can move faster on service decisions like the metal-fab shop or the night-delivery schedule than a division inside a larger portfolio company waiting on a corporate playbook. What it gives up is the purchasing scale and the balance sheet of a Sonepar or a WESCO. Landing at #24 nationally while staying private is the evidence that, in electrical distribution, the trade-off still works. Every distributor on this list runs on the same unglamorous machinery: a catalog that has to be right, a branch network that has to be in the right place, and data that has to move as fast as the trucks do. --- # Kirby Risk: A Century-Old Family Distributor Still Winning Source: https://www.anglera.com/blog/kirby-risk-distributor-playbook Published: 2026-06-06 Industries: electrical ![Kirby Risk: A Century-Old Family Distributor Still Winning](/og/hero-kirby-risk-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Kirby Risk lands at number 26 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical vertical, a solid mid-market position in a category dominated by Sonepar, Rexel, WESCO, and Graybar. What the ranking does not show is the more unusual fact underneath it: a company founded in 1926 in a blacksmith shop is still run, in 2026, by a descendant of the man who started it. ## A $500 loan and a dead battery business The company began as the Keiffer-Risk Battery Company, opened by J. Kirby Risk and Otto Keiffer in an abandoned blacksmith shop on North Second Street in Lafayette, Indiana, with $500 Risk borrowed from his father. Keiffer's tenure was brief. He withdrew that same fall due to illness, and George M. Tweedie stepped in as the new partner. By 1934 the venture had rebranded as the Kirby Risk Electric Co., a name that better matched where the business was actually headed: not batteries, but the electrical supply chain of a fast-industrializing Midwest. That rebrand mattered more than it looks. Selling batteries in 1926 is a commodity trade. Selling electrical supply into factories, farms, and eventually data centers is a relationship business, and it is the one Kirby Risk chose to build around. Ninety-five years later, in 2021, the company marked that anniversary still headquartered in Lafayette and still bearing the founder's name. ## Six businesses wearing one badge Most electrical distributors pick a lane: resale, or apparatus repair, or contract manufacturing. Kirby Risk runs six distinct business operations under one roof, spanning electrical distribution, electrical apparatus sales and repair, wiring harness and cable manufacturing, industrial component manufacturing, and logistics management, according to the [Tecsys press release](https://www.tecsys.com/blog/press-release/electrical-supply-distributor-kirby-risk-selects-tecsys-elite-supercharge-warehouse-operations) announcing its warehouse-system upgrade. That spread is the company's real moat. A distributor that only resells competes on price and fill rate. A distributor that also repairs motors, builds wiring harnesses, and manufactures industrial components has a second and third way to keep the same industrial customer's business when the resale margin gets squeezed. The scale that supports those six businesses is not huge by national standards. More than 40 locations across Indiana, Illinois, Ohio, and Georgia, representing over 2,000 manufacturers and stocking roughly 90,000 products, per the same release. That is a fraction of what Sonepar or WESCO run. But it is enough density in the Midwest and Southeast corridor to make Kirby Risk a default call for industrial and contractor accounts in its footprint, and the manufacturing side means it is not purely at the mercy of distributor economics. In February 2025, Kirby Risk selected [Tecsys' Elite warehouse management system](https://www.tecsys.com/blog/press-release/electrical-supply-distributor-kirby-risk-selects-tecsys-elite-supercharge-warehouse-operations), integrated with its existing Eclipse ERP, specifically to handle the operational complexity that six business lines create: wire-cutting management and volumetric optimization are not problems a pure resale distributor needs to solve. Joe Hart, the company's EVP and SVP of Operations, framed it as reinforcing "our position as a leader in electrical distribution" rather than as a defensive catch-up move, which tracks with a company investing from a position of stability rather than crisis. ## The family stayed, the bench professionalized Here is the tension worth naming plainly: Kirby Risk is one of the few companies at this scale in electrical distribution still controlled by its founding family, in a vertical where the biggest names are a French conglomerate (Sonepar), a public company (WESCO), another French conglomerate (Rexel), and an ESOP (Graybar). James Kirby Risk III holds the title of President and CEO today, a hundred years after his forebear borrowed $500 to open a blacksmith-shop battery shop, per the company's [MDM profile](https://www.mdm.com/top_distributors/kirby-risk/). That kind of longevity usually comes with a tradeoff: family control can mean the operating bench stays thin, insulated from the talent that flows through the big national players. Kirby Risk's answer was to import it. John Eggleton, president of the company, came up through Affiliated Distributors, supplyFORCE, Grainger, and Deluxe Corporation before joining Kirby Risk, according to his [NAED leadership profile reported by tED magazine](https://tedmag.com/john-eggleton-becomes-new-naed-board-chair/). In June 2026 he began a two-year term as Board Chair of the National Association of Electrical Distributors, succeeding Paul Kennedy of DSG. A mid-market, family-controlled distributor now has its president chairing the industry's own trade association, which is a level of influence that revenue rank alone would not predict. That combination, family ownership at the top, professional operators recruited from the industry's largest players filling out leadership underneath, is not the model most of Kirby Risk's larger competitors use. It lets the company keep the patient capital and long time horizon that family ownership tends to produce, while still plugging into the same talent networks that Grainger and its peers rely on. ## Betting on electrification, not just holding share Kirby Risk's own public commentary is not modest about where growth comes from next. In an [August 2024 tED magazine feature](https://tedmag.com/kirby-risk-investing-in-innovation-for-electrification/), Eggleton described expecting "exponential growth over the next decade" tied to electrification, reshoring, SMART manufacturing, and AI infrastructure buildout, the same demand wave pulling copper, switchgear, and controls through every electrical distributor's warehouse right now. For a company whose manufacturing arm already builds wiring harnesses and industrial components, that demand wave is not just more resale volume. It is more reason to lean on the parts of the business that look nothing like a typical distributor. Distribution rankings measure revenue and rank, but they do not capture how a company got built or why it holds together. This series exists to look past the number and into the branch networks, catalogs, and century-long bets that make the electrical, industrial, and every other channel actually run. --- # Ten spellings of 'short sleeve': how free-text attributes quietly break BI Source: https://www.anglera.com/blog/free-text-attributes-break-bi Published: 2026-06-06 ![Ten spellings of 'short sleeve': how free-text attributes quietly break BI](/og/hero-free-text-attributes-break-bi.jpg) Pull up "short sleeve" performance across five seasons of a legacy ERP and you will not get one number. You'll get ten: `SS`, `Short Slv`, `short-sleeve`, `ShortSleeve`, `Short Sleeve `, `SHORT SLEEVE`, `Short Slv.`, `S/S`, `Sht Sleeve`, and the ever-present blank. Ask a planning analyst how short sleeve did last season and the honest answer is: nobody can say, because the system never treated those ten strings as the same thing. This is not a hypothetical edge case. It's the default state of any attribute field that started as free text and lived through several years, a few ERP migrations, and more than one data-entry team. ## Why the same value ends up spelled ten ways Free-text fields degrade for boring, structural reasons, not because anyone was careless. **No pick list, no constraint.** If a field accepts any string, someone will eventually type a different string for the same concept. Sleeve length, closure type, fit, fabric content — anywhere a human types instead of selects, variance creeps in. **Bulk imports carry the sins of the source.** A supplier's spec sheet says "Short Slv," last year's catalog says "SS," and a merchandiser fixing a typo months later types "Short-Sleeve." Every import adds another dialect instead of reconciling with the ones already there. **Turnover erases tribal knowledge.** The analyst who knew "SS" and "Short Slv" meant the same thing moves on. Their replacement inherits a field with no documented standard and adds a plausible eleventh variant. **Casing and whitespace are invisible to humans, fatal to machines.** `Short Sleeve` and `Short Sleeve ` (trailing space) look identical on screen. To a `GROUP BY` clause, they are two different values — as are `SHORT SLEEVE` and `Short sleeve` in any case-sensitive system. None of this shows up as an error. Nothing crashes. The catalog looks fine in a product listing page, where a human reads "Short Slv" and understands it instantly. The damage only surfaces in aggregation — the exact place planning teams live. ## Where it breaks: every rollup, every join, every model feature A forecast is not a raw number. It's an aggregation: total sell-through by attribute, average sell-through rate by sleeve length, week-over-week trend by category and fit. Every one of those depends on the underlying values being the *same string* so the database can group them together. When "short sleeve" exists as ten values instead of one: - A rollup query returns ten small, statistically noisy lines instead of one clean trend line — and whichever spelling happens to have the most SKUs looks like the whole story. - A like-item comparison for a new style silently excludes past styles tagged with a different spelling, so the forecast baseline is built on a fraction of the real history. - A machine learning feature (say, sleeve length as an input to an assortment or replenishment model) either gets dropped for being too sparse per category, or gets treated as ten separate low-signal categories instead of one meaningful one. - Buyers manually reconciling a season-end report in a spreadsheet start hand-merging categories — a workaround that has to be repeated, from scratch, every single reporting cycle. Retail data-quality writeups increasingly flag this pattern: forecasting failures usually trace back to master data and attribute inconsistency, not a bad algorithm ([RELEX Solutions](https://www.relexsolutions.com/solutions/demand-planning-software/); [OnePint](https://www.onepint.ai/insights/what-causes-forecast-errors-in-demand-planning)). Gartner puts a number on the broader problem: organizations lose an average of [$12.9 million a year](https://www.gartner.com/smarterwithgartner/how-to-improve-your-data-quality) to poor data quality, mostly through silent, compounding erosion like this rather than any single dramatic failure. ## Why manual cleanup doesn't survive contact with catalog scale The instinct is to assign someone to "clean up the sleeve length field." That works for a demo. It does not work for a real catalog. A retailer or distributor carrying tens of thousands of active SKUs is not cleaning one field once. They're cleaning it every time a supplier feed lands, every time a category is added, every time someone opens a spreadsheet and "helpfully" retypes a value by hand. Manual enrichment of a single attribute runs somewhere in the neighborhood of 30-45 minutes per SKU once research, judgment calls, and QA are included — a pace a governance backlog outruns within a quarter. And manual cleanup has no memory. Fix "Short Slv" to "Short Sleeve" today and there's nothing stopping tomorrow's bulk import from reintroducing "Sht Sleeve." Without a system that maps every variant to a governed value *before* it lands in the reporting layer, the fix is temporary and the fragmentation is permanent. ## What restores the rollup: governed values plus automated mapping The fix is not "add a dropdown to the entry form," though that helps going forward. The fix is closing the loop on the years of history that already exist in free text. That means two things working together: 1. A governed pick list — one canonical value per concept, owned and versioned, not re-typed by whoever is closest to the keyboard. 2. Automated mapping of every historical and incoming variant to that canonical value, so "SS," "Short Slv," "S/S," and the rest all resolve to `Short Sleeve` without a human retyping five years of records by hand. The mapping step is the one that actually gets skipped, because it's the tedious part — and it's also the part that determines whether "how did short sleeve do last season" gets answered in one query or gets punted to a manual spreadsheet reconciliation. ![Diagram: many free-text spellings of one value converging into a single governed pick-list value](/diagrams/freetext-normalization.svg) | Legacy variant found in source data | Governed value | |---|---| | `SS` | Short Sleeve | | `Short Slv` | Short Sleeve | | `Short Slv.` | Short Sleeve | | `short-sleeve` | Short Sleeve | | `ShortSleeve` | Short Sleeve | | `Short Sleeve ` (trailing space) | Short Sleeve | | `SHORT SLEEVE` | Short Sleeve | | `S/S` | Short Sleeve | | `Sht Sleeve` | Short Sleeve | | `(blank)` | Short Sleeve *(when confirmed from image or spec sheet)* | Once every one of those rows resolves to a single governed value, the rollup query that used to return ten fragmented lines returns one. The like-item comparison for a new style pulls in the full relevant history instead of a tenth of it. The sleeve-length feature in a forecasting model stops being noise and starts being signal. This is standard practice in mature product-information-management guidance: a controlled vocabulary — one standard term instead of "cot." or "poly fabric" for the same fiber content, one unit of measure instead of a mix of pounds and grams — is what makes filters and feeds reliable in the first place ([WISEPIM](https://wisepim.com/ecommerce-dictionary/product-data-standardization)). The same discipline that cleans up a storefront filter is what makes a season-over-season rollup trustworthy. ## Where this fits for planning teams None of this requires ripping out a PIM or a planning system. Your PIM stores the pick list; your planning tool consumes the clean rollups. The gap is in the middle — turning years of inconsistent free text into governed values without a team retyping every SKU by hand. Anglera reads the legacy variants directly out of existing systems and flat exports, maps them to a governed attribute set validated against source documents and imagery, and flags genuine conflicts instead of silently picking a winner. The result is that "how did short sleeve do last season" becomes a query again, not a research project. --- # How Dealers Electrical Supply Wins Without Showing Its Numbers Source: https://www.anglera.com/blog/dealers-electrical-distributor-playbook Published: 2026-06-06 Industries: electrical ![How Dealers Electrical Supply Wins Without Showing Its Numbers](/og/hero-dealers-electrical-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Dealers Electrical Supply Company sits at #25 on the 2026 [MDM Top Distributors](https://www.mdm.com/top_distributors) electrical list, the annual ranking Modern Distribution Management runs of North America's largest wholesale distributors. It has appeared on that list for years without ever reporting a revenue figure. That is not an oversight. It is the whole operating philosophy of a company that has spent 80 years building scale in public while keeping its books entirely private. ## A branch map that follows the drill bit, not the census Dealers was founded in Waco, Texas, in 1946, according to the company's own [archived corporate history](http://web.archive.org/web/20101214120657/http://dealerselectrical.com/history.html). By 2010 it had grown to 59 branches across Texas, New Mexico, and Oklahoma. Today, per its [current company profile](https://www.dealerselectrical.com/about-1), it runs roughly 55 branches spread across Texas, Oklahoma, New Mexico, Illinois, North Dakota, and Wyoming. Read that expansion list again. Outside of Illinois, every state Dealers added since 2010 sits on top of an active shale play or drilling basin: the Permian in West Texas and New Mexico, the Bakken in North Dakota, the Powder River Basin in Wyoming. A distributor that started as a central-Texas wholesaler grew by chasing wellheads, compressor stations, and the utility and municipal work that follows an oilfield boom into town, not by chasing population density. Most electrical distributors expand toward metros, because that is where the construction permits and the data-center buildouts are. Dealers built its footprint around commodity cycles instead, which is a much less common bet and a much more volatile one. ## Ownership is the actual moat The [MDM profile](https://www.mdm.com/top_distributors/dealers-electrical-supply-company/) lists Scott Bracey as President and CEO and marks every revenue line, going back years, as not available. That consistency matters. Electrical distribution has been one of the most acquisitive corners of industrial distribution for two decades: Sonepar, Rexel, and WESCO have rolled up hundreds of regional wholesalers, and private equity has taken a run at most of the ones that got away. Dealers has stayed independent through all of it by being structured in a way that makes acquisition hard to pitch to insiders: it describes itself, in its own words, as "privately held" and "employee owned." Employee ownership changes incentives in a specific way. There is no founder looking for an exit multiple, no outside board pushing for a sale to unlock shareholder value, and no quarterly print that outsiders can use to price the company against a strategic buyer's offer. It probably also means growth gets funded out of operating cash and debt rather than a rollup war chest, which would explain why the branch count actually shrank a little, from 59 to roughly 55, even as the footprint expanded into three new states. Dealers has been trading density in its core Texas market for reach into new ones. ## More than a counter business Wire and breakers over the counter is only the base layer here. The company's own materials describe support for OEM and MRO automation work alongside standard wholesale distribution, plus a network of retail lighting branches. That is three separate go-to-market motions running under one roof: contractor supply, industrial automation parts, and consumer-facing lighting showrooms. Most regional electrical distributors pick a lane, either contractor-facing wholesale or a specialty like lighting design, because the sales motions, inventory profiles, and customer relationships are different enough to strain a single branch manager's attention. Running all three at once, across dozens of small-market branches, is a genuine operating bet rather than a marketing line. ## The MDM record, in one table | Year | MDM Electrical (or Electrical/Data/Security) Rank | |---|---| | 2019 | 23 | | 2020 | 19 | | 2026 | 25 | The rank has moved within a narrow band for years, which for a company that expanded its state footprint by 50 percent is either a sign of real discipline or a sign that the energy-region bet has mostly offset gains elsewhere. Without a revenue figure to check against, there is no way for an outside observer to tell which. That is precisely the point of the model: Dealers gets to be judged on branch count and longevity, never on a number a competitor or a private equity analyst could use against it. ## The honest tension Building a distributor around oil and gas geography is a real strategic choice with a real downside. Permian activity, Bakken permitting, and Powder River coal-adjacent power work all move on commodity price cycles that regional retail and light-industrial demand does not. A branch network built for boom years is also a branch network exposed to bust years, and an employee-owned company carries that exposure directly on its own people's retirement accounts rather than spreading it across public shareholders. Eighty years of surviving those cycles is itself evidence the model works. It does not make the next cycle any less real. Every branch on that map, every SKU behind that counter, and every price file Dealers keeps out of public view still has to be built, maintained, and kept accurate somewhere. That unglamorous work of holding a catalog straight across dozens of small towns is the actual infrastructure behind an 80-year run nobody outside the industry has heard of. --- # What messy product data actually costs Beauty retailers Source: https://www.anglera.com/blog/beauty-state Published: 2026-06-06 Industries: beauty ![What messy product data actually costs Beauty retailers](/og/hero-beauty-state.jpg) Beauty has the messiest product data of any retail category, and the numbers back it up: shade-driven returns, invisible SKUs, and inconsistent ingredient lists that quietly tax every channel a brand sells through. In 2025-2026, that mess stops being a merchandising nuisance and starts being a discovery problem, because the shopper asking for a recommendation is increasingly an AI agent that cannot see what your catalog doesn't say clearly. ## The category that resists standardization Beauty catalogs are structurally harder to keep clean than almost any other vertical. A single SKU can carry a dozen shade variants, an INCI ingredient list that changes with reformulation, marketing claims ("clean," "vegan," "reef-safe") that need substantiation, and skin-type or concern tags that shoppers actually search by. Most PIMs store a place for all of this. Almost none of them enforce that it gets filled in consistently across every variant, every retailer feed, and every reformulation. The result is catalogs that are technically complete but functionally thin: a product page with a name, a price, and a photo, and not much else that a search engine, a shopper, or an AI agent can use to tell it apart from the next fifteen near-identical serums. ## What thin data actually costs The clearest evidence is in returns, which is where bad data on a beauty product page becomes a real dollar figure. Beauty's blended online return rate sits around 4.3 to 5 percent, and the leading driver in color cosmetics is shade mismatch, not product defects. As one former Sephora employee put it, foundation shade confusion made products like Giorgio Armani's Luminous Silk Foundation among the most-returned items in the store precisely because [finding the right shade online was hard](https://freeyourself.com/blogs/news/beauty-product-online-return-rates-in-2025). [Banuba's analysis](https://www.banuba.com/blog/how-to-reduce-ecommerce-return-rates-in-cosmetics-statistics-and-best-practices) points to the same root cause from a different angle: poor photos, inconsistent color reproduction, and incomplete or misleading descriptions create false expectations that a real product then fails to meet. Here's what that looks like on an actual product page. This is a stripped-down version of a raw supplier feed next to what an enriched, shopper-ready listing needs to carry: | Attribute | Raw feed | Enriched | |---|---|---| | Shade name | "Shade 5" | "Shade 5 - Medium, Warm Undertone" | | Undertone/depth | missing | Warm, Medium depth, matches Fenty 250-260 range | | Finish | missing | Natural, buildable, satin finish | | Coverage | "medium" | Medium to full, buildable without cakiness | | Skin type fit | missing | Combination to oily; oil-control claim substantiated | | Ingredient list | partial, non-INCI | Full INCI-standard list, allergen flags called out | | Claims | "clean beauty" | Vegan (certified), fragrance-free, non-comedogenic | The left column is a page. The right column is a page an AI agent, a search engine, and a shopper trying to avoid a return can all actually use. ## Search and conversion, not just returns Returns are the visible cost. The invisible one is upstream: products that never surface because the attributes a shopper filters by (undertone, finish, skin concern) are missing or inconsistent. A shopper who searches "warm undertone medium coverage foundation for oily skin" will never see a listing that only says "Shade 5, medium." That's a lost session before the return even has a chance to happen. This compounds at the catalog level. Beauty brands frequently discover a hero SKU has quietly dropped out of retailer search results for days at a time, while paid media keeps sending traffic to a listing nobody can find. Thin, inconsistent data is not a cosmetic problem in the beauty category; it is the mechanism behind lost search visibility, mismatched purchases, and returns that were preventable before the order shipped. ## Why 2025-2026 raises the stakes Two forces are converging on beauty catalogs right now, and both punish thin data harder than before. First, AI shopping agents have become a real discovery channel, not a novelty. [BeautyMatter's reporting](https://beautymatter.com/articles/how-agentic-ai-is-reshaping-beauty-discovery) notes that a typical ChatGPT skincare query now returns just a handful of results, often five or fewer, and that AI-guided beauty discovery already converts two to three times higher than standard browsing paths. Generative AI referrals aren't hypothetical either, ChatGPT already accounts for a meaningful share of Target's and Walmart's referral traffic. An agent building that shortlist reads product data literally: no undertone attribute, no INCI-standard ingredient list, no substantiated claim means the product effectively doesn't exist for that query. Ask an AI to recommend a fragrance-free retinol serum for sensitive skin under thirty dollars, and it can only shortlist products whose data actually says all four of those things. Second, marketplace pressure hasn't let up. Beauty brands increasingly sell across their own site, Amazon, Walmart, TikTok Shop, and specialty marketplaces simultaneously, each with its own feed requirements and attribute mapping. Every additional channel is another place for a shade name, an ingredient list, or a claim to drift out of sync with the source of truth. Inconsistency that used to just confuse one shopper on one page now propagates across every channel a brand touches. ## Closing the gap None of this requires ripping out a PIM. Your PIM stores the data; Anglera does the work of continuously scoring, gap-filling, and enriching it, so shade, finish, undertone, INCI ingredient lists, and substantiated claims stay complete and consistent across every channel and every reformulation. It plugs into whatever system already holds the catalog, or none at all, and flags what's thin before a shopper (or an AI agent) notices it first. --- # A retailer's guide to shade, ingredient, and claim data in beauty Source: https://www.anglera.com/blog/beauty-guide Published: 2026-06-06 Industries: beauty ![A retailer's guide to shade, ingredient, and claim data in beauty](/og/hero-beauty-guide.jpg) A shopper looking at a lipstick online can't swatch it, can't smell it, and can't ask a store associate whether it'll survive lunch. Your product page has to answer every question a counter associate would answer, or the shopper returns the product, files a complaint, or just buys from someone whose page did the job. Here's what a beauty PDP actually needs, using a lipstick as the working example. ## The five questions every beauty shopper is silently asking Before checkout, a beauty shopper is looking for answers to roughly the same five questions, whether they're buying lipstick, foundation, or a serum: 1. **Will this match me?** Shade name, shade number, undertone (warm/cool/neutral), and how it compares to a shade they already own. 2. **What will it feel/look like on?** Finish (matte, satin, gloss, metallic), texture, and whether it transfers or settles into lines. 3. **What's actually in it?** Full ingredient list in standard INCI naming, not a marketing summary. 4. **Can I trust the claims on the label?** "Cruelty-free," "clean," "vegan," "paraben-free," "non-comedogenic" — these need to mean something specific, not just sound good. 5. **How long will it last, and what if it doesn't work for me?** Wear time, and a clear return/exchange path for a shade that looked right on screen and wrong in person. A raw supplier feed answers maybe two of these. The rest gets left as a marketing paragraph, or left out entirely. ## Before and after: one lipstick listing Here's a realistic before/after for a single matte lipstick SKU, going from a typical vendor feed to an enriched listing. | Attribute | Raw feed | Enriched listing | |---|---|---| | Title | "Lipstick Red" | "Matte Lipstick — Brick Red 04, Warm Undertone" | | Shade data | None | Shade name, shade number, undertone family, closest-match note ("similar depth to MAC Ruby Woo, cooler undertone") | | Finish/texture | None | Matte, non-drying formula, low transfer, buildable coverage | | Ingredients | "See packaging" | Full INCI list, ordered by concentration, with top irritant-risk ingredients flagged (fragrance, specific dyes) | | Claims | "Cruelty-free" (unlinked) | Cruelty-free (Leaping Bunny cert. number), vegan (no beeswax/carmine), paraben-free — each claim tied to a verifiable standard | | Size/net weight | Missing | 3.5 g / 0.12 oz | | Wear/use | Missing | 6-8 hour wear claim, application tips, patch-test note | That middle column — "See packaging" — is the actual state of a huge share of beauty catalogs today. The ingredient list exists; it's just sitting on a physical box, not on the page where the purchase decision happens. ## Why these specific gaps cost you money Beauty already runs a wider return-rate band than most categories. Return-rate benchmarks for beauty and personal care generally sit in the mid-single digits to low double digits, with color cosmetics — foundation and lip color especially — pulling toward the high end because of [shade mismatches and skin-sensitivity reactions](https://freeyourself.com/blogs/news/beauty-product-online-return-rates-in-2025). Shade guesswork is consistently named as one of the top drivers: industry accounts describe Giorgio Armani's Luminous Silk Foundation as one of the [most-returned items in prestige beauty](https://www.mintoiro.com/post/the-real-cost-of-a-bad-shade-match) specifically because shade selection online was hard to get right. The mechanism is straightforward. In a store, a shopper swatches on their wrist, asks an associate, and walks out with the right shade. Online, the page has to do all three jobs at once. When shade, undertone, and finish aren't specified precisely, shoppers guess wrong at a meaningfully higher rate, and return. Missing ingredient data creates a second, quieter cost: pre-purchase support tickets ("does this have fragrance," "is this nut-free"), abandoned carts from shoppers who won't buy without knowing, and post-purchase reactions that turn into refunds instead of repeat purchases. ## The claims minefield Beauty claims carry regulatory weight that a lot of catalogs don't treat seriously enough. A few things worth building into your data model now: - **Ingredient naming is standardized, not optional.** Under [FDA cosmetic labeling rules](https://www.fda.gov/cosmetics/cosmetics-labeling/cosmetic-ingredient-names), ingredients must be listed by their INCI name in descending order of concentration, with ingredients at 1% or below allowed in any order after that, and color additives listed last. Product pages that paraphrase ("Made with vitamin C") without the INCI backbone create a mismatch between page and package that erodes trust and invites returns. - **Fragrance allergen disclosure is coming.** Under the Modernization of Cosmetics Regulation Act (MoCRA), the FDA is working toward a rule requiring individual fragrance allergens to be named rather than folded into the catch-all term "fragrance." The [proposed rule is now expected in 2026](https://www.registrarcorp.com/blog/cosmetics/mocra/mocra-unified-agenda/), with final requirements likely a year or more after that — but brands that start structuring allergen data now won't be scrambling later. - **"Clean," "cruelty-free," and "vegan" all need a receipt.** These claims aren't legally defined the same way "organic" is for food. Regulators and platforms increasingly expect a claim to point to something verifiable — a certification body, a specific excluded-ingredient list, a testing policy — not just a badge. None of this is exotic. It's the difference between a claim and a fact a shopper can check. ## The AI shopping agent test Ask ChatGPT, Gemini, or Perplexity to "recommend a long-wear matte lipstick in a warm red that's fragrance-free." A listing with clean shade, finish, and ingredient data is retrievable and comparable; a listing with "See packaging" in the ingredients field is invisible to that query, no matter how good the product actually is. AI shopping agents parse structured attributes the same way a screen reader does — they can't infer what isn't written down. ## A checklist for fixing beauty PDPs - Every color/shade SKU has a shade name, shade number, and undertone family, not just a swatch image - Finish and texture are specified in consistent, comparable terms across the catalog - Full INCI ingredient list is on the page, ordered correctly, not just referenced - Known allergens and irritant-prone ingredients are flagged, not buried - Every marketing claim (clean, cruelty-free, vegan, non-comedogenic) is tied to a specific, checkable standard - Net weight, wear time, and application guidance are present and consistent with the physical label - Attributes stay in sync as formulas, certifications, or regulations change ## Where Anglera fits Anglera continuously scores your beauty catalog against gaps like these — missing shade or undertone data, ingredient lists that don't match INCI order, claims with no backing standard — and gap-fills and enriches the attributes automatically, whether your data lives in a PIM, a spreadsheet, or nowhere formal at all. Your PIM stores the shade name; Anglera makes sure the undertone, finish, ingredients, and claims are there too, kept current as regulations like MoCRA's fragrance rule move from proposed to final. --- # Aldi: The Grocery Chain Built by Splitting a Family in Two Source: https://www.anglera.com/blog/aldi-retailer-playbook Published: 2026-06-06 Industries: grocery-cpg ![Aldi: The Grocery Chain Built by Splitting a Family in Two](/og/hero-aldi-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Aldi ranks #14 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, with $58.36 billion in 2025 U.S. retail sales, per the National Retail Federation and Kantar. Most American shoppers know it as the store with the quarter-locked carts and the weekly aisle of power tools and kayaks. Fewer know that the company that owns Trader Joe's is, legally, Aldi's estranged twin. ## A Widow's Shop in Essen The story starts in 1913, when the mother of Karl and Theo Albrecht opened a small grocery store in Essen, Germany. Her sons took it over in 1946, rebuilding a business in a country still digging out from the war. By 1950 they ran 13 stores across the Ruhr Valley. By 1960 that number had grown to 300, built on a simple bet: strip out everything a grocery store did that didn't lower the price, and pass the savings straight through. Rather than run the loyalty-stamp promotions common in German retail at the time, the brothers simply cut prices by the legal maximum discount up front, according to [Wikipedia's history of Aldi](https://en.wikipedia.org/wiki/Aldi). ## The Split That Made Two Aldis In 1960, at the height of that growth, Karl and Theo divided the company between them. The official account says the brothers disagreed over whether to sell cigarettes at the checkout: Karl worried about shoplifting, Theo saw an easy margin. A journalist who later dug into the split, Martin Kuhna, argued the real cause was more mundane, that the two brothers simply ran their halves of the business differently and the arrangement formalized what had already split apart in practice. Whichever explanation is closer to true, the result was two independent companies, financially separated by 1966: Aldi Nord in the north, Aldi Süd in the south. In 1962 both adopted the shared name Aldi, short for Albrecht-Diskont. That 1960 divorce is the reason Aldi's American footprint looks the way it does. Aldi Süd opened its first U.S. store in Iowa in 1976 and built the "Aldi" discount banner that now runs more than 2,400 stores across 39 states, with a 2024 plan to spend over $9 billion adding 800 more by 2028. Aldi Nord took a different path into the American market entirely: in 1979 it quietly bought a small Pasadena chain called Trader Joe's, according to [Wikipedia](https://en.wikipedia.org/wiki/Aldi). Trader Joe's still runs its own buyers, its own stores, its own culture, and most of its regulars have no idea their neighborhood-quirky grocery store and the discount warehouse across town descend from the same mother's shop in Essen. That's the detail an About page won't tell you: two of America's most distinct grocery formats are, on paper, cousins by way of a 1960 sibling dispute. ## Why Theo Albrecht Disappeared In 1971, Theo Albrecht was kidnapped and held for 17 days. His captors, a lawyer named Heinz-Joachim Ollenburg and an accomplice named Paul Kron, were paid a ransom of 7 million German marks, delivered by the Bishop of Essen, before police caught them and recovered only half the money, according to [Wikipedia's entry on Theo Albrecht](https://en.wikipedia.org/wiki/Theo_Albrecht). Albrecht later tried, unsuccessfully, to write the ransom off as a business expense. The kidnapping did more than make headlines. It hardened a family that was already private into one that essentially vanished. Theo began varying his commute and traveling in armored cars. Public photos of either brother became rare enough that Forbes once described the Albrechts as harder to spot than a yeti. That instinct toward invisibility, built in the 1970s, shows up today in a company that still discloses less than almost any retailer its size and lets the low prices, not the founders, do the talking. ## Fewer Items, Faster Turns Aldi's operating math has stayed remarkably consistent across sixty years. Where a conventional supermarket might stock 30,000 to 40,000 SKUs, a typical Aldi store carries closer to 1,500 to 2,000, almost all of it private label. Fewer choices mean fewer suppliers to negotiate with, fewer shelf-tags to print, and stores small enough to run with a skeleton crew. A [1993 Forbes estimate cited by FundingUniverse](https://www.fundinguniverse.com/company-histories/aldi-group-history/) put Aldi's U.S. labor costs at roughly 4% of sales against 10 to 12% for traditional grocers, and its net margin at nearly double the industry average despite gross margins far thinner than a full-service supermarket's. The company makes it back on velocity: cheaper carts, boxed-not-shelved inventory, and a captive audience that comes in for staples and leaves with whatever oddity is sitting in the center aisle that week. ## The Model Everyone Else Copied For decades, Aldi's format looked like an outlier next to America's supermarket chains, until the 2010s made hard discount the industry's biggest threat. Aldi Süd's U.S. arm has answered by doing what it rarely did in its first hundred years: spending aggressively, opening stores at a pace that puts it on track to be one of the three largest U.S. grocers by store count within a few years of 2028. It got there the same way it always has, by keeping the shelf count low and the receipt shorter than the next store over. Grocery retail runs on the boring stuff nobody photographs: what's on the shelf, what's in the truck, and how fast the data behind both of them can be trusted. Aldi built an empire, twice, by treating that boring stuff as the whole business. --- # How enriched product data in Akeneo reaches the storefront and the page Source: https://www.anglera.com/blog/akeneo-data-to-storefront Published: 2026-06-06 Platforms: akeneo ![How enriched product data in Akeneo reaches the storefront and the page](/og/hero-akeneo-data-to-storefront.jpg) Enriching a product in Akeneo — specs, use-cases, identifiers, compliance attributes — only pays off once that data lands on a rendered product page. Between the PIM record and the DOM sit several handoffs: channel/locale scoping, an export or API call, a connector's field mapping, and the storefront template that actually prints the value. Each hop is a place data can silently stop moving. This guide walks through that path for manufacturers and distributors running Akeneo, and flags where syndication typically breaks. ## The four hops from PIM to page 1. **Enrichment in Akeneo** — attribute values are entered or generated against a family, some flagged scopable (per channel) or localizable (per locale). 2. **Channel/locale scoping** — a channel (also called a "scope" in the API and UI) bundles a category tree, one or more locales, currencies, and its own completeness requirements. It's the unit every export and connector run is scoped against ([Akeneo channel concept](https://help.akeneo.com/serenity-discover-akeneo-concepts/22-serenity-what-is-a-channel)). 3. **Extraction** — either a scheduled CSV/XLSX export profile, a REST API pull, or a marketplace connector (Adobe Commerce, commercetools, Shopware, and others via the [Akeneo App Store](https://apps.akeneo.com/search?type=connector)) reads products filtered to that channel. 4. **Storefront ingestion and rendering** — the receiving platform maps PIM attributes to its own product/attribute model, then a PDP template renders those fields into HTML. Get the first three right and the fourth is a templating problem. Get them wrong and the template has nothing to render, no matter how good the enrichment was. ## What actually leaves Akeneo Akeneo's export pipeline reads matching products, normalizes each one into a standard format scoped to the channel and locale list you configured, then writes flat rows (CSV/XLSX) or serves normalized JSON over the API ([Understanding the Product Export](https://docs.akeneo.com/latest/import_and_export_data/product-export.html)). Two settings decide what's in that output: - **Scopable/localizable flags on the attribute.** An attribute marked "value per channel" or "value per locale" only exports the values that exist for the channel/locales you selected — an unpopulated combination exports as an empty cell, not a fallback value from another channel. - **The completeness filter on the export profile.** You can filter to "complete on all selected locales," "complete on at least one," or "no condition on completeness." A distributor product that's enriched in English but missing the German locale value will be silently excluded from a run filtered to "complete on all selected locales" — a very common cause of "why isn't this product on the site" tickets. Via the API, the same scoping happens through query parameters: ``` GET /api/rest/v1/products?scope=ecommerce&locales=en_US,de_DE&attributes=name,description,ean ``` `scope` returns scopable-attribute values for that one channel plus every non-scopable value; `locales` does the same for localizable attributes ([REST API reference](https://api.akeneo.com/api-reference.html)). Omit or mis-set either parameter and attributes that look populated in the Akeneo UI simply won't be in the payload. ## Export profile vs. API vs. connector - **Export profiles** (CSV/XLSX, scheduled or on-demand) are the right fit when the destination is a flat-file import — a marketplace feed, a print catalog, a legacy PIM-to-ERP bridge, or a platform without a maintained connector. - **The REST API** is the right fit for near-real-time or custom integrations: a headless storefront, a middleware layer, or your own sync job. It gives you field-level control (`attributes`, `scope`, `locales`, `with_attribute_options`) that a flat export doesn't. - **App Store connectors** (Adobe Commerce/Magento, commercetools, Shopware, and several others) exist specifically so you don't have to build channel mapping yourself — they translate Akeneo's channel/locale/category model into the target platform's website/store-view/attribute-set model on a schedule or via event API. For manufacturers and distributors running Adobe Commerce or Magento, the [Akeneo Connector for Adobe Commerce](https://apps.akeneo.com/apps/akeneo-connector-adobe-commercemagento-enterprise-edition) is the most common path, so it's worth understanding its mapping model in more detail, since the same pattern (channel → storefront container, category tree → visibility) recurs across most connectors. ## Where channel mapping decides what's visible In the Adobe Commerce connector, each Adobe Commerce **website** is configured to pull from one Akeneo **channel** via the Website Mapping parameter, and the **Admin Website Channel** parameter sets the default source for admin operations. Two conditions govern whether a scopable attribute value — or the product itself — actually shows up on a given website: - The product must be **categorized in the category tree linked to that channel**; scopable values won't retrieve otherwise ([Filtering and mapping channel and locales](https://help.akeneo.com/adobe-commerce-connector-configuring-structural-data/adobe-commerce-connector-filter-and-map-channel)). - Optionally, a technical multi-select attribute (e.g., `website_mapping`, with option codes matching Adobe Commerce website codes) can override automatic channel-based assignment for finer control over which websites a product appears on. Product models add a second mapping layer. By default ("Creation from common"), a two-level PIM product model's common layer maps to an Adobe Commerce **configurable product**, and both its level-1 and level-2 variation layers map to individual **simple products** — Adobe Commerce only supports one level of variation, so the connector concatenates your two PIM levels down to it. A later connector setting, "Creation from level 1," instead maps common-plus-level-1 to the configurable and only level-2 to simple products, producing one configurable per level-1 variation. Either way, only variation attributes you explicitly declare in the connector configuration (as a "First Variation value" mapping) get pulled onto the configurable product — anything enriched at the variant level but not declared there never reaches the configurable's swatch/dropdown data ([Mapping Product models](https://help.akeneo.com/adobe-commerce-connector-configuring-catalog-data/adobe-commerce-connector-map-product-models)). ## Where the handoff commonly breaks - **Completeness silently excludes a product or locale** from an export run — check the profile's completeness filter before assuming enrichment failed. - **Scopable/localizable attribute has no value for the target channel/locale** — it exports empty even though the attribute is populated elsewhere. - **Product isn't categorized under the channel's category tree** — scopable values (and sometimes the product itself) never sync to that website. - **Variation-level attributes not declared in the connector's product-model mapping** — they enrich cleanly in Akeneo but never reach the configurable product's option data. - **Assets/media exported by reference, not by value** — if the storefront's asset storage or CDN path differs from Akeneo's, images resolve to broken links until the mapping is corrected. - **Storefront-side cache or index not rebuilt** after a sync — the connector delivered the data, but the PDP template is still serving a cached render. ## How to validate - **Confirm the export payload is populated**: `curl` the API with the exact scope/locale combination the storefront uses, or inspect the export profile's completeness filter and rerun for one SKU. - **Confirm the storefront received it**: check the connector's job/log output (import history in Adobe Commerce, or the connector's sync log) for the SKU in question. - **Confirm it rendered**: view-source (not just the rendered DOM) on the live PDP — many storefronts hydrate JSON-LD and body copy client-side, so what's in the initial HTML response is what search crawlers and most AI agents actually see. Compare that to the rendered DOM in dev tools to catch client-side-only content. - If the page emits `Product` or `Offer` structured data, run it through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm the synced attributes made it into valid JSON-LD, not just visible copy. **Verified as of July 2026** against Akeneo's public documentation and Akeneo App Store connector pages; connector-specific behavior (mapping parameters, product-model handling) can vary by connector version and Akeneo edition, so confirm against the version installed before relying on exact field names. None of this changes what Anglera does — Anglera enriches the product data that sits in Akeneo (or wherever it lives) so there's something complete and accurate to export in the first place. It's additive: it writes into your existing attributes and channels rather than replacing your PIM or export pipeline, so the syndication path described above keeps working exactly as configured. --- # Ahold Delhaize USA: One Company Built From Four Grocers Source: https://www.anglera.com/blog/ahold-delhaize-usa-retailer-playbook Published: 2026-06-06 Industries: grocery-cpg ![Ahold Delhaize USA: One Company Built From Four Grocers](/og/hero-ahold-delhaize-usa-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Ahold Delhaize USA lands at #13 on [NRF's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $59.83 billion in 2025 U.S. retail sales. Almost none of that revenue rings up under the Ahold Delhaize name. It rings up as Stop & Shop, Giant Food, Food Lion, and Hannaford, four grocery chains that spent a century building fierce regional loyalty before a Dutch conglomerate and a Belgian one quietly bought their way into becoming America's fourth-largest grocer. ## Two rivers, an ocean apart The story starts in two countries that never planned to compete with each other in the United States. In 1887, Albert Heijn took over his father's general store in Oostzaan, Netherlands, and built it into the country's dominant grocery chain, Albert Heijn N.V. Two decades earlier, in 1867, the Delhaize brothers opened a shop in Charleroi, Belgium, that would become Delhaize Group. Both companies grew into national champions in their home markets. Both eventually looked at the fragmented, wide-open American supermarket business and decided the fastest way in was to buy chains that already had the shelf space, the loyal customers, and the real estate, rather than build a brand from nothing. Ahold built its US foothold through Stop & Shop, which traces back to 1892 as the Rabinowitz family's Greenie Store in Boston before formally organizing in 1914 as Economy Grocery Stores in Somerville, Massachusetts. It adopted self-service retailing early, following Piggly Wiggly's lead, and by 1946 had 86 stores and the Stop & Shop name. Ahold acquired it in 1996. Ahold also bought Giant Food, founded December 15, 1936, by Nehemiah "N.M." Cohen, a rabbi who had emigrated from Jerusalem, and financial backer Samuel Lehrman, opening their first store at Georgia Avenue and Park Road in Washington, D.C. Giant went public in 1959, and in 1962 it opened the country's first in-store combination food-and-pharmacy location in Glen Burnie, Maryland, a format every grocer in America now takes for granted. Izzy Cohen ran it into a top-15 US chain before his death in 1995; Ahold bought it in 1998. Delhaize took the Southern route. Food Town opened in Salisbury, North Carolina, in December 1957, founded by Wilson Smith and brothers Ralph and Brown Ketner. Ralph Ketner's weekly circulars advertising rock-bottom prices, an early bet on what the industry would later call everyday-low-price positioning, made the chain a regional force. Delhaize bought a controlling stake in 1974, and when the chain's expansion into Virginia and Maryland ran into a trademark fight with an unrelated "Foodtown," it rebranded as Food Lion in 1983. Delhaize America rounded out its US footprint in 2000 by acquiring Hannaford, a Maine wholesaler dating to 1883 that Arthur Hannaford started as a Portland waterfront produce stand. ## Two near-death moments, told straight Neither side got here without a scare. Food Lion's came in 1992, when ABC's PrimeTime Live went undercover with hidden cameras and aired footage appearing to show employees re-dating and re-packaging spoiled meat. Same-store sales fell roughly 9.5 percent in the aftermath, and the chain retreated from markets it had aggressively entered in the Southwest and Midwest. It took years of remodeled stores and rebuilt supplier standards to win shoppers back. Ahold's came a decade later, and it was bigger. In February 2003, the parent company disclosed that its US Foodservice subsidiary had overstated income tied to promotional allowances, with irregularities also surfacing at Tops Markets and its Argentine unit, Disco. CEO Cees van der Hoeven and CFO Michael Meurs resigned immediately, the stock lost roughly two-thirds of its value, and Standard & Poor's cut Ahold to junk. Dutch prosecutors eventually settled fraud charges for about 8 million euros, and Ahold paid $1.1 billion to settle a US securities class action in 2006. New CEO Anders Moberg's "Road to Recovery" plan sold off South American and Asian operations and, in 2007, divested US Foodservice itself for $7.1 billion, betting the company's future on the supermarket chains it already owned rather than the food-distribution business that nearly sank it. ## The merger, and the choice that followed it By 2015 both companies had spent that decade stabilizing rather than expanding, and a merger of equals made sense: Ahold and Delhaize combined that June, with Ahold shareholders holding 61 percent of the new Koninklijke Ahold Delhaize N.V. The US operations were folded into Ahold Delhaize USA, headquartered in Quincy, Massachusetts, running the American banners as one company on paper. Here's the part that doesn't show up on the corporate history page: Ahold Delhaize never merged its banners the way most consolidators do. Kroger converts acquired chains to its own private-label systems and, eventually, often its own name. Ahold Delhaize instead left Stop & Shop, Giant, Food Lion, and Hannaford as fully distinct storefronts, distinct loyalty programs, distinct regional buying, running on shared back-end infrastructure that shoppers never see. It's a bet that a century of separately earned local trust is worth more than the efficiency of one national brand, and forty years after the first of these acquisitions, none of the four names has disappeared. | Banner | Founded | Founders | Joined Ahold Delhaize | |---|---|---|---| | Stop & Shop | 1914 (Somerville, MA) | Rabinowitz family | 1996 (Ahold) | | Giant Food | 1936 (Washington, D.C.) | N.M. Cohen, Samuel Lehrman | 1998 (Ahold) | | Food Lion | 1957 (Salisbury, NC) | Ketner brothers, Wilson Smith | 1974 (Delhaize) | | Hannaford | 1883 (Portland, ME) | Arthur Hannaford | 2000 (Delhaize) | Four family grocery stores, none of them started with the idea of becoming part of a European retail conglomerate, now move enough product to rank thirteenth in the country. The chains kept their names. The pallets, the trucks, and the product data behind them are where the real merger happened. Sources: [Ahold Delhaize corporate history](https://en.wikipedia.org/wiki/Ahold_Delhaize), [Food Lion](https://en.wikipedia.org/wiki/Food_Lion), [Giant Food (Landover)](https://en.wikipedia.org/wiki/Giant_Food_LLC), [Stop & Shop](https://en.wikipedia.org/wiki/Stop_%26_Shop), [Hannaford Brothers](https://en.wikipedia.org/wiki/Hannaford_Brothers), [Royal Ahold accounting scandal](https://en.wikipedia.org/wiki/Royal_Ahold). This is one entry in a series on the companies that built American retail: the founders, the near-misses, and the unglamorous supply chains still humming behind every storefront. --- # Agentic commerce just made your product feed your storefront Source: https://www.anglera.com/blog/your-feed-is-your-storefront-now Published: 2026-06-05 ![Agentic commerce just made your product feed your storefront](/og/hero-your-feed-is-your-storefront-now.jpg) For twenty years, the storefront was the page. You spent on design, hero images, photography, and a checkout flow tuned to the pixel — because a human landed there and you had seconds to convince them. Agentic commerce quietly removes the human from that step. A shopper tells an agent what they want; the agent does the browsing, comparing, and buying. It never loads your homepage. **It reads your feed.** ## The agent shops the data, not the design When Google's UCP, AP2, and the wave behind them let an agent transact on a buyer's behalf, the thing being evaluated is structured product data — not your art direction. The agent asks machine questions: - Does this match what my user asked for, precisely? - Is it in stock, at this price, deliverable in time? - What's the return policy, the warning label, the total cost? - Is there any reason to prefer it over the three alternatives? Every one of those answers lives in your feed. If it's missing, the agent doesn't squint at your beautiful PDP to figure it out. It moves on. ## This is a demotion for copy and a promotion for data It doesn't mean brand stops mattering to humans. It means a second audience now sits *upstream* of the human — and that audience can't be charmed, only informed. Your differentiation has to be legible as data: specs, use cases, compatibility, loyalty perks the agent can actually read into its math. The brands that win agentic commerce won't be the ones with the best landing page. They'll be the ones whose feed is complete enough to be chosen before a person ever looks. ## Treat the feed like the storefront it became That's a real shift in where the work goes: less on the page, more on the data behind every SKU — gathered, normalized, enriched, and kept accurate at catalog scale. It's the work [Anglera](/) exists to do. The storefront moved. Make sure yours is stocked. --- # Wholesale Electric Supply: Winning Quietly in a Roll-Up Era Source: https://www.anglera.com/blog/wholesale-electric-distributor-playbook Published: 2026-06-05 Industries: electrical ![Wholesale Electric Supply: Winning Quietly in a Roll-Up Era](/og/hero-wholesale-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Wholesale Electric Supply lands at #20 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical category, one of the largest independent players in a vertical increasingly owned by three or four global conglomerates. MDM doesn't disclose a FY2025 revenue figure for the company, which is itself in character. This is a distributor that has spent nearly eight decades getting bigger without getting louder. ## The company that isn't in the trade press Search the last five years of electrical-distribution trade coverage and you will find plenty on WESCO's 2020 acquisition of Anixter, on Sonepar's steady diet of independent buyouts, on Rexel's bolt-on strategy. You will find almost nothing on Wholesale Electric Supply. No acquisition announcements, no leadership shake-ups, no venture-backed pivot. The company's own newsroom, as of this writing, reads "there are no news and promotions items to display at this time." That absence is the story. A top-20 national player that generates zero trade-press noise is not an accident of a small operation hiding in a corner of Texas. It is a company that has built enough scale to matter and enough privacy to not need anyone to know how. ## Eighty years, one family, no exit Wholesale Electric Supply was [founded in 1947 in Texarkana, Texas, by Amos McCulloch](https://www.wholesaleelectricsupply.com/about-us). The company's own account of its founding leans on a specific, almost old-fashioned claim: that McCulloch built the business around durable relationships with customers, employees, and vendors, and that this is still the operating philosophy under current president Buddy McCulloch and the McCulloch family today. That continuity matters more than it might sound. Electrical distribution has consolidated hard over the past decade. Family names that once anchored regional territories — independent houses across the Sun Belt in particular — have been rolled into WESCO, Sonepar, Rexel, or private-equity platforms chasing scale for scale's sake. Wholesale Electric Supply has stayed a McCulloch company through all of it, expanding from a single Texarkana branch into [more than 85 locations across seven states](https://www.wholesaleelectricsupply.com/about-us) — Texas, Arkansas, Louisiana, Oklahoma, Kansas, Missouri, and Tennessee — without a headline-grabbing deal to explain the growth. ## The buying-group workaround Here is the strategic tension every independent electrical distributor eventually hits: national accounts want national pricing and national service, and a 20-branch regional house can't match a WESCO or a Graybar on raw purchasing leverage alone. The usual answers are sell, merge, or shrink into a niche. Wholesale Electric Supply's website carries membership marks for [NAED](https://www.naed.org), the industry's national trade association that gives members access to shared research, benchmarking data, and training programs, alongside a mark for AD, one of the largest buying and marketing groups in electrical and industrial distribution. Buying groups let independents pool purchasing volume against the same manufacturers the WESCOs of the world buy from, without surrendering ownership or local decision-making. It's the mechanism that lets a family-owned house in Texarkana quote competitively against a public company with a national logistics network, branch by branch, without ever appearing in an M&A ledger. That's the quiet moat. Scale through a cooperative, not through a balance sheet event. ## Depth over geography The other place Wholesale Electric Supply chose depth over breadth is in what it stocks and services. The company organizes around three customer segments rather than one broad electrical-supply catalog: residential (single-family, townhome, and multi-family projects with design support), commercial (lighting, power distribution, safety technology, cable management), and industrial, where it offers [24-hour emergency service, vendor-managed inventory, and specialized switchgear and hazardous-location expertise](https://www.wholesaleelectricsupply.com/about-us). Industrial hazardous-location work in particular is a technical-sales business, not a counter-sales one. It requires people who understand classified environments, not just SKUs, and it tends to be sticky business precisely because few competitors want to carry that expertise across dozens of branches. Pairing that technical depth with residential volume gives the company a demand base that doesn't move in lockstep. New-home starts slow, industrial maintenance spend doesn't; a data-center build ramps, a subdivision doesn't need to. ## The trade-off in staying private and quiet None of this is without cost. A company that doesn't disclose revenue, doesn't chase press, and grows through a buying group rather than acquisitions is also a company that can't move as fast when a competitor's private-equity backer decides to write a nine-figure check for market share in Texas. Staying independent means staying disciplined about growth, branch by branch, market by market, at a pace that organic hiring and real estate can support. WESCO can buy density in a quarter. Wholesale Electric Supply has to build it. The bet the McCulloch family keeps making is that density built slowly, on relationships and technical depth, holds up better over eighty years than density bought quickly. A top-20 national ranking, achieved with essentially no public profile, is the evidence that bet has paid off so far. Every distributor on this list runs on the same unglamorous machinery underneath the branch count and the ranking: a catalog that has to be right, a warehouse network that has to move, and data that has to keep up with both. This series looks at how the biggest names in the channel built theirs. --- # How Van Meter Stayed Independent for Almost 100 Years Source: https://www.anglera.com/blog/van-meter-distributor-playbook Published: 2026-06-05 Industries: electrical ![How Van Meter Stayed Independent for Almost 100 Years](/og/hero-van-meter-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Van Meter Inc. lands at #18 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for electrical, one of a shrinking number of names on that ranking that never took a check from private equity or a multinational buyer. The Cedar Rapids, Iowa company has been selling wire, switchgear and now automation hardware since 1928. It is still there because of a decision made decades ago about who would own it next. ## A hardware store that outlasted its own century R.L. Van Meter and R.W. Lemley opened their electrical supply house in downtown Cedar Rapids in 1928, built around a motto that reads like it was written for a different era of customer service: "Service is our first thought." Within a few years they'd wired their own headquarters with fluorescent lighting, reportedly the first building west of the Mississippi to use it, according to [Electrical Distributor magazine](https://tedmag.com/van-meter-begins-95th-anniversary-celebration/). That kind of small, provable first is the sort of detail a company keeps in its lobby for a century, and Van Meter has: The History Center in downtown Cedar Rapids ran an exhibit on the company through mid-2024, built around artifacts and interviews with former presidents, per [KCRG](https://www.kcrg.com/2024/01/28/cedar-rapids-history-exhibit-highlights-local-company/). The company crossed its 95th anniversary in 2023 still headquartered in the city where it started, by then running 25 locations across eight states with more than 800 employee-owners. By late 2025 that had grown to 27 locations and 850-plus employee-owners, according to [the University of Iowa's Tippie College of Business](https://tippie.uiowa.edu/news/2025/10/tippie-honor-van-meter-employee-owners-and-ceo-lura-mcbride), which honored CEO Lura McBride with its Oscar C. Schmidt Iowa Business Leadership Award in November 2025. McBride joined Van Meter in 2008, became COO in 2010, and was named president and CEO in 2016, per [MDM's coverage of the AD buying group's electrical board](https://www.mdm.com/news/breaking-news-in-wholesale-distribution/association-buying-group-news/ad-adds-turtle-van-meter-execs-to-electrical-board/). ## The insight: ownership never left the building Electrical distribution has spent the last two decades consolidating into a handful of giants, Sonepar, WESCO, Rexel, each built by buying up regional players like Van Meter. Van Meter took the opposite path. It is 100 percent employee-owned through an ESOP, a structure that functions simultaneously as a retirement plan and a succession mechanism: instead of a founding family selling to a strategic acquirer or a private equity sponsor, ownership transferred internally to the people running the branches and answering the phones. [The Corridor Business Journal](https://corridorbusiness.com/the-corridors-largest-privately-held-companies-van-meter-inc/) still lists Van Meter among the region's largest privately held companies and describes it plainly as the nation's 14th largest electrical distributor, still independent, while noting that many of its peers sold or merged over the same stretch of decades. That is the non-obvious part of this story. Most independent distributors eventually face the same choice: recapitalize with outside money, sell to a national roll-up, or shrink. Van Meter's answer was to make the employees the outside money, gradually, without a change in control that shows up as a press release. It is a quieter kind of consolidation resistance than franchising or a family trust, and it is rare enough in a $200-billion-plus electrical distribution market that it is worth naming as a deliberate strategic choice rather than an accident of geography. McBride has said as much directly. Discussing a facility consolidation in the Twin Cities, she told [Industrial Distribution](https://www.inddist.com/company-expansion-consolidation/news/22967575/van-meter-to-consolidate-twin-cities-facilities): "As an employee-owned company, we think in generations, not quarters." That line does real work. A distributor answering to a PE sponsor on a five-to-seven-year fund clock underwrites branch and facility investment differently than one whose owners are also the people who will retire from those branches. ## How the model shows up in the operation The employee-ownership structure is not just a culture slide. It changes what Van Meter can afford to build slowly. The company has kept investing in physical footprint, expanding its Cedar Rapids campus by 60,000 square feet even as e-commerce reshapes distributor economics, per the Tippie College writeup. It has also pushed its catalog well past core electrical: Van Meter's own site organizes its business into automation (controls, enclosures, robotics), datacomm, lighting, power transmission, and safety, alongside traditional electrical supply. Wallet-share expansion within existing branches and customers, rather than acquisition-driven geographic expansion, is the growth lever an employee-owned distributor without outside capital tends to pull. It also plays in group affiliation rather than pure independence. Van Meter's leadership sits on the electrical board of AD, the buying and marketing group that lets independent distributors pool purchasing scale against Sonepar and WESCO without merging with them, a structural workaround that lets a company stay independently owned while still competing on price with the roll-ups. That combination, employee ownership internally and a buying group externally, is how a 27-location regional distributor keeps showing up on a national top-20 list. ## The tension worth naming The honest trade-off: an ESOP is a patient capital structure, but it is not unlimited capital. Van Meter cannot outbid Sonepar for a target company the way a PE-backed platform can, and its growth will look organic and branch-by-branch rather than acquisition-fueled. For a company whose own materials note it has watched competitors sell or merge around it for most of a century, that appears to be the trade it has consistently chosen. Whether that ceiling ever becomes a floor is the question worth watching the next time MDM updates its rankings. Every distributor on this list survives on the same unglamorous inputs: a catalog that's actually accurate, a branch network that shows up, and data good enough to trust at 2 a.m. on a job site. Van Meter's version of that just happens to be owned by the people stocking the shelves. --- # How Turtle Stayed Family-Owned for a Century in Electrical Source: https://www.anglera.com/blog/turtle-distributor-playbook Published: 2026-06-05 Industries: electrical ![How Turtle Stayed Family-Owned for a Century in Electrical](/og/hero-turtle-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Turtle lands at #19 in electrical on Modern Distribution Management's [2026 Top Distributors](https://www.mdm.com/top_distributors) list, the annual ranking of North America's largest wholesale distributors. That placement undersells what makes the company unusual. Turtle is a fourth-generation, family-owned electrical and industrial distributor that has now been run by women for three of its four generations, in a sector where family succession almost always defaults to the eldest son and the ownership itself almost always ends up in a private equity fund. ## A widow's capital, a partner's death M.B. Turtle and Bill Hughes started the company in 1923 with one truck serving lower Manhattan's financial district, according to the history Turtle publishes on its [Our Story](https://www.turtle.com/our-story/) page. The founding capital came from M.B.'s wife, Ethel Macnamara Turtle. When Hughes died in the 1930s, Ethel didn't sell her stake or hand the wheel to a hired manager. She ran the company through the Depression herself, becoming, as Turtle's own centennial materials put it, the first of three generations of women to lead the business. Her granddaughter, Suzanne Turtle Millard, took the company through its next expansion. Suzanne's daughter, Jayne Millard, joined the board in the 1990s and became CEO in 2010. That sequence matters more than it looks. Electrical distribution has consolidated hard since the 1990s, with private-equity-backed platforms rolling up regional players across nearly every vertical MDM tracks. Family-owned holdouts exist, but they're almost never held and run, generation after generation, by women in a channel that still skews heavily male in both the branch and the boardroom. Turtle got its Women Business Enterprise certification in the 1980s, decades before supplier diversity became a standard RFP line item, which means the certification was earned as an operating fact of who ran the company, not acquired as a marketing position. ## From Wall Street to the Gulf Coast The growth path away from that one Manhattan truck followed the geography of American industry. A second branch opened in Elizabeth, New Jersey, in the 1930s, and Turtle became a supplier into Rockefeller Center. World War II brought military supply contracts. The 1950s brought PR Electronics, the company's first push into industrial automation alongside straight wire-and-conduit distribution. The 1970s took the company to Houston to chase the petrochemical build-out, and Turtle has stayed on the Gulf Coast ever since, later adding a 100,000-square-foot facility in the Houston area and, in 2023, a new Round Rock location outside Austin built to supply a manufacturer's new Texas facility, per the company's own [announcement](https://www.turtle.com/news-and-insights/turtle-hughes-launches-new-austin-location-in-major-texas-expansion/). Acquisitions in the 1980s and 1990s, including Rockwell Automation distributors and the Stilliter/Klebes integrated-supply business, pushed Turtle into the top 25 U.S. electrical wholesalers by the 1990s. Company materials describe roughly 60 employees a decade after founding, growing to about 250 across six locations by the 1980s and '90s, and past 800 across the U.S., Canada, Mexico, and Puerto Rico by the 2010s. ## The professional-CEO detour, and the swing back The most interesting strategic choice in Turtle's recent history isn't an acquisition. It's a governance experiment. Jayne Millard stepped back from sole CEO duty and, for a period, co-led the company with an outside professional executive, Kathleen Shanahan, before Millard moved into an Executive Chairman role. Then, on November 1, 2023, Turtle [announced](https://www.turtle.com/news-and-insights/turtle-announces-new-leadership-jayne-millard-and-luis-valls-named-co-ceos/) a different pairing: Millard returning to a co-CEO seat alongside Luis Valls, a career Turtle executive who had run the company's Electrical Division since 2018 and spent a decade before that managing power distribution and automation solutions. Shanahan moved to a senior advisor role focused on government relations. Most family-owned distributors pick one lane and stay in it: pure family succession forever, or a clean professionalization that pushes the family to the board and never looks back. Turtle has now run both models inside a decade and landed on a hybrid, family strategic ownership paired with an operator who came up through the branch and product side rather than the family tree. It's a bet that the founding family's judgment on capital allocation and culture is worth preserving without requiring every operating decision to run through a Turtle or a Millard. The NACD's New Jersey chapter named Turtle its Private Company [Board of the Year](https://www.turtle.com/news-and-insights/turtle-named-private-company-board-of-the-year/) in 2023, citing governance practice, which suggests the board treats this as a designed structure rather than an improvisation. ## What the second century looks like Turtle marked its 1923 founding with a formal centennial in January 2025 and used the milestone to push further from pure wire-and-conduit distribution: a cybersecurity consulting arm (Turtle Technology Services), an equity investment in battery maker Cadenza Innovation, a renewable-energy access partnership with Catalyze, and EV charging and data-center infrastructure practices layered onto the core electrical business. In a [May 2026 interview](https://www.turtle.com/news-and-insights/building-resilience-before-volatility-hits-turtle-co-chief-executive-officer-luis-valls-on-long-term-strategy/), Co-CEO Valls described tariff volatility and multi-year lead times on transformers and switchgear as now-permanent features of the operating environment, arguing distributors have to secure manufacturing capacity years ahead rather than reacting to shortages. The tension worth naming plainly: a company that survived a century by keeping ownership in one family now has to prove that model scales into a business selling into hyperscale data centers and grid modernization projects that dwarf the Rockefeller Center contracts of the 1930s. Turtle's answer so far is to keep the ownership structure and change almost everything else around it. Distribution rewards the companies willing to do the unglamorous work, an accurate catalog, a branch network in the right places, a fleet that shows up on time. Turtle's century is a reminder that who controls those decisions can matter as much as how well they're executed. --- # Scott Electric: How an Independent Distributor Stays That Way Source: https://www.anglera.com/blog/scott-electric-distributor-playbook Published: 2026-06-05 Industries: electrical ![Scott Electric: How an Independent Distributor Stays That Way](/og/hero-scott-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Scott Electric lands at number 36 on the electrical vertical of Modern Distribution Management's [2026 Top Distributors](https://www.mdm.com/top_distributors) list, down from 21st on the 2025 list, the trade publication's annual ranking of North America's largest wholesale distributors. MDM does not disclose a revenue figure for the company, which is itself a small tell: Scott Electric is privately held, family-rooted, and has spent eight decades declining to behave like the national chains it competes against. ## A counter in Greensburg, not a network of them Scott Electric was founded in 1946 in Greensburg, Pennsylvania, a county seat roughly 35 miles southeast of Pittsburgh, and its [company history](https://www.scottelectricusa.com/about-us) reads like a study in patience. A second location did not open until 1970, in the Pittsburgh area. A third followed in 1979, in Altoona. That is three branches in thirty-three years, in an industry where the distributors above it on the MDM list were often adding branches at that pace in a single decade. The company's footprint today still centers on Pennsylvania, Maryland, West Virginia and Ohio rather than a coast-to-coast branch map. That is the first thing worth naming plainly: Scott Electric's strategy has never been geographic sprawl. It is density. Cracking the top 40 of a national ranking from a cluster of branches in the Appalachian corridor means the company is winning by depth of relationship and share of wallet inside a defined territory, not by planting flags in new metros. ## The insight: an electrical distributor that also runs a print shop Here is the part of the story a competitor's strategy team would actually want to steal. According to the company's own [LinkedIn profile](https://in.linkedin.com/company/scott-electric-co-), which describes Scott Electric as "one of the largest independent electrical distributors in the United States," its listed specialties go well beyond wire, conduit and switchgear. They include signs and engraving, screen printing, instant printing, tool rental and sales, and electrical safety supply, alongside a retail lighting showroom in Greensburg. That is not a typo or a stray sideline. It is a deliberate bet that the contractor relationship a distributor builds at the counter can be extended sideways into everything else that contractor buys locally: branded apparel for the crew, job-site signage, safety gear, printed forms, rental tools for a one-off job. Most electrical distributors compete on fill rate, price file accuracy and technical support. Scott Electric competes on being the one stop a contractor never has reason to leave, because the same building sells the panel, prints the invoice pads, and screens the company's t-shirts. It is a model that only makes sense for a distributor that stayed independent and stayed local long enough to know its customers this well. A regional office of a national roll-up does not add a screen-printing line to chase incremental margin from the same twenty accounts it has served since the Ford administration. A founder-era independent does. ## The trade-off of staying independent Electrical distribution has consolidated hard over the last three decades. National and multinational players built largely through acquisition now dominate the top of every MDM electrical ranking, offering national account programs, integrated e-commerce catalogs and combined buying power that no single-state independent can match line for line. Scott Electric's answer has been to not play that game. There is no visible string of tuck-in acquisitions in its public record, no rebrand under a private equity sponsor, no rapid multi-state buildout. The growth has been organic, branch by branch, decade by decade. The honest tension in that choice: it caps how fast Scott Electric can grow and how much purchasing leverage it can bring to a national account bid. A distributor this size cannot out-discount a Sonepar or a WESCO on a fifty-state facilities contract. What it can do is out-know them on any given job in its own backyard, and sell that same customer four other things while it's at it. Ranking 36th nationally in electrical while running that dense, diversified, single-region model is the proof the trade-off has worked so far. ## Why this matters more than it looks The lesson generalizes past electrical distribution. In a channel where the biggest players compete on national scale, an independent's moat is rarely going to be matching that scale. It is going to be finding the adjacent lines of business the scale players will never bother chasing, because a screen-printing counter or a tool-rental rack is beneath their operating model but is exactly the kind of sticky, high-margin, relationship-deepening add-on a family-rooted regional player can run well. Scott Electric's real differentiator is not a product category. It is refusing to define itself narrowly as an electrical supply house at all. Distribution's biggest advantages rarely show up on the label. They live in the branch list, the catalog depth and the decades of accumulated customer knowledge that a company like Scott Electric has quietly compounded since 1946. --- # The footwear attributes shoppers filter on — and most catalogs miss Source: https://www.anglera.com/blog/footwear-attributes Published: 2026-06-05 Industries: footwear ![The footwear attributes shoppers filter on — and most catalogs miss](/og/hero-footwear-attributes.jpg) A shopper filters for "wide width, low drop, road running shoe" and your catalog's best-fit product never shows up, not because it's out of stock, but because the width field is blank. Footwear is one of the most attribute-dense categories in retail, and the gap between what a spec sheet lists and what a faceted search or AI assistant needs is where sales quietly disappear. ## Why footwear breaks faceted search first Most footwear PIMs were built around apparel conventions: size, color, gender. But footwear buyers filter on mechanical fit and use-case attributes that apparel never needed: width, drop, stack height, lacing system, arch support, outsole traction. When those fields are empty, the product isn't ranked lower in a filtered search, it's excluded outright. A facet filter is a database query, not a suggestion. No value in the width field means no match for "wide," full stop. The same failure mode hits AI shopping agents harder. When someone asks ChatGPT, Google AI Mode, or Perplexity to "recommend a stability running shoe with a low heel-to-toe drop for a wide foot," the model is reasoning over whatever structured attributes and page text it can extract. A product description that just says "engineered mesh upper, responsive cushioning" gives the model nothing to match against. The product isn't wrong for the query, it's invisible to it. ## The attributes footwear shoppers actually filter on Different subcategories carry different critical attributes, but a few show up across almost every footwear vertical: | Attribute | Why it matters | Common gap | |---|---|---| | Width | Fit filter (narrow/medium/wide); varies by brand and last | Often only captured as a size-chart footnote, not a structured field | | Size system | US/UK/EU/JP sizing differs; a "9" means different things | Frequently omitted, causing wrong-size returns | | Closure/lacing type | Lace-up, slip-on, hook-and-loop, BOA dial | Buried in copy, not tagged | | Heel-to-toe drop | Determines running gait and comfort profile | Almost never in retailer feeds, common in brand spec sheets | | Stack height | Total cushioning height (heel and forefoot) | Same gap as drop, usually missing | | Outsole/traction type | Road, trail, court, ice; rubber compound | Inconsistently tagged across brands | | Upper material | Mesh, knit, leather, waterproof membrane | Present but rarely standardized (e.g., "GORE-TEX" vs "waterproof") | | Arch support / pronation type | Neutral, stability, motion control | Present in running-specialty retailers, rare elsewhere | | Use case | Road running, trail, walking, basketball, work/safety | Often implied by category, not an explicit filterable field | Google's own [size attribute guidance](https://support.google.com/merchants/answer/6324492?hl=en) is a useful signal of how granular this needs to be: it tells merchants to submit shoe width directly in the size field, e.g. `10½ W` or `6 4A`, and to "submit all details that affect the size of your product." If a feed spec built for search ads demands that level of detail, a faceted category page or an AI agent needs it too. For running shoes specifically, [stack height and drop are core sizing signals](https://www.runningwarehouse.com/learningcenter/gear_guides/footwear/heel-toe-drop.html) that specialty retailers filter on by default, and World Athletics even caps stack height at 40mm for competition shoes, which tells you how load-bearing that spec is for the category. Yet [most general retail feeds never carry it](https://runlovers.it/en/2025/difference-drop-stack-running-shoes/), which is exactly the kind of category-specific attribute a generic apparel template silently drops. ## Worked example: a road running shoe, raw feed vs. enriched Here's what a typical scraped or PIM-default feed looks like for a running shoe, next to what it should look like once the category-specific attributes are filled in. **Raw feed (as received from a distributor):** | Field | Value | |---|---| | Title | Men's Running Shoe, Black/Grey | | Size | 10 | | Color | Black/Grey | | Description | Lightweight running shoe with breathable mesh upper and cushioned midsole. | **Enriched:** | Attribute | Value | |---|---| | Title | Men's Road Running Shoe – Neutral, Low Drop | | Size | 10, size system US | | Width | D (Medium), also available in 2E (Wide) | | Color | Black/Grey | | Closure | Lace-up | | Heel-to-toe drop | 6mm | | Stack height | 32mm heel / 26mm forefoot | | Midsole | EVA foam with forefoot plate | | Upper material | Engineered mesh, breathable | | Outsole | Carbon rubber, road traction pattern | | Pronation support | Neutral | | Use case | Road running, daily trainer | The raw version answers "what does it look like." The enriched version answers "will this fit and work for me," which is the actual question behind every width filter click and every "recommend a low-drop neutral trainer" prompt to an AI assistant. Ask an AI shopping tool to recommend a wide-width, low-drop road running shoe under a given price, and only the enriched record has the structured hooks to surface as a match. ## How to structure it without rebuilding your taxonomy You don't need a new PIM to fix this. Three moves cover most of the gap: - **Split compound fields.** Width shouldn't live inside a size string like "10 Wide" as free text; it needs its own facet-ready field, matching how [Google's shoe-size spec](https://support.google.com/merchants/answer/6324492?hl=en) treats width as a distinct dimension even when it's submitted alongside size. - **Standardize vocabulary per subcategory.** "Neutral" vs. "stability" vs. "motion control" needs one controlled list across every running shoe SKU, not whatever term each brand's spec sheet happened to use. - **Backfill from brand spec sheets, not just distributor feeds.** Drop, stack height, and plate material rarely arrive in a standard retail feed; they usually live on the brand's own product page or tech sheet and have to be matched in. Anglera sits on top of whatever PIM or commerce platform you already run and does exactly this kind of gap-filling: it scores every footwear SKU against the attributes shoppers and AI agents actually filter on, flags what's missing, and enriches width, drop, stack height, and the rest at catalog scale. Your PIM stores the data. Anglera does the work of making sure it's actually there. --- # Assortment planning in Footwear: the gaps your style-level reports can't see Source: https://www.anglera.com/blog/footwear-assortment-planning Published: 2026-06-05 Industries: footwear ![Assortment planning in Footwear: the gaps your style-level reports can't see](/og/hero-footwear-assortment-planning.jpg) A style-level assortment review tells you sneakers sold better than boots this year. It will not tell you that your suede booties between $100 and $160 are propping up a stalling segment while a knit-sneaker price point one tier up has no offer at all and would probably sell. That second fact only shows up when you cut the line by attribute, not by style number, and most planning reviews never make that cut because the attribute data underneath isn't clean enough to cut by. Footwear brands and retailers already know silhouette mix is shifting. Boot share of the market fell from 17% in 2021 to 7% in 2025, with buyers rotating toward sneakers, flats, and sandals, according to [JOOR's footwear market analysis](https://www.joor.com/insights/footwear-market-analysis-insights). That's a silhouette-level signal, and most assortment tools can see it because silhouette is usually a clean, well-populated field. The problem is everything one level down: upper material, closure type, heel height, outsole construction, toe shape. Those are the attributes that actually explain why one boot sells and its near-identical neighbor sits at 40% markdown, and they're also the attributes most likely to be missing, inconsistent, or buried in a free-text description nobody queries. ## Why style-level rollups flatten the decision A style-level report answers "which styles worked." An assortment decision needs "which combination of price point, material, and construction worked, and where is that combination missing." Those are different questions, and the gap between them has a name in retail analytics: white space, the untapped combinations of demand and offer that a line-by-style view can't surface because it never groups product any way other than by style, as [ki-value's guide to white space analysis](https://www.ki-value.com/blog/white-space-analysis) frames it for mid-size fashion retailers. Three failure modes hide inside a clean-looking style-level report: - **White space**: an attribute combination customers want, adjacent segments prove it, and the line offers zero SKUs there. - **Over-assortment**: too many SKUs stacked into one attribute cell relative to what it actually sells, usually because it's easy to line-extend a familiar combination rather than test a new one. - **Break points**: the price or size point where sell-through falls off a cliff for one attribute value but not its neighbor, which tells you where the next markdown or the next price test should land. None of these are visible in a spreadsheet organized by style number and season. They only become visible once every SKU carries clean, comparable values for the attributes that actually drive fit and preference in footwear: upper material, closure, heel height band, width, outsole type. ## A worked example Take a hypothetical women's footwear brand reviewing its fall line across four price bands and five upper materials. Once the attribute columns are clean, the same sales and inventory data that fed the style-level report can be re-cut like this: | Price band | Upper material | SKUs offered | Sell-through | |---|---|---|---| | Value (under $60) | Canvas | 6 | 71% | | Mid ($60-$100) | Suede | 14 | 38% | | Mid ($60-$100) | Knit | 3 | 68% | | Premium ($100-$160) | Suede | 9 | 22% | | Premium ($100-$160) | Knit | 0 | — | | Luxury ($160+) | Leather | 5 | 61% | Three things jump out that a style-level view would never show. Mid-tier suede is over-assorted: 14 SKUs chasing a 38% sell-through rate, more depth than the demand supports. Premium knit is a hole: zero SKUs, and the adjacent knit cell one tier down is selling at 68%, plus the value canvas cell shows the same customer will pay for a soft, casual upper. And there's a break point at $100 for suede specifically: sell-through drops from 38% to 22% crossing that price line, while knit doesn't show the same cliff. That's a materially different signal than "boots are down," and it's the kind of signal a buyer can act on in a line review, not just report on afterward. ![Matrix: price band by attribute value, dot size showing SKUs offered and color showing sell-through, with one over-assorted cell and one empty high-demand cell](/diagrams/assortment-whitespace-matrix.svg) ## What has to be true of the data first None of that matrix is possible if the upper material field is 30% blank, or if it's populated with whatever a merchandiser typed into a free-text description last season. Three things have to hold before an attribute cut is trustworthy: **Fill.** Every SKU needs a value in the field you're cutting by, not just the SKUs someone remembered to tag. Gaps usually cluster in exactly the styles a buyer most needs visibility into: new vendors, private label, or anything migrated from a legacy ERP field that was never mapped cleanly. **Standardization.** "Suede," "genuine suede," "pigskin suede," and "suede leather" have to collapse to one canonical value before a matrix means anything. Left alone, a five-value attribute quietly becomes twelve near-duplicate strings, and a pivot table splits what should be one cell into four half-empty ones. **Correctness.** A tech pack says suede, a product photo shows what looks like smooth leather, and a legacy field says "leather - suede." Those need to be reconciled and flagged when they conflict, not silently defaulted to whichever source loaded last. An attribute that's wrong is worse than an attribute that's blank, because a blank gets your attention and a wrong value doesn't. Getting there by hand is roughly what it's always been: someone opening tech packs, spec sheets, and product photography one SKU at a time, at somewhere around 30-45 minutes per SKU by typical manual-enrichment benchmarks. For a footwear line running a few thousand active SKUs across upper material, closure, heel height, and width, that's not a task a planning team does before a line review. It's a task that gets skipped, which is exactly why the attribute-level view doesn't exist yet in most assortment processes. This is the layer Anglera works on. It plugs into whatever PIM, ERP, or flat CSV export already holds the style and SKU data — style number and SKU is enough of a join key to start — and extracts, standardizes, and validates the attributes underneath the SKU: pulling upper material and construction detail from tech packs and imagery, flagging conflicts across sources instead of overwriting them, and backfilling a new attribute like closure type or heel height band across a full catalog in about a day rather than a season. Forecasting and assortment tools can only aggregate along the dimensions the catalog actually has clean values for. Anglera doesn't replace the planning system doing that aggregation — it's the reason the dimensions underneath it are worth aggregating on. --- # Beauty on marketplaces: the listing data that wins the buy box Source: https://www.anglera.com/blog/beauty-syndication Published: 2026-06-05 Industries: beauty ![Beauty on marketplaces: the listing data that wins the buy box](/og/hero-beauty-syndication.jpg) Beauty sells differently on marketplaces than almost any other category: shoppers buy on shade, finish, ingredient list, and skin type before they buy on price. A feed that's missing half of that is not a cosmetic problem. It's the reason a listing loses the buy box, gets suppressed in search, or never shows up when someone asks an AI assistant to recommend a lipstick. ## The buy box isn't just about price anymore Sellers still obsess over landed price and fulfillment speed, and those matter. But Amazon has been explicit that a large share of buy box eligibility now runs through attribute completeness: the platform has pushed sellers toward requiring roughly 80% of key attributes filled in before an offer is even considered competitive for the featured offer, according to [Repricer's 2026 buy box guide](https://www.repricer.com/blog/amazon-buy-box-guide-2026/). Feedback rate, order defect rate, and price still decide who wins among eligible offers. Content decides who's eligible at all. That's a different failure mode than most beauty brands plan for. A seller can have great pricing, fast Prime shipping, and a clean account, and still get boxed out because the shade name, size, or ingredient field is blank on 40% of a 60-SKU lipstick line. ## The content and identifier bar, in practice Marketplaces enforce a mix of structural rules (identifiers, images, category-specific attributes) and quality rules (readable text, no claims Amazon can't verify). For beauty specifically, the bar looks like this: | Requirement | What it actually checks | Common beauty failure | |---|---|---| | GTIN/UPC match | Barcode must resolve in the [GS1 database](https://www.gs1us.org/upcs-barcodes-prefixes/amazon/barcodes-for-amazon); mismatched brand-to-GTIN registration can trigger listing suspension | Private-label shades launched under a GTIN exemption, then re-added incorrectly when the brand scales | | Category attributes | Shade, finish, size/volume, skin type, formulation (e.g., matte, satin, cream) | Shade and finish left as free text instead of the structured attribute Amazon expects | | Ingredient/claims data | Full ingredient list, and no unverifiable claims ("cures," "eliminates," "clinically proven" without support) | Marketing copy ported straight from the brand site, unverifiable claims stripped by Amazon after the fact | | Images | Multiple angles, swatch or shade card, packaging shown per [Amazon's image guidance](https://www.sellersprite.com/en/blog/Amazon-Image-Requirements-Optimization-Tips) | Single hero shot with no on-model swatch, no shade comparison grid | | A+/enhanced content | Text must live in the module's text field, not baked into an image, or it's invisible to screen readers and doesn't localize | Ingredient callouts and shade guides burned into image graphics, rejected or ignored | | Compliance docs | Safety assessments, restricted-ingredient screening for the beauty ungating process | Documentation exists at the brand level but never gets attached to the specific ASIN | Each row is a place where a listing can look "done" to a merchandiser and still be incomplete to the platform. ## A lipstick, before and after Take a single SKU: a matte lipstick in a shade called "Rosewood." Here's what a typical brand feed sends versus what's needed to be channel-ready. | Field | Raw feed (typical) | Enriched, channel-ready | |---|---|---| | Title | Matte Lipstick - Rosewood | Long-Wear Matte Lipstick, Rosewood (Warm Rose-Brown), 0.12 oz | | Shade attribute | (blank, only in title) | Rosewood | | Finish attribute | (blank) | Matte | | Skin tone/undertone guidance | (blank) | Suited for warm and neutral undertones | | Size/volume | (blank) | 0.12 oz / 3.5 g | | Ingredients | Link to PDF on brand site | Full INCI list in the ingredients field | | GTIN | Reused from a discontinued shade | Unique, GS1-verified UPC for this shade | | Images | 1 packshot | Packshot, swatch on skin, shade comparison grid, texture close-up | The left column is common, not rare. It's the default output of a PIM built for internal merchandising, not for what a marketplace or an AI shopping agent needs to parse. ## Why this matters more with AI shopping in the mix Ask an AI shopping assistant to "recommend a long-wear matte lipstick for a warm-toned complexion under $20," and the answer comes from structured data, not a glossy description. Amazon's own Rufus assistant, now folded into the broader Alexa for Shopping experience, pulls from listing attributes, reviews, and A+ content text to generate comparisons and suggestions, according to [Amazon's announcement](https://www.aboutamazon.com/news/retail/alexa-for-shopping-ai-assistant). If shade, finish, and undertone aren't structured attributes, the assistant has nothing to match against the shopper's question, and the SKU simply doesn't surface. That's the mechanism, not a guess: incomplete attributes mean the retrieval layer, human or AI, has less to work with, so it defaults to competitors whose data is complete. ## Getting to channel-ready without rebuilding the PIM None of this requires ripping out a PIM or building a marketplace team from scratch. It requires a layer that checks every SKU against each channel's actual bar, whichever those channels' current attribute lists happen to be, and fills the gaps with brand-consistent, verifiable copy before the feed goes out. Anglera plugs into whatever system already holds the beauty catalog and does that enrichment work continuously: scoring each SKU against Amazon's (and other marketplaces') real attribute and identifier requirements, filling shade, finish, ingredient, and size data, and flagging claims that won't survive a compliance check. The PIM keeps storing the data. Anglera keeps it complete enough to win the buy box and get picked when someone asks an AI to recommend a lipstick. --- # Apple Retail: How a Rejected Idea Built a Store Empire Source: https://www.anglera.com/blog/apple-retail-retailer-playbook Published: 2026-06-05 Industries: consumer-electronics ![Apple Retail: How a Rejected Idea Built a Store Empire](/og/hero-apple-retail-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Apple lands at #11 on the [NRF Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $75.90 billion in 2025 U.S. retail sales, the National Retail Federation and Kantar report. That number belongs to a store division that did not exist until May 2001, and that the trade press greeted, at launch, with open scorn. The story of how it went from a punchline to a top-tier American retailer in two decades says something about the company that founding-myth retellings usually skip. ## A garage, then a near-death Apple's origin is well worn but worth the specifics. Steve Jobs, Steve Wozniak, and Ronald Wayne formed a partnership on April 1, 1976, to sell Wozniak's Apple I board. Jobs sold his Volkswagen van and Wozniak sold his HP-65 calculator to raise the first $1,300. Wayne, uneasy about personal liability, sold his stake back for $800 twelve days later. Investor Mike Markkula's $250,000 and operating discipline turned the partnership into a real company in January 1977, per [Wikipedia's Apple Inc. history](https://en.wikipedia.org/wiki/Apple_Inc.). Two decades later, Apple was nearly gone. By the mid-1990s it had bled market share to cheaper Windows PCs and couldn't ship a modern operating system. Apple bought NeXT, the company Jobs founded after his 1985 ouster, for roughly $427 million in early 1997, and Jobs quietly returned as an advisor. When boardroom turmoil followed, Jobs was named interim CEO that September. He cut Apple's product line by about 70 percent, according to the same Apple Inc. history, betting the company's survival on doing far less, far better. ## A Target executive builds a store nobody asked for The retail chapter starts in that same rebuilding period, and it starts with an unlikely hire. In January 2000, Apple recruited Ron Johnson, then a senior merchandising executive at Target, to run retail operations, according to [Wikipedia's profile of Johnson](https://en.wikipedia.org/wiki/Ron_Johnson_(businessman)). Apple had already failed once at retail, through store-within-a-store partnerships that never gave it control of the customer experience. This time, instead of leasing floor space in someone else's building, Johnson's team and a group led by Disney veteran Allen Moyer built full-scale mockups of a prospective Apple Store inside a warehouse near Cupertino, testing layout and flow in private for months before a single customer saw it. That caution looked justified when the concept leaked. Retail and business press greeted the idea of a computer maker opening its own stores with open skepticism. Chains like CompUSA and Egghead were already showing that computer retail was a brutal, thin-margin business, and Apple was a company that had just survived near-collapse. Betting scarce cash on real estate and store staff, rather than concentrating on products alone, read to outside observers as a distraction Apple could not afford. Apple opened its first two stores anyway, in Tysons Corner, Virginia, and Glendale, California, on May 19, 2001. More than 7,700 people showed up and spent roughly $599,000 across the two locations that weekend, per [Wikipedia's Apple Store history](https://en.wikipedia.org/wiki/Apple_Store). ## Faster than any retailer, on record The doubts didn't survive contact with the sales floor. Apple's retail division reached $1 billion in annual sales in 2004, described by that same Wikipedia history as the fastest any retailer had ever hit that mark, and grew to $1 billion in quarterly sales by 2006. By 2011, global retail revenue topped $16 billion, and Apple's U.S. stores were generating an average of $473,000 in revenue per employee, a figure that made Apple's small-footprint mall stores among the most productive retail real estate in the country. The stores also became architectural statements. The best known, the glass-cube Apple Fifth Avenue in Manhattan, was shaped with input from architect Peter Bohlin, and the company later patented both the cube's design and its glass staircase. Most stores were designed by Bohlin Cywinski Jackson or Foster + Partners, an unusual level of design investment for a retail chain selling consumer electronics rather than luxury goods. By the time the format had matured, Apple was operating more than 500 stores across 27 countries and regions, a footprint most of which is far smaller in square footage than a typical department store anchor. ## The unusual bet: a store built to sell you less Every Apple Store carries a Genius Bar, the in-store repair and support counter Johnson's team is credited with inventing, alongside free "Today at Apple" sessions that teach photography, music, and coding rather than pushing a cash register. That is the detail worth sitting with. Apple's hardware margin is locked in before a customer ever walks through the door, so the store itself was never built to be the profit center. It was built to be the reason someone trusts the brand enough to pay full price for the next device, and the place they go when something breaks instead of a repair shop or a return counter. Most electronics retailers of that era were optimized for the register. Apple optimized its stores for time spent not buying anything, and treated that as the investment. That inversion did not travel well when its architect tried to export it. Johnson left Apple in 2011 after roughly seven and a half years to become CEO of JCPenney, where he attempted a similar experience-first overhaul on a struggling department-store chain and was pushed out within eighteen months, per the same Wikipedia profile. The Apple Store model, it turned out, depended on a hardware business that could subsidize the experiment. A legacy retailer selling apparel on thin margins couldn't absorb the same bet. Apple's store business is barely older than a generation, built on the back of a company that had nearly vanished a few years earlier. What it proves is less about computers than about patience: the willingness to mock up a format in a warehouse for months, ignore the press coverage calling it a mistake, and let a store that rarely asks for a sale become one of the most valuable pieces of real estate per square foot in American retail. Behind every storefront on this list, there's a supply chain, a catalog, or a data system quietly making the experience possible, and that's the infrastructure this series keeps coming back to. --- # Albertsons: How a Boise Grocer Built a Banner Empire Source: https://www.anglera.com/blog/albertsons-retailer-playbook Published: 2026-06-05 Industries: grocery-cpg ![Albertsons: How a Boise Grocer Built a Banner Empire](/og/hero-albertsons-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Albertsons ranks #10 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $81.77 billion in U.S. retail sales in 2025. Behind that number sits one of grocery's stranger survival stories: a company that got split in half by a leveraged buyout, operated as two separate businesses for seven years, then quietly stitched itself back together and came out bigger than before. ## A district manager's side bet Joe Albertson spent the 1920s and 1930s climbing the ranks at Safeway, eventually running stores as a district manager. In 1939 he left, mortgaged his life insurance policy for $7,500, and partnered with L.S. Skaggs, whose family had helped build Safeway itself, and Tom Cuthbert to open a single store in Boise, Idaho. It was 10,000 square feet, roughly eight times the size of a typical 1930s grocery, and the opening ad promised "Idaho's largest and finest food store." It had an in-store bakery, homemade ice cream, and one of the first magazine racks in American retail. Sales topped $170,000 in year one against a $9,000 profit, according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/albertsons-inc-history/). The original three-way partnership dissolved in 1945, and Albertson incorporated the business on his own. By 1947 he had six Idaho stores and his own poultry-processing operation. The chain pushed into Washington, Utah, Oregon, and Montana through the 1950s and went public in 1959, twenty years after that first store opened. ## The combination-store bet, twice Albertson's most consequential early decision was a rerun of his own founding partnership. In 1969 the company teamed up again with Skaggs, this time Skaggs Drug Centers, to build combination food-and-drug stores as large as 55,000 square feet, nearly double the conventional supermarket of the day. The logic was margin: pharmacy and cosmetics carried better returns than groceries, and a bigger box meant more shelf for both. The Skaggs partnership ended amicably in 1977, but the format it proved out became the industry standard, and Albertson's kept building on it, adding electronic price scanners and superstores through the late 1970s and into the 1980s, per [Wikipedia's account of the company's history](https://en.wikipedia.org/wiki/Albertsons). Growth after that came almost entirely through acquisition. The 1998 purchase of American Stores Company was the biggest deal in company history at the time, bringing Acme, Jewel-Osco, Lucky, and Osco Drug under one roof. In 2004 Albertsons paid $2.5 billion for Shaw's and Star Market from Britain's Sainsbury's. Each deal added a regional name, and each time the company made the same choice: keep the local banner rather than repaint it. ## Split in two, then sewn back together That acquisition run stalled hard in 2006. A consortium led by Cerberus Capital Management and SuperValu bought the company and carved it apart: SuperValu took most of the store base and the Albertsons name for accounting purposes, while a Cerberus-controlled entity called Albertsons LLC kept roughly 661 stores across five divisions. For seven years, two separate companies operated stores that customers still walked into as "Albertsons." The unwind came in March 2013, when SuperValu sold the "New Albertsons" stores back to Cerberus, reunifying ownership under one roof for the first time since the buyout. Cerberus wasn't finished shopping: a $385 million deal for United Supermarkets in 2013 was followed by the transformative one, a $9.2 billion merger with Safeway that closed in January 2015 and pushed the combined company past 2,200 stores. Albertsons finally went public again in June 2020, fourteen years after Cerberus took it private. The company's next headline swing was an attempt to merge with Kroger, announced in October 2022 at $24.6 billion, with a divestiture package of stores earmarked for C&S Wholesale Grocers to satisfy regulators. Washington, Colorado, and the FTC all sued to block it during 2024, and a federal judge ruled against the deal that December, ending the largest supermarket merger ever attempted in the U.S., according to [Wikipedia's coverage of Kroger](https://en.wikipedia.org/wiki/Kroger). Albertsons kept operating as it had before the announcement. ## The unique insight: Albertsons never wanted one name The pattern across nine decades is not "grow the Albertsons brand." It's the opposite. Every major deal, American Stores in 1998, Shaw's in 2004, Safeway in 2015, added stores that kept their own names: Vons in Southern California, Jewel-Osco in Chicago, Acme in Philadelphia, Randalls and Tom Thumb in Texas, Carrs in Alaska. Most consolidators standardize signage to capture efficiency; Albertsons has spent decades doing the reverse, betting that a shopper's loyalty to "their" regional grocer is worth more than the marketing simplicity of one national name. That is arguably the real product of the company: not a supermarket format, but a portfolio of trusted local identities held together by shared buying power and supply chain, an approach that let it survive a leveraged breakup that would have killed a company built around a single brand. | Year | Move | |---|---| | 1939 | First store opens in Boise | | 1969 | Combination food-drug format launched with Skaggs | | 1998 | American Stores deal adds Acme, Jewel-Osco, Lucky | | 2006 | Cerberus/SuperValu buyout splits the company in two | | 2013 | Ownership reunified under Cerberus | | 2015 | Safeway merger closes, 2,200+ stores | | 2020 | IPO after 14 years private | | 2024 | Kroger merger blocked, terminated | Every regional banner on an Albertsons receipt is a small monument to a company that got bought, split, and put back together, and decided the fastest way to be trusted everywhere was to never look the same anywhere. --- # Target: How a Minneapolis Dry-Goods Store Invented Cheap Chic Source: https://www.anglera.com/blog/target-retailer-playbook Published: 2026-06-04 Industries: grocery-cpg ![Target: How a Minneapolis Dry-Goods Store Invented Cheap Chic](/og/hero-target-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Target is No. 8 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers) list, with $102.72 billion in 2025 U.S. retail sales, compiled annually by the National Retail Federation with Kantar. The bullseye is one of the most recognized logos in American commerce, but the company behind it started 60 years before that logo existed, as a dry-goods store in downtown Minneapolis run on Presbyterian principles. ## A minister who became a merchant George Draper Dayton wanted to be a minister. Business found him instead. Born in 1857 in Clifton Springs, New York, he moved to Minnesota in 1883 and built early wealth in mortgages and banking before turning to retail. In 1902 he bought a struggling operation called Goodfellow & Co. on Nicollet Avenue and reorganized it as Dayton's Dry Goods Company, according to [Wikipedia's history of Dayton's](https://en.wikipedia.org/wiki/Dayton%27s). The store didn't sell liquor and didn't open on Sundays, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/target-corporation-history/). Dayton ran it as an extension of his belief in "the service of others," a philosophy he carried into the Dayton Foundation and decades of civic giving in Minneapolis. By the 1920s the store was a multimillion-dollar business. When George's son Nelson took over in 1938, the company was already valued at $14 million. Nelson died in 1950, and leadership passed to five Dayton cousins, a generational handoff that could easily have calcified into a comfortable, regional department-store chain. Instead the cousins modernized aggressively. In 1956 they opened Southdale Center in suburban Edina, the first fully enclosed, climate-controlled shopping mall in the United States, a format that would reshape American retail geography for the next half-century. ## The bet that mattered: 1962 Then came the bet that actually defines the company today. In 1962, the Dayton Company opened its first Target discount store in Roseville, Minnesota, under retail executive John Geisse and Douglas Dayton. Four stores were operating across Minnesota suburbs by year's end. The pitch, in Geisse's own words as recorded by Wikipedia, was "high-quality merchandise at low margins because we are cutting expenses," not cutting quality. Here is the detail that gets lost in most retellings: 1962 wasn't just the year Target launched. It was the year discount retailing itself was born, in triplicate. Sam Walton opened his first Walmart in Rogers, Arkansas. S.S. Kresge Company opened its first Kmart in Garden City, Michigan, on January 25 of that year, according to [Wikipedia's Kmart history](https://en.wikipedia.org/wiki/Kmart). Three chains, one year, one new format: the big-box discount store. The unique insight worth naming plainly: the three founders came from opposite ends of retail, and that pedigree is still visible in each chain's DNA six decades later. Kresge had spent 60 years running five-and-dime variety stores, small-format, low-margin, no design ambition. Walton had run rural Ben Franklin variety-store franchises. Target alone came out of a full-line, fashion-forward metropolitan department store that had just built America's first indoor mall. Dayton's brought merchandising instincts, visual display standards, and a taste level that discount retail had never had to cultivate before, because none of its other competitors had it in their institutional memory. That's the real explanation for why Target became "cheap chic" and its 1962 classmates didn't: it isn't a marketing accident from the 1990s, it's an inheritance from 1902. ## Turning taste into a business model That inheritance sat dormant for decades while Target simply grew. The parent company merged with Detroit's J.L. Hudson Company in 1969 to form Dayton Hudson Corporation, then added Mervyn's in 1978 and Marshall Field's in 1990, per FundingUniverse. By 1979 Target had already become the largest revenue generator inside a company that still bore other names. The design bet got explicit under Robert Ulrich, who became chairman and CEO in 1994. Ulrich pushed Target to commission name designers for everyday goods, most famously Michael Graves' teakettles and housewares, positioning Target as visibly, deliberately different from Kmart and Walmart on the same shelf category. It worked well enough that Target became a genuine cultural reference point, nicknamed "Tar-zhay" by shoppers who wanted to needle the pretension of a discount store with department-store manners. By 2000, discount stores generated roughly 80% of corporate revenue, and the company retired the Dayton Hudson name entirely to become Target Corporation. Target's grocery push followed a similar slow-build pattern: Target Greatland in 1990, the first SuperTarget hypermarket format in 1995, and PFresh in 2008, which roughly tripled grocery selection inside standard stores, according to Wikipedia. Each step made Target a more credible one-stop grocery and general-merchandise trip without abandoning the design differentiation that built the brand. ## The two hard chapters Not every bet paid off. Target's 2013 entry into Canada, built on acquired Zellers store leases, collapsed within two years, closing in 2015 after accumulating roughly $2 billion in losses, per Wikipedia's account, a widely cited cautionary case in retail market-entry planning. The same December 2013 brought a data breach affecting up to 110 million customers, ultimately costing Target $10 million in consumer settlements and $39 million to settle with banks. Both chapters are part of the record, not incidental footnotes, and both preceded a period of real self-correction: continued investment in e-commerce (Target.com relaunched independently in 2011), a raised minimum wage reaching $15 an hour by 2020, and a deepened bench of owned brands like Good & Gather and Cat & Jack that now anchor entire categories. Target also made a notable structural trade in 2015, selling its pharmacy and clinic business to CVS Health for about $1.9 billion, converting more than 1,600 in-store pharmacies to CVS operation, a bet that focus in general merchandise and grocery mattered more than owning every department under one roof. Every catalog line, every store shelf, and every mall built around a discount chain rests on the same unglamorous infrastructure: the data, the supply routes, and the buying decisions nobody sees from the sales floor. --- # Lowe's: The Hardware Store That Invented Big-Box Retail First Source: https://www.anglera.com/blog/lowes-retailer-playbook Published: 2026-06-04 Industries: building-materials ![Lowe's: The Hardware Store That Invented Big-Box Retail First](/og/hero-lowes-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Lowe's comes in at #9 on the [NRF Top 100 Retailers 2026](https://nrf.com/research-insights/top-retailers/top-100-retailers), the National Retail Federation's annual ranking compiled with Kantar, with $83.96 billion in 2025 U.S. retail sales. The popular version of home-improvement history credits Home Depot with inventing the category. The record says otherwise: Lowe's built the economic engine of price-disrupting building-materials retail three decades earlier, then spent the 1990s racing to catch up to the store format its own idea had made possible. ## A General Store on Main Street L.S. Lowe opened a general store in North Wilkesboro, North Carolina, in 1921, selling hardware, dry goods, and groceries to a small Appalachian foothills town, according to [Lowe's own corporate history](https://corporate.lowes.com/who-we-are/our-history). It was a modest operation with no obvious path to national scale. When Lowe died in 1940, ownership passed to his daughter, Ruth Buchan, who sold the business to her brother James for $4,200, according to [Wikipedia's account of the company's founding](https://en.wikipedia.org/wiki/Lowe%27s). James then brought in Ruth's husband, Carl Buchan, as a partner in 1943. Buchan is the pivotal figure most casual retail histories skip past. He saw the same thing every returning GI and every small-town builder in the Southeast saw in 1946: a wave of postwar home construction was coming, financed by the GI Bill and pent-up demand after fifteen years of Depression and war had frozen the housing market. Rather than keep the store as a general-goods operation, Buchan acquired a controlling stake and refocused it entirely on hardware and building materials, betting the whole business on that one forecast, per [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/lowes-companies-inc-history/). ## The Idea Nobody Credits Lowe's For The bet alone wasn't the innovation. The innovation was how Buchan intended to fund and price it. He began buying directly from manufacturers in bulk, cutting wholesalers out of the chain entirely, according to FundingUniverse. That single decision is the same disintermediation logic that would later get attributed to the category-killer big-box format Home Depot popularized starting in 1978. Lowe's was running that playbook, in miniature, in small-town North Carolina more than three decades before "big-box" was a term anyone used. The scale followed. A second store opened in Sparta, North Carolina, in 1949. The company incorporated formally as Lowe's North Wilkesboro Hardware, Inc. in 1952, and by 1955 it had grown to six stores. Buchan died in 1960, and his executive team took the company public the following year as Lowe's Companies, Inc., listing shares at $12.25. By 1962 it had 21 stores and $32 million in revenue. By the late 1960s that had grown past 50 stores and $100 million in sales, and by 1979, the year Lowe's listed on the New York Stock Exchange, revenue had climbed to $900 million across more than 200 stores, helped by an in-house financing program that got local builders FHA-approved construction loans. ## The Whiplash Decade Lowe's built its first half-century almost entirely around the contractor: the builder buying lumber and fixtures by the truckload. That model has a flaw. Contractor demand is brutally cyclical, tied to interest rates and housing starts, and the early 1980s housing downturn hit Lowe's hard enough that Chairman Robert Strickland and President Leonard Herring pushed through a strategy called RSVP, for retail sales, volume, profit, redesigning stores around the do-it-yourself consumer instead of the tradesman, according to FundingUniverse. It worked fast: Lowe's crossed $1 billion in annual sales in 1982, and by 1983 consumer sales had overtaken contractor sales for the first time in company history. Then the ground moved again. Home Depot, founded only in 1978, built stores nearly five times the size of a typical Lowe's location and turned "warehouse" into the default shape of home-improvement retail. By 1989 Home Depot had passed Lowe's as the industry's largest chain. Lowe's spent the next several years converting its entire real estate footprint, store by store, from roughly 20,000-square-foot neighborhood locations into 75,000-square-foot-plus warehouse formats, a $71.3 million restructuring that began in 1991. By 1996 more than 400 stores had made the conversion and revenue had nearly tripled to $8.6 billion. ## Finding Ground Home Depot Didn't Hold Matching the warehouse format wasn't enough on its own; Lowe's needed reasons for shoppers to choose it specifically. It kept serving contractors even after the consumer pivot, leaned into major appliances, added home electronics and home office equipment in 1994, and built out interior design services that Home Depot largely skipped, per FundingUniverse. Geographic expansion under CEO Robert Tillman through the late 1990s and early 2000s pushed the company out of its Southern base into the Midwest, Northeast, and West, accelerated by the 1999 acquisition of Eagle Hardware & Garden and a first Canadian store in Hamilton, Ontario. | Year | Milestone | |---|---| | 1921 | L.S. Lowe opens general store in North Wilkesboro, NC | | 1946 | Carl Buchan refocuses the store on building materials, buys direct from manufacturers | | 1961 | Company goes public as Lowe's Companies, Inc. | | 1982-83 | RSVP strategy shifts focus to consumers; $1B sales year | | 1991-96 | Store fleet converted to warehouse format to match Home Depot | | 1999 | Eagle Hardware & Garden acquisition, first Canadian store | | 2021 | Company centennial | Lowe's crossed into Fortune's 100 list in 2002 with $22 billion in revenue, launched Lowes.com back in 1995, brought on Marvin Ellison as president and CEO in 2018, and marked its hundredth year in business in 2021. Today it operates roughly 1,750 stores and employs about 270,000 people, permanently seated as the number-two hardware and building-materials chain behind Home Depot, a position it has held since 1989. The century-long thread running under all of it is the same one Carl Buchan pulled in 1946: figure out where the materials come from, cut out whoever doesn't need to be in the middle, and get the price and the product to the person building something. Every era since has just been a new answer to that same question. --- # How Lonestar Electric Supply Built a Top-15 Player in a Decade Source: https://www.anglera.com/blog/lonestar-electric-distributor-playbook Published: 2026-06-04 Industries: electrical ![How Lonestar Electric Supply Built a Top-15 Player in a Decade](/og/hero-lonestar-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Lonestar Electric Supply landed at [number 12 on Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for the electrical vertical, with $1.7 billion in fiscal 2025 revenue, up three spots from No. 15 the year before. That placement sits next to distributors that have been operating since before World War II. Lonestar was founded in 2015. ## The number that matters more than the revenue Eleven years is nothing in electrical distribution. WESCO traces back to Westinghouse's supply arm in 1922. Border States has been employee-owned since 1968. Rexel and Sonepar are French holding companies with roots older than the interstate highway system. The electrical channel does not usually produce new entrants at scale, because the capital intensity of inventory and the trust required to get on a contractor's bid list both compound slowly. Lonestar compounded fast instead. Founded in Houston and describing itself as "the fastest growing wholesale electric distributor," the company has pushed from a single regional operation to [25-plus locations across Texas, Oklahoma, Louisiana and Tennessee](https://www.lonestarelectricsupply.com/about), $275 million-plus in local inventory, 225-plus outside sales associates, and more than 6,000 customer accounts. Getting from zero to a $1.7 billion, top-15 national footprint inside one decade is the actual story here, and it did not happen by accident. It happened by design. ## Win the market, then hand it to someone who already has The mechanism is a market president structure layered under a holding-company architecture. Lonestar is not one brand doing one thing everywhere. It is a parent company running distinct operating units, Lonestar Equipment Solutions, Lonestar Integrated Solutions, and Lonestar Electric Industrial Supply among them, each with its own specialization and, increasingly, its own named leader accountable for a specific geography. When Lonestar opened in Waco this year, the announcement did not center on square footage. It centered on Ricky Palmer, a 25-year veteran of the Waco electrical market, installed to run the branch, with [Market President Derek Jones framing the move as leveraging eleven years of Dallas-Fort Worth infrastructure](https://tedmag.com/lonestar-electric-supply-expands-into-central-texas/) rather than starting cold. Northeast Oklahoma got the same treatment: a Broken Arrow facility timed to open summer 2026 to double the company's Oklahoma presence, justified by [Market President Jason Rhines citing data center, manufacturing, and industrial demand in the Tulsa corridor](https://tedmag.com/lonestar-electric-supply-expands-into-northeast-oklahoma/). The pattern repeats across every expansion: identify a market already showing demand signals, then buy or build local credibility rather than parachute in a generic branch. ## Bolt-on M&A as a shortcut around the trust problem Greenfield branches cover new geography. Acquisitions cover geography plus an existing customer book, which is the harder asset to build from scratch in a relationship-driven channel. In July 2026, Lonestar [acquired Industrial Cable Solutions, a roughly 25-employee distributor in West Monroe and Ruston, Louisiana](https://tedmag.com/lonestar-electric-supply-acquires-industrial-cable-solutions/) specializing in industrial automation and structured cabling. CEO Jeff Metzler's framing was explicit about intent: ICS gave Lonestar an instant, credible position along the I-20 corridor rather than years of cold-calling contractors who already had a supplier. ICS keeps its existing facilities and staff. Lonestar keeps the relationships that took someone else a decade to build. That is the pattern behind New Orleans, Baton Rouge, and Lafayette too: a Gulf South build-out that mixes new branches with targeted purchases, each one picked for a specific corridor or vertical rather than a blanket geographic sweep. ## Reading the capex supercycle correctly The newest piece of the model, a division called Lonestar CORE, launched in June 2026 under Lonestar Electric Industrial Supply president Kevin Hogan. CORE stands for CapEx, Optimization, Reliability, and Execution, and it exists to be [a single point of accountability for materials on capital-intensive projects](https://tedmag.com/lonestar-electric-industrial-supply-launches-new-division/): data centers, utility interconnection work, combined-cycle generation, renewables, oil and gas pipelines. Hogan's own words were direct: customers are taking on bigger, more complex capital projects than distributors have historically had to coordinate for. That is the honest tension in Lonestar's whole trajectory. The company's growth curve lines up almost exactly with the Gulf South and Southern Plains buildout of data centers, LNG infrastructure, and industrial manufacturing capacity over the past decade. A distributor built to move fast on emerging demand is extremely well positioned while that capex supercycle runs. The same speed and geographic concentration that built the top-15 ranking would be tested hard if hyperscaler and industrial capital spending in exactly those markets ever cooled at once. Lonestar has not diversified away from that exposure. It has doubled down on it, which is a legible bet, not a hidden one. ## The insight, stated plainly Lonestar's moat is not inventory or scale in the way a century-old distributor's is. It is organizational: a holding-company structure that lets each region operate like a locally led business while still rolling up into $1.7 billion of collective purchasing power and a national ranking. Most of the companies above Lonestar on the MDM electrical list built that structure over eighty or a hundred years. Lonestar built a version of it in eleven, by hiring market presidents with existing local reputations and buying companies that already had the customer trust a new branch would take years to earn. Distribution rankings like MDM's tend to reward accumulated history. Lonestar's placement on the 2026 list is a reminder that the underlying advantages, local trust, inventory depth, catalog accuracy, technical sales relationships, can still be assembled quickly by a company willing to buy and hire its way to credibility rather than waiting to age into it. This is the fourth installment of Distributor Playbooks, a series on the operating models behind the companies that move North America's physical goods, one branch, one catalog, and one truckload at a time. --- # Kendall Electric's Growth Model: One ESOP Buys Another Source: https://www.anglera.com/blog/kendall-electric-distributor-playbook Published: 2026-06-04 Industries: electrical ![Kendall Electric's Growth Model: One ESOP Buys Another](/og/hero-kendall-electric-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Kendall Electric lands at #14 on the electrical vertical of [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual scorecard of North America's largest wholesale distributors. MDM doesn't disclose a revenue figure for the Portage, Michigan-based company, which is itself a small tell: Kendall Electric is 100% employee-owned, and employee-owned companies are under no obligation to publish what they make. That ownership structure is not incidental to how Kendall competes. It is the strategy. ## The five-decade ESOP Kendall Electric has been, in its own words, "a valued member of the electrical distribution channel for [five decades](https://tedmag.com/kendall-electric-pledges-250000-to-next-level-now/)," which puts its roots in the early 1970s. It now operates as the flagship division of The Kendall Group, a holding structure that also owns IRIS (lighting), Merlo Energy, Galloup, Relay and Power Systems, Great Lakes Automation, and Kendall Lighting Center, according to the [company's own site](https://www.kendallelectric.com/). Kendall Electric itself runs 60-plus branches out of five distribution centers across nine states, serving manufacturing, utilities, construction, machine builders, and system integrators. Electrical distribution has spent the last fifteen years consolidating hard, and the dominant pattern is well known: a private-equity platform or a national player like Sonepar, WESCO, or Rexel buys a family-owned regional wholesaler, and the founders cash out. Kendall Group has grown too, by acquisition, but it has quietly run the opposite play. ## Buying other owners, not just other branches When Kendall Electric acquired [Becker Electric Supply](https://tedmag.com/kendall-electric-acquires-becker-electric-supply/) in 2019, adding eight branches across Ohio, Indiana, and Georgia, the messaging was pure continuity: customers were told their sales reps, product specialists, and accounts payable contacts would stay exactly the same. Two years later, Kendall did it again with [Rumsey Electric](https://tedmag.com/kendall-electric-acquires-rumsey-electric/), and this time the shared trait was explicit in the announcement: both companies were employee-owned, and leadership framed the deal as bringing "two of the country's best distribution networks together" on that common cultural footing. At the time, the combined Kendall Group spanned six divisions and more than 70 locations in nine states. That is the unique insight worth naming plainly: Kendall Group's M&A engine is an ESOP acquiring other ESOPs. In a sector where consolidation almost always means a founder-owned business converting into a financial sponsor's portfolio company, Kendall has instead used acquisition to extend employee ownership outward, absorbing companies that already ran on the same model rather than replacing that model with one owned by outside capital. It is a slower way to grow. The pool of employee-owned electrical distributors willing to sell to another employee-owned distributor is a fraction of the pool of family owners willing to take a private-equity check. But it is a way of growing that keeps the incentive structure identical on both sides of the deal, which is likely why Kendall's post-acquisition announcements read less like corporate integration memos and more like reassurances that nothing will actually change. ## Competing nationally without going national The other half of Kendall's model is cooperative rather than proprietary. John Harman, president of The Kendall Group, chairs supplyFORCE, the program inside the AD (Affiliated Distributors) buying group that lets independent electrical distributors jointly service large, multi-branch national accounts, the kind of business that would otherwise flow automatically to Sonepar or WESCO by virtue of their footprint. In July 2026, AD moved to [acquire supplyFORCE outright](https://tedmag.com/ad-announces-intent-to-acquire-supplyforce/), with Harman telling the trade press that "independents will require increasingly more complex and technically advanced solutions" to keep winning that kind of work. The strategic logic is straightforward once you see it: a regional employee-owned distributor cannot match a national player's branch count alone, so instead of either selling out for the scale or trying to out-build it, Kendall helps run the shared infrastructure that lets independents pool coverage for the accounts that demand it. Kendall doesn't need to own branches in every state a national customer operates in. It needs to belong to a network that collectively does, and it has positioned its own leadership at the center of that network's next phase. ## The trade-off None of this comes free. Growth-by-culture-fit means Kendall passes on acquisition targets that a PE-backed competitor would take without hesitation, and staying private means the company's actual scale, revenue, employee count, EBITDA, is simply not visible to the market the way a public or sponsor-owned rival's is. MDM's own "not disclosed" line for Kendall's FY2025 revenue is the plainest evidence of that opacity. For a company competing against businesses that publish quarterly numbers, operating without that scoreboard is itself a choice, one that only works if the ownership model keeps generating enough loyalty and continuity to make disclosure unnecessary. Every distributor on the MDM list is, underneath the branch counts and revenue tables, a bet on how to organize people, catalogs, and warehouses well enough that customers never have to think about where the part came from. Kendall Group's version of that bet is that the ownership structure is the product. --- # Building an attribute schema for Health & Supplements that shoppers and AI can actually use Source: https://www.anglera.com/blog/health-supplements-attributes Published: 2026-06-04 Industries: health-supplements ![Building an attribute schema for Health & Supplements that shoppers and AI can actually use](/og/hero-health-supplements-attributes.jpg) A supplement facts panel tells a shopper what's in the bottle. It does not tell a filtered-search facet or an AI shopping agent whether that bottle is vegan, third-party tested, or dosed for someone over 50. Those are two different jobs, and most Health & Supplements catalogs only do the first one. ## The attributes a supplement facts panel doesn't cover Every supplement label legally has to disclose serving size, servings per container, and the amount of each dietary ingredient, under [21 CFR 101.36](https://www.ecfr.gov/current/title-21/chapter-I/subchapter-B/part-101/subpart-C/section-101.36). That's the compliance layer. It's necessary and it's usually the only structured data a brand feed actually carries. The commerce layer sits on top of it, and it's where most catalogs go blank: - **Form** — capsule, softgel, gummy, powder, liquid, tablet - **Potency per serving, in a standardized unit** — milligrams, micrograms, or IU, normalized so a 1,000 IU vitamin D3 and a 25 mcg vitamin D3 read as the same strength - **Servings per container and days-supply**, so a shopper can compare cost-per-month, not just price-per-bottle - **Active ingredient / formulation type** — e.g., "vitamin D3 (cholecalciferol)" vs. "vitamin D2 (ergocalciferol)," which are not interchangeable to a filter or an AI agent - **Diet and lifestyle claims** — vegan, non-GMO, gluten-free, kosher, halal - **Allergen declarations** — the nine major allergens (milk, egg, fish, crustacean shellfish, tree nuts, peanuts, wheat, soybeans, and sesame, added by the [FASTER Act](https://www.fda.gov/food/food-allergies/faster-act-sesame-ninth-major-food-allergen) effective January 2023) - **Third-party certification** — NSF Certified, USP Verified, Informed Sport/Choice, or none, which is itself a meaningful filter for anyone buying for an athlete on a testing protocol - **Life stage / age group** — prenatal, kids, 50+, general adult - **Flavor and delivery format** for gummies and powders None of this is exotic. It's the stuff a shopper actually types into a search box or asks an AI assistant. And almost none of it lives in a supplement facts image or a free-text description field, which is exactly where most PIMs still park it. ## Why a missing attribute deletes the product, not just the detail A faceted search filter and an AI shopping agent both work the same way: they read structured fields, not photos, and they treat a blank field as "unknown," not "yes" or "no." A vegan protein powder with no `diet_claims` field doesn't get excluded from a vegan-only search view — it never appears in it. The product isn't found and rejected; it's invisible. The same failure shows up on the AI side. Structured product data — schema.org `Product` markup, feed attributes, standardized units — is what an AI shopping agent parses to compare options; without it, the agent either skips the listing or falls back to whatever text it can scrape, per [reporting on agentic commerce feed requirements](https://www.lengow.com/get-to-know-more/chatgpt-product-feed/). If your feed says "1000" in a potency field with no unit, or "gluten free" only inside a paragraph of marketing copy, an AI agent building a comparison table across brands has nothing to hook the claim to. It won't guess. It'll just leave your product out of the answer. ## A vitamin D3 bottle, before and after Here's a fairly typical raw feed for a store-brand vitamin D3 bottle, and what it looks like enriched to the attribute set above. | Field | Raw feed | Enriched | |---|---|---| | Title | "Vitamin D3 Softgels 120ct" | "Vitamin D3 (Cholecalciferol) 2000 IU Softgels, 120ct" | | Form | — (in title only) | Softgel | | Potency | — | 2000 IU (50 mcg) per serving | | Servings / days supply | — | 120 servings / 120-day supply | | Active ingredient | — | Cholecalciferol (D3) | | Diet claims | — | Non-GMO | | Allergens | — | Contains: none of the 9 major allergens | | Certification | "third-party tested" (body copy) | NSF Certified | | Life stage | — | Adult, general | | Serving frequency | "take as directed" | 1 softgel daily | The raw version reads fine to a person scanning the bottle. It's unfilterable and unquotable to a machine — there's no field an AI agent or a facet can point to for "2000 IU," "non-GMO," or "NSF Certified." Ask an AI shopping assistant to "recommend a non-GMO vitamin D3 at 2000 IU that's third-party tested," and the enriched version is eligible to be surfaced with a specific, checkable reason; the raw version is guessed at, or skipped. ## Structuring it so it holds up Group the schema into layers instead of one flat attribute list: 1. **Identity** — product name, brand, form, flavor, GTIN 2. **Potency** — active ingredient, standardized dose unit, servings per container, days-supply 3. **Claims and diet** — vegan, non-GMO, gluten-free, kosher/halal, allergen-free declarations mapped to the nine major allergens 4. **Certification** — named third-party seal (NSF, USP, Informed Sport) as a controlled value, not free text 5. **Audience** — life stage, age group, intended use occasion (sleep, immune, joint, prenatal) The controlled-value part matters more than the list itself. "Non-GMO," "Non GMO," and "GMO-free" are the same claim to a shopper and three different values to a filter unless someone normalizes them. That normalization work — mapping messy supplier text to a consistent schema, flagging gaps by SKU, and keeping it current as formulations change — is what Anglera does continuously on top of whatever PIM or feed a retailer already runs. It doesn't replace the catalog system of record; it keeps the attributes in it complete and machine-readable, so the same bottle of vitamin D3 shows up whether a shopper clicks a filter or asks an AI to find one. --- # Adding Product JSON-LD on a headless storefront — and keeping it in sync Source: https://www.anglera.com/blog/headless-product-json-ld Published: 2026-06-04 Platforms: headless ![Adding Product JSON-LD on a headless storefront — and keeping it in sync](/og/hero-headless-product-json-ld.jpg) Once your product data is enriched — accurate names, brand, identifiers, specs, and use-cases — the remaining problem is mechanical: getting that data onto the page as structured data that search crawlers and AI agents can both parse reliably. On a headless storefront (Next.js, Remix, Nuxt, Astro, or a custom React/Vue front end talking to Shopify Hydrogen, commercetools, BigCommerce, or a similar API-first backend), there's no theme layer auto-injecting JSON-LD, so it has to be built and maintained deliberately. Here's how to do that and keep it from drifting out of sync with what shoppers actually see. ## Where the JSON-LD should live Google recommends JSON-LD over microdata or RDFa because it's easier to maintain at scale, and Googlebot does support structured data injected dynamically via JavaScript, once it renders the page. But that rendering is a second, queued pass, not what happens on first crawl, and most AI crawlers (the ones behind shopping agents and answer engines, as opposed to Googlebot) don't execute JavaScript at all — they only ever see the initial HTML response. On a headless stack, the safest default is emitting the JSON-LD during server-side rendering or static generation, not injecting it client-side after hydration. If your framework supports SSR or SSG for the product route (Next.js server components, Remix loaders, Nuxt, Astro server islands), emit the JSON-LD there, from a small server-side function that takes your normalized product object and returns the payload — called from the same data-fetching path that renders the page body, not a separate client-side call. Same source, same render pass: that's what prevents most sync bugs. ## Which fields actually matter Google distinguishes two markup profiles under the same `Product` type: **product snippets** (pages where the product can't be bought directly, e.g., an editorial page) and **merchant listing** markup (actual purchase pages, which almost every retailer PDP is). For merchant listing eligibility, the required fields are `name`, `image`, and a nested `offers` object with `price` and `priceCurrency`. Everything else is "recommended," but in practice determines whether Google, and AI shopping agents parsing the same markup, can identify and rank your product: - **`name`** — should match the on-page H1 exactly, not a truncated or keyword-stuffed variant. - **`brand`** — a nested `Brand` object; this is one of the signals Google and shopping-focused AI agents use to match your listing to a known product entity rather than treating it as generic. - **`sku`** — your internal identifier. Useful for your own systems but not a cross-retailer identifier. - **`gtin`** (or `gtin8`/`gtin12`/`gtin13`/`gtin14`/`isbn`) — the actual global identifier (UPC/EAN/ISBN). This lets Google and AI agents match your product to the same item sold elsewhere, which matters for comparison-shopping surfaces and price-comparison answers. Omit it if you genuinely don't have one (private-label items often don't), but don't fabricate one — Google treats structured data that doesn't match reality as a policy violation. - **`mpn`** — manufacturer part number, useful alongside GTIN for durable goods and electronics. - **`offers`** — a single `Offer` with `price`, `priceCurrency` (ISO 4217, e.g., `USD`), `availability` (a schema.org `ItemAvailability` value like `https://schema.org/InStock`), and `url`. Google's merchant listing markup requires `Offer` specifically — `AggregateOffer` is only accepted on product-snippet pages, not on a page where the product is actually for sale. If your PDP defaults to one variant, `offers.price` should reflect that variant, not the catalog's lowest or first price. For a page listing multiple variants, model it as a `ProductGroup` with `hasVariant`, giving each variant its own `Product` and its own single `Offer`, per Google's product-variants documentation. - **`aggregateRating`** — only include this if you have real, on-page reviews. It requires `ratingValue` and `reviewCount` (or `ratingCount`), plus `bestRating`/`worstRating` if your scale isn't 1–5. This is the field most often flagged in Search Console because it's easiest to let drift out of sync (see below). ## Populating these fields without hand-authoring per SKU None of this should be hand-written per product page. The JSON-LD generator should read from the same normalized product record your page component renders from — typically whatever your PIM or commerce API returns after enrichment, mapped once into a `Product` shape at the data layer. If your PIM stores GTIN/UPC, brand, and structured attributes as first-class fields, the mapping is closer to a rename than a transform. If those fields are inconsistently populated, the JSON-LD will inconsistently reflect that — structured data can't invent identifiers or specs your PIM doesn't have. ## Keeping JSON-LD in sync with the rendered page This is where most headless implementations break, usually invisibly. The failure modes to guard against: - **Divergent data sources.** If price/availability come from a live inventory API for the visible page, but the JSON-LD was generated from a cached or stale feed, they'll disagree during flash sales or stockouts. Google's structured data policies require markup to be "a true representation of the page content" — a mismatch like this is exactly what gets flagged. - **Rating drift.** If a live review widget loads client-side from a reviews platform but the JSON-LD `aggregateRating` was baked in at build time, the two will disagree as new reviews come in. Regenerate `aggregateRating` from the same reviews API the widget reads, on the same render cycle. - **Variant mismatches.** If your PDP defaults to a specific variant (size/color) based on the URL or a query param, the JSON-LD should reflect that variant's price and SKU, not the catalog's cheapest or first variant. - **Client-side-only injection.** Avoid patterns that inject the JSON-LD script tag after the page has already painted — it works for a browser, but many AI crawlers and some Googlebot passes won't wait for it. The simplest guard rail is architectural: write one function that both the visible price/name/availability UI and the JSON-LD generator call, so there is exactly one source of truth per field, not two implementations that can silently diverge. ## A real example ```json { "@context": "https://schema.org/", "@type": "Product", "name": "Trailhead 32L Daypack", "image": [ "https://example.com/images/trailhead-32l-1x1.jpg", "https://example.com/images/trailhead-32l-4x3.jpg", "https://example.com/images/trailhead-32l-16x9.jpg" ], "description": "32-liter daypack with a hydration sleeve, hip-belt pockets, and a rain cover, built for single-day hikes and light overnights.", "sku": "TH-32L-GRN", "mpn": "TH32-GRN-001", "gtin13": "0810055551234", "brand": { "@type": "Brand", "name": "Trailhead Gear" }, "offers": { "@type": "Offer", "url": "https://example.com/products/trailhead-32l-daypack", "priceCurrency": "USD", "price": 129.00, "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.6, "reviewCount": 214 } } ``` Render this inside a script tag (type application/ld+json) in the page's server-rendered output. ## How to validate - **View source vs. rendered DOM.** Run `curl -s https://example.com/products/trailhead-32l-daypack | grep -A 40 "application/ld+json"` (or view your framework's SSR output directly) to confirm the JSON-LD ships in the initial HTML response, not just in the browser's rendered DOM. If it only shows in the dev tools' "Elements" panel but not in "View Source" or curl output, it's being injected client-side and needs to move server-side. - **Rich Results Test.** Paste the live URL into Google's [Rich Results Test](https://search.google.com/test/rich-results) to see it fetched and rendered the way Googlebot does, or paste the raw JSON-LD snippet for a quick syntax and required-field check before deploying. The tool checks syntax and required properties — it does not check whether `aggregateRating` or `price` actually match what's rendered on the page, so a green check isn't proof of sync; that's a separate audit against the live DOM. - **Search Console.** Once indexed, the Merchant listings report surfaces field-level warnings across your catalog (missing GTIN, mismatched availability, etc.) at scale, which a one-off test on a single URL won't catch. **Verified as of July 2026** against Google's Search Central documentation for Product structured data. These field requirements are Google-specific rich-result rules, not schema.org requirements — schema.org itself doesn't enforce required properties, so recheck Google's pages directly for any given rich-result feature, since they evolve. None of this JSON-LD is useful if the underlying fields — GTIN, brand, structured attributes, use-case descriptions — aren't populated and current in your PIM to begin with. That's the half of this problem Anglera handles: it continuously enriches product data at the source, so whatever mapping layer you build here has real, accurate values to render instead of blanks. --- # Gresco Utility Supply: The Distributor That Also Sells Drones Source: https://www.anglera.com/blog/gresco-distributor-playbook Published: 2026-06-04 Industries: electrical ![Gresco Utility Supply: The Distributor That Also Sells Drones](/og/hero-gresco-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Gresco Utility Supply lands at #17 on the electrical list in [Modern Distribution Management's 2026 Top Distributors report](https://www.mdm.com/top_distributors), the trade publication's annual ranking of North America's largest wholesale distributors. What earns Gresco its spot isn't a bigger truck fleet or a deeper conduit aisle. It's a second company operating inside the first one: a division that sells drones, LiDAR sensors, and inspection robots to the same rural electric cooperatives that buy its wire and hardware. ## Sixty-five years of serving co-ops nobody else wanted Gresco has supplied "Cooperatives, IOUs, Municipals, and Contractors across the Southeast" since 1960, according to its [profile with the Florida Municipal Electric Association](https://www.flpublicpower.com/associate-membership/gresco-utility-supply-inc), where it has held associate membership since 2016. That's the unglamorous core of the business: power distribution equipment, tools and safety gear, lighting, telecom hardware, sold to electric co-ops and small municipal utilities that the national distributors often treat as an afterthought. Gresco is headquartered in Wildwood, Florida, and runs multiple warehouse locations to keep that inventory close to customers who can't afford a truck to sit at a weigh station for two days when a line goes down. Steve Gramling serves as President and CEO. It's a model that looks conservative on paper: a regional player, deep in a channel (rural electric cooperatives) that private equity roll-ups have mostly ignored because the customers are small, price-sensitive, and loyal to whoever shows up. ## The pivot nobody expected from an electrical supply house In the early 2010s, Gresco stood up Gresco Technology Solutions (GTS), a subsidiary headquartered in Forsyth, Georgia, according to [coverage of its 2021 partnership with Censys Technologies](https://uasweekly.com/2021/10/26/censys-technologies-partners-with-gresco-technology-solutions/). GTS wasn't a side hustle. It became a full distribution arm for unmanned aircraft systems, LiDAR, and robotics aimed squarely at grid inspection, then expanded its reach nationally, per [reporting on its 2024 partnership with GeoCue](https://uasweekly.com/2024/08/05/geocue-welcomes-gresco-technology-solutions-to-its-distribution-network/). The partner list reads like a who's-who of utility-inspection technology rather than a single proprietary product line. Censys Technologies brought long-range, beyond-visual-line-of-sight drones in 2021. GeoCue added TrueView 3D imaging sensors and LP360 processing software in 2024. [Thread's UNITI Workspace software](https://insideunmannedsystems.com/thread-announces-partnership-with-gresco-technology-solutions/) plugged in that same year to automate flight planning and imagery upload for line crews. Ali Ahmed, GTS's Director of UAS, framed the Thread deal as part of "delivering cutting-edge drone solutions" to utility customers already on Gresco's books for conduit and connectors. Here's the timeline that matters: | Year | Move | |---|---| | 1960 | Gresco founded, electrical/utility supply for Southeast co-ops | | Early 2010s | Gresco Technology Solutions (GTS) launched in Forsyth, GA | | 2016 | Associate membership, Florida Municipal Electric Association | | 2021 | Censys Technologies partnership brings BVLOS drones to GTS line | | 2024 | Thread and GeoCue partnerships add flight-ops software and LiDAR | ## The insight: two distributors sharing one customer list The pattern worth naming plainly: Gresco isn't diversifying into technology the way most distributors do, by adding a smart-thermostat SKU to an existing catalog. It built a parallel distribution business, with its own subsidiary brand, its own technical specialist (Ahmed's UAS title didn't exist at a typical electrical house a decade ago), and its own vendor roster, then pointed it at the exact customer base the core business already had relationships with. A line crew supervisor at a rural co-op who orders switchgear from Gresco on Tuesday can order a beyond-visual-line-of-sight drone survey package from the same company on Wednesday. That's a genuinely different playbook than the acquisition-fueled consolidation most of the MDM electrical list is running. Gresco isn't buying smaller electrical houses to add branches. It's importing an entirely different product category, aerial and ground robotics, into a relationship built on decades of trust selling copper and PVC. ## The trade-off underneath it The risk in that model is real and worth stating rather than glossing over. GTS's strength is curating best-in-class partners rather than owning proprietary technology, which means Gresco carries no lock-in advantage over a rival that signs the same OEMs. Censys, GeoCue, and Thread can all sell through other channels; nothing stops a competing distributor, or the utilities themselves, from going direct. Gresco's bet is that the relationship and the service layer, jobsite training, flight planning support, inventory proximity, are harder to replicate than the hardware. For a company that has kept small electric cooperatives as customers for sixty-five years, that's a bet grounded in an actual track record rather than a hope. It also means running two different sales motions inside one building: a low-margin, high-volume commodity business and a specialized, consultative technology practice. Keeping both sharp, without one starving the other of management attention, is the harder problem than winning either deal. Every company on this list runs on the same unglamorous plumbing: catalogs that describe what's actually in stock, branches that put it close to the customer, and data that tells a distributor what its next move should be. Gresco just proved that plumbing can carry more than pipe and wire. --- # Getting footwear products recommended by ChatGPT, Gemini, and AI shopping Source: https://www.anglera.com/blog/footwear-aeo Published: 2026-06-04 Industries: footwear ![Getting footwear products recommended by ChatGPT, Gemini, and AI shopping](/og/hero-footwear-aeo.jpg) A shopper looking for a trail running shoe no longer starts with a search bar full of blue links. They ask ChatGPT, Gemini, or Google's AI Mode a full sentence: what's the best option, for this foot, this budget, this use case. The engine answers with a short list, and most footwear brands never make that list, not because the product is wrong for the shopper, but because the data behind it never told the AI enough to include it. ## The channel shift is not hypothetical anymore AI-driven traffic to U.S. retail sites rose 393% year over year in Q1 2026, and shoppers arriving from AI sources are converting 42% better than traffic from any other channel, a full reversal from a year earlier when AI traffic converted worse than everyone else, according to [Adobe's Q1 2026 traffic report covered by TechCrunch](https://techcrunch.com/2026/04/16/ai-traffic-to-us-retailers-rose-393-in-q1-and-its-boosting-their-revenue-too/). Adobe's own writeup is blunter about the cause: [most retail sites still aren't built to be read by machines](https://business.adobe.com/blog/ai-traffic-surge-retail-sites-not-machine-readable), which is a data problem before it's a marketing problem. OpenAI has been building the retrieval side of this to match. Its [product discovery documentation](https://openai.com/index/powering-product-discovery-in-chatgpt/) describes ChatGPT parsing structured feeds and evaluating specific attributes against a shopper's query, then ranking matches, not paging through product descriptions written for a human eye. [Instant Checkout](https://openai.com/index/buy-it-in-chatgpt/), live since September 2025, lets a shopper buy the shoe without leaving the chat, which means the moment your product gets recommended is closer to the moment it gets purchased than it has ever been in ecommerce. Google's Shopping Graph, meanwhile, now indexes more than 60 billion product listings with roughly 2 billion updates per hour, a scale confirmed at Google I/O 2026 and detailed in [an explainer on what the graph actually reads from a feed](https://feedops.com/google-shopping-graph-explained/). It reads GTIN, brand, MPN, title, price, availability, and variant attributes like size, color, material, and pattern grouped by `item_group_id`. Feed freshness matters more here than in classic Shopping ads, because AI Mode prefers live inventory data over a nightly batch file. ## Why footwear specifically gets punished for thin data Footwear is one of the least forgiving categories for sparse attributes. A single style can spawn dozens of SKUs across size, width, and colorway, and an AI answer engine has to resolve all of that before it can safely recommend the product. Google requires color, size, age group, gender, size system, and size type for every apparel and footwear listing, and per [Google Merchant Center's structured data guidance](https://support.google.com/merchants/answer/6386198?hl=en), missing any one of them can get the item disapproved outright, not just deprioritized. That is the mechanism worth internalizing: an AI shopping agent is not being generous or stingy with your brand. It is pattern-matching a shopper's question against fields it can trust. If the fields are missing, the product is functionally invisible, no matter how good the shoe is. Here is what that gap looks like in practice, using a typical trail runner feed pulled straight from a supplier file versus the same product enriched for AI legibility. | Attribute | Raw supplier feed | AI-ready enrichment | |---|---|---| | Title | `Trail Runner Shoe - Mens` | `Men's Waterproof Trail Running Shoe, Wide Fit, Vibram Outsole` | | GTIN | missing | `00887350000123` | | Width | not specified | Standard (D), Wide (2E), Extra Wide (4E) — sold separately by SKU | | Drop / stack height | not specified | `8mm drop, 32mm stack height` | | Use case | "for running" | `Technical trail, loose rock, wet conditions` | | Weight | not specified | `10.8 oz (size 9, single shoe)` | | Waterproofing | not specified | `Yes, breathable membrane, not fully submersible` | Ask an AI to recommend "a waterproof wide-width trail running shoe under $150 for someone who overpronates," and the enriched row above gives the model six separate fields to match against; the raw row gives it none. One of these products can be recommended with confidence. The other cannot be recommended at all, regardless of how good it actually is on the trail. ## What machine-readable footwear data actually requires A few things separate a catalog an AI agent can use from one it skips past: - **A valid, unique GTIN per size and colorway variant**, not a single UPC shared across a style. [Google is explicit](https://support.google.com/merchants/answer/6324461?hl=en) that GTINs are one of its strongest matching signals for grouping and comparing offers. - **Full variant attributes on every SKU**: size, width, size system, color, material, and `item_group_id` so the AI can tell a men's 10.5 wide from a women's 9 standard without guessing. - **Fit and use-case language a shopper would actually type**: overpronation support, drop, stack height, wide-toe-box, waterproof rating, terrain type. These are the phrases that show up in the conversational queries answer engines are built to match. - **Freshness**: stock status and price that reflect current inventory, since AI Mode and ChatGPT both favor live data over stale exports. - **Consistency across every surface**: the same spec on your PDP, your feed, and your schema markup. Contradictions between them read as untrustworthy data to a model, per the same Shopping Graph mechanics above. None of this requires ripping out a PIM or a feed pipeline. It requires someone, or something, continuously checking every SKU against that list and filling the gaps before an AI agent ever sees the row. That's the layer Anglera runs on top of whatever system already holds your footwear catalog, PIM, spreadsheet, or none of the above. It scores every product against the attributes AI shopping agents actually parse, flags what's missing or inconsistent, and enriches the gaps so the wide-width waterproof trail runner your customer is asking for shows up as an answer instead of a miss. --- # The product-data metrics Beauty & Cosmetics teams should actually track Source: https://www.anglera.com/blog/beauty-metrics Published: 2026-06-04 Industries: beauty ![The product-data metrics Beauty & Cosmetics teams should actually track](/og/hero-beauty-metrics.jpg) Most beauty and cosmetics teams can tell you last quarter's revenue by SKU. Far fewer can tell you whether a shopper searching "shade 240" got zero results, or whether last month's return spike traces back to a missing undertone attribute. That gap is the point of this post: a short list of metrics that connect product data quality to money, ranked by whether they lead or lag the outcome, with concrete ways to measure each one. ## Leading vs. lagging: why the order matters Data-quality work shows up in leading indicators first (completeness, search performance) and lagging indicators weeks later (returns, repeat purchase). If you only watch revenue, you'll miss the mechanism and end up unable to explain why a quarter was good or bad. | Metric | What it shows | Leading/lagging | How to measure | |---|---|---|---| | Attribute completeness rate | % of required fields (shade, undertone, finish, ingredient list, skin type, coverage) populated per SKU | Leading | Export from PIM/catalog against a required-fields schema; score weekly | | On-site search zero-results rate | Share of searches returning no products | Leading | Site search analytics (Algolia, Klevu, native platform search logs) | | PDP conversion rate | Sessions to PDP that convert to add-to-cart/purchase | Leading-to-mid | GA4 or platform analytics, segmented by PDP completeness tier | | Organic clicks to PDPs | Non-branded search traffic landing on product pages | Leading-to-mid | Google Search Console, filtered to PDP URL patterns | | AI referral/citation traffic | Sessions from AI answer engines (ChatGPT, Perplexity, Gemini, AI Overviews) | Leading-to-mid | GA4 channel/source-medium, referrer domain grouping | | Return rate by reason code | Returns tagged "not as described," "wrong shade," "wrong size" vs. all other reasons | Lagging | Returns platform (Loop, Narvar, Returnly) reason-code export | | Support tickets per 1,000 orders | Pre-purchase questions about spec, shade, or ingredients | Lagging | Helpdesk tags (Gorgias, Zendesk) mapped to SKU | | AOV and attach rate | Average order value and % of orders with 2+ items | Lagging | Order data, segmented by whether a "complete the routine" module fired | ## Attribute completeness: the metric nobody baselines Completeness is the one metric that's entirely within your control and predicts almost everything below it. For beauty specifically, "complete" isn't just title, price, and one photo — it's shade name and hex/undertone, finish (matte, dewy, satin), coverage level, skin type suitability, key ingredients and actives, size/volume, and a cruelty-free/vegan flag where relevant. Score every SKU against that schema, segment by category (color cosmetics, skincare, fragrance), and track the trend weekly. This is a leading indicator: it moves before conversion or returns do, so it's your earliest signal that enrichment work is landing. ## The beauty-specific case: shade data and zero-results Take a foundation line with 40 shades. If shade descriptions are inconsistent — some SKUs have undertone and finish, others just a number — two things happen simultaneously. First, on-site search for "shade 240" or "warm undertone matte" returns nothing or the wrong result, and zero-results pages are a documented conversion killer: shoppers who hit one are meaningfully more likely to leave the session without converting, and search visitors overall convert at multiples of the site average — Algolia's benchmark data shows searchers converting 1.8x higher than average across surveyed retailers, with Amazon's search conversion jumping roughly 6x over browse-only traffic ([Algolia](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics)). Losing that traffic to a zero-results page is losing your highest-intent visitors. Second, incomplete shade data drives returns after purchase. Color cosmetics already carry some of the highest return rates in ecommerce — shade mismatch alone pushes returns into the 12–25% range for foundation and similar products, well above skincare ([Free Yourself](https://freeyourself.com/blogs/news/beauty-product-online-return-rates-in-2025)). Broader ecommerce research backs the mechanism: nearly two in five online shoppers report returning an item because it didn't match its listing, and a majority say better descriptions would directly improve their experience ([Inriver](https://www.inriver.com/resources/choosing-the-right-tools-for-efficient-product-data-enrichment/)). That's not a support problem or a fulfillment problem. It's a data problem, and it shows up on two different P&L lines: lost conversion at the top of the funnel and reverse-logistics cost at the bottom. ## PDP conversion, organic, and AI referral: measure them together PDP conversion for beauty and personal care generally sits in the 3–5% range industry-wide, with some sources citing figures as low as ~2.5% and others closer to 5%, depending on category mix and methodology ([Statista](https://www.statista.com/statistics/1416169/global-conversion-rate-health-and-beauty/)). Don't chase the industry number — baseline your own PDPs, segment by completeness tier (fully enriched vs. partially enriched vs. thin), and track the delta over time. That delta, not the absolute number, is your evidence. Organic clicks to PDPs (Search Console, filtered to product URL patterns) tell you whether better attributes and descriptions are earning more non-branded search visibility. AI referral traffic — sessions arriving from ChatGPT, Perplexity, Gemini, or AI Overview citations, visible in GA4 source/medium and referrer data — is worth watching as one more discovery channel alongside organic and marketplace, not the headline metric. Structured, complete, factually grounded product data tends to help across all three channels at once, because search engines and AI systems are both, fundamentally, reading the same underlying attributes. ## Attribution: be honest about what data work actually caused The clean way to attribute a lift to data work is a phased rollout, not a single before/after comparison. Enrich one category or SKU cohort first, leave a comparable cohort untouched for the same window, and compare conversion, zero-results rate, and return rate between the two — controlling for the same traffic sources and season. If you can't run a holdout, at minimum log the exact date each SKU crossed a completeness threshold and use that as your cohort-split variable in existing dashboards. Resist crediting a single metric move to data quality if a promotion, price change, or seasonal spike happened in the same window. ## Vanity metrics to skip Total SKU count, raw page views, and "% of catalog with at least one image" all look good in a slide and tell you almost nothing about buyer experience. A SKU with one blurry photo and no shade data counts the same as a fully enriched one under that last metric — which is exactly the gap that matters. The through-line across every metric above is the same: get the right shopper to the right product at the right moment, then remove every remaining reason not to buy. Anglera's job is the data work that makes those leading indicators move — scoring, gap-filling, and enriching attributes from real source documents, on top of whatever PIM (or no PIM) a beauty brand already runs — so the metrics in this table actually have something to track. --- # Walgreens: From a Chicago Corner Store to a Private Split-Up Source: https://www.anglera.com/blog/walgreens-retailer-playbook Published: 2026-06-03 ![Walgreens: From a Chicago Corner Store to a Private Split-Up](/og/hero-walgreens-retailer-playbook.jpg) *Part of [Retailer Playbooks](/blog/retail-playbooks) — history-first profiles of every company on the [NRF Top 100 Retailers list](https://nrf.com/research-insights/top-retailers/top-100-retailers).* Charles Rudolph Walgreen bought one drugstore on Chicago's South Side in 1901. A century later, the company he built ranks #7 on the [National Retail Federation's Top 100 Retailers 2026 list](https://nrf.com/research-insights/top-retailers/top-100-retailers), with $112.05 billion in 2025 U.S. retail sales. The stranger part of the story is what happened after it got that big: the same year it made this list, Walgreens was quietly taken apart. ## A Pharmacist Buys the Counter He Worked Behind Walgreen had trained as a pharmacist and worked the counter at the very drugstore he eventually purchased on Chicago's South Side. That detail matters more than it sounds. He wasn't a financier spotting an opportunity in retail; he was the guy who filled the prescriptions, and he bought the store because he thought he could run it better than his boss did. Early on he manufactured his own line of drug products to control quality and keep prices competitive, and he added soda fountains with lunch service, turning the pharmacy into a place people wanted to linger, not just a place they had to stop. ## The Milkshake and the Whiskey The 1920s made Walgreens a household name for reasons that had almost nothing to do with medicine. In 1922, an employee named Ivar Coulson added scoops of vanilla ice cream to the standard malted milk recipe at the soda fountain, and the malted milkshake was born, selling for 20 cents a glass and turning Walgreens counters into social destinations across Chicago. At the same time, Prohibition-era law allowed pharmacies to sell whiskey by prescription, and Walgreens sold plenty of it at a markup, funding a growth spurt that took the chain from nine stores in 1916, the year Walgreen incorporated the business, to 65 stores by mid-1925. The company went public in 1927 and had grown to 397 stores with $4 million in annual sales by 1930, right as the Depression hit. ## Surviving 1930 by Selling More, Not Less Most retailers contracted hard in the early 1930s. Walgreens, oddly, kept growing: sales actually rose to $52 million in 1930 before the broader collapse forced wage cuts and new employee benefit funds to hold the workforce together. The company leaned into marketing rather than retreating from it, becoming one of the first drugstore chains to advertise on radio in 1931, and when Prohibition ended in 1933, it moved fast to acquire liquor licenses and add another retail category to the mix. The instinct to expand into a downturn, rather than away from it, shows up again and again in how the company handled later crises. ## The Self-Service Bet That Doubled Revenue The most consequential operational decision in Walgreens history probably isn't the milkshake. It's 1952, when the company opened its first self-service store under Charles Walgreen's grandson, Charles R. Walgreen III, who also pushed barcode scanning and larger-format "Superstores" into the chain. Self-service was counterintuitive at the time: bigger stores with open shelving actually required more staff, not less, and pharmacy executives worried it would cannibalize the personal-counter relationship that built the brand. Instead it did the opposite. Sales climbed from $163 million in 1950 to $312 million by 1960, even as the total store count shrank, because volume per location went up faster than headcount did. It's the clearest early proof that Walgreens' real skill was never the drugstore format itself; it was rebuilding the format every couple of decades before a competitor forced the issue. ## Building a Global Pharmacy Giant The 2000s and 2010s were an acquisition binge. Walgreens bought the Happy Harry's chain across the Mid-Atlantic in 2006, then Duane Reade for $1.075 billion in 2010, keeping the New York City banner intact rather than repainting it. The bigger swing came next: a 45 percent stake in the European pharmacy group Alliance Boots in 2012 for $6.7 billion, followed by full acquisition of the remaining 55 percent in a 2014 deal involving cash and $10.7 billion in stock, creating Walgreens Boots Alliance as a new holding company with Walgreens itself becoming a subsidiary of what it had built. By 2017 the company added roughly 1,932 Rite Aid stores for $4.38 billion, a deal that needed a fourth attempt to clear antitrust review. By 2024, WBA operated nearly 12,700 locations across the U.S. and UK with over 300,000 employees, a scale that would have been unimaginable to the man who bought one Chicago storefront in 1901. ## The Bet That Didn't Pay Off, and the One That Followed It Scale brought new kinds of trouble. Walgreens poured billions into VillageMD, a primary-care clinic operator, betting that pharmacy foot traffic could anchor a broader health-services business. It also spent the 2010s and 2020s fighting opioid litigation, including a $683 million Florida settlement in 2022 and, more recently, an April 2025 Department of Justice settlement worth at least $300 million over dispensing practices. By fiscal 2024, WBA reported a negative operating income of $14.1 billion and an $8.64 billion net loss, and disclosed that only 75 percent of its 8,600 U.S. stores were actually profitable. That June, the company announced plans to close roughly 2,150 stores, a quarter of its U.S. footprint, over three years. ## Full Circle: Private, and in Pieces Here's the detail that doesn't show up in a corporate history page: when Sycamore Partners completed its $10 billion take-private deal in August 2025, ending 98 years of public trading that began with the 1927 IPO, it didn't just delist Walgreens. It split the company into five separate entities: Walgreens, The Boots Group, VillageMD, CareCentrix, and Shields Health Solutions. The consolidation Walgreens spent two decades building, folding Boots, Duane Reade, and Rite Aid stores into one sprawling structure, was largely unwound within a year of the buyout closing. A company that grew by merging pieces together ended up, at least on paper, back in pieces. Walgreens' story is really the story of the American drugstore counter itself: a place built to sell medicine that kept surviving by selling everything else, and that eventually got so big it had to be broken apart to be understood again. --- # U.S. Electrical Services: The Rollup That Kept Every Name Source: https://www.anglera.com/blog/us-electrical-services-distributor-playbook Published: 2026-06-03 Industries: electrical ![U.S. Electrical Services: The Rollup That Kept Every Name](/og/hero-us-electrical-services-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* U.S. Electrical Services sits at #10 among electrical distributors on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the trade press's annual scorecard of North America's largest wholesale distributors. That placement understates how strange the company's origin story is. USESI was built in 2006 as a quick-flip private equity rollup, nearly came apart within a year, and survived by doing something almost no consolidator does: it stopped trying to erase the companies it bought. ## A rollup built to be sold, not built to last USESI was formed in 2006 by merging eight independent electrical distributors into a single holding company, according to the [company's own history page](https://www.usesi.com/our-history-vision/). The stated intent, per that same history, was a fast financial flip: buy up regional wholesalers, staple them together, sell the combined entity for a multiple, move on. It is a familiar script in fragmented distribution categories, and it usually works because scale alone commands a premium. It did not work here. By 2007, a year after the merger closed, the venture was reportedly close to failing. The company's history page is candid about this stretch, describing new ownership stepping in and a full leadership reset that did not actually take hold until 2011, when the current management team took over with a mandate to build, not flip. That five-year gap between the founding transaction and a functioning operating company is the part of the story a glossy About page usually skips. ## The insight: consolidation without erasure Here is the strategic choice that makes USESI worth studying rather than just noting. Most rollups spend their first eighteen months killing brand names, the acquired company's signage comes down and the parent's logo goes up, because unified branding is supposed to be where the synergy lives. USESI went the other way. Two decades after that first merger, its 150-plus locations still operate under a roster of separate, regionally managed names: EW-NE, EW-CT, HZ Electric, Monarch Electric, Yale Electric, Maurice Electrical, Lade & Anlar, Standard Electric, Desert Electric, Walters Wholesale, WB Light, and US Renewable Solutions among them, each with its own division president reporting up to CEO Randy Eddy. Some of those names predate the internet by a century: Wiedenbach-Baker traces to 1913, Monarch Electric to 1928, Standard Electric to 1952, per USESI's own [company timeline](https://www.usesi.com/timeline/). That is the opposite of the standard rollup playbook, and it is a deliberate bet rather than an accident of neglect. A regional contractor who has bought wire from Monarch Electric for thirty years keeps buying from Monarch Electric, not from an unfamiliar national brand. USESI centralizes the parts that customers never see, purchasing scale, back-office systems, e-commerce infrastructure, supply chain, while leaving the parts they do see almost untouched. It is consolidation for the balance sheet and continuity for the counter. ## What the model asks in return The trade-off is real. Running fourteen regionally managed brands instead of one national identity means duplicated back-office overhead in places, slower unified marketing, and a harder job for corporate leadership trying to instill one culture across division presidents who each answer for a legacy P&L. It also means USESI never gets the simple, single-brand growth story that a WESCO or a Rexel can tell. What it gets instead is retention: fewer acquired customers leave when the name over the counter never changes, and fewer acquired employees quit when their branch keeps its own identity and its own boss. The model is still active, not a relic of the 2006 founding. In May 2024, USESI acquired [Askco Electric Supply](https://www.tedmag.com/tag/usesi), a family-owned distributor in Glens Falls, New York, founded in 1974 and run by Jim Knapp and family, folding it into the Electrical Wholesalers and HZ Electric region while keeping the Askco name on the door. In May 2025 it added Swift Electrical Supply Company. Both moves follow the same pattern set in 2006: buy the relationship, keep the name, centralize everything behind it. ## The current shape of the business Today USESI runs from Middletown, Connecticut, with more than 2,000 employees across 14 states and a stated e-commerce catalog north of 300,000 SKUs, per the [company's own site](https://www.usesi.com/who-we-are/). It reports more than $1 billion in annual revenue, though MDM's 2026 report lists the figure as not disclosed, a common gap for privately held distributors that decline to share numbers with the trade press even as they compete for placement on its list. The company has also branded a renewable-energy arm, US Renewable Solutions, positioning at least part of the portfolio toward solar and storage work rather than pure legacy electrical supply. | Era | What happened | |---|---| | 1913-1994 | Predecessor companies founded independently (Wiedenbach-Baker, Monarch Electric, Standard Electric, and others) | | 2006 | Eight distributors merged to form USESI as a rollup | | 2007 | Original venture nearly fails within a year of closing | | 2011 | New leadership team takes over with a build-to-last mandate | | 2013-2019 | Consolidation completes, new distribution centers and branches expand the Northeast and Mid-Atlantic footprint | | 2024-2025 | Askco Electric Supply and Swift Electrical Supply Company acquired, brands retained | The lesson for any distributor built through acquisition is not that USESI's approach is universally correct. Plenty of successful rollups do the opposite and win by forcing one brand, one price book, one culture. USESI's bet is narrower and more specific: in electrical distribution, where a contractor's trust in the counter staff often outlasts corporate ownership changes, the name on the building can be worth more standing than replaced. ## Series note Every distributor on the MDM list runs on the same unglamorous infrastructure underneath whatever brand is on the sign: a catalog that has to be right, a warehouse that has to ship on time, and data about both that has to hold up when the ownership structure changes and the name on the door does not. --- # Why office supplies feeds underperform on Amazon — and how to fix the data Source: https://www.anglera.com/blog/office-supplies-syndication Published: 2026-06-03 Industries: office-supplies ![Why office supplies feeds underperform on Amazon — and how to fix the data](/og/hero-office-supplies-syndication.jpg) Most office supplies sellers assume a suppressed Amazon listing is a pricing problem or a compliance flag. Usually it's simpler: the feed never had enough structured data to earn a place in search results. Amazon's catalog rules are stricter than most PIMs are built to enforce, and office supplies — full of near-identical SKUs like toner cartridges, labels, and binder sizes — is exactly the category where thin data disappears fastest. ## Why office supplies feeds are especially exposed Office products live or die on a handful of attributes that look trivial and aren't: cartridge number, page yield, pack count, compatible printer models, unit of measure. A single missing field can be the difference between a listing that surfaces for "HP 410X toner" and one that's technically live but invisible. Two structural facts make this worse for office supplies specifically: - **SKU density.** A single toner line can spawn 40+ ASINs across color, yield (standard vs. high-yield), and pack size. Feeds built for a handful of hero SKUs don't scale cleanly to that fan-out, and attributes get copy-pasted or left blank. - **Compatibility is the product.** A shopper isn't buying "a toner cartridge" — they're buying "the cartridge that works in my printer." If the feed doesn't carry compatible model numbers as structured data, Amazon's category template can't validate the listing, and neither can a shopper (or an AI agent) trying to match it. ## The bar Amazon actually enforces Amazon's category-specific attribute requirements aren't a suggestion; they're a gate. As of the 2023 expansion, Amazon added roughly 274 mandatory attributes across 200 product types, and missing or malformed fields now trigger automatic suppression rather than a rejection notice you can act on — the listing just quietly stops appearing in search ([Inriver, Amazon product data requirements](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). The identifier layer is just as unforgiving. Amazon requires a valid GTIN — sourced directly from GS1 or an authorized reseller — to create most new ASINs; unauthorized or reused UPCs get blocked outright ([Amazon Seller Central, Listing requirements: Product IDs](https://sellercentral.amazon.com/gp/help/external/200317470); [GS1 US, Barcodes for Amazon](https://www.gs1us.org/upcs-barcodes-prefixes/amazon/barcodes-for-amazon)). For office supplies brands managing dozens of cartridge and yield variants, that means every variant needs its own clean, licensed GTIN — not a reused parent UPC, not a placeholder. Add to that the newer title rules (a 200-character cap, no repeated words, special characters restricted to registered brand terms) and image rules (real product photography, no renders, product filling most of the frame), and it's clear Amazon is scoring listings on completeness and consistency before it ever scores them on price. ## What "channel-ready" looks like for a toner cartridge Here's a typical raw supplier feed row for a toner cartridge, next to what Amazon's office-electronics template actually wants populated: | Attribute | Raw feed (as received) | Channel-ready | |---|---|---| | Title | "Toner Cartridge Black" | "Compatible Toner Cartridge Replacement for HP 410X CF410X — Black, High Yield" | | GTIN | blank | Licensed UPC unique to this yield/color variant | | Cartridge/OEM number | "410X" (unstructured, in title only) | `CF410X` mapped as a structured, searchable attribute | | Compatible printers | not listed | HP Color LaserJet Pro M452dn, M452dw, M477fdw, M477fnw (structured list) | | Page yield | "high yield" | "6,500 pages at 5% coverage" | | Pack count | missing | 1-pack (with variant links to 2-pack, 4-pack) | | Chip/compatibility note | missing | Notes whether a chip reset or firmware update is needed | That right-hand column isn't cosmetic. Page yield is one of the only ways a shopper can compare cost-per-page across brands, and it depends on coverage, print settings, and document type — which is exactly why Amazon and shoppers alike expect it stated as a defined attribute, not buried in a bullet ([myCartridge, safe compatible toner buying guide](https://mycartridge.com/blogs/news/how-to-choose-safe-compatible-ink-toner-cartridges)). ## The AI shopping layer raises the bar again Ask an AI shopping assistant to "recommend a high-yield black toner cartridge for an HP M452dw that won't trigger chip errors," and the agent is doing attribute matching against structured data — compatible model, chip behavior, yield — not reading marketing copy. A listing where "compatible printers" lives only inside a paragraph of prose, or where yield is described as "long-lasting" instead of a page number, simply doesn't surface as a candidate. ChatGPT, Google AI Mode, Gemini, and Perplexity all lean on the same structured signals Amazon's own template demands; a feed that's complete for one is largely complete for the other. ## Getting from raw feed to channel-ready, continuously The mechanics repeat across every office supplies SKU family — labels need adhesive type and sheet count, binders need ring size and capacity, paper needs weight and brightness — and they repeat every time a supplier updates a spec sheet or Amazon adds a new mandatory field. Manual cleanup catches up once and drifts again within a quarter. This is the layer Anglera sits in. Your PIM stores the data; Anglera continuously scores every SKU against marketplace-specific attribute and identifier requirements, gap-fills what's missing — GTINs, compatible-model lists, yield figures, structured titles — and keeps the feed current as Amazon's rules and your catalog both change. It plugs into whatever PIM or feed you already run, without a rip-and-replace, so office supplies sellers stop discovering suppression after the fact and start shipping listings that clear the bar the first time. --- # McNaughton-McKay: The ESOP That Built a Distributor Federation Source: https://www.anglera.com/blog/mcnaughton-mckay-distributor-playbook Published: 2026-06-03 Industries: electrical ![McNaughton-McKay: The ESOP That Built a Distributor Federation](/og/hero-mcnaughton-mckay-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* McNaughton-McKay Electric Company has sold wire, conduit, and switchgear out of the Detroit area since 1910, and [Modern Distribution Management's 2026 Top Distributors research](https://www.mdm.com/top_distributors) ranks it 9th among North America's electrical distributors. That is not new: the company held the same 9th spot [in MDM's 2021 electrical ranking](https://www.mc-mc.com/resources/news/mdm-2021-top-distributor) too. What the list does not show is what sits behind that stable number: four sister distributors, run for decades under their own names, only unified into one holding brand in April 2025. The strategy behind that timing is the actual story. ## A century in Detroit, then four quiet additions McNaughton-McKay was founded in Detroit in 1910. In 2006, it converted to a 100% Employee Stock Ownership Plan, meaning the company's shares sit in a retirement trust for its own workforce rather than with a founding family, a private equity sponsor, or public shareholders. Over the following decades it assembled a small group of adjacent distributors: The Reynolds Company in Fort Worth, Caniff Electric Supply in Hamtramck, Michigan, Flow-Zone in Houston, and S&D Service & Distribution GmbH in Krefeld, Germany. Each kept its own name, sales force, and local relationships. There was no rebrand, no forced integration, no "McNaughton-McKay" signage bolted onto a Texas PVF distributor's trucks. That changed on April 24, 2025, when the parent company [introduced itself publicly as McNaughton McKay Group](https://mcmcgroup.com/news/introducing-mmg/), unifying the five businesses under one identity for the first time. CEO Mark Borin framed it carefully: the rebrand "is not about replacing individual companies, it's about elevating what we do together," according to [Distribution Strategy's coverage of the announcement](https://distributionstrategy.com/2025/04/mcnaughton-mckay-unifies-regional-brands-under-mcnaughton-mckay-group/). The individual operating companies kept their names, their websites, and their local footing. Only the corporate umbrella changed. ## The insight: a federation, not a roll-up Most large distributors expand the way Wesco, Sonepar, and Rexel do: acquire, then absorb the target's brand, systems, and pricing into the parent within a year or two, because that is how a PE-backed or public consolidator captures synergies fast enough to justify the purchase price. McNaughton-McKay did the opposite for close to forty years. It let Caniff stay Caniff and Reynolds stay Reynolds, sometimes for decades, before ever touching the branding. That patience tracks with the ownership structure. An ESOP has no outside investor pushing for a three-to-five-year exit, so there is no clock forcing integration before the model is proven at the branch level. The group now runs [more than 60 locations across nine states plus Germany](https://mcmcgroup.com/about/), with roughly 1,900 employee-owners, and was named to [NCEO's 2024 Employee Ownership 100](https://mcmcgroup.com/news/nceo-2024-100/) as the 69th-largest majority employee-owned company in the country. In a distribution sector where the electrical vertical especially has been a magnet for private equity roll-ups over the past decade, a century-old ESOP quietly building a five-brand group without ever selling to a sponsor is the unusual part of this story, not the branch count. ## Hedging the cycle: electrical plus PVF The MDM list places McNaughton-McKay in the electrical category, and the core business, wire, conduit, gear, automation components, is exactly that. But two of the group's other legs, Reynolds and Flow-Zone, sell pipe, valves, and fittings into upstream, midstream, and downstream oil and gas work. That is a genuinely different demand cycle from electrical construction. Electrical distribution tracks non-residential construction starts and industrial capex; PVF for oil and gas tracks commodity prices and drilling activity. Owning both inside one balance sheet, quietly, without ever marketing itself as a "diversified industrial distributor," gives the group a demand hedge that most single-vertical electrical distributors do not have. ## Branches still do the work None of the federation logic changes what actually wins electrical distribution deals: inventory depth, counter service, and a truck that shows up on time. The group has kept investing at that level even mid-rebrand. Its Norcross, Georgia branch recently relocated into a 140,000-square-foot facility to handle more volume near Atlanta, the kind of unglamorous capital commitment that never makes a press release headline but is exactly what determines whether a contractor reorders next month. ## The trade-off worth naming The federation model buys patience and local trust, but it carries a real cost: five brands, presumably five sets of legacy systems and processes, now need to present a coherent story to national accounts and suppliers while still running semi-independently on the ground. Unifying the brand in 2025 without unifying operations is a bet that the group can get the marketing benefit of scale, easier supplier negotiations, one story for national customers, without paying the integration cost that usually comes with it. Whether MMG can actually operate as "one team of Empowered Owners," the phrase used in its own announcement, or whether the five companies stay federated in practice as well as history, is the open question the next few years will answer. Every entry on this list runs on the same unglamorous infrastructure: a catalog that's accurate, a branch network that's stocked, and data that doesn't lie to the counter clerk. McNaughton-McKay's version of that discipline just happens to be owned by the people running it. --- # Syndicating health & supplements data to every channel without the re-keying Source: https://www.anglera.com/blog/health-supplements-syndication Published: 2026-06-03 Industries: health-supplements ![Syndicating health & supplements data to every channel without the re-keying](/og/hero-health-supplements-syndication.jpg) A bottle of magnesium glycinate looks simple on the shelf. On a marketplace feed, it's a dozen separate fields that all have to be right at once: GTIN, brand, form, dosage, serving size, allergen statement, a legible Supplement Facts image, and copy that doesn't trip an automated claims filter. Get one wrong and the listing doesn't rank poorly, it doesn't go live at all, or it gets suppressed after the fact. Here's what the bar actually looks like and how to clear it across channels without re-keying the same bottle five times. ## Why health & supplements gets special treatment Amazon treats Health & Personal Care as a restricted, higher-scrutiny category, and dietary supplements sit inside it as their own compliance track. Sellers may need to show Certificates of Analysis from third-party testing, manufacturing documentation demonstrating cGMP compliance, and third-party certifications like NSF or USP on request, on top of the usual retail attributes ([Truli, FDA and Amazon supplement compliance](https://trytruli.com/blog/fda-amazon-supplement-compliance)). Amazon's automated systems also actively scan listing copy for disease-claim language — "lowers blood pressure," "treats diabetes" — and will flag or deactivate listings that cross the line, even when the brand's own label is careful. The company also monitors the FDA's warning letter database and pulls listings tied to enforcement actions. None of this is unique to Amazon. Walmart Marketplace, Target Plus, iHerb, and Vitamin Shoppe's marketplace all run some version of the same gate: verified identifiers, a legible facts panel image, and ingredient copy that matches the physical label exactly. The mechanism is consistent even when the specific checklist isn't: marketplaces are trying to keep a regulated category from becoming a liability, so they push the compliance burden onto the data. ## The identifier problem comes first Most new ASINs need a valid GTIN from GS1 or another Amazon-authorized source; unauthorized or reused codes get products blocked outright ([Amazon Seller Central, Guidelines for UPC and GTIN](https://sellercentral.amazon.com/help/hub/reference/external/G5JQC6VY6BVYWDPT?locale=en-US)). Supplement brands are especially prone to identifier drift because they rev formulas and flavors constantly — a "60 ct" becomes "90 ct," a formula adds vitamin K2 — and each variant needs its own clean GTIN, not a recycled one from a discontinued SKU. A PIM will happily store whatever code you type in. It won't tell you the code belongs to a different pack size on a different marketplace. ## The content and attribute bar Beyond the identifier, Amazon's Health & Personal Care guidance sets requirements that read like a lab checklist rather than a merchandising one: legible ingredient and Supplement Facts panel images uploaded as secondary product photos, all label faces visible including batch or lot code, white or light background, no watermark, minimum resolution around 1000px ([Amazon HPC Category Style Guide](https://images-na.ssl-images-amazon.com/images/G/01/SellerCentral/HPCStyleGuide.pdf)). On top of that sits the standard retail bar: title, five bullets, backend search terms, brand, and a product type with its own mandatory attribute set — Amazon defines roughly 274 mandatory attributes across 200 product types sitewide ([Inriver, Amazon product data requirements](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)), and supplements pull in fields most other categories skip entirely: serving size, servings per container, form (capsule, gummy, powder, liquid), flavor, allergen statement, and diet claims like "non-GMO" or "vegan" that have to be substantiated, not just asserted. Here's what that looks like on one real bottle, before and after: | Field | Raw brand feed | Channel-ready | |---|---|---| | Title | "Magnesium Glycinate 200mg" | "Magnesium Glycinate 200mg, 90 Capsules, Non-GMO, Vegan, Chelated for Absorption" | | GTIN | blank | 0-86xxx-xxxxx-x (GS1-issued, variant-specific) | | Serving size | not listed | 2 capsules | | Servings per container | not listed | 45 | | Form | implied by name only | Capsule | | Allergen statement | not listed | Manufactured in a facility that also processes tree nuts | | Facts panel image | none | Legible secondary image, white background, batch code visible | | Claims copy | "supports better sleep and lowers stress" | "supports relaxation as part of a healthy routine" (structure/function only, no disease claim) | The left column is what most PIMs receive from a supplier spec sheet. The right column is what a marketplace will actually accept. That gap is where listings get rejected, suppressed, or buried below competitors with cleaner data. ## Why re-keying doesn't scale The instinct is to fix each field by hand per channel: one team member patches the Amazon listing, another handles Walmart, a third redoes it for the brand's own DTC site. That works for ten SKUs. A supplements brand with a multivitamin, a kids' line, three flavors, and two pack sizes is already at sixty variants, each needing channel-specific title lengths, image specs, and attribute names for the same underlying facts. Re-keying at that scale is how brands end up with three different serving sizes for the same bottle across three channels — which is exactly the kind of inconsistency that gets a listing flagged during a compliance sweep. ## Ask an AI to recommend a magnesium supplement Try it: ask ChatGPT or Google's AI Mode to "recommend a chelated magnesium supplement for sleep, vegan, under $25." The models lean on structured, consistent attributes — form, dosage, dietary claims, price — pulled from wherever the data is cleanest and most complete, not necessarily from the biggest brand. A bottle with a blank serving-size field or a claim that reads as unsubstantiated is easy for an AI agent to skip past in favor of one that answers the question outright. Anglera sits on top of whatever PIM or spreadsheet already holds your supplement catalog and does the mapping and gap-filling work channel by channel — building out the serving size, form, allergen, and claims fields each marketplace requires, flagging copy that reads as a disease claim before a retailer's filter does, and keeping pack-size variants from drifting out of sync. Your PIM stores the data. Anglera makes sure every channel gets a version of it that's complete enough to go live. --- # Getting enriched product data onto a headless storefront product pages Source: https://www.anglera.com/blog/headless-data-to-page Published: 2026-06-03 Platforms: headless ![Getting enriched product data onto a headless storefront product pages](/og/hero-headless-data-to-page.jpg) Once a product attribute is enriched, whether that's a spec, a use-case, or an identifier, it usually lands in a metafield or a PIM-fed field, not directly in a template. On a headless storefront there is no theme editor auto-binding that field to a section; a developer has to expose it through the API, query it in the route, and render it into markup that both a browser and a non-JS crawler can see. This guide walks through that path end to end on Shopify's Hydrogen storefront framework, since it's the most common current path to "headless" for retailers already on Shopify, and the same sequence (expose in API, query in a data loader, render server-side) applies conceptually to any headless commerce platform. ## Where the enriched data actually lives On Shopify, enriched attributes that don't fit a native product field (price, title, description) live as metafields, scoped to a namespace and key, for example `specs.battery_life` or `specs.use_case`. A metafield only becomes visible to a storefront-facing API once it has a metafield definition with its Storefront API access explicitly opened up. That's set on the definition itself: ```graphql mutation CreateSpecDefinition { metafieldDefinitionCreate( definition: { name: "Battery life" namespace: "specs" key: "battery_life" type: "single_line_text_field" ownerType: PRODUCT access: { storefront: PUBLIC_READ } } ) { createdDefinition { id } userErrors { field message } } } ``` As of API version 2025-01, Shopify removed the older `metafieldStorefrontVisibilityCreate` mutation; `access.storefront: PUBLIC_READ` on the definition is now the mechanism. Anything written to that metafield, whether by a merchant, a PIM sync job, or an enrichment tool, is invisible to the Storefront API until this step is done. This is worth checking first when a value shows up in the Shopify admin but not on the storefront: it's very often a definition-visibility gap, not a data problem ([Shopify: Retrieve metafields with the Storefront API](https://shopify.dev/docs/storefronts/headless/building-with-the-storefront-api/products-collections/metafields)). ## Querying it through the Storefront API Once a definition is public, the Storefront API can return it on any `product` query, either as a single `metafield(namespace, key)` field or, more usefully for a PDP with several enriched attributes, as a list via `metafields(identifiers: [...])`: ```graphql query ProductWithSpecs($handle: String!) { product(handle: $handle) { id title metafields( identifiers: [ { namespace: "specs", key: "battery_life" } { namespace: "specs", key: "water_resistance" } { namespace: "specs", key: "use_case" } ] ) { key namespace value type } } } ``` Note that the Storefront API is read-only for metafields: it can query them, but writing or updating them still has to go through the Admin API. That's the seam where a PIM or an enrichment pipeline pushes values in, and where the storefront pulls them out. ## Binding the query to the product route In current Hydrogen (built on React Router v7 and Vite as of 2026), the product page is a route file, typically `app/routes/products.$handle.tsx`, with a `loader` that runs server-side before the component renders and a component that reads the result. This is the binding step: the loader is what turns "a metafield exists in the API" into "data available to this template." ```tsx export async function loader({params, context}: Route.LoaderArgs) { const {handle} = params; const {storefront} = context; const {product} = await storefront.query(PRODUCT_QUERY, { variables: {handle}, }); if (!product?.id) { throw new Response('Not found', {status: 404}); } return {product}; } export default function Product() { const {product} = useLoaderData(); const specs = (product.metafields ?? []).filter(Boolean); return (

{product.title}

{specs.map((m) => (
{m.key.replace(/_/g, ' ')}
{m.value}
))}
); } ``` Because `metafields(identifiers: ...)` returns `null` entries for any identifier that doesn't resolve (wrong namespace, missing value, no storefront access), the `filter(Boolean)` is the difference between a clean spec list and a page full of blank rows ([Shopify: Fetch Shopify API data in Hydrogen](https://shopify.dev/docs/storefronts/headless/hydrogen/data-fetching)). ## Making it readable to buyers and to AI agents A `dl`/`dt`/`dd` list satisfies a human reader, but agents and crawlers that don't execute JavaScript, and a growing share of AI answer engines fall in that bucket, only see what the server actually sent in the HTML response. Because Hydrogen renders the loader's data server-side by default, the specs above are already present in that first response, not injected after hydration. Worth also emitting the same values as `Product` structured data, server-rendered in the same route, so both the visual PDP and the machine-readable layer come from one query instead of drifting apart: ```tsx const productJsonLd = { '@context': 'https://schema.org/', '@type': 'Product', name: product.title, additionalProperty: specs.map((m) => ({ '@type': 'PropertyValue', name: m.key, value: m.value, })), }; ``` ```tsx ``` ## Keeping the JSON-LD in sync with the visible page The most common failure mode isn't a missing field — it's drift: the markup says "in stock" while the page shows a backorder message, or the JSON-LD price doesn't match an active promotion. A few practices prevent this: - **Extend the base helper instead of building a parallel one.** Your override runs inside the same `schemaData` pipeline the controller already populates, so it inherits the same page-cache and CDN invalidation behavior as the rest of the PDP, instead of becoming a second code path someone forgets to update. - **Read prices and availability from the API at render time**, not from values already serialized elsewhere on the page, so a price-book or inventory refresh updates both the visible price and the JSON-LD together. - **Reuse the reviews widget's own data source** for `aggregateRating` rather than a separately-synced copy, so a stale cache on one can't disagree with the other. - **Guard against nulls.** Variant-heavy PDPs mean `getUPC()`, `getBrand()`, or `getEAN()` can return `null` at the master level. Strip undefined keys before serializing rather than emitting `"gtin12": null`, which some validators flag. ## How to validate - **Check what's already there first.** View-source (or `curl`) a live PDP and look for an existing `application/ld+json` block before assuming you're starting from nothing — SFRA's base helper may already be emitting a thin version. - **View-source vs. rendered DOM**: since this markup is added server-side in ISML, `curl` and "View Page Source" should match the rendered DOM exactly. If they differ, something client-side is mutating or duplicating it — check for a second copy added by a tag manager or a reviews widget. - **`curl` spot-check**: ```bash curl -s "https://www.example.com/s/Example/merino-wool-crew-socks/701643328912M.html" \ | grep -A 30 'application/ld+json' ``` - **Google's Rich Results Test**: paste the URL or the raw code into [search.google.com/test/rich-results](https://search.google.com/test/rich-results) to confirm the Product type is detected and see which properties are read as required vs. recommended. - **Schema.org validator**: [validator.schema.org](https://validator.schema.org) is useful for a stricter, vendor-neutral check of the JSON-LD syntax itself, separate from Google's rich-result eligibility rules. - Spot-check PDPs across categories (a plain product, a variant master, an out-of-stock item) — these are where null fields or availability mapping bugs tend to show up first. Verified as of July 2026 against Salesforce's [SFRA developer guide](https://developer.salesforce.com/docs/commerce/sfra/guide/b2c-sfra-features-and-comps.html), the [B2C Commerce Script API reference](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/api/class_dw_catalog_Product.html), and Google's [merchant listing structured data documentation](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing). Note: Salesforce's separate "structured data for meta tags" pilot applies to B2B Commerce's LWR-based storefronts, not B2C Commerce/SFRA, so extending the base helper above remains the standard path for SFCC. None of this works if the underlying fields are thin — a `brand` that's blank, a `gtin` no one ever populated, a description that's one generic sentence copied across a thousand SKUs. That's the half of the problem Anglera is built for: it enriches product attributes, identifiers, and use-case detail directly in your PIM or product catalog on an ongoing basis, so the fields this guide maps into JSON-LD (`brand`, `gtin`, `mpn`, `description`) are actually populated and current. Anglera plugs into your existing PIM or commerce platform rather than replacing it — your PIM still stores the data, Anglera keeps it enriched, and the override above is what puts it in front of buyers and AI agents alike. --- # Purvis Industries: The Distributor Built as Twelve Companies Source: https://www.anglera.com/blog/purvis-industries-distributor-playbook Published: 2026-05-30 Industries: mro-industrial ![Purvis Industries: The Distributor Built as Twelve Companies](/og/hero-purvis-industries-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Purvis Industries shows up twice on the 2026 [MDM Top Distributors list](https://www.mdm.com/top_distributors), Modern Distribution Management's annual ranking of North America's largest distributors: No. 46 in Industrial Supplies and No. 6 in Power Transmission/Bearings. Most companies that wide a footprint split it across two separate ranked competitors, one that sells bearings and one that sells everything else. Purvis does both from the same building, and it does it by refusing to present itself as one company at all. ## A holding company that says so out loud Go to [purvisindustries.com](https://www.purvisindustries.com/) or the company's [LinkedIn page](https://www.linkedin.com/company/purvis-industries/) and the self-description is unusually blunt for a distributor: it calls itself "the leadership organization for twelve strategic business units," organized to cover "Bearings & Power Transmission, Electrical, Hydraulic, Pneumatic, Mining, Conveyors" and adjacent industrial categories. That phrasing is doing real work. Most rolled-up distributors spend a decade sanding an acquisition down until it disappears into a single national brand. Purvis instead names the structure as the product: twelve business units, each apparently free to run its own specialty, under one umbrella that supplies capital and back-office support rather than a single storefront. That is the unique thing about this company relative to the rest of the mro-industrial vertical. It is not a bearings distributor that also happens to sell hydraulics. It is a federation of category specialists that happens to report to one parent. ## Why landing on two MDM lists is the tell A single-category specialist can be excellent and still only ever show up on one MDM list. A generalist industrial supply house can be enormous and still be mediocre in any one product family. Showing up at No. 6 in Power Transmission/Bearings and No. 46 in Industrial Supplies simultaneously means Purvis has built genuine depth in at least two distinct technical disciplines, not just breadth. Bearings and power transmission demand engineers who understand shaft tolerances, load ratings, and fit-for-application cross-referencing. General industrial supply is a different selling motion entirely, closer to catalog velocity and stock availability than technical spec work. Running both well, at scale, from one organization is the operational proof behind the "twelve business units" language rather than just a tagline. ## The quietest company at this size Here is the part that stands out most after digging for it: Purvis has almost no public footprint beyond its own site and LinkedIn page. MDM's own data for this year lists the company's total revenue as not disclosed. There is no steady drumbeat of acquisition press releases, no trade-press profile of a CEO explaining the growth strategy, nothing resembling the marketing rhythm that companies like Motion Industries or Applied Industrial Technologies keep up as they roll up smaller distributors. A company with enough scale to rank top ten nationally in a category most people have never heard of, and top fifty in another, has clearly chosen invisibility as a deliberate posture rather than landed there by accident. That is a real strategic bet, and it cuts both ways. Staying out of trade press means competitors spend less time reverse-engineering the playbook, and a technical buyer who finds Purvis through a specific business unit's catalog rather than a national ad campaign is a buyer who came for expertise, not marketing spend. The cost is that Purvis gets none of the recruiting halo, national account leverage, or brand recognition that a unified public identity builds over decades. Every one of those twelve units has to win its category the hard way, one technical relationship at a time, without a parent brand doing any of the convincing for it. ## The trade-off of running twelve companies at once The federated model has an honest tension baked in. Twelve business units almost certainly means duplicated back-office functions, separate vendor relationships, and no single brand a national account manager can put in front of a Fortune 500 procurement team. Compare that to the industry's dominant pattern, where an acquirer folds every purchase into one name, one catalog, one ERP, betting that scale and brand consistency beat specialization. Purvis is betting the opposite: that a bearings engineer should stay a bearings engineer rather than get cross-trained to also pitch conveyor systems, and that the resulting technical credibility is worth more than the efficiency a single brand would buy. It is a bet that only works if each unit is genuinely excellent on its own terms, because there is no shared brand equity to fall back on if one underperforms. The two MDM placements suggest it is working in at least the categories where the company chose to compete hardest. Distributors like this rarely make headlines, but they are the reason a maintenance engineer can find the exact bearing spec at 4pm on a Friday. The unglamorous discipline behind that moment, twelve catalogs' worth of it, run without a single press release, is worth studying on its own terms. --- # The product-data conversion funnel: where catalogs quietly leak buyers Source: https://www.anglera.com/blog/product-data-conversion-funnel Published: 2026-05-30 ![The product-data conversion funnel: where catalogs quietly leak buyers](/og/hero-product-data-conversion-funnel.jpg) Most retailers optimize the top of the funnel — more traffic, better ads, sharper merchandising — while the leak sits lower down, in the data behind each product page. A catalog with thin, inconsistent, or wrong attributes doesn't fail loudly. It fails quietly, one abandoned session and one unnecessary return at a time. Below is the funnel broken into six stages, the specific data failure that causes the drop at each one, and the metric you can pull this week to see it. ## The funnel, stage by stage | Stage | Data failure | What it costs you | Metric to run | |---|---|---|---| | Impression | Thin titles, missing structured attributes | Product never surfaces for the query, marketplace listing, or AI answer that would have converted | Search Console impressions/CTR by page template; marketplace buy-box/search-rank reports | | Click | Title/snippet mismatch with actual product | Wrong-intent clicks, high bounce, wasted ad spend | Landing page bounce rate segmented by category; paid search Quality Score | | PDP view | Missing specs, no answer to the buyer's actual question | Session ends on the page with no add-to-cart | PDP-to-cart rate by attribute completeness; on-site search zero-result rate | | Add-to-cart | No shipping/return/fit information, weak trust signals | Cart abandonment at checkout | Cart abandonment rate segmented by category vs. site average | | Purchase | (data debt already paid — this is the checkpoint) | Confirms the funnel worked to this point | Conversion rate by category, device, traffic source | | Keep vs. return | Delivered product doesn't match what the page promised | Refund cost, restocking, lost margin, lost trust | Return rate by reason code, filtered to "not as described" / "wrong size or fit" | ![Diagram: the product-data conversion funnel — the data gap that leaks buyers at each stage, and the attribute that fixes it](/diagrams/conversion-funnel.svg) ## Impression: you can't convert a search you never win If a product's title, category, and structured attributes are incomplete, it doesn't just rank worse — it often doesn't qualify for the query at all. Marketplaces and search engines match on attributes, not on prose. A drill listed without voltage, chuck size, or battery platform loses every filtered search where a buyer typed those exact terms. The same gap costs you in AI-driven discovery, on-site search, and marketplace buy-box eligibility alike — it's one root cause showing up in three channels. Run this: pull impressions and click-through rate by page template in Search Console, segmented by attribute-completeness score if you have one. Templates with sparse attributes will show measurably lower impression share for long-tail, spec-heavy queries — the ones with real purchase intent. ## Click: the page has to deliver on the promise that got the click A mismatch between what a snippet or ad promises and what the PDP actually shows produces a fast bounce. This is where sloppy or auto-generated titles hurt — a title that overclaims (or is vague enough to attract the wrong buyer) trades a click for a bounce. Run this: segment landing-page bounce rate by category and compare against paid Quality Score trends. Categories with recent data cleanup should show bounce improving relative to untouched categories — a clean before/after. ## PDP view: this is where most of the leak actually happens The PDP is the moment of truth, and it's also the stage where product-data gaps do the most damage. Baymard Institute's product-page research has repeatedly found that a meaningful share of sites provide inadequate descriptions and that missing shipping, sizing, and returns information drives direct abandonment — [Baymard's product page UX research](https://baymard.com/blog/collections/product-page) is worth a full read if you haven't audited against it. Separately, Salsify's 2025 consumer research found that a large share of shoppers have abandoned a sale because titles or descriptions were incomplete or poorly written, reported by [360 Magazine](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/). On-site search compounds this: buyers who search and hit zero results rarely recover. Well-run search implementations keep zero-result rates in the low single digits; unmanaged catalogs commonly run into the teens, and each of those searches is a buyer telling you, in their own words, what attribute or spec is missing from your catalog — see the zero-result benchmarks from [Wizzy's ecommerce search research](https://wizzy.ai/blog/zero-result-search-ecommerce/). Run this: pull PDP-to-cart rate segmented by an attribute-completeness score (spec count, image count, has-size-chart, has-compatibility-data). Then pull your on-site search zero-result report and cross-reference the top queries against your actual attribute schema — every recurring zero-result query is a missing or unmapped attribute, not a search problem. ## Add-to-cart: trust dies in the details By the time a shopper adds to cart, they've decided they want the product. What kills the order now is uncertainty about fit, compatibility, shipping cost, or return terms. Baymard's checkout research consistently attributes a chunk of cart abandonment to shoppers unable to find total cost, delivery timing, or return policy — information that lives on the product page, not just the cart. Run this: compare cart abandonment rate for categories with complete shipping/returns/fit data against categories without it. If your PIM has that data but it isn't rendering on the PDP, that's a publishing gap, not a data gap — worth ruling out before you touch the catalog. ## Keep vs. return: the leak that happens after the sale A completed purchase isn't the finish line if the product doesn't match what the page said. Salsify's research found a large majority of shoppers have returned an item due to incorrect product content, and a meaningful share of ecommerce returns cite the item not matching its description, per the same reporting above. Wrong dimensions, missing compatibility notes, or an incorrect material spec don't just cost you the refund — they cost a support ticket, a restocking fee, and a buyer who now double-checks everything you sell. Run this: pull return reason codes and isolate "not as described," "wrong size/fit," and "doesn't work with my [X]." Rank SKUs by return rate and cross-reference against attribute completeness for that SKU. This is usually the fastest, highest-ROI list in the whole funnel to fix first, because every unit on it is data debt you're paying for twice — once in acquisition cost, once in reverse logistics. ## Running the diagnostic on your own catalog You don't need new tooling to start. Pull PDP-to-cart, cart-to-purchase, and return-by-reason for your ten highest-traffic SKUs and your ten highest-return SKUs. Score each SKU's attribute completeness on a simple 1-5 scale. If the correlation is obvious — thin data, high leak — you've found your priority list without guessing. That's the throughline: every stage of the funnel has a data question behind it, and every leak has a metric that names it. Your PIM stores the answer to each of those questions; Anglera's job is making sure the answer is actually there, accurate, and complete — scored, gap-filled, and kept current from source documents rather than guessed — so the funnel stops leaking buyers over information that should have been on the page in the first place. --- # Implementing a planning system? Fix your attributes first Source: https://www.anglera.com/blog/planning-system-implementation-data-readiness Published: 2026-05-30 ![Implementing a planning system? Fix your attributes first](/og/hero-planning-system-implementation-data-readiness.jpg) Six weeks into a merchandise financial planning rollout, the project team hits the same wall every time: the system is configured, the hierarchies are mapped, the workflows are approved, and the first pilot report comes back wrong. Not wrong because the software is broken. Wrong because "fabric: cotton" and "fabric: 100% Cotton" and "fabric: ctn" are three different values sitting in the same column, and the planning tool has no way to know they're the same thing. Multiply that across fifty attributes and twenty thousand SKUs and you get a go-live that everyone quietly distrusts. This is the part vendors don't put in the demo. Assortment planning, merchandise financial planning, and allocation tools — whether it's a platform like Toolio built for merchandising teams, an enterprise suite like Blue Yonder or o9, a flexible modeling layer like Anaplan, or a forecasting engine like Impact Analytics — all share one assumption: that the item attributes feeding them are complete, standardized, and correct. None of them are built to fix your data. They're built to plan on top of it. ## The planning system didn't fail. The inputs did. A forecast, an assortment plan, or an allocation rule is fundamentally a rollup. You're aggregating sales history and inventory positions along dimensions: category, silhouette, color family, price tier, fabric, fit, channel. Every one of those dimensions is a product attribute. If the attribute is missing, that SKU falls out of the rollup silently. If the attribute is inconsistent, similar items get split into different buckets and look like distinct, thinner trends instead of one strong one. If the attribute is wrong, the model learns a false pattern and repeats it at scale. None of this shows up as an error message. It shows up as a planner squinting at a report that doesn't match their gut, then spending the first two quarters after go-live rebuilding trust in the numbers instead of using them. [Clean, well-structured master data is what powers forecasting, financial planning, pricing, allocation, and replenishment](https://www.datamanagement.ai/blog/item-master-data-management/) — but that data rarely exists in the shape a new planning system needs on day one. It exists scattered across a legacy ERP's free-text fields, a PLM tech pack, a handful of spreadsheets a merchandiser maintains locally, and whatever the vendor's product page says. Industry guidance on ERP-adjacent implementations is blunt about where this actually breaks. One implementation framework puts it plainly: ["most cutover-weekend failures trace to data, not to software,"](https://erp-software.org/en/erp-implementation/) and warns that "migrating dirty data is fast; living with dirty data in the production system is slow and expensive." The same guide recommends a master-data quality assessment in the first six weeks of any rollout, treating data readiness as a parallel workstream from day one rather than a task squeezed into the week before cutover. Planning system implementations run on the same physics. The item master is arguably a harder problem than the transactional data ERPs worry about, because attributes come from more sources and get typed in more inconsistently. ## What "ready" actually means "Clean data" is too vague to plan against. Teams need three concrete, testable conditions before a planning system implementation should treat the item master as done: | Dimension | What it means | Example failure if skipped | |---|---|---| | Fill | Every SKU has a value in every attribute the planning model uses as a dimension | New color drops with a blank "silhouette" field and never enters the assortment rollup | | Standardization | Values are normalized to one controlled vocabulary, not free text | "Machine wash cold" vs "MW Cold" vs "40C" split what should be one demand curve into three | | Validated correctness | Values are checked against source documents, not just present | A tech pack says 82% nylon / 18% spandex; the ERP field says "poly blend" — the model plans against the wrong fiber content | Fill rate is the easiest to measure and the one teams check first. It's also the least sufficient. A field can be 100% filled and still useless if half the values are free-text guesses typed in during a rushed initial load, or copy-pasted from a supplier spec sheet years ago and never revisited. Validated correctness is the condition most rollouts skip entirely, because checking a value against its source (a spec sheet, a product photo, a lab test result) at SKU scale has historically required manual review — [error rates in manual data entry run 1-4%](https://www.clickpost.ai/blog/assortment-planning-software), higher for complex specification fields, which is exactly the kind of noise a planning model can't tell apart from real signal. ![Architecture: tech packs, BOMs, imagery, reviews, and ERP fields flowing up through an enrichment layer into planning, BI, and ML models](/diagrams/planning-data-foundation.svg) ## Sequencing enrichment alongside the rollout The instinct in most projects is to configure the planning tool first and treat attribute cleanup as a parallel IT ticket that can slip. That ordering is backwards. Attribute work has to lead, or at minimum run in lockstep, because the planning team's early configuration decisions (which attributes define a "style," which roll up into a "class," which drive allocation logic) are themselves decisions about which attributes need to be trustworthy first. A workable sequence looks like this. Before kickoff, inventory which attributes the planning model will actually use as dimensions — not every field in the PIM, just the ones that feed forecasts, rollups, and allocation rules. During solution design, run fill and standardization checks against that specific list, and start validating the values that carry the most weight in the model (the attributes that split SKUs into different demand buckets) rather than trying to boil the ocean. By the time the planning system moves into configuration and testing, the attribute layer underneath it should already be stable enough that pilot reports reflect real merchandising patterns, not data artifacts. This doesn't require ripping out the PIM, ERP, or PLM system already in place, and it doesn't touch the planning vendor's roadmap. It's additive work against whatever catalog of record already exists, pulling attribute values from the tech packs, BOMs, product imagery, and review text that already sit around the business, standardizing them against a controlled vocabulary, and flagging conflicts between sources instead of silently picking one. That's the layer Anglera sits in: not a replacement for the PIM or the planning tool, but the enrichment step that makes sure both are working from the same, correct set of numbers. A planning system is only as good as the attributes it aggregates. Fix those first, and the go-live report is one planners can actually act on. --- # LGG Industrial: A Hose Distributor Reclaims Its Own Name Source: https://www.anglera.com/blog/lgg-industrial-distributor-playbook Published: 2026-05-30 Industries: pumps-fluid-power ![LGG Industrial: A Hose Distributor Reclaims Its Own Name](/og/hero-lgg-industrial-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* LGG Industrial lands at No. 43 on Industrial Supply and No. 5 in Hose and Hose Accessories on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual scorecard of North America's largest distributors across 20 verticals. The name is new. The company is not. Most of the industry still knows it by the name it wore for the better part of a decade: ERIKS North America. ## A name that predates the interstate highway system The lineage traces to 1935, when Gooding Rubber Company opened its doors. Over the next fifty years the business absorbed a long string of regional rubber and hose houses: Richmond Rubber in 1985, Haynes Inc. in 1986, F.B. Wright and Shields Rubber in 1991, then a run of names through the 1990s, Central Valley Rubber, Republic Rubber, Colonial Rubber, Interstate Rubber. In 2005 the combined company rebranded as Lewis-Goetz. A year later it bought Goodall, a Canadian and U.S. hose specialist with 21 locations north of the border and 12 south of it, and kept acquiring through 2015: Samson Industrial, RBH Mill & Elevator, EVCO, Valley Rubber & Gasket, Advanced Sealing, Action Industrial Group. That is the same consolidation playbook most industrial hose and gasket distributors ran in that era: buy the town's rubber shop, keep the counter staff, fold in the routes. What makes LGG Industrial worth a closer look is what happened after the roll-up stopped rolling up. ## Absorbed by a European conglomerate, then quietly divested At some point after Jeff Crane's first run as CEO ended in 2015, the U.S. business became a subsidiary of ERIKS N.V., the Dutch industrial-services and MRO conglomerate, and took the name ERIKS North America. For years it operated as one region inside a much larger European parent, a common fate for successful American distributors that get folded into a global holding company's portfolio and effectively disappear from the trade press under their own name. Then, at the end of March 2022, ERIKS North America separated from its Dutch parent. Fort Worth-based Luther King Capital Management purchased the business, and Jeff Crane came back as CEO that June, this time returning to a company he already knew from the inside. Between his two stints running the distributor, Crane had led TPC Wire and Cable, later rebranded Trexon, which gave him a manufacturer's-eye view of the same distributor relationships he'd spent a decade managing from the other side. ## The unique insight: buying back your own name Most distributors that get absorbed into a global conglomerate and later spun out by private equity emerge under some invented go-forward brand designed by a marketing agency. LGG Industrial did the opposite. In January 2024, instead of coining something new, the company renamed itself for its own two founding companies: Lewis-Goetz and Goodall. LGG is not an acronym anyone had to explain in a press release. It is initials the business already owned, going back to 2005 and 2006 respectively. That is the strategic tell here. A company that spent roughly a decade as a line item inside a European industrial group deliberately reached backward past its own multinational ownership era to reclaim an identity its own people and customers already recognized, rather than manufacture a fresh one. [MDM's coverage of the rebrand](https://www.mdm.com/article/sales-marketing/branding-for-distributors/eriks-north-america-is-now-lgg-industrial-heres-why/) frames it as honoring "the legacy of its founding companies," which undersells how unusual that choice is. Post-carveout industrial distributors almost never do this. They usually want distance from their past, not proximity to it. ## What independence bought them Crane's own account of the transition, published on the company's site, describes a leadership rebuild alongside the ownership change: a new CFO, COO, HR leader, and a Key Industry Director role that didn't exist under ERIKS. The first acquisition as a standalone company came in January 2023, DeeTag, a fluid and material conveyance distributor with two Ontario locations and one in North Carolina, a modest deal but a signal that the M&A muscle atrophied under corporate ownership was being exercised again. The moves since track a distributor investing in the plumbing of the business rather than the storefront. December 2024 brought a SugarCRM sales-automation rollout aimed at cutting time-to-revenue. A major renovation and expansion of the Rocky Mount, North Carolina facility wrapped in May 2026. Daniel Petschke was named CFO in July 2026. None of it is flashy. All of it reads like a company rebuilding commercial infrastructure that had gone soft during the years it was just a region on someone else's org chart. ## Timeline | Year | Event | |---|---| | 1935 | Gooding Rubber Company founded | | 2005 | Rebrands as Lewis-Goetz after decades of regional roll-ups | | 2006 | Acquires Goodall (21 Canadian, 12 U.S. locations) | | ~2015-2022 | Operates as ERIKS North America, subsidiary of ERIKS N.V. | | March 2022 | Divested; acquired by Luther King Capital Management | | June 2022 | Jeff Crane returns as CEO | | January 2023 | Acquires DeeTag, first deal as a standalone company | | January 2024 | Rebrands as LGG Industrial | Four current product lines carry that history forward: material handling, sealing, fluid transfer, and fluid power hose, the last of which is where the [2026 MDM Hose and Hose Accessories ranking](https://www.mdm.com/top_distributors) places the company at No. 5. The technical core, hydraulic hose assembly, gasket fabrication, conveyor belt splicing, is the kind of work that doesn't get disrupted by a change of ownership on a org chart in Amsterdam. It just waits for someone to reinvest in it. Distribution success stories get told as founder myths or acquisition sprees. LGG Industrial's is a quieter kind: a business that survived being someone else's subsidiary for the better part of a decade and came out the other side choosing to be called exactly what it always was. --- # The furniture & home attributes shoppers filter on — and most catalogs miss Source: https://www.anglera.com/blog/furniture-home-attributes Published: 2026-05-30 Industries: furniture-home ![The furniture & home attributes shoppers filter on — and most catalogs miss](/og/hero-furniture-home-attributes.jpg) A shopper filtering for a "deep-seat, pet-friendly, sleeper sofa under 84 inches" isn't asking a fuzzy question. She's specifying several attributes at once, and each has to exist as structured data or the filter (and the AI agent filtering on her behalf) drops the product from consideration. Furniture catalogs lose more qualified traffic to missing attributes than to weak copy, because the category has more decision-critical specs per SKU than almost any other vertical. ## The attributes furniture shoppers actually filter on Furniture purchases are high-consideration and dimensionally unforgiving. A sofa that's 2 inches too deep for a room, or upholstered in a fabric that can't handle a dog, is a return. That's why furniture-specific facets go deeper than generic color and size: | Attribute | Why it's a filter, not a nice-to-have | |---|---| | Upholstery material | Fabric vs. leather vs. performance fabric vs. velvet drives both look and care | | Cushion fill | Foam density, down-blend, or spring-coil changes firmness and price tier | | Frame material | Kiln-dried hardwood, engineered wood, or metal signals durability | | Leg material and finish | Wood tone (walnut, black, natural oak) or metal finish is a style filter on its own | | Seat depth | "Standard" (~21") vs. "deep" (26"+) is a top query for anyone who wants to sit cross-legged | | Seating capacity / configuration | Loveseat, sofa, sectional, sofa-with-chaise, sleeper | | Assembled dimensions | Width, depth, height, arm height, seat height | | Cleaning code | The industry-standard W / S / SW / X code that tells a buyer (and a retailer) how the fabric can be cleaned | | Stain or pet resistance | Increasingly its own filter as performance fabrics go mainstream | | Assembly required | Ready-to-use vs. some-assembly changes the delivery promise | | Room-fit signals | Doorway and stair clearance, packaged weight, one- vs. two-person delivery | None of these are exotic. They're the fields any furniture merchandiser already knows matter. The problem is that they rarely arrive from a supplier feed in usable form, and they get treated as descriptive text in a bullet list instead of structured, filterable data. ## What happens when the attributes are missing A faceted search page only shows a filter option if enough products in that category carry that attribute, and a product only survives a filter if it carries the value being filtered on. Miss "cushion fill: down blend" on a product that should have it, and that product is invisible to every shopper who filters by fill, even though it's a perfect match. [Faceted search only works when the underlying attribute data is complete and consistent](https://constructor.com/blog/ecommerce-faceted-search), which is a data problem long before it's a UX problem. The same gap shows up, more bluntly, in AI shopping answers. When a shopper asks an AI assistant to recommend a sofa, the agent isn't reading marketing copy, it's evaluating structured attributes against a query. Furniture is a case in point: catalogs typically lack dimensional accuracy at the attribute level (assembled and unassembled size, weight, delivery clearance) and lack room-fit signals like recommended room size or doorway clearance, exactly the specs an agent needs to answer "will this fit through my door." A retailer with a 95%+ complete, accurate feed has a real edge over one relying on prose descriptions, because [AI shopping agents evaluate structured feeds, not editorial content](https://primeavenuegroup.com/chatgpt-shopping-optimization-for-e-commerce/). Google's own product data guidance backs this up for the traditional shopping graph too: it recommends [including as many dimension and material attributes as possible, using a single consistent unit of measurement](https://support.google.com/merchants/answer/7052112?hl=en), because that's what determines whether a listing shows up for a size- or material-specific query at all. ## Worked example: a sofa, before and after Here's a real-world pattern. A supplier feed for a mid-price sectional arrives with a title, one photo set, and a paragraph of marketing copy. The attribute fields are mostly blank. **Raw feed (as received):** | Field | Value | |---|---| | Title | Modern Sectional Sofa - Grey | | Category | Furniture | | Color | Grey | | Description | "Stylish and comfortable sectional, perfect for any living room." | | Material | (blank) | | Dimensions | (blank) | | Fill | (blank) | | Cleaning code | (blank) | **Enriched (after attribute gap-fill):** | Field | Value | |---|---| | Title | Modern L-Shape Sectional Sofa, Reversible Chaise, Grey Performance Fabric | | Category | Furniture / Living Room Furniture / Sofas / Sectionals | | Upholstery material | Performance polyester blend | | Color | Cool grey | | Frame material | Kiln-dried hardwood | | Cushion fill | High-density foam core, fiber wrap | | Seat depth | Deep (27 in.) | | Assembled dimensions | 104 in. W x 65 in. D x 34 in. H | | Seating capacity | 4-5 | | Cleaning code | W (water-based cleaner only) | | Assembly required | Partial, two-person recommended | | Room-fit | Fits standard 32-in. doorway unassembled | Same product, same photos even, but the enriched version now qualifies for filters on material, depth, fill, and cleaning code, and it gives an AI agent enough to answer "which sectional works for a household with a dog and a narrow hallway." Ask an AI shopping assistant to recommend a deep-seat, pet-friendly sectional that fits through a 30-inch door, and the raw-feed version simply isn't in the running. The enriched one is. ## How to structure it so it stays usable Free-text specs buried in a description don't count as structured data; they need to live in dedicated, normalized attribute fields with a controlled vocabulary (so "grey," "gray," and "charcoal grey" don't fragment the same filter into three). Map the product to a real taxonomy node, such as Google's furniture-specific product category, rather than a generic "Home" bucket, so the platform knows which attributes are even relevant to surface. And treat dimensions, fill, material, and cleaning code as required fields per furniture subcategory, not optional extras, because a shopper filtering on any one of them will never see the product that's missing it. Anglera plugs into whatever PIM or feed already holds this data and continuously scores each product against the attributes its category actually needs, then gap-fills and normalizes the missing or inconsistent ones, without requiring a rip-and-replace of the system of record. For furniture catalogs, that means fewer products silently falling out of size, material, and fit-based searches, and product data that AI shopping agents can actually read. --- # Bisco Industries: 53 Years Under One Founder's Control Source: https://www.anglera.com/blog/bisco-industries-distributor-playbook Published: 2026-05-30 Industries: electronic-components ![Bisco Industries: 53 Years Under One Founder's Control](/og/hero-bisco-industries-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Bisco Industries lands at #44 in Industrial Supplies and #18 in Fasteners on [MDM's 2026 Top Distributors list](https://www.mdm.com/top_distributors), the annual ranking from Modern Distribution Management that sizes up North America's biggest wholesale distributors across 20 verticals. What the ranking doesn't show is the stranger fact underneath it: the man who started Bisco in 1973 still runs it, and still controls it, in a corner of distribution that has spent three decades consolidating into a handful of giants. ## A garage-scale start that never got acquired Glen Ceiley founded Bisco Industries in Chicago on March 15, 1973, distributing fasteners and electronic hardware to manufacturers. The company moved to San Jose in 1977 to chase the electronics boom, then to Anaheim, California in 1987, where it's been headquartered since. By 2001 Bisco was a modest 21-location operation with 178 employees, still privately built, still Ceiley's. That's an unremarkable growth curve for an electronic-components distributor. What happened next is not. In 2010, Ceiley took Bisco public not through an IPO but by merging it into [EACO Corporation](https://eacocorp.com/), a small public holding company Ceiley already controlled. A subsidiary called Bisco Acquisition Corp merged into Bisco, with Bisco surviving as EACO's wholly owned operating company. Because Ceiley held the controlling stake on both sides of the transaction, the deal read less like an acquisition and more like a founder relocating his own company into a public wrapper he already owned. At the time of the merger Bisco ran 37 sales offices and six distribution centers. ## The number that explains everything else Here is the detail that makes Bisco worth studying rather than just noting: Glen Ceiley still holds approximately 96% of EACO's voting control, largely through a family trust. EACO trades on the OTC market, publishes 10-Ks, and answers to public shareholders on paper. In practice it operates like the closely held company it always was. In a vertical where the biggest names, Arrow Electronics, Avnet, TTI under Berkshire Hathaway, got there by rolling up hundreds of smaller distributors under private-equity or conglomerate ownership, Bisco took the opposite path: go public for currency and reporting discipline, keep every real lever of control in the founder's hands, and never let the ticker change who runs the place. That's the insight worth naming plainly. Most companies this size either sell to a strategic, get bought by a PE sponsor, or stay private forever. Bisco found a fourth lane: public markets without giving up the wheel. ## Growth by branch, not by deal The other thing that separates Bisco from its electronics-distribution peers is how it grows. It doesn't buy other distributors. Since the 2010 merger, EACO's public filings show no significant acquisitions, only steady organic expansion: new sales offices, new distribution centers, more account reps. The company now operates 53 local offices and 7 distribution centers carrying roughly 3.1 million parts, same-day shipping until 8pm ET, according to [Bisco's own site](https://www.biscoind.com). In October 2022 it opened its 52nd location, and first outside North America, in Manila, a small but telling bet that the electronics supply chain's next growth is offshore. The engine behind that expansion has a name inside the company: Sales Focus Teams, cohorts of reps assigned to specific accounts and territories. EACO's quarterly filings track SFT count the way other distributors track branch count. Fiscal 2025 closed with 116 SFTs and 418 sales employees; by the fourth quarter of fiscal 2026 that had grown to 122 SFTs and 491 sales employees, an 11% headcount increase in a single year, per [StockTitan's earnings coverage](https://www.stocktitan.net/news/EACO/). That's a distributor scaling revenue by adding humans to relationships, not by buying competitors' customer lists. ## The results are recent, and they're accelerating The payoff shows up starting in fiscal 2024. Net sales rose 11.5% to $356.2 million that year. Fiscal 2025 jumped 20.1% to $427.9 million, with net income more than doubling to $32.3 million. The momentum hasn't cooled: every quarter of fiscal 2026 reported so far has been a record, including a fourth quarter with net sales up 27.8% year over year. For a company with no acquisition pipeline, that kind of acceleration has to come from somewhere else, and it's coming from the branch network and the sales force Ceiley has been building for over five decades. ## Timeline | Year | Milestone | |---|---| | 1973 | Founded in Chicago by Glen Ceiley | | 1977 | Moves to San Jose, chasing the electronics industry | | 1987 | Relocates to Anaheim, current HQ | | 2010 | Merges into EACO Corp, becomes a public company under Ceiley's control | | 2022 | Opens first office outside North America, in Manila | | 2025 | Net sales cross $400M for the first time | ## The tension worth sitting with Founder control this concentrated is a double-edged asset. It buys patience: Bisco can invest in a branch for years before it turns a profit, something a PE-owned roll-up under a five-year exit clock rarely tolerates. It also means the entire strategic direction of a $400-million-plus distributor rests on one person's judgment, with no acquisition war chest and no obvious succession plan on the public record. That's the bet EACO shareholders are making, knowingly or not, every time the stock trades. Every distributor on the MDM list is, underneath the branch count and the SKU catalog, a bet on how well one organization can move the right part to the right customer before a competitor does. Bisco's answer has been to keep that bet in the same hands for over fifty years. --- # Server-side rendering on BigCommerce: making product data visible to Google and AI Source: https://www.anglera.com/blog/bigcommerce-ssr-rendering Published: 2026-05-30 Platforms: bigcommerce ![Server-side rendering on BigCommerce: making product data visible to Google and AI](/og/hero-bigcommerce-ssr-rendering.jpg) BigCommerce ships two different rendering models depending on which storefront you run: the built-in Stencil theme engine, and the newer Catalyst headless storefront. Both can put full product data into the HTML a crawler receives on first request — but both can also be configured or customized in ways that push key data into a client-side JavaScript pass instead. This guide covers how each model actually renders a product page, where the common blind spots are, and how to confirm your enriched product data is landing in the response, not just in the browser after the fact. ## Two rendering models, one underlying question **Stencil** (the default BigCommerce storefront framework, used by Cornerstone and most themes in the Theme Marketplace) is server-rendered by design. Templates are written in Handlebars, and in production "Handlebars statements run on the server side, generating HTML received by the shopper's browser" — the theme engine resolves your product objects (title, price, SKU, description, images, custom fields) into markup before the response ever leaves BigCommerce's servers ([Stencil docs](https://docs.bigcommerce.com/developer/docs/storefront/stencil/getting-started/about-stencil)). That means a plain HTTP fetch of a Stencil product URL — no JavaScript execution required — already contains the core product content in the DOM. **Catalyst**, BigCommerce's Next.js-based composable storefront, is also SSR by default for product and category routes: dynamic pages are rendered at request time against the GraphQL Storefront API, with caching layered on top rather than replacing the render. BigCommerce's own guidance is that stores with small, infrequently changing catalogs can lean on static generation, while larger or fast-changing catalogs should combine dynamic SSR with webhook-driven cache invalidation ([Catalyst overview](https://docs.bigcommerce.com/developer/docs/storefront/catalyst/overview)). Either way, the intent is that product, price, and structured data are resolved on the server before the page reaches the client — but Catalyst is a fully open codebase you deploy yourself, so it is entirely possible to write a component that fetches product data client-side (for example, inside a `"use client"` component with a `useEffect` fetch) and accidentally move data out of the initial HTML. ## Where client-only rendering actually creeps in Neither platform is "client-rendered" by default, but both have well-known spots where content only appears after the browser runs JavaScript: - **Stencil AJAX option/price updates.** When a shopper changes a variant (size, color), Stencil themes commonly call the storefront's product API client-side (via `stencil-utils`, e.g. `utils.api.product.getById(...)`) to refresh price, SKU, and availability without a full page reload. That's good UX, but it means the *variant-specific* price/SKU a crawler sees is whatever was rendered for the default variant in the initial HTML — not whatever a shopper clicks into. If your enriched attributes (materials, capacity, compliance specs) only get written into the DOM through this same AJAX path, they never reach the server response at all. - **Third-party review and Q&A widgets.** Cornerstone server-renders a full `Product` JSON-LD block by default (a `components/products/schema` template partial), including `aggregateRating`/`review` populated from BigCommerce's *native* review data when reviews exist. The gap appears when a store swaps in a third-party review app: those typically render stars, counts, and Q&A through their own client-side script and their own separate schema, which may never feed into Cornerstone's built-in JSON-LD. If your rating data depends on that widget's JavaScript, it can show up in the rendered DOM but not the raw HTML — invisible to a crawler that doesn't execute JS. - **Custom Catalyst components that fetch on the client.** Anything wrapped in `"use client"` that calls the Storefront API in a `useEffect` (rather than being passed down as server-rendered props via `generateMetadata` or a server component) renders an empty shell on first paint and fills in afterward. - **Customized themes are thinner than the default.** Stock Cornerstone JSON-LD covers name, SKU/MPN/GTIN, brand, description, image, and `offers` — but stores frequently fork Cornerstone or install page-builder apps that replace or strip that partial, and enriched attributes were never in its scope (they live in the visible markup, not the schema block, unless someone adds them). Don't assume schema or enriched attributes are complete just because *some* structured data shows up in view-source. ## Why this matters beyond classic SEO Google's own guidance describes JavaScript-heavy pages going through three separate phases — crawling, rendering, then indexing — not all at once. Googlebot first fetches the raw HTML; only later, once resources allow, "a headless Chromium renders the page and executes the JavaScript," and Google uses that rendered output (not the raw HTML) to index the page ([Google Search Central, JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)). That rendering step can sit in a queue and lag well behind the initial crawl. Google recommends server-side or pre-rendering partly because "not all bots can run JavaScript" — a list that includes most AI answer engines and shopping agents crawling your catalog today. If your product attributes, price, and identifiers only materialize client-side, an LLM-based crawler or shopping agent is far more likely to see a blank shell than a fully populated PDP. ## What should be in the server-rendered response For a BigCommerce product page, the non-negotiable list is: product name, canonical URL, primary price and currency, availability, SKU/GTIN/MPN, description, primary image, and `Product` JSON-LD (including `offers` and, if you have real review data, `aggregateRating`). All of this should be resolvable from data the server already has when the page is requested — none of it should depend on a follow-up client-side call. In Stencil, that means keeping these fields inside the Handlebars templates themselves — the product content lives in `templates/components/products/product-view.html`, and the `Product` JSON-LD is a separate partial (`templates/components/products/schema.html`) included on the product page — not injected via a script tag that runs after the DOM content has loaded. In Catalyst, that means resolving these fields inside the server component or route handler and using `generateMetadata` plus a literal JSON-LD script element populated from the same server-side GraphQL result — not a client component that fetches after mount, for example: ```tsx export async function generateMetadata({ params }: { params: { slug: string } }) { const product = await getProduct(params.slug); return { title: product.name, description: product.metaDescription }; } // In the server component body: // ``` ## How to validate Check the raw response the way a crawler does, before comparing it to what a browser shows: ```bash curl -s https://yourstore.example.com/product-slug/ | grep -i "application/ld+json" -A 20 ``` ```bash curl -s https://yourstore.example.com/product-slug/ | grep -io "\"price\"[^,]*" ``` Then compare that raw HTML to the rendered DOM: 1. In Chrome DevTools, open the page, then **View Page Source** (`Ctrl+U` / `Cmd+Option+U`) — this is the pre-JavaScript HTML, equivalent to what `curl` returns. 2. Separately, open **Elements** in DevTools (the live/rendered DOM) and search for the same price, SKU, or JSON-LD block. 3. If a field exists in Elements but not in View Source, it was added by client-side JavaScript and may be invisible to non-JS crawlers. 4. Run the URL through Google's [Rich Results Test](https://search.google.com/test/rich-results) — it shows both the rendered result and flags missing/invalid `Product` schema fields. 5. For AI-agent-specific checks, fetch the URL with a plain HTTP client (no headless browser) and confirm the same attributes are present — that's closer to how many current AI shopping and answer agents actually retrieve pages. **Verified as of July 2026:** rendering behavior described here reflects current Stencil and Catalyst documentation; always re-check theme-specific templates and any review/Q&A apps installed on your store, since those can override default behavior per theme version. Getting the enriched attributes into the server-rendered template only matters if the attributes exist and stay current in the first place — that's the harder, ongoing problem. Anglera continuously enriches product data (attributes, specs, use-cases, identifiers) in your PIM or BigCommerce catalog, so whichever rendering path you use — Stencil template or Catalyst server component — has complete, current data to put on the page rather than gaps to paper over. --- # Adding Product JSON-LD on Unilog — and keeping it in sync Source: https://www.anglera.com/blog/unilog-product-json-ld Published: 2026-05-29 Platforms: unilog ![Adding Product JSON-LD on Unilog — and keeping it in sync](/og/hero-unilog-product-json-ld.jpg) Unilog's CX1 CIMM2 platform already gives distributors a real product record — part number, manufacturer, category, pricing, inventory — pulled together from your PIM and ERP feeds. Getting that record onto the product detail page (PDP) as machine-readable schema.org Product JSON-LD is a separate, smaller job, but it's the one that determines whether Google's rich results and AI shopping/procurement agents can actually parse what you're selling instead of guessing from page text. Here's how to add it on CIMM2 and, more importantly, how to keep it from drifting away from what buyers see. ## Where the JSON-LD block lives on a CIMM2 page CX1 CIMM2 renders PDPs from a template layer, not a page-by-page editor — one "item detail" template controls every SKU, populated at request time from your item, pricing, and inventory services. That's good news for structured data: you add the JSON-LD script block once, in the shared item template (or a CMS content component included on it), and every product on the site inherits it automatically. In practice this template edit is usually done by your internal dev team if you have template/theme access on your CX1 instance, or by Unilog's professional services team or an implementation partner if your site is on a fully managed build — CIMM2 is a hosted, multi-tenant platform, so exactly which admin screen exposes template/HTML editing (and whether it's self-service or requires a service ticket) depends on your CX1 version and support tier. Confirm the current path with your Unilog account team before assuming a menu location; don't guess at it. Whichever route you take, the JSON-LD fields should be bound to the same merge fields/attributes the visible page already uses for title, part number, manufacturer, price, and stock status — not re-typed by hand. That single decision is what prevents the sync problem covered below. ## The fields that actually matter for a distributor SKU For a distributor catalog, a handful of properties do most of the work for [product rich results](https://developers.google.com/search/docs/appearance/structured-data/product-snippet) and for giving an AI agent something unambiguous to read: - **`name`**: the item's display title, pulled from the same PIM description field the PDP's main heading renders. - **`brand`**: a nested `Brand` object with the manufacturer name — usually your PIM's "Manufacturer" or "Brand" attribute, not a free-text field on the item. - **`sku`**: your internal part/item number. It only needs to be unique within your catalog. - **`gtin`** (or the older `gtin8`/`gtin12`/`gtin13`/`gtin14` variants, chosen by digit length): map it if your PIM carries a UPC/EAN/GTIN for the item. A large share of industrial, plumbing, and electrical SKUs are private-labeled or don't carry a retail barcode at all — when there's no GTIN, use `mpn` (the manufacturer's part number) instead rather than leaving both blank or fabricating a value. Schema.org's [`gtin` property reference](https://schema.org/gtin) treats `gtin` as the property that generalizes the older length-specific variants, so use the most specific length you actually have; Google's own merchant guidance is consistent on this point — never guess an identifier or borrow one from a similar SKU, leave it out instead. - **`offers`**: nested `price`, `priceCurrency`, `availability`, and `url`. This is the block most likely to go stale because it's driven by live pricing/inventory, not static catalog content — see the sync section below for the B2B-specific wrinkle. - **`aggregateRating`**: only include this if you have genuine `ratingValue`/`reviewCount` data behind the item, from an actual reviews feature or integrated ratings provider. Google's structured data policies prohibit marking up fake or misleading reviews, and the numbers in your markup need to match what's visible on the page; most industrial and PVF distributor catalogs simply don't have reviews at the SKU level, and omitting the property entirely is the right call rather than inventing one. ## A real example ```json { "@context": "https://schema.org/", "@type": "Product", "name": "3/4 in. Brass Ball Valve, Threaded, 600 WOG", "sku": "BV-075-BR-T", "mpn": "S-585-70-6", "gtin13": "0785612345678", "brand": { "@type": "Brand", "name": "Apollo Valves" }, "offers": { "@type": "Offer", "url": "https://www.example-distributor.com/product/BV-075-BR-T", "priceCurrency": "USD", "price": "18.42", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" } } ``` Note there's no `aggregateRating` in this example — that's deliberate, not an oversight, for a SKU with no real review data behind it. ## Keeping the JSON-LD in sync with the visible page The most common way this breaks isn't a missing field, it's drift between the schema and the page a buyer actually sees: - **Hardcoded snippets.** If someone pastes a static JSON-LD block with a literal price into the item template "to get it working," it will be correct on day one and wrong the next time price or stock changes in the ERP feed — because the visible price re-renders from the live pricing service and the hardcoded schema doesn't. Bind `offers.price` and `offers.availability` to the same service calls that render the buy box, full stop. - **Gated/net pricing.** Many CIMM2 sites show "Login for pricing" to guest users and only reveal contract/net pricing after authentication. Don't publish a guest-visible `offers.price` that doesn't match what an unauthenticated buyer sees on the page — if the real price is behind login, either omit `price` for those SKUs or publish an accurate list/MSRP value and be consistent about which one appears in both places. `availability` should still reflect real inventory regardless of login state. - **Discontinued or zero-stock items.** If the PIM marks an item discontinued or out of stock, `availability` needs to flip to `OutOfStock` or `Discontinued` in the same update cycle as the visible stock badge, not on a separate, slower catalog sync. ## How to validate - **View-source vs. rendered DOM**: fetch the page without executing JavaScript (curl or "view page source") and confirm the full JSON-LD script block is present there. If it only shows up in the browser's inspected DOM and not in the raw HTML, it's being injected client-side and search crawlers and most AI agents won't reliably see it. - **`curl -s https://yoursite.com/product/SKU | grep -A 30 'application/ld+json'`** is a fast way to pull the block and diff it by eye against the visible price and stock status on the same page. - Run the URL through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm the markup parses and is eligible for product rich results, and spot-check a sample of SKUs (in stock, out of stock, gated pricing) rather than just one. Verified as of July 2026 against Google's Product structured data and product-snippet documentation and schema.org's `gtin` property reference. Unilog CX1 CIMM2 doesn't publish its template-editing menu paths for public reference, so confirm the current admin location with your Unilog account team or implementation partner before scheduling the work. None of this matters if the underlying attributes — GTIN, brand, manufacturer part numbers, normalized specs — aren't populated and current in the PIM to begin with. That's the half of the problem Anglera handles: it enriches product data continuously inside the PIM or commerce platform you already run, so the JSON-LD template above always has a complete record to map from instead of blank fields to paper over. --- # From quality score to dollars: linking a data grade to revenue Source: https://www.anglera.com/blog/quality-score-to-revenue Published: 2026-05-29 ![From quality score to dollars: linking a data grade to revenue](/og/hero-quality-score-to-revenue.jpg) Most catalogs already have a data quality score sitting in a dashboard somewhere, and most of those scores are decorative. They go up when someone fills in a field and down when a feed breaks, but nobody has ever proven the number moves revenue. That's the gap this post closes: a repeatable way to bind a quality grade to conversion, traffic, and returns, then use that binding to forecast what fixing the worst SKUs is actually worth. ## Why the score has to earn its keep A quality score is only useful if it predicts something. If a SKU graded 40/100 converts the same as one graded 90/100, the score is measuring the wrong things — probably field completeness with no weighting for the attributes buyers and search engines actually use to decide. Before you spend a forecasting model's worth of effort on this, sanity-check that your scoring rubric weights the attributes that show up in filters, comparison tables, and on-site search queries, not just "percent of fields populated." A gap-filled but irrelevant attribute doesn't move a buyer. A missing dimension, fit note, or compatibility spec does. Industry data backs the mechanism, even if every catalog's exact numbers differ. Retailers with strong product information management practices report meaningfully higher conversion, and separate research on product content completeness ties direct lift to conversion rate depending on channel — see the analysis in [Crystallize's PIM statistics roundup](https://crystallize.com/blog/pim-statistics). On the downside, poor or inaccurate product content is a documented driver of returns and cart abandonment: [Chain Store Age reports](https://chainstoreage.com/inaccurate-product-information-hurts-online-sales) that a large share of consumers have abandoned a purchase or returned an item over inaccurate or incomplete product information, and separate survey research puts the share of shoppers who've returned something specifically because the listing was wrong at roughly 40% ([360 Magazine](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/)). These are directional, not your numbers — which is exactly why you need your own cohort analysis instead of borrowing an industry average. ## Step 1: Score every SKU, then bucket into bands Don't try to correlate a continuous score against a continuous outcome first — noise will bury the signal. Bucket into 3-5 bands (e.g., 0-40, 41-60, 61-80, 81-100) and treat each band as a cohort. This does two things: it smooths out scoring-methodology noise, and it gives you groups big enough to compare with confidence, which matters if any one category has a small SKU count. ## Step 2: Build the cohort comparison table For each band, pull the same window (90 days minimum, a full season if you have seasonality) and compare: | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether complete data closes the sale | GA4 or your analytics platform, segmented by SKU quality-score band via a custom dimension | | Organic sessions per SKU | Whether the data is getting the SKU found at all | Search Console + analytics, indexed pages and impressions by band | | On-site search zero-result or no-click rate | Whether shoppers can't find or trust the SKU once they're searching | Site search analytics (Algolia, Bloomreach, or native platform reporting) | | Return rate, reason-coded | Whether bad data is causing wrong-purchase returns, not just quality returns | Returns platform or OMS, filtered to reason codes like "not as described," "wrong size/fit," "missing info" | | Support tickets per 1,000 orders | Whether missing data is generating pre- or post-sale service load | Helpdesk ticket tags mapped to SKU | | AOV / attach rate | Whether complete data (compatibility, bundle, spec) drives upsell | Order data, attach-rate calc on related SKUs | Run this by band, not just as one blended number. The pattern you're looking for is monotonic — conversion should climb and returns should fall as the band improves. If it doesn't move cleanly, that's a sign your score isn't weighted against the attributes that matter for that category, and it's worth revisiting the rubric before you trust the forecast. ## Step 3: Isolate the data-quality effect from confounders Cohort comparisons get contaminated fast by price, brand strength, and seasonality — a $40 SKU in the top band will out-convert a $400 SKU in the bottom band regardless of data quality. Control for it two ways: compare within the same price tier and category, and where possible, compare a SKU against itself before and after an enrichment pass (a pre/post design controls for brand and price by construction). The before/after comparison is the more defensible one for a revenue forecast because it removes the biggest confounders entirely — same product, same demand, different data. ## Step 4: Turn the correlation into a forecast Once you have a believable conversion delta between bands (say, band D converts 1.6% and band A converts 2.4%), the forecast is arithmetic, not guesswork: Incremental revenue = (sessions to band-D SKUs) × (conversion delta) × (average order value) Run the same math against the return-rate delta to estimate reduction in returns cost, and against support-ticket delta to estimate service-cost avoidance. Stack all three and you have a defensible, band-specific dollar case for closing the gap — not a vague "better data is better" pitch, but a number a finance team will sign off on. ## Step 5: Prioritize the enrichment plan by ROI, not by ease With the cohort math in hand, rank SKUs to fix by (potential revenue lift × current traffic) ÷ (estimated effort to fix). A high-traffic SKU stuck in the bottom band is worth more than ten low-traffic SKUs in the same band, even though the low-traffic ones are individually cheaper to fix. This is also where it's worth being honest about effort: manual enrichment — pulling values out of spec sheets, cross-checking against source docs, writing to your PIM's schema — typically runs 30-45 minutes per SKU when done by hand, which is exactly why most catalogs never get past the top 5% of SKUs on a manual backlog. ## Where this connects to Anglera None of this requires ripping out your PIM — your PIM stores the data, and it's the right system of record for the score itself. What determines whether the forecast in Step 4 ever gets realized is whether someone can actually close the gap on the SKUs the cohort analysis flags, at the volume the catalog demands. Anglera plugs into whatever PIM you run (or none) and does the enrichment work — extracting and quality-scoring values from supplier and source documentation rather than guessing — so the bottom-band cohort in your table doesn't stay the bottom-band cohort next quarter. --- # Motion & Control Enterprises: The Repair-Shop Roll-Up Source: https://www.anglera.com/blog/motion-control-enterprises-distributor-playbook Published: 2026-05-29 Industries: pumps-fluid-power ![Motion & Control Enterprises: The Repair-Shop Roll-Up](/og/hero-motion-control-enterprises-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Motion & Control Enterprises lands at #15 in Fluid Power, #41 in Industrial Supplies and, newly, #25 in MRO Industrial on Modern Distribution Management's [2026 Top Distributors lists](https://www.mdm.com/top_distributors), with 2024 revenue of $488 million. That placement undersells the more interesting story: a Pittsburgh lubrication franchise that spent seven years compounding into one of the more aggressive roll-ups in fluid power, and did it by buying repair shops as deliberately as it bought distributorships. ## A franchise, not a founding vision MCE's roots go back to 1951, when Wayne G. Ritter set up Ritter Engineering Company in Pittsburgh as a franchised distributor of Trabon centralized lubrication systems, according to [MCE's own company history](https://mceautomation.com/about/about-mce/). It was a regional bet, not a grand strategy: branches followed in Chicago in 1957, Milwaukee in 1958, and Detroit in 1963, and the company relocated its headquarters to Zelienople, Pennsylvania in 1990. For most of its life it was a single-region industrial distributor renamed Ritter Technology in 2000, unremarkable next to the national names in fluid power. The pivot came in 2018, when Chicago private equity firm Frontenac acquired the business, folded Ritter Technology in as the "RitterTech" division, and formed Motion & Control Enterprises as the platform company around it, per [Frontenac's MCE portfolio page](https://frontenac.com/portfolio/mce/). That is the moment a 67-year-old regional distributor became a chassis for consolidation. ## The acquisition math The pace since 2018 is the real story. By June 2023, CEO Charles Hale said MCE had completed 10 acquisitions since January 2021 alone, serving more than 23,000 MRO and OEM customers across 39 facilities in 13 states, per [Frontenac's announcement of the Power & Pump and Industrial Control Services deals](https://frontenac.com/motion-control-enterprises-completes-two-acquisitions/). Frontenac ran a secondary transaction in 2023 to bring in fresh capital and keep the roll-up funded, according to the same portfolio page. Three years later, MCE reported 33,000-plus customers across 62 facilities in 18 states in its announcement of the [TLR Hydraulics and Tripp Electric Motors acquisitions](https://distributionstrategy.com/2026/05/motion-control-enterprises-expands-repair-network-with-two-acquisitions-in-texas-and-florida/) in May 2026. That is roughly 60 percent facility growth in three years, an unusually fast clip for a distributor competing in mature, capital-intensive verticals like pumps and hydraulics. The targets read like a category shopping list: Filter Resources, Nova Hydraulics and Ultimation Industries in 2023; North East Technical Sales, three ParkerStore locations, Air Automation Engineering and Romanoff Industries in 2024. Each deal adds either geography, a product category, or a brand relationship MCE didn't previously carry. ## The insight: MCE is buying the repair cycle, not just the shelf Here is the pattern that separates MCE from a garden-variety distribution roll-up. Its two most recent deals, TLR Hydraulics in Dallas and Tripp Electric Motors in Belle Glade, Florida, are not distributors at all. TLR does hydraulic cylinder and pump repair and high-pressure hydraulics machining; Tripp repairs electric motors, gearboxes, pumps and related process equipment. Hale framed the Tripp deal explicitly around "the growing Florida water and wastewater market" and the ability to serve customers across the full equipment lifecycle, sales, maintenance and emergency repair, per the same distributionstrategy.com report. That framing matters. A distributor that only sells new pumps and valves competes on price and availability against every other catalog. A distributor that also owns the shop that rebuilds the impeller when the pump fails five years later owns a relationship that repeats on its own schedule, regardless of new capital spending cycles. Repair revenue is stickier than transactional resale because it is tied to an installed base MCE didn't have to win twice. The 2023 Power & Pump acquisition made the same move in miniature. Beyond its municipal pump distribution, Power & Pump brought repair services and status as U.S. master distributor for the All Prime Pumps self-priming line, giving MCE both a product line and a service tail in one purchase, per Frontenac's release. Most fluid power roll-ups chase geographic density or manufacturer lines. MCE is chasing both, but it is also deliberately layering a repair-and-maintenance annuity underneath its distribution footprint, converting industrial customers into recurring service accounts rather than one-time equipment buyers. That is a different bet than most peers on the MDM list are making, and it shows up in acquisition targets that look nothing like a typical distributor. ## What holds it together MCE now operates through more than 20 acquired brands, including RitterTech, Diversified Air Systems, Swanson Flo Control, Nova Hydraulics and Piedmont Electric Motor Repair, spanning flow control, fluid power, rotating equipment, automation and hydraulic repair. Keeping that many brand names, catalogs and repair shops coherent under one back office is the unglamorous half of the strategy nobody profiles: pricing consistency across 62 facilities, shared vendor relationships, and inventory data that has to reconcile across companies that were, until recently, strangers to each other's systems. The M&A pace is the visible strategy. The integration discipline behind it is the part that determines whether $488 million in revenue becomes $700 million or a tangle of disconnected repair shops wearing one logo. Distributors like MCE remind you that scale in this channel is rarely won on branding. It is won in the unglamorous mechanics of distribution: which catalogs stay accurate across dozens of acquired brands, which branch has the part in stock, and how cleanly the data behind it all holds together as the company keeps buying. --- # How Incora Built a Fastener Giant, Then Nearly Lost It Source: https://www.anglera.com/blog/incora-distributor-playbook Published: 2026-05-29 Industries: fasteners ![How Incora Built a Fastener Giant, Then Nearly Lost It](/og/hero-incora-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In June 2023, a company carrying $3.16 billion in debt and supplying the bolts, clamps and chemicals that keep Boeing and Airbus production lines running filed for Chapter 11. Nineteen months later it walked out the other side, still shipping the same parts, under the same CEO. That company is Incora, and it lands twice on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors): No. 29 in Industrial Supply and No. 8 in Fasteners, both climbing sharply from the year before. The rankings landed mid-restructuring, which tells you something about this business before you learn anything else about it: you can come close to going under and still be one of the largest distributors in your category, because the parts never stopped moving. ## Two century-old distributors, one new name Incora didn't start as Incora. It started as two separate companies built decades apart on opposite sides of the Atlantic, both specializing in the same unglamorous niche: C-class aerospace hardware, the bolts, screws, fasteners, clamps and consumables that individually cost pennies but that no aircraft gets built or maintained without. Wesco Aircraft was founded in 1953 and grew into one of the largest suppliers of that hardware to commercial and defense aerospace, eventually going public and running distribution and kitting operations across more than 20 countries. Pattonair took the same idea and built it in Derby, England, founded in 1972 by John Patton and grown from a local engineering supplier into a global aerospace supply chain integrator handling the same class of parts for European and defense customers. Platinum Equity, the private equity firm founded by Tom Gores, ended up owning both. In January 2020 it took Wesco Aircraft private in a deal valued around $1.9 billion and combined it with Pattonair, already in its portfolio, per [Incora's own account of the merger](https://incora.com/about-us/). Rather than keep either century-old name, the combined company rebranded entirely as Incora in 2021 — an unusual move in a channel where distributors typically trade on decades of name recognition with the engineers who qualify their parts. The bet was that scale and a single global brand would matter more than either legacy identity. ## What the combined company actually does Strip away the corporate history and Incora is, today, a very large parts and chemicals distributor built for one purpose: making sure aerospace manufacturers and MRO shops never run out of the small stuff. By its own figures, [Incora](https://incora.com) now operates more than 60 locations worldwide, manages over 644,000 active SKUs, and serves more than 8,400 customers sourced from over 7,000 suppliers, with 42 facilities carrying AS9120 distribution accreditation. Its services stretch beyond shipping boxes of fasteners into vending, kitting, chemical management and inventory programs designed to sit inside a customer's own production line. None of that is glamorous. All of it is the reason the business survived what came next. ## The near-death chapter | Milestone | Date | |---|---| | Wesco Aircraft founded | 1953 | | Pattonair founded | 1972 | | Platinum Equity buyout and merger creates Incora | January 2020 | | Chapter 11 filed, $3.16B in funded debt | June 1, 2023 | | Reorganization plan confirmed | December 27, 2024 | | Emerges from Chapter 11 | January 31, 2025 | The merger closed just before the pandemic hit commercial aerospace, and then Boeing's 787 delivery halts compounded the damage. According to [Supply Chain Dive's reporting](https://www.supplychaindive.com/news/incoras-bankruptcy-aerospace-supply-chains/652433/), Incora's revenue fell 18.3% between 2019 and 2021 as build rates collapsed. Supplier shipments arriving late jumped ninefold year over year, on-time delivery fell to roughly 50%, and average lead times doubled from nine months to eighteen. Then-CFO Ray Carney called the inventory disruption one of the most significant drags on the company's financial performance, because aerospace contracts require the distributor to hold and guarantee availability regardless of how erratic its own supply gets. That kind of shock is survivable for a distributor with a conservative balance sheet. Incora didn't have one. The 2020 buyout had loaded a working-capital-intensive business, one that lives on holding inventory and financing customer terms, with leverage sized for steadier times. By the time Incora filed Chapter 11 on June 1, 2023, in the Southern District of Texas, funded debt had reached $3.16 billion, a figure that dwarfed the $1.9 billion price Platinum Equity had paid for Wesco alone three years earlier. ## The insight: the parts held up, the math didn't This is the detail worth sitting with. Incora's crisis wasn't a product failure, a quality lapse, or a customer walking away. Aerospace manufacturers still needed the bolts. What broke was financial architecture layered onto an operating model that runs on thin margins and heavy working capital, then asked to absorb a pandemic and a grounded jet program at the same time. It's a pointed case study in what happens when a roll-up's leverage assumes the world stays calm. The recovery followed the same pattern in reverse. According to [Incora's press release announcing emergence](https://www.incora.com/news/incora-successfully-emerges-from-chapter-11/), the plan confirmed December 27, 2024 eliminated roughly $2 billion in net debt and handed ownership to a new group of institutional investors, while CEO David Coleal stayed in place throughout, calling the company "a stronger company, both financially and operationally" on exit. The operating business underneath, the branches, the SKUs, the customer relationships, never stopped functioning even while its capital structure went through bankruptcy court. Since emerging, Incora has moved back into expansion mode: a new Malaysia office and expanded India operations to build out Asia-Pacific coverage, plus continued presence at industry events like the Paris Air Show. The company that nearly buckled under its own balance sheet is now the same one still holding a top-20 fastener ranking, a reminder that in this channel, staying solvent and staying essential are two very different tests, and Incora is one of the few large distributors to have failed one while passing the other. Distribution rarely makes headlines for what actually keeps it running: the catalogs that never go out of stock, the branches that open before the sun, the systems tracking a bolt from a warehouse in Derby to a wing in Everett. Incora's last five years are a reminder that the infrastructure holds even when the financing behind it doesn't. --- # Endries International: The Fastener Distributor Buying Its Rivals Source: https://www.anglera.com/blog/endries-distributor-playbook Published: 2026-05-29 Industries: fasteners ![Endries International: The Fastener Distributor Buying Its Rivals](/og/hero-endries-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Endries International announced four acquisitions in a 25-month stretch between late 2023 and late 2024. That is not a company padding a growth chart before a sale. It is a company acting as the consolidator in a sector where consolidation usually happens to the small operator, not because of it. [Modern Distribution Management](https://www.mdm.com/top_distributors) ranks Endries #10 among fastener distributors and #40 in industrial supply on its 2026 Top Distributors list, on 2024 revenue north of $500 million. ## From a basement to Class C The company's origin is almost quaint next to what it became. Bob and Patricia Endries started [Bob Endries Auto Specialties](https://www.endries.com/content/about-endries) in the basement of their home in Brillion, Wisconsin, in 1970, selling auto parts. The pivot that mattered came in 1975, when the business moved into industrial fasteners. By 1984 it had already built its first formal inventory management program for OEM customers, a decade before "vendor-managed inventory" became a category label the rest of the industry would adopt. Fasteners look like a commodity from a distance: nuts, bolts, washers, pins. Up close they are the textbook case for what distributors call Class C components, the small, low-unit-cost parts that consume a wildly disproportionate share of a manufacturer's procurement labor relative to their dollar value. A missing $0.03 washer stops a production line as completely as a missing $30,000 motor. Endries built its business around owning that headache, not around competing on unit price. ## Succession without a sale Founder Bob Endries handed the president's role to his son Steve in 2004, a transition [Global Fastener News](https://www.globalfastenernews.com/steve-endries-succeeds-founder-bob-endries-as-endries-international-president) covered at the time, when the company ran roughly 70 branches, 6 distribution centers and 450 employees. That kind of father-to-son handoff is common in family fastener distribution. What is less common is what happened next: the family didn't stay in the operating chair. Steve Endries now sits as chairman, and the CEO's office has been run by non-family professional managers, most recently Dan Crociata, a former CFO promoted to the top job in May 2025 when Michael Knight stepped down, per the company's own [leadership transition announcement](https://www.prnewswire.com/news-releases/endries-international-announces-leadership-transition-302463667.html). That is the insight worth naming plainly: fastener distribution has largely consolidated into two buckets over the last two decades, PE-backed platforms rolling up regional players, or small family shops that eventually sell into one of those platforms. Endries has done neither. It has stayed privately controlled by the founding family at the governance level while running the acquisition playbook usually reserved for outside capital, buying the smaller companies instead of becoming one of them. ## The acquisition engine, dated Between November 2023 and November 2024 alone, Endries closed on Viscan Group, Ace Bolt & Screw, Blue Chip Engineered Products and ServTronics, according to the company's own [news archive](https://www.endries.com/content/resources/news). Assembly Fasteners followed, adding a 1984-founded Florida latch-and-hardware specialist to the roster. Each of the eight brands the company has absorbed, including Store Room Fasteners, Industrial Products Company and les attaches Viscan, still carries its own name in the field. | Acquisition | Announced | Specialty added | |---|---|---| | Viscan Group | Nov 2023 | Fastener distribution, Quebec | | Ace Bolt & Screw | Mar 2024 | Regional fastener supply | | Blue Chip Engineered Products | Jul 2024 | Custom-engineered fasteners | | ServTronics | Sep 2024 | Aerospace, medical, military fasteners | | Assembly Fasteners | Nov 2024 | Latches and specialty hardware | That is a house-of-brands strategy, not a rebrand-and-strip strategy. The acquired companies keep their customer relationships and their name recognition in their niches, while Endries folds their volume into a shared backbone of 26 distribution centers spanning North America and Europe, including facilities in England and the Netherlands, and a catalog that has grown past 800,000 SKUs. New capacity keeps landing behind the deals too: an Algonquin, Illinois distribution center opened in September 2024, and a Fort Worth, Texas facility followed in January 2025. ## The technology layer nobody sees The reason the acquisitions stick is the same reason the 1984 inventory program mattered: Endries doesn't sell parts so much as it sells the elimination of a customer's parts problem. Its PULSE platform, an RFID-based bin and point-of-use replenishment system introduced in 2015, automates reordering on the plant floor so a customer never has to count washers again. Layer in engineering support for fastener specification, kitting and sub-assembly, and quality documentation for regulated sectors like aerospace and medical, and switching away from Endries stops being a pricing decision. It becomes a re-engineering project. ## A hard read on the tension The house-of-brands model is not free of risk. Eight brand names under one roof means eight sets of systems, cultures and customer habits to eventually align, and every acquisition adds integration debt even when the deal itself goes smoothly. A February 2025 brand refresh, updating the corporate logo and messaging across the portfolio, is the first visible sign the company is starting to knit those brands closer together rather than leaving them fully separate forever. How far that consolidation goes, and whether it costs Endries the local trust that made each acquired brand worth buying, is the open question for the next chapter. For a company still headquartered in the Wisconsin town where it started, the ambition is not subtle. Endries is not waiting to be bought. It is doing the buying, brand by brand, bin by bin, one Class C part at a time. Distribution's competitive edges rarely live in the showroom. They live in the catalog data, the branch network and the replenishment logic that customers never have to think about, which is exactly why they're worth studying. --- # The attribute schema demand planners actually need (it's not the e-comm facet list) Source: https://www.anglera.com/blog/demand-planning-attribute-schema Published: 2026-05-29 ![The attribute schema demand planners actually need (it's not the e-comm facet list)](/og/hero-demand-planning-attribute-schema.jpg) A planner pulls a rollup by color family to spot the trend before the buy meeting closes. Half the SKUs come back under "Multi," a third show whatever string the vendor typed into a free-text field last season, and the rest are split across "Navy," "Deep Navy," and "Ink" as if they were three different colors. The chart is technically correct and practically useless. Nobody did anything wrong, exactly. The catalog just wasn't built for this question. That's the quiet mismatch behind a lot of bad forecasts: the attribute schema retailers have is the one built for the website, and the schema demand planning needs is a different animal wearing the same clothes. ## Facets and planning attributes overlap, but they're not the same job E-commerce facets exist to help a shopper narrow a list fast. They're optimized for click-through: broad enough to feel intuitive, forgiving enough to tolerate some overlap, and free to change every season if it makes the site feel fresher. A facet that returns 40 products when a shopper expects 12 is a minor annoyance. Nobody re-runs last year's numbers against it. A planning attribute exists to be aggregated, compared across periods, and fed into a model. It has to partition the assortment cleanly, hold its meaning across seasons, and never silently drop or double-count a SKU. A facet that's "close enough" is fine for merchandising a site. An attribute that's close enough will corrupt every rollup built on top of it, because a forecast is nothing more than an aggregation, and the attribute is the dimension it aggregates along. Get the dimension wrong and the number underneath it is wrong too, no matter how good the forecasting model is. Retail taxonomy work already has language for the underlying problem. In product taxonomy design, [mutual exclusivity](https://www.earley.com/insights/product-taxonomy-mutual-exclusivity-one-product-one-place) means every item has exactly one home in the structure — not because that's tidy, but because "data governance" and "partner integration" both depend on a SKU never showing up in two buckets that get summed separately. Facets are allowed to overlap. Planning categories can't. ## What "planning-grade" actually requires Four properties separate a planning attribute from a facet, and a schema missing any one of them will produce numbers a planner has learned not to trust. **Discrete and mutually exclusive.** Every value in a planning pick list has to partition the line with no ambiguity and no gaps — one SKU, one bucket, every time. "Multi" as an escape hatch for anything with two colors isn't a value, it's a hole in the taxonomy. If 8 percent of the assortment lands in the miscellaneous bucket, 8 percent of every rollup by that dimension is wrong by construction. **Stable across seasons.** A facet can be renamed to chase a seasonal trend word. A planning attribute can't, or the year-over-year comparison breaks the moment the label changes even though the underlying product didn't. If "Athleisure" becomes "Performance Casual" between fall and spring resets, the trend line for that segment doesn't dip and recover, it just vanishes and reappears under a different name, and whoever's building the buy has to manually reconcile two years of history by hand. **Granularity chosen for the analysis, not the shelf.** This is where teams most often pick one option when they need both. A single "color" field with 400 unique values is too fine to spot a trend; a single "color family" field with 12 values is too coarse to actually place a reorder. Planners need color family for the trend read and specific shade for the buy — as a hierarchy, not a replacement of one for the other. [Retail hierarchy guidance](https://www.toolio.com/post/optimizing-product-hierarchy-and-attributes-for-effective-retail-decision-making) makes the same point about attributes generally: detail matters for some decisions, an aggregated view matters for others, and a mature schema carries both levels rather than forcing a choice. **Coverage of dimensions the storefront never shows.** Construction method, component and material composition, factory or sourcing region, lead time tier, compliance or duty classification — none of these appear as a customer facet, and all of them drive real planning and buying decisions: which styles can flex quickly on reorder, which share a supply constraint, which carry a landed-cost risk the model needs to know about. A schema copied straight from the PDP facet list simply doesn't have a field for any of it. ## Two views, one source of truth | Field | E-comm facet (what shoppers see) | Planning attribute (what planners need) | |---|---|---| | Color | "Multi," broad marketing names, can shift by season | Specific shade code plus a fixed color-family layer above it | | Material | One tag, often just the dominant fiber | Full composition with percentages, construction method | | Fit | Marketing labels ("Relaxed," "Athletic") | Stable fit code mapped consistently across styles and years | | Category | SEO-friendly, can be re-labeled for trend language | Fixed hierarchy node, unchanged season to season | | Sourcing | Not shown | Factory, region, lead-time tier | The fix isn't to replace the facet list with the planning list, or vice versa. It's to design them as two views over one governed attribute layer: the facet is a curated, human-friendly projection for the shopper; the planning attribute is the underlying, MECE, seasonally stable value that the facet gets derived from. When color family and shade both live on the product record, the facet can show "Navy" while the planning rollup still has the shade-level detail sitting one layer down, ready when someone needs it. Building that layer means going back to the sources that actually carry this information — tech packs, BOMs, spec sheets, imagery, even reviews — because most of it was never captured as clean structured data in the first place. It was written into a PDF, buried in a legacy ERP free-text field, or never recorded at all. ![Architecture: tech packs, BOMs, imagery, reviews, and ERP fields flowing up through an enrichment layer into planning, BI, and ML models](/diagrams/planning-data-foundation.svg) ## Building the planning view alongside the digital one A workable approach starts small. Pick the three or four attributes that actually drive the current planning cycle — for most lines, that's category, color family plus shade, material, and one internal dimension like construction or sourcing region. Define each as a closed pick list, not a free-text field. Map every existing value, including the legacy junk, into that list once, and lock the list for the season. Then let the customer-facing facet be generated from it, not maintained in parallel by a different team with different incentives. None of this requires ripping out the PIM or the planning tool already in place. Your PIM stores the data; the work is in extracting the real values from the source documents and images, normalizing them into a schema built for aggregation, and keeping it validated as new product comes in — so the rollup a planner pulls on Monday reflects the assortment that actually exists, not whatever happened to get typed into a field last season. --- # Product attributes in the lakehouse: cleaning the silver layer for real Source: https://www.anglera.com/blog/data-hub-silver-layer-product-attributes Published: 2026-05-29 ![Product attributes in the lakehouse: cleaning the silver layer for real](/og/hero-data-hub-silver-layer-product-attributes.jpg) Most data teams can recite the medallion pattern in their sleep: bronze holds raw data exactly as it landed, silver cleans and conforms it, gold aggregates it into something a dashboard or model can consume. [Databricks describes silver as the layer for "data cleansing, deduplication, and normalization," with schema enforcement and null handling done before anything moves upstream](https://docs.databricks.com/aws/en/lakehouse/medallion). It is a good pattern. It is also, for product data, incomplete in a way most pipelines never notice until a forecast blows up. Here is the gap. "Clean" in a typical silver layer means: cast the types, drop the nulls, dedupe on primary key, standardize date formats, enforce a schema. That is real work and it matters. But none of it touches the actual content of a product attribute field. A silver table can be perfectly deduped, perfectly typed, and still contain a `material` column that reads `100% cott`, `COTTON`, `cotton (organic)`, and `Cotton/Poly Blend` for four rows that should all roll up into one planning bucket. Type-casting does not fix that. Deduplication does not fix that. The field is technically clean and semantically garbage. ## Why this matters more for planning than for BI A sales dashboard can survive some sloppiness in attribute values. A human looks at the chart, mentally normalizes "cott" to "cotton," and moves on. A forecasting model or an assortment-planning rollup cannot do that. It aggregates literally. If four material spellings exist in silver, gold either treats them as four different categories (fragmenting the sample size a category-level model needs) or someone downstream writes a `CASE WHEN` statement to patch it in the BI layer, which is exactly the kind of shadow logic that model governance is supposed to prevent. This is the same failure mode data quality practitioners have flagged for years under the "garbage in, garbage out" banner: [automation doesn't correct errors, it amplifies them](https://parseur.com/blog/gigo), and forecasting is automation. [Clean data has always been described as vital to demand forecasting accuracy](https://www.unioncrate.com/resources/importance-of-clean-data-for-demand-planning-accuracy) because outdated or incomplete inputs produce unreliable outputs — but "clean" in that context has to mean clean values, not just clean schema. A demand plan is an aggregation. Attributes are the dimensions it aggregates along. If the dimension values are inconsistent, every rollup built on them inherits the inconsistency silently, with no error thrown anywhere in the pipeline. ![Diagram: bronze, silver, gold lakehouse layers with product-attribute enrichment at the silver layer](/diagrams/medallion-attributes.svg) ## What silver-layer cleaning actually requires for attributes Standard silver-layer transformations (per the Databricks reference architecture) are cleanse, validate, deduplicate, and lightly enrich. For product attributes, each of those steps needs a different definition than the one written for transactional or event data: | Standard silver step | What it does for order/event data | What it has to do for product attributes | |---|---|---| | Cleanse | Trim whitespace, fix encoding | Extract structured values out of free text (tech pack notes, spec PDFs, legacy ERP free-text fields) | | Normalize | Standardize date/currency formats | Map every raw value to a controlled pick list (`cott`, `100% cotton`, `ctn` all become `Cotton`) | | Validate | Check foreign keys, non-null constraints | Check the value against the source of truth — does the imagery actually show a zipper closure if the field says "zip"? | | Deduplicate | Collapse duplicate transaction rows | Resolve conflicting attribute values across source systems and flag rather than silently overwrite | That middle-right cell is the one most teams skip entirely, because it requires actually looking at the tech pack, the spec sheet, or the product photo, not just the row. It is extraction and normalization against a controlled vocabulary, and increasingly it means validating a text field against imagery — confirming a stated attribute matches what a photo or document actually shows, and flagging the mismatch instead of trusting whichever source loaded last. ## Why "just add validation rules" undersells the problem It is tempting to think dbt tests or a Great Expectations suite closes this gap. They do not, because they validate structure, not content. A `not_null` test passes on `material = "cott"` just as happily as it passes on `material = "Cotton"`. A regex check can catch obviously malformed strings, but it cannot tell you that "water resistant" and "waterproof" are being used interchangeably by two different suppliers to mean different IP ratings, or that a sole material field was copy-pasted from last season's near-identical style. Those are semantic errors, and semantic errors are exactly what corrupt like-item matching, substitution logic, and any model feature built on attribute rollups. This is also why entity resolution and MDM approaches, which are well understood for matching customer records or supplier IDs to a canonical key, don't fully solve it either. Assigning a canonical product key does not tell you whether the attributes attached to that key are correct. You can have a perfectly resolved, deduplicated product master where half the color values are still wrong, because nobody checked them against anything. ## What this actually looks like as a silver-layer step Treat attribute enrichment as its own conformance stage, sitting inside silver, before anything reaches gold: - Extract candidate values from unstructured sources feeding bronze: tech packs, BOMs, spec sheets, product imagery, even review text where customers describe a fit or material issue the catalog got wrong. - Normalize every extracted value against a governed pick list per attribute, not a free-text field, so "cott," "ctn," and "100% cotton" become one value before a model ever sees them. - Validate contested values against a second source (imagery against spec sheet, spec sheet against tech pack) and flag conflicts for review rather than silently picking one. A quality score per attribute, not just a filled/empty flag, is what lets downstream consumers decide how much to trust a value. - Backfill gaps at the attribute level across the whole catalog in one pass, rather than waiting for the next PLM refresh cycle, so a newly required planning dimension (say, a closure type or a fabric-weight band) doesn't sit null for two quarters. None of this replaces schema enforcement or deduplication. It runs alongside them, because a perfectly typed, perfectly deduplicated field with the wrong value in it is still the wrong value, and it will still be wrong every time it gets aggregated. This is the layer Anglera is built for. Your PIM, MDM, or lakehouse stores the record; Anglera does the extraction, normalization, and validation work that turns a raw attribute field into something a forecast can actually trust, working from whatever source system or flat export you already have, without replacing the pipeline underneath it. Planning tools are only as good as the item data feeding them. Fixing that data where it lives, in the layer built to hold "clean," is the step most medallion pipelines still skip. --- # The ROI of product data in Automotive Aftermarket: the numbers that actually move Source: https://www.anglera.com/blog/automotive-aftermarket-roi Published: 2026-05-29 Industries: automotive-aftermarket ![The ROI of product data in Automotive Aftermarket: the numbers that actually move](/og/hero-automotive-aftermarket-roi.jpg) Automotive aftermarket sellers already know their product data is a fitment problem in disguise. What's harder is proving, in numbers a finance team will sign off on, that fixing it pays for itself. Here's how to pick the metrics that actually move, measure them without guesswork, and build the before/after case. ## Start with the metric finance already watches Every retailer already reports conversion rate, return rate, and traffic. The mistake is treating product data as a UX or catalog-team problem instead of tying it directly to those three lines. Digital Commerce 360's Top 1000 data put the auto parts category's online conversion rate at just 1.3% in 2023, with median ticket size rising to \$224 — a category that converts worse than general retail even as basket size climbs ([Digital Commerce 360](https://www.digitalcommerce360.com/automotive-parts-ecommerce-statistics/)). That gap between rising AOV and stubborn conversion is exactly where incomplete data shows up: buyers who don't trust a listing enough to check out, even when they're ready to spend. | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether shoppers who land on a part page actually buy | GA4 or platform analytics, segmented by SKU completeness (fitment fields populated vs. not) | | Return rate by reason code | Whether returns are driven by wrong part, wrong fit, or buyer error vs. damage/other | RMA system reason codes, tagged fitment-mismatch separately from damage/changed-mind | | Organic + on-site search traffic | Whether the catalog is findable at all, on your site and in search engines | GSC impressions/clicks by page, plus internal search zero-result rate | | AI-referral traffic | A smaller but growing discovery channel worth tracking separately | GA4 referral source segmentation (chatgpt.com, perplexity.ai, etc.) | | AOV / attach rate | Whether complete listings (specs, install notes, compatible parts) sell more per order | Order-line analysis: attach-rate on SKUs with cross-sell/compatibility data vs. without | | Support tickets per 1,000 orders | Hidden cost of buyers who can't self-serve an answer from the PDP | Ticket volume tagged "wrong part" or "fitment question," normalized to order volume | ## PDP conversion: fitment is the friction, not the price Fitment is the one variable in automotive that doesn't exist in most other retail categories: the same brake pad SKU is right for one vehicle and wrong for another, and the buyer has to trust your data to know which. When YMM (year/make/model) search and fitment fields are thin or inconsistent, shoppers bounce rather than risk ordering the wrong part — a bounce rate problem that shows up as depressed conversion before it ever becomes a return. The industry's own data standards, ACES for fitment and PIES for product attributes, exist precisely because this data has to be structured and complete to be trustworthy at scale ([Auto Care Association](https://www.autocare.org/aces)). If your catalog is missing OEM cross-references, position notes, or complete fitment strings, that's not a content gap — it's a conversion leak you can quantify by comparing conversion on complete SKUs against incomplete ones in the same category. ## Returns: the cost that's already on your P&L Returns are the easiest line for finance to believe because the dollars are already visible. Auto parts is a structurally return-heavy category, and the aftermarket has been shipping more of its volume online for years — automotive was one of the faster-growing departments on Amazon, generating roughly \$12.8 billion over a recent 12-month period with 7.5% year-over-year growth, even as e-commerce return volumes across all retail have exceeded \$200 billion annually since 2021 ([Auto Care Association](https://www.autocare.org/detail-pages/blog/market-insights-with-mike/2023/11/20/e-commerce-trends-strengthening-sales-and-reducing-shrink-2023)). The mechanism to isolate is simple: split your reason codes into "fitment/compatibility mismatch," "product not as described," and everything else. If those two buckets are a meaningful share of returns, that's the number you attach to data quality, not to logistics or customer behavior. It's also the number you re-measure after you fix the data — same category, same time window, same reason-code taxonomy, before and after. ## Traffic: organic and on-site search first, AI referral as a bonus line Discoverability has always meant showing up in organic search and in your own site search — a shopper typing a part number or a symptom into your search bar and getting a zero-result page is a lost sale you can measure today via internal search analytics. Complete, structured PIES-compliant attributes (dimensions, materials, OEM numbers, compatible models) are what let both Google and your own search index actually match intent to SKU. AI answer engines are a newer, smaller slice of that same discovery layer — worth segmenting in GA4 as a distinct referral source so you can track its growth, but it shouldn't be the centerpiece of your traffic story yet. Track all three — organic, on-site, and AI — as one "found the right part" funnel rather than three separate initiatives. ## AOV and attach rate: the upside nobody puts in the deck Most ROI conversations stop at defense — fewer returns, less bounce. The offense case is attach rate: a PDP with complete compatibility data can also carry the accessories, fluids, or install kits that go with the part, and a buyer who trusts the fitment data is more likely to trust the cross-sell. Measure this at the order-line level: compare attach rate and AOV on orders where the anchor SKU had full compatibility and spec data against orders where it didn't. That comparison, run on a few hundred SKUs before and after a data cleanup, is usually enough for finance to extrapolate a dollar figure across the catalog. ## Building the before/after case finance will actually approve Pick a control set — a category or SKU range you're about to enrich — and freeze your baseline: conversion rate, return rate by reason code, zero-result search rate, and AOV, all over a consistent window (60-90 days is enough for most catalogs). Enrich that set. Re-measure the same window length, same season if possible, same traffic sources. The case isn't "data quality improved" — it's "conversion moved from X% to Y%, fitment-return share dropped from A% to B%, and here's the dollar delta at current order volume." That's a number finance can put in a forecast. This is the layer Anglera works in. Your PIM stores the ACES and PIES data — Anglera continuously scores, gap-fills, and enriches it against supplier and OEM source documents, then keeps it current as fitment tables change, so the metrics above move in the right direction instead of drifting back down after the next catalog import. --- # Too many attributes, too little signal: consolidating a splintered schema Source: https://www.anglera.com/blog/attribute-consolidation-splintered-schema Published: 2026-05-29 ![Too many attributes, too little signal: consolidating a splintered schema](/og/hero-attribute-consolidation-splintered-schema.jpg) Pull the attribute list for almost any catalog that has survived three or four years of category launches, and you will find `color`, `color_desc`, `primary_color`, and `colour` sitting side by side, each populated for a different slice of SKUs. Nobody set out to build that. It happened one migration, one category launch, and one well-meaning analyst at a time. The failure mode gets less attention than missing data, but it does just as much damage to a forecast: the signal isn't absent, it's scattered across five weak columns instead of concentrated in one strong one. ## The quiet cost of a splintered schema Missing attributes are easy to spot. A blank field shows up in a completeness report and someone gets assigned to fill it. Splintered attributes are harder to catch because, from a distance, the data looks fine. Every SKU has a color value somewhere. The problem only surfaces when someone tries to roll up sell-through by color across the whole assortment and discovers that a third of the catalog is tagged in a field the report doesn't query. Here's the mechanism worth sitting with: a demand forecast, an assortment plan, or a like-item substitution model all work by aggregating history along dimensions, color, material, fit, pack size, whatever the category calls for. If the values that describe one true concept are split across `color`, `primary_color`, and a free-text `notes` field where someone typed "mostly black w/ white trim," the model sees three thin, inconsistent signals instead of one strong one. Sample sizes per bucket shrink, variance goes up, and the attribute effectively stops predicting anything. The data isn't wrong, exactly. It's diluted past the point of usefulness. Terminology drift alone can break the joins that forecasting depends on. SAS has flagged this with a blunt example: a demand model that treats "Head and Shoulders" and "Head&Shoulders" as two different products, silently splitting that item's history in half before the analysis ever starts (see [SAS's writeup on data quality in demand forecasting](https://blogs.sas.com/content/hiddeninsights/2022/03/29/data-quality-in-demand-forecasting/)). A near-duplicate attribute column does the same thing to a rollup: the aggregation logic simply never looks in the second place the value is hiding. ## How schemas end up this way Nobody designs a splintered schema on purpose. It accretes: a new category's buyer imports a spreadsheet with its own naming convention, so `finish` becomes `surface_finish` just for that category. A vendor feed arrives pre-mapped to the vendor's own field names, and rather than reconcile it, someone adds it as a parallel attribute to hit a launch date. A field gets renamed for a new system, but the old name is never retired, so both exist, one live and one fossilized. A free-text notes field becomes an informal second attribute because the governed pick list didn't have the right value yet, so people typed around it instead of requesting an addition. Each decision was locally reasonable. The aggregate result is a schema where the same concept has three or four names, none of them complete, and a planning team that has to know all four before it can trust a rollup. ## Auditing for overlap The audit is mostly pattern-matching against the schema itself, before you touch a single record. Start by listing every attribute name across every category and clustering them by string similarity and by co-occurrence: fields almost never populated on the same SKU are often the same concept, split by category or by era. Then check population rates and value overlap. If `color_desc` and `primary_color` share 80 percent of their populated SKUs with the same value in both, they're very likely one attribute wearing two names. A field populated on a handful of SKUs, untouched by any enrichment or import process in a year, is a candidate for retirement regardless of whether it overlaps with anything. It helps to score each attribute name on a few dimensions before deciding what to do with it: | Signal | What it tells you | Typical action | |---|---|---| | High population, one category only | Legitimate category-specific attribute | Keep, scope it explicitly | | High population, overlaps another field's values | Duplicate under a different name | Merge into one survivor | | Low population, no recent writes | Dead field from a past migration | Retire | | Free-text field shadowing a governed attribute | Workaround for a missing pick-list value | Merge values in, expand the pick list, retire the free-text field | | Populated inconsistently across regions or systems of record | Naming or mapping drift across integrations | Reconcile mapping, keep one canonical name | ## Merge, retire, or keep Once an attribute is flagged as a likely duplicate, the decision is less about the name and more about which values are trustworthy. Pick the survivor based on population rate, source reliability, and how recently it's been validated, not on which system happens to own it politically. Then map every other variant's values into the survivor's schema, including reconciling free-text entries into the governed pick list. ![Diagram: many free-text spellings of one value converging into a single governed pick-list value](/diagrams/freetext-normalization.svg) This is where extraction from source documents earns its keep. Values scattered across a legacy `notes` field, a vendor tech pack, or an old ERP export can be parsed and mapped to the governed list rather than manually retyped SKU by SKU, which is the part of consolidation that usually stalls a schema cleanup for months. Conflicting values between the surviving attribute and the ones being merged in should be flagged for review, not silently overwritten. A dead field untouched for a year can usually just be archived, not migrated. ## Backfilling the survivor consistently Merging the schema only pays off if the survivor attribute is then filled out consistently across the SKUs that used to rely on the retired fields. That means the same source hierarchy, the same validation rules, and the same confidence scoring applied catalog-wide, not category by category. A backfill that leaves the merged attribute at 60 percent population in footwear and 95 percent in apparel just relocates the dilution problem instead of fixing it. ## Governing so it doesn't happen again Consolidation without governance is a one-time cleanup that starts drifting again the day after it ships. The fix is process, not a tool: a documented attribute dictionary naming the one canonical field for each concept, an approval step before anyone adds a new attribute (especially one that sounds suspiciously like an existing one), and a recurring review of population rates so dead fields get flagged before they've sat ignored for two years. One PIM-implementation retrospective put it plainly: governance has to be a business process, not a feature that ships with the software, because "the PIM will fix it later" consistently fails as a plan (see [McFadyen Digital on product data governance](https://mcfadyen.com/articles/your-pim-wont-fix-your-product-data-thats-the-work-you-have-to-do-first)). The same discipline applies whether the schema lives in a PIM, an MDM, or a flat file everyone edits by hand. A splintered schema and a sparse one cause the same failure downstream: a planning system that can't tell one product from another along the dimension that actually predicts demand. Anglera doesn't replace whatever system of record holds your schema. It sits alongside it, extracting values from the source documents and images that fed each of those splintered fields in the first place, mapping them to one governed attribute, flagging what conflicts instead of guessing, and keeping the survivor populated as new SKUs and new categories arrive. Your PIM stores the field. Anglera does the work of making sure there's only one that matters. --- # Making Syndigo-managed catalogs agent-readable Source: https://www.anglera.com/blog/syndigo-agent-readable Published: 2026-05-28 Platforms: syndigo ![Making Syndigo-managed catalogs agent-readable](/og/hero-syndigo-agent-readable.jpg) Syndigo's Content Experience Hub (CXH) does a good job getting rich, validated attributes, identifiers, and digital assets from manufacturers to retailer "recipients" over GDSN and direct syndication. But none of that content is agent-readable until it lands on an actual product page and gets rendered as visible copy and machine-parseable markup. This guide covers that last mile: taking what's already sitting in your Syndigo-managed catalog and turning it into a storefront page that both shoppers and AI agents (ChatGPT, Google's AI Mode, Perplexity, and similar) can actually extract. ## What Syndigo already gives you to work with CXH stores product content as structured attributes against a vocabulary, so every attribute name your team uses maps to an underlying Syndigo attribute ID. Manufacturers typically manage well beyond 100 attributes per item in Syndigo, covering core content (title, description, dimensions), identifiers (GTIN, UPC), classification, ingredients, allergens, dietary claims, country of origin, and rich media references, and the platform validates that content against retailer-specific requirement sets before it syndicates out over GDSN or direct API/XML connections ([Syndigo syndication overview](https://syndigo.com/syndication/), [Syndigo GDSN](https://syndigo.com/gdsn/)). Identifiers deserve a specific callout: in CXH, the identifier type isn't hardcoded, it's set through a vocabulary mapping, where an attribute like `ProductIdentifierProperty` is assigned a value such as GTIN or UPC and `ProductIdentifierValue` carries the actual code. GDSN publications specifically require GTIN as the identifier, so if your team publishes through GDSN, a valid GTIN per item is already a prerequisite, not optional cleanup ([GTIN glossary, Syndigo](https://syndigo.com/glossary/gtin-global-trade-item-number/)). That's the good news: the content usually already exists. The gap is almost always downstream of Syndigo, in whatever commerce platform or storefront template renders the page. ## Where the disconnect usually happens Syndigo (and GDSN generally) is a content and identity system, not an order or inventory system. Price, live availability, and promotional state normally live in your commerce platform or OMS, not in CXH. That means a correct Product JSON-LD block on a live page has to merge two sources: identity and descriptive attributes from Syndigo, and transactional state (price, currency, stock) from wherever your storefront gets that data. Teams that only wire up one side end up with pages that either show rich specs but stale "add to cart" state, or accurate pricing with an empty description and no identifiers at all. Map both sources explicitly before you template anything. ## Mapping Syndigo attributes to schema.org fields A reasonable field map, assuming a typical CXH attribute set: | Syndigo attribute (CXH) | schema.org Product field | |---|---| | Product Name / Trade Item Description | `name` | | Long Description | `description` | | Brand Name | `brand.name` | | Manufacturer Part Number | `mpn` | | Internal/Retailer SKU | `sku` | | `ProductIdentifierValue` where `ProductIdentifierProperty` = GTIN | `gtin13` / `gtin12` / `gtin8` (by digit length) or `gtin14` for case/pallet items | | Primary/alternate digital assets (DAM) | `image` (array, multiple aspect ratios if available) | | Country of Origin, dietary/allergen claims | `additionalProperty` (PropertyValue pairs) | GTIN length matters for schema validity: an 8-digit code maps to `gtin8`, 12-digit (UPC-A) to `gtin12`, 13-digit (EAN) to `gtin13`, and 14-digit (ITF-14, common for cases) to `gtin14`. Don't zero-pad or truncate to force a fit, pass through whatever length CXH actually holds. ## Building the JSON-LD Once the two sources are merged at the template layer (server-side, not client-injected), the output should look like this: ```json { "@context": "https://schema.org", "@type": "Product", "name": "Acme 20V Cordless Drill Kit", "description": "20V MAX cordless drill/driver with 1/2 in. chuck, compatible with the 20V battery platform.", "sku": "ACM-DRL-2000", "mpn": "DCD777C2", "gtin13": "0885911000123", "brand": { "@type": "Brand", "name": "Acme Tools" }, "image": [ "https://cdn.example.com/assets/acme-drill-2000-front.jpg", "https://cdn.example.com/assets/acme-drill-2000-kit.jpg" ], "additionalProperty": [ { "@type": "PropertyValue", "name": "Country of Origin", "value": "Mexico" }, { "@type": "PropertyValue", "name": "Battery Included", "value": "Yes, 1.5Ah Li-ion" } ], "offers": { "@type": "Offer", "url": "https://www.example.com/products/acme-drill-2000", "priceCurrency": "USD", "price": "149.00", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" } } ``` Google splits Product rich results into two tracks with different required fields ([Product structured data, Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/product)). Product snippets require `name`, plus at least one of `offers`, `review`, or `aggregateRating` ([Product snippet requirements, Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/product-snippet)). Merchant listings require `name`, `image`, and `offers`, and within `offers`, `price` and `priceCurrency` are required while `availability` and `itemCondition` are recommended rather than strictly required, though Google flags them as necessary for automatic item updates ([Merchant listing requirements, Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing)). `gtin13`/`gtin8`/`gtin12`/`gtin14`, `mpn`, `sku`, and `brand` remain recommended identifiers, not required ones, but they're what disambiguates your listing from a near-duplicate competitor SKU when an agent is comparing candidates. Google also recommends using the most specific GTIN property rather than the newer generic `gtin` property, since it's the more accurate representation. ## Rendering it so agents can actually see it JSON-LD alone isn't sufficient if the visible page is thin. Agents and crawlers that don't execute JavaScript, and even ones that do but time out on slow client-side renders, need the descriptive attributes present in the initial HTML response, not injected after hydration. Two practical rules: - Render the JSON-LD script block server-side (SSR or SSG), in the initial document, not appended via a client-side script after page load: ```html ``` - Mirror the same attribute values in visible, semantic HTML: a spec table or definition list, using standard list/term/description markup, with the same country of origin, dimensions, and compatibility values that appear in `additionalProperty`. Agents that skip structured data parsing entirely will still extract these from the DOM, and it keeps your JSON-LD and visible content from drifting apart, which review systems and some agent crawlers flag as a spam signal when they diverge. ## Keeping it in sync with Syndigo, not just at launch CXH content changes on its own schedule: new attributes get enriched, GDSN republishes push updated values, DAM assets get replaced. If your storefront only pulls a Syndigo export at deploy time, the visible page and the JSON-LD will both drift out of date the moment content changes upstream. Treat the Syndigo-to-storefront attribute feed as a recurring sync (webhook-driven if your integration layer supports it, scheduled otherwise), and make sure the same sync job updates both the rendered spec table and the JSON-LD block together, since a mismatch between the two is worse for trust signals than either problem alone. ## How to validate - **View-source vs. rendered DOM**: `curl -s https://www.example.com/products/your-sku | grep -A2 'application/ld+json'` to confirm the JSON-LD ships in the initial HTML response, not only in the browser-rendered DOM. - **Rich Results Test**: run the live URL through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm the Product markup parses and flag any missing required/recommended fields. - **Schema Markup Validator**: cross-check against [validator.schema.org](https://validator.schema.org/) for strict schema.org conformance independent of Google's eligibility rules. - **Spot-check GTIN length**: confirm `gtin13`/`gtin12`/`gtin8`/`gtin14` matches the actual digit count coming out of CXH's `ProductIdentifierValue`, mismatched lengths are a common silent failure. Verified as of July 2026 against Syndigo's public syndication and GDSN documentation and Google Search Central's Product structured data guidance; CXH attribute names and vocabulary behavior can vary by implementation and contract, so confirm exact field names in your own tenant before templating. Getting the attributes right upstream is still the harder half of this problem, and it's the half Anglera is built for: it continuously enriches product data, extracting attributes, identifiers, and use-case detail from source documents rather than inventing them, and gap-fills what's missing so there's something complete to map into the template above. Anglera plugs into a Syndigo-fed catalog additively, alongside your existing PIM and commerce stack, rather than replacing either. Your PIM stores the data; Anglera does the work of keeping it complete enough to render. --- # Singer Industrial: A Roll-Up That Won't Erase Its Brands Source: https://www.anglera.com/blog/singer-industrial-distributor-playbook Published: 2026-05-28 Industries: pumps-fluid-power ![Singer Industrial: A Roll-Up That Won't Erase Its Brands](/og/hero-singer-industrial-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In February 2026, Singer Industrial's leadership published a company post arguing that "growth isn't limited to acquisitions, new markets, or expanded capabilities. It's about people." That is an unusual thing for a company built almost entirely through acquisitions to say out loud. Modern Distribution Management's [2026 Top Distributors](https://www.mdm.com/top_distributors) list backs up the results either way, placing Singer Industrial No. 3 in Hose, No. 14 in Fluid Power, and No. 33 in Industrial Supply — up three spots in Industrial Supply from the year before — ranking it against every large distributor in North America across 20 verticals. ## From Singer Equities to a 48-brand federation Singer Industrial traces back to 1999 as Singer Equities, a hose and rubber distributor that caught the attention of AEA Investors, a New York private equity firm, which made its first investment in the company in 2011. Under AEA, the company operated for years as Singer Bishop Products (SBP) Holdings before formally rebranding to Singer Industrial in 2023. By AEA's own count, the platform has completed nearly 30 acquisitions since that 2011 investment, according to the firm's [continuation fund announcement](https://www.prnewswire.com/news-releases/aea-investors-sbpe-announces-closing-of-384-million-continuation-fund-for-singer-industrial-301798459.html). The company today runs [nearly 1,500 employees across more than 100 U.S. and Canadian locations](https://singerindustrial.com/coordinated-autonomy-the-strategy-powering-singer-industrials-growth), organized into more than 48 operating brands spanning industrial rubber, hose, gaskets, conveyor belting, fluid power, and automation. | MDM 2026 category | Rank | |---|---| | Hose | 3 | | Fluid Power | 14 | | Industrial Supply | 33 | ## The moat: Coordinated Autonomy Singer Industrial's leadership calls its operating model Coordinated Autonomy, and the name is meant literally. The company centralizes the functions that benefit from scale across a fragmented, low-margin distribution category: payroll, banking relationships, health benefits, and a shared ERP system built on Epicor Prophet 21. Everything closer to the customer, pricing calls, hiring, local supplier relationships, even the name over the door, stays with the operating company. As leadership frames it on the [company's site](https://singerindustrial.com/coordinated-autonomy-the-strategy-powering-singer-industrials-growth): "Why acquire great leaders and then tell them how to run their business?" That is the standard pitch of any decentralized roll-up. What makes Singer's version worth studying is how far it goes. Browse the brand list and you find [PRC Industrial Supply, which marked 130 years in business](https://singerindustrial.com/brands), Hanna Rubber at 100 years, Hampton Rubber at 70, and Smith Industrial Rubber and Plastics celebrating 50 this July. These are not shells wearing a new logo. They are independent, often family-founded hose and rubber shops that Singer bought and then left alone to keep being the local hose guy a plant manager has called for three decades. ## The unique bet: heritage as an asset, not friction Most industrial roll-ups eventually flatten what they buy. A national brand and a single go-to-market motion are easier to sell, easier to market, and easier to explain to a board. Singer Industrial has spent a quarter century doing close to the opposite. Twenty-five years and roughly 30 acquisitions in, it still operates under 48 separate names instead of one master brand, and it is still adding to that list: this spring it announced a partnership with [Conveyor Consulting and Rubber Corporation](https://singerindustrial.com/singer-industrial-partners-with-conveyor-consulting-and-rubber-corporation), a Florida and Ohio operator that keeps its own identity too. The bet is that a century of local trust in a specific plant or county is worth more intact than folded into a corporate rebrand, and that a shared back office is enough glue to hold a federation of that size together without anyone needing to agree on a common name. The financial structure backs the same conviction. When AEA revisited its stake in 2023, it did not sell Singer Industrial to a new sponsor, the usual move at the end of a five-to-seven-year private equity hold. It rolled the company into a $384 million continuation fund, bringing in Apollo S3 and LGT Capital Partners alongside existing investors, and kept building. A continuation vehicle is a bet that the platform is worth compounding for another cycle rather than flipping, and Singer's leadership succession reads the same way. When President Pete Haberbosch was [named CEO in April 2026](https://singerindustrial.com/singer-industrial-names-pete-haberbosch-chief-executive-officer-reinforcing-coordinated-autonomy-growth-strategy), the company promoted from inside rather than recruiting an outside operator, with Chairman Don Fritzinger crediting Haberbosch as the person who built the Coordinated Autonomy model in the first place. ## Where the model gets tested A federation of 48 named brands has a real cost. National accounts that want one contract, one item master, and one online storefront across a multi-state footprint do not care that the local rubber shop has a great reputation with the plant down the road. They want one point of contact and one part number that resolves the same way in Texas and Ontario. Singer Industrial's diversification post frames its spread across industries and geographies as deliberate insulation against any single end market's downturn, which is a reasonable read of the same structure. Whether Coordinated Autonomy can also produce a unified digital front end for large, multi-site customers, without asking Hanna Rubber or PRC Industrial Supply to stop feeling like themselves, is the open question for the next decade of the roll-up. A hose distributor's real product is rarely the hose. It is the truck that shows up before the line goes down, the branch that answers the phone, and, increasingly, the catalog and part data behind both. This is the Distributor Playbooks series. --- # How R.S. Hughes Wins Without a Single Headline Acquisition Source: https://www.anglera.com/blog/rs-hughes-distributor-playbook Published: 2026-05-28 Industries: mro-industrial ![How R.S. Hughes Wins Without a Single Headline Acquisition](/og/hero-rs-hughes-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* R.S. Hughes shows up three times on [Modern Distribution Management's 2026 Top Distributors lists](https://www.mdm.com/top_distributors): #39 in Industrial Supply, #18 in MRO, and again in the unranked Specialty Adhesives category. Most companies that crowd multiple MDM verticals got there by buying their way in. R.S. Hughes did not make a single headline acquisition to earn any of the three placements. It grew the slow way, and that choice is the whole story. ## A specialist wearing a generalist's badge MRO distribution is a scale game. The companies above R.S. Hughes on that list, and most of the ones below it, sell a little bit of everything to keep plant managers from calling a second vendor. R.S. Hughes plays a narrower hand: adhesives, tapes, abrasives, and specialty industrial materials, stocked deep enough to earn a line on the MRO list almost as a side effect. The [company's own history page](https://www.rshughes.com/about-us) puts the current footprint at more than 350,000 SKUs across 46-plus warehouses in the US, Mexico, and Costa Rica, serving aerospace, medical device, and transportation manufacturers whose adhesive specs are not negotiable. That is a distributor built for depth in a category, not breadth across a catalog. Showing up in Specialty Adhesives at all, alongside a top-40 Industrial Supply rank, is the tell. ## The ESOP that didn't sell Founded in 1954 in Glendale, California, by Robert Saunders Hughes, the company has spent seven decades avoiding the two exits most founder-led distributors eventually take: a strategic sale to a public consolidator or a leveraged buyout by private equity. Instead R.S. Hughes is 100 percent employee-owned through an ESOP, a structure the company still points to as core to its identity rather than a historical footnote. In a sector where names like Applied Industrial and Grainger grow partly by acquiring companies exactly like this one, staying employee-owned is the strategic choice, not the absence of one. It means no sponsor pushing for a re-sale in five to seven years, and no debt schedule dictating which branches get capital. The trade-off is real: ESOP-owned distributors typically can't move as fast on large acquisitions because there's no external equity check to write, which may be exactly why R.S. Hughes' revenue climbed from $466 million in 2021 to $527 million in 2024, per MDM, without a single acquisition announcement in that stretch. | Fiscal Year | MDM-Reported Revenue | |---|---| | 2021 | $466M | | 2022 | $503M | | 2023 | $515M | | 2024 | $527M | Steady, mid-single-digit compounding is what organic growth looks like from the outside. It is a slower climb than a roll-up produces, but it is also a climb with no integration risk and no acquired branch culture to absorb. ## Turning a distribution slot into a manufacturing line The clearest evidence of where R.S. Hughes is actually investing sits in its Saunders division, a custom-conversion operation running since 1959 that takes tapes, foams, foils, and adhesive films and die-cuts, laser-cuts, laminates, and slits them into finished parts to a customer's tolerance. That is not distribution. It is contract manufacturing wrapped inside a distributor's P&L, and it is the reason R.S. Hughes can win specialty adhesives business that a pure reseller can't touch. In June 2025 the company opened a new 17,800-square-foot Saunders manufacturing facility in Cypress, Texas, outside Houston, replacing an older site as demand from the region's industrial base grew, according to coverage from the [Houston Business Journal](https://www.bizjournals.com/houston/news/2025/06/06/saunders-manufacturing-facility-relocation.html) and [BIC Magazine](https://www.bicmagazine.com/departments/engineering-construction/r-s-hughes-celebrates-grand-opening-of-saunders-facility-in-houston/). That's the capital allocation pattern of an ESOP: build a plant where customer demand already exists rather than buy a competitor's book of business. ## A leadership handoff built for continuity, not disruption The one change of note in 2025 was at the top. Bill Matthews retired as CEO on May 1 after nearly two decades with the company, and John Mathis, previously chief revenue officer, was promoted to president effective April 1, according to the [company's own announcement](https://news.rshughes.com/press-releases/r-s-hughes-announces-retirement-of-ceo-bill-matthews-john-mathis-appointed-president/) and confirmed by [Modern Distribution Management](https://www.mdm.com/news/top-distributor-sectors/facilities-maintenance-mro/r-s-hughes-announces-top-leadership-succession/) and [Industrial Distribution](https://www.inddist.com/staffing-changes/news/22938043/rs-hughes-names-new-chief-executive). Promoting the CRO from inside, rather than recruiting a turnaround executive or a PE-installed operator, fits the same pattern as the Saunders build-out and the ESOP structure: this is a company that changes leadership and adds capacity without changing its operating philosophy. ## The bet, plainly The strategic bet is that customer-specific fabrication and deep category expertise in adhesives can outcompete scale on the categories where it matters, even while the balance sheet grows too slowly to buy market share the way rivals do. It has worked for seventy years and three straight years of MDM-verified revenue growth. Whether it keeps working depends on whether a manufacturing-grade converting business can scale as fast, organically, as the industrial base it serves. Distribution rewards the companies willing to do the unglamorous work behind the shipment: the catalog depth, the branch network, the data that tells a buyer exactly which adhesive meets spec. R.S. Hughes has built seventy years of that work into a business its own employees own outright. --- # The one-day attribute audit before you trust any planning report Source: https://www.anglera.com/blog/planning-analytics-attribute-audit Published: 2026-05-28 ![The one-day attribute audit before you trust any planning report](/og/hero-planning-analytics-attribute-audit.jpg) A planner opens Monday's assortment report and sees demand for "moisture-wicking" tees running 22 percent below plan. Before anyone reacts, someone should ask a duller question first: how many SKUs in that rollup actually have a populated, correctly-tagged fabric attribute, and how many are hiding under "N/A," a typo, or a value nobody's touched since a 2022 catalog migration? Most planning teams never ask. They build the report, trust the axis, and move on. That's how a data problem becomes a business decision. The fix isn't a data governance program. It's a one-day audit, run before you build (or re-trust) any planning report that aggregates by attribute — color family, fabric, fit, category tree, size curve, whatever dimension the model slices on. Master data management exists precisely because [flawed master data misleads analytics](https://www.littleonline.com/insights/the-data-quality-challenge-killing-the-adage-garbage-in-garbage-out/) — the classic example is a system that reads "Rice 50kg," "50kg Rice," and "Rce 50kg" as three different items and quietly understates real demand for all of them. Attribute fields have the same failure mode, just less visible because nobody eyeballs them SKU by SKU. ## Why "mostly complete" isn't the bar The instinct is to check fill rate and stop there. That's the trap. A field can be 98 percent populated and still be useless for forecasting if a third of those populated values are wrong, stale, or defined three different ways across categories. [Data quality frameworks](https://www.ibm.com/think/topics/data-quality-dimensions) generally separate completeness from accuracy for exactly this reason — they measure different failure modes, and a report can pass one while failing the other completely. ![Quadrant: fill rate versus accuracy, where high fill with low accuracy is the 95-percent-complete trap](/diagrams/fill-vs-accuracy-quadrant.svg) The bottom-right quadrant is where most retail and distribution catalogs actually live: fields that look done in a completeness dashboard because someone bulk-filled a default value, a copy-paste from a similar SKU, or a legacy code nobody remapped. High fill rate, low accuracy. It passes every audit that only checks for blanks. ## Five checks, one day None of these require a data science team. They require someone willing to pull a sample, run a pivot table, and look at pictures next to text for twenty minutes. Here's the sequence, in the order that catches the most damage first. | Check | What it catches | How to run it | |---|---|---| | Fill rate by category and season-cohort | Blind spots that hide inside a healthy overall average — new categories, discontinued seasons, recently onboarded vendors | Pivot fill percentage by category and by launch season, not just overall; a 92 percent global fill rate can mask a 40 percent fill rate in this season's new-vendor SKUs | | Value cardinality | Free-text explosion — "Navy," "navy blue," "NVY," "Navy/Blk" all meaning one color | Count distinct values per attribute; if a bounded field like color or fit has hundreds of unique strings for what should be a controlled list of 20-30, it's not usable as a grouping key | | Cross-source consistency | Text that contradicts the product itself | Sample 30-50 SKUs, pull the primary image or tech pack, and check whether the attribute value matches what's actually shown — sleeve length, closure type, material, silhouette | | Staleness | Values frozen at first entry and never revisited as the product or its data source changed | Check the last-modified timestamp on the attribute field, not the record; a SKU touched last week for a price change can still carry an attribute value nobody has reviewed in three years | | Definition drift across categories | The same attribute name meaning different things in different category trees, corrupting any cross-category rollup | Pull the attribute's allowed values or format for each category branch and diff them; "sleeve length" measured in inches in one taxonomy branch and as a size code in another will break any forecast that sums across both | Cardinality is the one planners underestimate most. A model treats every distinct string as a separate bucket unless something normalizes it first, so 40 spellings of the same color don't dilute the "navy" signal, they erase it — the demand history splits 40 ways and every bucket looks thin. The forecast doesn't fail loudly. It just quietly under-forecasts the color that actually sells. ## Where the line is Not every gap needs a project. The judgment call is whether an attribute is safe to aggregate on as-is, or needs enrichment before it goes near a planning model. | Signal | Safe to aggregate | Enrich first | |---|---|---| | Fill rate (worst cohort, not average) | Above roughly 90 percent in every category-season slice you plan to report on | Any slice materially below that, especially new launches or recent vendor additions | | Cardinality vs. expected value set | Distinct values within roughly 1.5x the controlled list size | Distinct values several multiples of the controlled list — a sign of free text standing in for a dropdown | | Cross-source match rate on sample | 90 percent-plus of sampled SKUs match imagery/spec | Meaningful mismatch on a 30-50 SKU sample, which almost always generalizes | | Staleness | Attribute touched within the last major catalog or PIM sync | Last touched before a system migration, vendor change, or category rename | | Definition consistency | Same field, same format, same allowed values across every category branch in the rollup | Field means different things (units, granularity) depending on category | If two or more of these fail on the attribute your forecast leans on hardest, that's not a report to ship yet. It's a backfill project, and a bounded one — a single attribute across an existing catalog is a matter of days, not a quarter, once the source documents and images already exist to extract from. ## Making the audit continuous The honest problem with a one-day audit is that it's a snapshot. New SKUs onboard, vendors send inconsistent spec sheets, someone bulk-edits a field in the PIM without checking format, and the catalog drifts again within a quarter. Running this manually as an annual project means planning teams spend eleven months trusting numbers built on data nobody's re-checked since January. This is the part that should be automated rather than calendared. Anglera sits on top of whatever PIM, MDM, or flat-file catalog a retailer or distributor already runs and continuously extracts, normalizes, and quality-scores attributes against the source documents, images, and reviews behind them — flagging conflicts instead of silently overwriting, and surfacing fill rate, cardinality, and staleness by category as an ongoing signal rather than a once-a-year fire drill. Your PIM still stores the data. The audit just never has to wait for someone to remember to run it. --- # How pet supplies shoppers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/pet-supplies-aeo Published: 2026-05-28 Industries: pet-supplies ![How pet supplies shoppers search now — and why your catalog isn't the answer](/og/hero-pet-supplies-aeo.jpg) A pet parent shopping for a hip-and-joint supplement used to type "glucosamine chews for dogs" into Google and scroll ten blue links. Increasingly, they're asking ChatGPT, Gemini, or Google's AI Mode a real question instead — and the answer engine picks the products for them. If your catalog can't answer that question in structured, machine-readable form, you don't lose a ranking. You disappear from the conversation entirely. ## The channel shift is already measurable This isn't a future-tense story. Google's AI Overviews now surface on roughly 14% of shopping queries overall, up 5.6x in just a few months, and on "best [product]" style queries — exactly how pet owners search — the presence is far higher, [climbing from about 5% to 83% year over year](https://searchengineland.com/google-ai-overviews-shopping-queries-report-471981). Adobe's holiday 2025 data showed traffic to retail sites from generative AI sources up nearly 700% year over year, with those visitors converting 31% more often and spending far more time on-site than typical traffic. Pet retail is not a bystander here. OpenAI's ChatGPT has moved into instant checkout with retail partners, Google Gemini is testing shopping integrations with pet-category retailers, and Amazon is steering more queries through its Rufus assistant instead of the search bar. Chatbots built specifically for pet stores — Petbarn's PetAI among them — are already fielding "what should I feed my senior cat with kidney issues" instead of routing shoppers to a category page. The mechanism matters more than any single stat: AI answer engines don't rank pages, they assemble answers. They pull attributes out of your product feed, your schema markup, and your PDP copy, then recombine them into a recommendation. If the attribute isn't there in a parseable form, the AI can't use it — no matter how good your photography or brand copy is. ## Why pet supplies data breaks AI recommendations specifically Pet is a harder category for thin data to survive in than most, because the questions shoppers actually ask are conditional and multi-variable: - "Safest grain-free food for an 8-year-old golden retriever with allergies" - "Litter that's safe for a kitten with respiratory issues" - "Joint supplement that won't upset a small dog's stomach" None of those map to a single keyword. Each one requires the AI to cross-reference several structured facts at once: species, life stage, breed size, weight range, ingredient exclusions, and health-condition suitability. A raw supplier feed almost never carries all of these as queryable fields — most of it is buried in a paragraph of marketing prose, or missing outright. Here's what that gap looks like on an actual product. **Raw feed, as it arrives from most pet suppliers:** | Field | Value | |---|---| | Title | Premium Hip & Joint Chews for Dogs | | Description | "Support your dog's mobility with our vet-formulated chews." | | Category | Dog > Supplements | | Price | $34.99 | **Enriched, machine-readable version:** | Attribute | Value | |---|---| | Pet type | Dog | | Life stage | Adult, senior (7+ years) | | Breed size suitability | Medium, large, giant breeds (25 lbs+) | | Key ingredients | Glucosamine 600mg, chondroitin 300mg, MSM | | Form | Soft chew | | Health condition fit | Osteoarthritis, post-surgical mobility support | | Allergen flags | Grain-free, no artificial dyes | | Serving guidance | 1 chew per 25 lbs body weight, daily | | Contraindications | Not formulated for puppies under 12 months | The raw version reads fine to a human skimming a page. It gives an AI system almost nothing to match against a specific question. The enriched version is the difference between "we sell joint chews" and being the answer when someone asks an AI to recommend a joint supplement for a large senior dog with early-stage arthritis. ## The "ask an AI" test every pet retailer should run Open ChatGPT, Gemini, or Perplexity and type something like: "recommend a hypoallergenic dog food for a medium-sized dog with a chicken allergy, under $60." Watch which brands come back, and notice what's absent from your own catalog when you check it against that exact request. If your PDP doesn't state the allergen exclusion, the breed-size fit, and a price attribute in a structured way, you are mathematically unable to appear in that answer — not because the AI dislikes your brand, but because it can't verify a claim it can't find. This is also why schema markup keeps showing up in analyses of AI-cited pages: [a large share of pages cited by AI search tools carry structured product markup](https://alhena.ai/blog/schema-markup-ai-search-ecommerce/), because it's the cleanest signal an answer engine can trust without having to infer meaning from prose. ## What "AI-readable" actually requires Three things, in order of leverage: 1. **Attribute completeness.** Every field a shopper's conditional question could touch — life stage, breed/size fit, ingredient and allergen flags, health-condition suitability — filled in, not left blank or buried in a description. 2. **Consistency across the catalog.** One SKU calling it "grain-free" and another calling it "no grains added" forces an AI to guess whether they mean the same thing. Consistent vocabulary is what lets an answer engine trust a pattern across your whole assortment. 3. **Structured markup on the page**, not just in the backend feed, so the same facts are visible to both the shopper scanning the PDP and the crawler assembling an AI answer. Most pet retailers' PIMs already hold a version of this data — it's just incomplete, inconsistent, or trapped in unstructured text. Anglera plugs into whatever PIM or commerce platform you're already running, continuously scores every product against gaps like these, and gap-fills the missing attributes so your existing catalog becomes something an AI can actually recommend from. Your PIM stores the data; Anglera does the work of making it legible to the systems now doing the shopping for your customers. --- # Launching a SKU online is a content problem, not a catalog problem Source: https://www.anglera.com/blog/launching-a-sku-is-a-content-problem Published: 2026-05-28 ![Launching a SKU online is a content problem, not a catalog problem](/og/hero-launching-a-sku-is-a-content-problem.jpg) Most distributors treat getting a SKU online as a catalog task: load the part number, attach a price, publish. But the part number isn't what gets found, compared, or bought. The **content** is. Here's the uncomfortable truth: you sell the same SKUs as your competitors. The manufacturer ships the same part to all of you. So the only lever you actually control is how that part is described, structured, and presented to a buyer who is trying to solve a problem. ## The hidden cost of "just publish it" The average distributor spends 30–45 minutes per SKU mapping attributes, filling gaps, and reformatting supplier data to their schema. At 10,000 SKUs a year, that's thousands of hours — before anyone writes a single description. And the output of all that work is usually: - A short, all-caps ERP description (`CU PIPE 1/2X10 TYPE L HARD`) - A few attributes, often incomplete - The manufacturer's canned marketing copy, pasted verbatim That page is invisible to search, useless to on-site filters, and indistinguishable from every competitor selling the same part. ## What "content" actually means Treating a launch as a content problem means producing, for every SKU: 1. **Normalized attributes** mapped to your taxonomy, with reconciled units. 2. **A unique, buyer-specific description** — written for the contractor, the electrical pro, or the facilities manager, not for a spec sheet. 3. **Use and application context** — the distributor expertise a buyer can't get from a part number. 4. **Cross-references** to compatible and frequently-bought-with items. 5. **Answers** to the questions buyers actually ask, on the page. That's the difference between a SKU that's merely *listed* and one that's *ranking, searchable, and selling*. ## Why this compounds Getting the SKU live is just the start. Complete, structured content compounds into better SEO, sharper site search, working facets, and — increasingly — discovery by AI shopping assistants that can only surface what they can read. Launching the SKU is step one. The content is what keeps paying you back. --- # Kimball Midwest: The MRO Distributor With No Storefronts Source: https://www.anglera.com/blog/kimball-midwest-distributor-playbook Published: 2026-05-28 Industries: mro-industrial ![Kimball Midwest: The MRO Distributor With No Storefronts](/og/hero-kimball-midwest-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Kimball Midwest shows up four times on Modern Distribution Management's [2026 Top Distributors](https://www.mdm.com/top_distributors) rankings — Industrial Supply #37, MRO #15, Fasteners #20, and Hose #8. That spread across four categories from one Columbus, Ohio company is unusual. So is the fact that you cannot walk into a Kimball Midwest store, because there isn't one. ## The model: no branches, only trucks Grainger has stores you can drive to. Fastenal built its growth around a dense grid of small branches near customer sites. Kimball Midwest picked neither. Its distribution network runs through five distribution centers and more than 1,200 direct sales representatives, each one carrying rolling inventory in a van and calling on maintenance shops, fleets, and plant floors in person, according to [Global Fastener News](https://www.globalfastenernews.com/kimball-midwest-turns-100/). There is no retail counter. There is no walk-in. The rep is the branch. That is a genuinely different bet than most of its peers on the MRO and fastener lists made. A branch network scales by real estate: find a market, lease a building, staff a counter. Kimball Midwest scales by headcount and relationships: hire a rep, give them a truck stocked from one of the regional distribution centers, and let them build a route of maintenance accounts who reorder because the rep shows up, not because there's a location nearby. It is closer to a route-sales model than a classic industrial distributor, and it means Kimball Midwest's growth ceiling is tied to how many good reps it can hire and retain rather than how many square feet it can lease. The tradeoff is real. A branch-based competitor can put inventory in front of a walk-in customer the same hour they need it. Kimball Midwest instead leans on fill rate from the back end: it says it can get product to more than 90 percent of customers next-day and hit same-day dispatch on the vast majority of orders, per [Chief Executive](https://chiefexecutive.net/companies-of-a-century-kimball-midwest-attends-to-customers-and-culture/). The bet only works if the logistics behind the reps are tight enough that "no branch nearby" never becomes a customer's problem. ## Third generation, no private equity The other detail worth naming plainly: Kimball Midwest is still a family business, three generations in, in a sector that has spent two decades consolidating under private equity and strategic roll-ups. Pat McCurdy Sr. bought into Midwest Motor Supply in 1950 and became sole owner by 1978. His son, Pat McCurdy Jr., carried the company through the 1984 merger that created the Kimball Midwest name. Patrick McCurdy III now serves as president, per Chief Executive's reporting on the company's centennial. Compare that to the rest of the MRO and industrial-supply landscape, where names like Applied Industrial Technologies grew by acquisition and firms like WESCO trace back to a leveraged buyout. Kimball Midwest's growth from roughly $1 million in revenue in 1983 to more than $400 million today happened almost entirely organically, one rep and one new distribution center at a time, without a string of acquired competitors bolted onto the balance sheet. Staying private and staying in the family is a choice that trades the speed of a roll-up for control over culture and pace — the company has landed on multiple best-places-to-work and best-companies-to-sell-for lists nine years running, according to its [newsroom](https://news.kimballmidwest.com/). ## From auto parts counter to industrial MRO The founding story explains some of that patience. Midwest Motor Supply started in Columbus in 1933 as an automotive parts business. The Kimball Company was a separate Cleveland outfit founded in 1923. The 1984 merger of the two didn't just combine balance sheets, it repositioned an automotive-parts distributor into an industrial and MRO supplier serving fleets, manufacturers, and maintenance shops, a pivot that took decades to fully play out. That auto-parts DNA is still visible in the catalog. Fleet and vehicle maintenance products sit alongside fasteners, abrasives, and hydraulics in a line-up now numbering more than 55,000 SKUs. The company has also built its own manufacturing angle rather than relying purely on resale, with proprietary lines like Kim-Krimp and Ultra Pro-Max, and it markets hard on domestic sourcing, stating that roughly 80 percent of its inventory dollars go to American-made goods built in American factories. For a distributor whose whole model depends on reps making the case for a product face-to-face, "made in America" functions as sales ammunition as much as it does supply-chain policy. ## Recent momentum The centennial year in 2023 doubled as a capacity expansion, with the opening of a 142,000-square-foot distribution center in Newtown, Connecticut, adding a sixth region of coverage on the East Coast and a $1 million community giving campaign tied to the milestone. Since then the company has kept stacking recognition rather than headlines: a 16th straight year on an industrial-suppliers ranking, a spot among finalists in the 2025 Americas B2B eCommerce Awards, and, in early 2026, president Patrick McCurdy III taking a speaking slot at the National Association of Wholesaler-Distributors' executive summit in Washington. None of it is a pivot. It reads like a company compounding the same model it picked forty years ago. The strategic tension worth watching is scale. A rep-driven, van-based model works because reps can build trust route by route, but every new market means finding, training, and retaining another cohort of salespeople in a labor market that is not getting easier for field sales roles. Kimball Midwest has bet its next hundred years on that being solvable the same way it solved the first hundred: hire well, keep them, and let the relationship do the selling that a storefront can't. Distribution wins like this rarely show up in a press release. They show up in a catalog that ships the right part, a rep who knows the account, and a warehouse system quiet enough that nobody notices it working. --- # Descours & Cabaud: The 240-Year Distributor That Never Rebrands Source: https://www.anglera.com/blog/descours-cabaud-distributor-playbook Published: 2026-05-28 Industries: mro-industrial ![Descours & Cabaud: The 240-Year Distributor That Never Rebrands](/og/hero-descours-cabaud-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Descours & Cabaud shows up twice on Modern Distribution Management's [2026 Top Distributors list](https://www.mdm.com/top_distributors): #23 in MRO and #38 in Industrial Supplies, on $545 million in 2024 North American revenue. The name is unfamiliar to most American buyers for a simple reason: they know it as Dillon Supply, or as one of nearly fifty smaller brands under its Canadian arm, Ficodis. Behind all of them sits a French family holding company founded before the United States existed. ## A trading house older than most nations it sells into The lineage runs back to 1767, when Odet Dufournel started an iron trade in the town of Grigny. His son moved the business to Lyon in 1782, and by the mid-1800s the Dufournel house was one of France's largest metallurgical trading firms. André Descours and Lupicin Cabaud took over in 1861, and the company took its current legal form as a joint-stock company in 1913, according to the group's own [corporate history](https://fr.wikipedia.org/wiki/Descours_et_Cabaud). It has stayed privately held ever since, now spread across roughly 800 shareholders drawn from the founding families. As of 2023 the group reported [€4.9 billion in revenue and 15,000 employees across 720 locations in 13 countries](https://fr.wikipedia.org/wiki/Descours_et_Cabaud). That is a two-and-a-half-century run without a public listing, a leveraged buyout, or a name change at the top. ## The insight: it buys distributors and leaves the sign up Most industrial distribution roll-ups consolidate toward one national brand. Grainger is Grainger everywhere. Applied Industrial and Fastenal run single flags across thousands of locations because a unified brand simplifies marketing, purchasing, and the customer's mental model of who they're buying from. Descours & Cabaud does the opposite, and has for 45 years. It bought Dillon Supply, a Raleigh, North Carolina distributor, in 1979 and never touched the name. Dillon marked its [110th anniversary in 2024](https://www.descours-cabaud.com/en/2025/02/03/dillon-supply-a-110-ans/) still trading under the sign it opened with in 1914, now running 18 sales outlets across North Carolina, South Carolina, Virginia, Georgia, Indiana, Kentucky and Tennessee. Philippe Legris, the group's US director, called it "one of the leading professional distributors in the southeastern United States" in that same anniversary release, and the plan from here is eastward expansion past the Mississippi and deeper e-commerce investment, not a rebrand. The Canadian arm is the more extreme version of the same instinct. Ficodis, a Montreal-based group that joined Descours & Cabaud in 2022, is not one distributor wearing a French parent's logo. It is [49 specialized companies](https://ficodis.com/en/about-us/) spanning fasteners, safety equipment, cutting tools, power transmission and fluid power, operating out of 49 points of sale across Quebec, Ontario and into the northeastern United States, each keeping its own name and often its own sales force. The house brands underneath, Cromson, Opsial, Lion, Molydal, Berliss, exist to give the network shared sourcing muscle, not shared identity in front of the customer. ## An acquisition engine that keeps adding names, not subtracting them The pattern held through 2024 and into 2025. Ficodis picked up Tytan Glove and Safety, a supplier serving more than 5,000 customers; MAS Chibougamau, a northern Quebec distributor built around mining, energy and infrastructure accounts; and an Ontario safety supplier whose acquisition also handed Ficodis exclusive Canadian distribution rights to Magid protective gloves. Each deal added a logo to the group's [structure page](https://www.descours-cabaud.com/en/group/) rather than erasing one. That is the strategic bet worth naming plainly: Descours & Cabaud treats acquired distributors as standing relationships to preserve, not assets to integrate away. A regional buyer's trust in "Dillon Supply" or "MAS Chibougamau" is the asset being purchased, and the group has concluded that trust doesn't survive a rename. Patient family capital makes this affordable in a way a private-equity owner rarely could. There's no fund clock forcing a rollup into one sellable brand within a five-to-seven-year hold, so the group can let acquired identities run indefinitely. ## The tension this creates The trade-off is real. Running 49-plus distinct sales organizations in Canada alone means duplicated back offices, uneven digital maturity from one acquired company to the next, and a harder job unifying pricing, catalog data, and e-commerce experience across brands that customers never realize share an owner. A single-flag competitor can point to one website, one app, one loyalty program. Descours & Cabaud is betting that the compounding value of hundreds of trusted local names outweighs the operating friction of never merging them, and forty-five years of accumulating rather than consolidating suggests the bet has held so far. It also means the group's North American footprint is easy to underestimate from the outside. Two MDM placements under one unfamiliar French name mask a network built from Dillon Supply's century-old regional loyalty in the Southeast and Ficodis's dozens of specialist brands across Quebec and Ontario. The scale is real. It's just distributed across signs that were never meant to look like they belong to the same company. Every distributor on MDM's list runs on the same unglamorous infrastructure underneath the branch signs and specialist names: catalogs, pricing, and product data that have to work the same way no matter whose name is on the door. --- # The state of product data in Consumer Electronics retail (2026) Source: https://www.anglera.com/blog/consumer-electronics-state Published: 2026-05-28 Industries: consumer-electronics ![The state of product data in Consumer Electronics retail (2026)](/og/hero-consumer-electronics-state.jpg) Walk a mid-size electronics retailer's catalog and you'll find the same product listed three different ways across three categories, half the Bluetooth headphones missing a driver size, and a dozen "smart" devices with no protocol field at all (Matter? Zigbee? Wi-Fi only? nobody filled it in). This isn't a niche problem. It's the default state of most consumer electronics catalogs heading into 2026, and it's getting more expensive by the quarter. ## The catalog is thinner than the merchandising suggests Electronics has more attributes to get right than almost any other category: processor, RAM, storage tier, screen resolution, battery capacity, charging standard, port types, OS version, carrier and regional compatibility, connectivity protocol, warranty terms. A phone or a soundbar can easily carry 30-50 meaningful specs, and most feeds only reliably populate a handful of them. The reason is structural, not lazy data entry. Electronics data arrives from seller portals, distributor feeds, brand spec sheets, ERP exports, PIM systems, manual merchandiser edits, and translated regional files, often for the same SKU. Each source uses different units, different field names, and different levels of completeness. Nobody owns reconciling all of it, so the catalog settles into whatever the last edit left behind. Here's a realistic before/after for a mid-range wireless earbud listing pulled straight from a typical supplier feed: | Attribute | Raw feed (as received) | Enriched (shopper- and AI-ready) | |---|---|---| | Title | "Wireless Earbuds BT5.3 TWS" | "XYZ Pro Wireless Earbuds — Bluetooth 5.3, Active Noise Cancellation, 30-hr Battery" | | Battery | "30h" | 30 hours total (6 hrs earbuds + 24 hrs case), USB-C fast charge | | Connectivity | "BT5.3" | Bluetooth 5.3, multipoint pairing (2 devices), aptX Adaptive | | Water resistance | (blank) | IPX4, sweat and splash resistant | | Compatibility | (blank) | iOS 15+, Android 9+, Windows/Mac via Bluetooth | | Noise cancellation | "ANC" | Active Noise Cancellation with 3 adjustable levels, transparency mode | The raw version isn't wrong, it's just too thin to answer the questions a shopper (or an AI agent shopping on their behalf) actually asks: does this work with my phone, how long does it really last, is it sweat-proof for the gym. ## What it's actually costing retailers The numbers back up what merchandisers already sense. Akeneo's 2025 B2C shopper survey found that 53% of consumers have abandoned an online purchase because product data was missing or wrong, and 40% say they've returned a product for the same reason. That's not a rounding error against a return bill that hit an estimated [$849.9 billion across US retail in 2025](https://nrf.com/research/2025-retail-returns-landscape), with 19.3% of online sales projected to come back. Electronics returns run lower than apparel on average, but the drivers are distinct: shoppers return electronics because they misjudged compatibility, missed a spec, or got surprised by something the listing should have told them (an accessory that wasn't included, a charger standard that didn't match, a device that needed a hub the copy never mentioned). Every one of those is a data problem, not a product problem, and every one of them is fixable before the order ships rather than after it comes back. There's a search cost too, separate from returns. Thin listings underperform in on-site search and filtering because the facets shoppers actually use, like connectivity protocol, battery life, or compatible OS, simply aren't populated. A product that's real and in stock effectively doesn't exist to a shopper filtering by the attribute you left blank. ## Why 2025-2026 raises the stakes Two forces are compressing the timeline on fixing this. First, marketplace pressure. Electronics buyers increasingly start on Amazon, Best Buy Marketplace, or Walmart Marketplace listings that are algorithmically ranked on data completeness before price ever enters the equation. A retailer with a thinner feed than the marketplace norm loses shelf position before a shopper even compares prices. Second, and bigger: AI shopping agents are becoming a real acquisition channel, not a future one. ChatGPT reported [900 million weekly active users as of February 2026](https://elogic.co/blog/chatgpt-commerce-statistics/), with roughly 50 million shopping-related queries a day, and Adobe Analytics measured AI-referred shoppers converting 42% better than regular traffic in Q1 2026. Google, Walmart, Target, Shopify, and 20-plus other partners backed a new commerce protocol in January 2026 built specifically on structured, machine-readable product feeds. Here's the practical version: ask an AI shopping assistant to "recommend noise-cancelling earbuds under $150 that work with an iPhone and last a full workday," and it will pull from whichever feeds actually state noise cancellation type, battery hours, and OS compatibility as clean, structured fields, not whichever brand has the best copywriting. If those fields are blank, inconsistent, or buried in a paragraph, the agent skips the product entirely. It can't recommend what it can't parse. That's the shift electronics retailers are underprepared for. The catalog gaps that used to just cost a few percentage points of on-site conversion are now the difference between showing up in an AI recommendation and being invisible to it. ## Where Anglera fits Your PIM stores the electronics catalog. Anglera continuously scores every listing against the specs that actually matter for the category, gap-fills missing attributes like connectivity, battery life, and compatibility, and keeps them current as models and firmware change, so the same feed reads cleanly to a shopper filtering on-site and to an AI agent parsing it for a recommendation. It plugs into whatever PIM or commerce platform you already run, or none, and it's additive from day one. --- # The product-data metrics Consumer Electronics teams should actually track Source: https://www.anglera.com/blog/consumer-electronics-metrics Published: 2026-05-28 Industries: consumer-electronics ![The product-data metrics Consumer Electronics teams should actually track](/og/hero-consumer-electronics-metrics.jpg) Most electronics retailers can tell you last week's conversion rate to two decimal places but can't tell you what percentage of their catalog has a verified `IPX` rating, a complete connector list, or a correct wattage field. That gap is the problem. Product data quality is a leading indicator for almost every metric electronics teams already report on — you just have to instrument it as one. ## Start with a data-quality baseline, not a sales metric Before you can claim any lift, you need a snapshot of catalog health. For consumer electronics specifically, track completeness on the attributes that actually drive purchase decisions: connector types, wattage/voltage, dimensions and weight, compatibility (device generations, OS versions, chipset), included accessories, and certifications (`IPX` rating, `UL`, `Energy Star`, `Bluetooth` version). A generic "80% of fields filled" score is close to useless — a TV missing its `HDMI 2.1` port count or a soundbar missing its `Dolby Atmos` support flag will tank conversion even if every marketing bullet is filled in. Pull this by category from your PIM or product feed (Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica — whatever you run, or a flat file if you run nothing formal yet). Score attribute completeness and accuracy per SKU, then roll it up by category and by supplier. This is your leading indicator: it moves before any downstream metric does, and it's the one thing you can act on directly. ## The metrics, sorted by what they actually tell you | Metric | Leading or lagging | How to instrument it | What it tells you | |---|---|---|---| | Attribute completeness/accuracy score | Leading | PIM/feed audit against a category-specific required-attribute schema, scored per SKU and rolled up | Whether the catalog can even answer the buyer's question before they ask support | | On-site search zero-results rate | Leading | Site search analytics (Algolia, Bloomreach, native platform search logs) — count queries returning 0 results, segment by category | Whether your taxonomy and attribute values match how shoppers actually search (`"usb c fast charger 65w"` vs your internal naming) | | PDP conversion rate | Lagging | GA4 ecommerce funnel or platform analytics, segmented by PDP completeness tier | Whether a complete, accurate PDP actually closes the sale once someone lands on it | | Organic clicks to PDPs | Lagging | Google Search Console, filtered to PDP URL patterns, tracked pre/post enrichment by SKU cohort | Whether richer structured content and specs are earning ranking and click-through, not just traffic in general | | AI referral/citation traffic | Lagging, directional | GA4's AI Assistant channel grouping (or a custom regex channel for `chatgpt.com`, `perplexity.ai`, `gemini.google.com`, etc.) alongside server log checks for AI crawler hits | One discovery channel among several — treat the trend line as a signal, not a KPI to chase | | Return rate (data-caused subset) | Lagging | Returns platform reason codes, isolate "not as described," "wrong item," "missing accessory," "didn't fit/work as expected" | Whether inaccurate or incomplete specs are creating post-purchase regret, not just shipping damage | | AOV / attach rate | Lagging | Order-level revenue and line-item counts, segmented by whether the PDP surfaced accessory/compatibility data (e.g., a case, cable, or protection plan matched to the exact model) | Whether complete compatibility data is enabling cross-sell, or whether shoppers are guessing and buying elsewhere | | Support ticket load (product-info tickets) | Lagging | Helpdesk tagging for "spec question," "compatibility question," "wrong item received" | Whether the PDP is doing its job or your support team is doing it instead | Attribute completeness and zero-results rate are your leading indicators because they change the moment you fix the data — before a single sale happens. Everything else lags by days or weeks, because it depends on people acting on the improved data. ## A concrete example Say you sell wireless earbuds across a dozen brands. Half your SKUs are missing a `Bluetooth` version field, and a third don't list `IPX` water-resistance rating at all. Your on-site search logs show recurring zero-results queries like `"bluetooth 5.3 earbuds"` and `"waterproof earbuds for running"` — shoppers are searching by spec, and the catalog can't answer because the attribute isn't populated, so it isn't indexed or filterable. Meanwhile returns data shows a cluster of "not as described" returns on SKUs where the listing didn't mention `IPX4` was shower-splash only, not swim-rated. Fix the attribute gap — extract `Bluetooth` version and `IPX` rating from the manufacturer spec sheets, quality-score the values, and push them back to the PIM and the live catalog — and you'd expect, in order: zero-results rate on spec-based queries drops first (days), then PDP conversion on the affected SKUs ticks up as filters and comparison tables actually work (one to two weeks), then the "not as described" return reason code shrinks over the following order cycle, and support tickets asking "does this work with my phone" decline. That sequence is how you attribute the change honestly — not by pointing at overall revenue and crediting the data project for all of it. ## Vanity metrics to skip Don't lead with "number of attributes enriched" or "SKUs touched" — those are effort metrics, not outcome metrics, and they don't tell you if the enrichment moved anything. Don't treat raw AI-assistant traffic volume as a headline win either: GA4's native AI Assistant channel grouping still misses a meaningful share of sessions because AI browsers like ChatGPT Atlas strip referrer headers and log as direct traffic, per [MarTech's breakdown of GA4's AI attribution gaps](https://martech.org/how-ga4-records-traffic-from-perplexity-comet-and-chatgpt-atlas/), so a flat trend line doesn't mean nothing happened — it means measurement is lossy. Same caution applies to "PDP views" alone — traffic without conversion or search visibility gains isn't proof the data work paid off. ## Attribution discipline The honest way to attribute lift to data work is cohort comparison, not before/after on the whole site. Enrich one category or supplier's SKUs first, hold a comparable cohort untouched, and compare zero-results rate, PDP conversion, and return-reason mix between the two over the same window. On-site search KPIs remain under-instrumented industry-wide — [Algolia's research](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics) found only 53% of retailers with advanced search even have defined KPIs for it, and adoption drops to 13% among sites running basic search — so most teams have blind spots in exactly the metric that would prove enrichment ROI fastest. Layer in category-level return-reason tagging and you have a defensible before/after story instead of a coincidence. ## Where this connects None of these metrics move because data got "more complete" in the abstract — they move because a buyer found the right earbuds, saw the right spec, and didn't have to guess or return them. That's the through-line: get the right buyer to the right product, then remove every remaining reason not to buy. Anglera's job is the enrichment layer underneath that funnel — scoring, gap-filling, and maintaining the attributes your PIM stores, so the metrics in this table have something real to move. --- # Before and after: how to actually prove an enrichment project worked Source: https://www.anglera.com/blog/baseline-before-after-product-data Published: 2026-05-28 ![Before and after: how to actually prove an enrichment project worked](/og/hero-baseline-before-after-product-data.jpg) "We enriched 40,000 SKUs and conversion went up." That sentence, on its own, proves nothing. It could be true. It could also be seasonality, a merchandising push that launched the same week, or noise. If you need to show finance, category managers, or a CFO that enrichment actually moved the number, you need a comparison that isolates it from everything else happening around it at the same time. Five methods do this in practice. Each has a failure mode. Here's what breaks them, and how to run each one so the result survives scrutiny. ## Month-over-month: fast, but noisy Compare PDP conversion, on-site search zero-result rate, or return rate for the 30 days before enrichment against the 30 days after. It's the easiest method to run — pull it straight from Google Analytics 4 or your search platform (Algolia, Bloomreach, Searchspring), segmented to the SKUs you touched. The confound: a single month is a bad proxy for anything. Paid spend, weather, a competitor's stockout, a pricing change — any of these can swing conversion 10-20% with zero connection to data quality. Treat month-over-month as a screening tool, not a proof point. It catches an obvious win or an obvious problem early. Then you validate with a longer window. ## Year-over-year, controlling for seasonality Compare the same SKUs in the same calendar window a year apart — March 2025 vs. March 2026, not last month vs. this month. Like-calendar comparisons strip out most seasonal noise (back-to-school, holiday, weather-driven categories) automatically. The confound: a lot changes in a year besides your enrichment project — pricing, promotions, traffic mix, even the product lineup itself, as SKUs launch and get discontinued. Two guardrails fix this. Hold the SKU list constant, comparing only products that existed and were live in both periods. And pull a category-level index — total category revenue or traffic — as a denominator, so you can separate "the whole category grew" from "these products grew because the data got better." If your enriched SKUs outgrew the category average, that delta is your signal. ## Enriched-vs-not cohorts Split your live catalog into two groups at a point in time: SKUs that have been through enrichment (complete attributes, corrected specs, quality-scored copy) and SKUs that haven't. Compare conversion, PDP bounce rate, and return rate between the two cohorts over the same window. No waiting for a "before" period here — you're comparing two populations that already exist. Use a completeness or quality score as the independent variable: bucket products into quartiles (0-25% attribute-complete up through 75-100%) and plot conversion rate by bucket. A clean upward slope from low-completeness to high-completeness buckets is one of the more convincing internal proof points, precisely because you can generate it on demand, any time — not just around a launch event. The confound: selection bias. Teams tend to enrich their best-selling or highest-margin SKUs first, so the "enriched" cohort was probably already outperforming before anyone touched it. Guard against this by matching cohorts on pre-enrichment baseline — compare each cohort's trailing 90-day conversion rate *before* the project started — or by enriching a randomized sample within a category instead of cherry-picking top sellers. ## Staged rollout Roll enrichment out by category or brand in waves — electronics accessories in week one, hardware in week two — and track each wave's metrics from its own go-live date. That gives you several smaller before/after experiments instead of one big one. If the effect shows up consistently across waves, that consistency is itself evidence it's not a fluke. The confound: rollout order is rarely random. Teams start with the categories most likely to show a win, or the ones easiest to enrich first, which inflates early-wave results. Guard against it by comparing each wave's lift against a category that hasn't been enriched yet in that same window — that nets out anything happening store-wide (a site redesign, a traffic shift, a pricing change) that would otherwise get credited to enrichment. ## Holdout groups The most rigorous option: within a category, randomly assign a subset of comparable SKUs to stay unenriched as a control while the rest get the full treatment. Compare the two groups over the same period. It's the closest thing to a controlled experiment retail data work gets — random assignment means seasonality, traffic mix, pricing shifts, and competitive activity hit both groups equally. You don't model those factors out. They cancel by design. The confound: holdouts only work if the groups are comparable going in — similar price point, similar historical velocity, similar traffic source — and large enough that normal week-to-week noise doesn't drown the signal. Plan on at least four to six weeks before drawing conclusions. And it means deliberately leaving some products under-enriched, which is a real cost. Reserve it for a pilot, not your whole catalog. ## Which one to actually run | Method | What it shows | Main confound | Guardrail | |---|---|---|---| | Month-over-month | Early directional signal | Short-term noise (traffic, pricing, weather) | Use for screening only, confirm with a longer window | | Year-over-year | Seasonally-adjusted trend | Catalog and pricing changes over a year | Hold the SKU list constant; index against category growth | | Enriched-vs-not cohorts | Real-time completeness-to-conversion relationship | Selection bias (best sellers enriched first) | Bucket by quality score; match cohorts on pre-project baseline | | Staged rollout | Consistency of effect across waves | Non-random rollout order | Compare each wave to a not-yet-enriched category in the same window | | Holdout group | Closest to causal proof | Sample size, comparable groups | Random assignment within category; run 4-6+ weeks | No single method is bulletproof. What actually convinces skeptical stakeholders is layering two: a completeness-vs-conversion cohort read for the ongoing story, plus one holdout or staged-rollout test as the rigorous checkpoint. Track the same core metrics across all of them — PDP conversion, return rate split by reason (damaged/wrong item vs. "not as described"), on-site search zero-result rate, support tickets tied to product-detail questions — so the numbers stay comparable no matter which method produced them. Here's the part that gets skipped most: teams fix the catalog, move on, and never instrument the comparison that would prove it mattered. Anglera plugs into whatever PIM you run, or none, and keeps completeness and quality scores current as products change. That's what makes an enriched-vs-not cohort or a staged rollout something you can run any time — not just right after a one-time cleanup project. --- # Measuring referral traffic from AI answer engines Source: https://www.anglera.com/blog/ai-referral-traffic-measurement Published: 2026-05-28 ![Measuring referral traffic from AI answer engines](/og/hero-ai-referral-traffic-measurement.jpg) There's no clean number for "AI traffic." Anyone who tells you otherwise is rounding off a lot of uncertainty. What you can get is a defensible, partial view, stitched from three imperfect signals: referrer data, assisted conversions, and branded search lift. Here's how to build it, and exactly where to stop trusting it. ## Start with what GA4 can actually see When ChatGPT, Perplexity, or Copilot hand a user a link, some of those clicks carry a referrer or a `utm_source` tag. In GA4, filter Session source/medium for `chatgpt.com / referral`, `perplexity.ai / referral`, and similar. Better yet, build a custom channel group with a regex that catches the major platforms in one view, instead of hunting through generic Referral traffic one domain at a time. Google shipped a native "AI Assistant" channel grouping in GA4 in late 2025, but it's not retroactive and it misses a meaningful slice of sources — most practitioners still layer a custom regex group on top of it. Treat this number as a floor, not a ceiling. It only counts clicks that actually passed a referrer. ## Where the trail goes cold Say this part out loud to your team, because it changes how much weight the number should carry: - **Referrer stripping.** Copy a link out of an AI answer, paste it into a new tab, and no referrer survives the trip. That visit lands in GA4 as Direct. There's no reliable way to reattribute it after the fact. - **Free-tier gaps.** A lot of consumer ChatGPT traffic doesn't pass referrer data consistently, so it also folds into Direct. - **AI Overviews look identical to organic.** Google's AI Overviews and AI Mode results carry the same `google.com` referrer as a standard blue link. GA4 cannot separate "clicked an AI Overview citation" from "clicked result #3." The closest workaround is matching Google-referred sessions against pages you know were cited recently — inference, not measurement. - **Search Console's new AI report is impressions-only.** Google's Search Generative AI performance report, which launched inside Search Console in June 2026, finally breaks out how often your pages surface in AI Overviews and AI Mode. But it reports impressions only — no clicks, no CTR, no query-level data yet — and the [surfaces are blended together rather than split apart](https://superframeworks.com/articles/google-search-console-ai-overviews-report). It tells you whether you're showing up. It doesn't tell you what that visibility is worth. None of this is a reason to give up on the number. It's a reason to pair it with proxies that don't depend on a clean click. ## Two proxies that hold up **Assisted conversions.** Pull GA4's conversion path reports and look for sessions where an AI-referral touch appears earlier in a multi-session journey that later converts on Direct or branded organic. Buyer hits your PDP from Perplexity on Monday, buys from a Google search on your brand name Thursday — a last-click view credits Google. An assisted-conversion view credits the discovery channel that actually did the work. Segment this by SKU or category, not just site-wide: AI-cited traffic tends to concentrate on a narrow set of well-documented products. **Branded search lift.** When a product or brand gets cited consistently in AI answers, more people search for that brand name directly afterward — the same logic advertisers have used for decades to value billboard and TV impressions that can't be clicked. Track branded query impressions and volume in Search Console (and branded search ad spend efficiency, if you run paid) on a rolling basis. Look for a lift that correlates with a period of increased AI citation, not a single spike. | Signal | What it shows | How to measure it | What it misses | |---|---|---|---| | GA4 referral / channel group | Clicks that passed a referrer | Session source/medium filter or custom regex channel group | Copy-paste clicks, free-tier stripping | | GSC AI performance report | How often you're cited | Search Console's AI Overviews/AI Mode report | No clicks, no CTR, surfaces blended | | Assisted conversions | Multi-touch influence on a sale | GA4 conversion paths, segmented by category | Requires session stitching to work | | Branded search lift | Awareness building into demand | Branded query volume/impressions over time in GSC | Confounded by other marketing activity | | Server log analysis | Whether AI crawlers can even read your data | Filter access logs by user-agent (bot names for major AI crawlers) | Crawl activity, not human traffic — most crawls are indexing or training, not click-driven | That last row matters more than it sounds. Server logs will show AI crawlers hitting your catalog pages constantly — far more often than they ever send you a human visitor. That volume tells you whether your product data is legible enough to be picked up and cited. It does not tell you how many people clicked through. Conflating the two is one of the most common measurement mistakes right now. ## Keep the number honest and small Recent analysis of enterprise site traffic puts [AI referral traffic at roughly 1% of total sessions in 2026](https://www.tryanalyze.ai/blog/ai-traffic-research) — a real jump from a year earlier, still a fraction of what organic search alone drives. [Analytics Mania's guidance on GA4 tracking](https://www.analyticsmania.com/post/ai-traffic-in-google-analytics-4/) is blunt about the ceiling on this data: "not all AI-driven exposure results in trackable traffic, so what you see in GA4 will always be a partial view." Build your dashboard around that sentence. Treat AI referral traffic as one line in a broader discovery report, next to organic search, on-site search, and marketplace traffic — not a channel that gets its own war room. Watch the trend line, not the absolute number: - Is the AI-referral segment growing session over session? - Do those sessions convert at a comparable rate to organic once they land? - Is branded search moving in the same direction? If all three point the same way, you have a real signal, however incomplete the click-level picture stays. ## Why this connects back to product data Every one of these signals — a clean citation, an assisted conversion, a branded search — starts with a PDP that's complete enough to be quoted accurately and specific enough to answer the question the buyer actually asked. Your PIM stores that data. Whether it's accurate, current, and structured well enough to survive being pulled out of context by an AI answer is a separate, ongoing job. Anglera does that work continuously, so when the referral finally shows up in your reporting, the product it lands on is ready to convert. --- # The technical SEO checklist for Adobe Commerce product pages Source: https://www.anglera.com/blog/adobe-commerce-technical-seo-checklist Published: 2026-05-28 Platforms: adobe-commerce ![The technical SEO checklist for Adobe Commerce product pages](/og/hero-adobe-commerce-technical-seo-checklist.jpg) Enriched product data only helps buyers and AI shopping agents if it actually reaches the rendered page in a form both can parse. Adobe Commerce gives you most of the plumbing for that out of the box, but the defaults are conservative and a few settings are easy to get backwards on a large catalog. This checklist walks through the technical SEO surface of an Adobe Commerce product detail page (PDP), section by section, with the exact admin paths as of the current Commerce Admin documentation. ## Rendering: what's actually in the first response Before anything else, check what a crawler gets without executing JavaScript. On the default Luma theme, PDPs are server-rendered PHP/Knockout templates, so the price, description, attributes, and any server-injected metadata are present in the raw HTML. If you're on PWA Studio (still supported, though Adobe's active investment has shifted elsewhere) or on Adobe Commerce Storefront — the newer, Edge Delivery Services-based frontend built on the `aem-boilerplate-commerce` reference project — confirm which parts of the page are actually server-rendered: a PWA Studio storefront's app shell renders server-side via its UPWARD server, but a meaningful share of PDP content — including anything wired up via client-side GraphQL calls — can hydrate after the initial response. AI agents and many crawlers fetch raw HTML and don't wait for hydration, so title, meta tags, canonical, and JSON-LD all need to be present in the initial document, not injected only after client-side rendering. ## Structured data: don't assume it's already there This is the field most teams get wrong on Adobe Commerce. The default Luma theme does not ship full `Product`/`Offer` JSON-LD — it only includes schema.org **microdata** for `AggregateRating`, rendered from the reviews summary template, and only when the product has at least one review. If you need `Product`, `Offer`, availability, price, and `BreadcrumbList` markup (which is what actually drives Google rich results and gives AI agents a clean structured summary), you have to add it via a custom template, a structured-data extension, or, if you're on Adobe Commerce Storefront, the official PDP drop-in component and PDP Metadata Generator tooling that Adobe documents for that architecture. Whatever you use, render it server-side as JSON-LD in ``, and never populate `aggregateRating` with placeholder or zero values — Google Merchant Center and Bing both treat fabricated ratings as a policy violation. ```json { "@context": "https://schema.org/", "@type": "Product", "sku": "PUMP-4400-SS", "name": "4400 Series Stainless Centrifugal Pump", "description": "1.5 HP, 316 stainless housing, NPT 2-inch inlet/outlet.", "image": ["https://cdn.example.com/media/catalog/product/p/u/pump-4400.jpg"], "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "2149.00", "availability": "https://schema.org/InStock", "url": "https://www.example.com/4400-series-stainless-centrifugal-pump.html" } } ``` ## Titles and meta descriptions Each product's SEO fields live on the product edit page under **Catalog > Products > [product] > Search Engine Optimization**: `URL Key`, `Meta Title`, `Meta Keywords`, and `Meta Description`, all store-view scoped. Adobe's guidance is a meta title under ~70 characters and a meta description in the 150–160 character range (255 max). Left blank, Commerce auto-generates these from templates (`{{name}}` for title, `{{name}} {{description}}` for description) — fine as a fallback, but on a distributor catalog with thousands of near-identical SKUs, auto-generated titles collapse into duplicates fast, so plan to populate these fields with attribute-driven values (size, model, material) rather than relying on the template alone. ## Canonical tags Under **Stores > Settings > Configuration > Catalog > Catalog > Search Engine Optimization**, set **Use Canonical Link Meta Tag for Products** to Yes. This matters because Adobe Commerce can generate more than one working URL to the same product (direct URL-key path and category-prefixed path), and without canonicalization search engines may index and split authority across both. Adobe's own documentation recommends enabling canonical tags for both products and categories as a baseline. ## Images and alt text Product images are managed under **Catalog > Products > [product] > Images and Videos**. Each image has a store-view-scoped **Alt Text** field plus role assignments (Base, Small, Thumbnail, Swatch) — the base image role is what renders on the PDP itself. Write alt text that describes the product concretely (material, variant, angle), not the filename or a repeated brand phrase; this is both an accessibility requirement and one of the few image-level text signals a crawler or AI agent gets when it can't render the image. ## Internal linking Related Products, Up-sells, and Cross-sells are standard Commerce blocks and render as plain crawlable `` links by default — make sure a custom theme hasn't wrapped them in JavaScript-only carousels that never land in the initial HTML. Category breadcrumbs on the PDP are another internal-linking signal search engines use to understand catalog hierarchy; confirm the breadcrumb trail reflects your actual category structure, since it also feeds the `BreadcrumbList` schema if you're emitting one. ## Faceted navigation and crawl budget Layered navigation is the highest-risk area for a large B2B catalog: each filterable attribute set on **Use in Layered Navigation** in the attribute configuration multiplies into combinatorial URLs. Keep that setting off for attributes that aren't a genuine entry point for search, make sure filtered category URLs canonicalize back to the base category (Luma does this natively; custom themes sometimes break it), and use **Content > Design > Configuration > [website] > Search Engine Robots** to add `Disallow` rules for filter query parameters in `robots.txt`. ``` User-agent: * Disallow: /*?*color= Disallow: /*?*price= ``` ## Performance Adobe strongly recommends Varnish over the file or database Full Page Cache backend in production; Commerce uses Edge Side Includes (ESI) to keep personalized blocks (cart, pricing tiers) out of the cached page shell. A fast, cached PDP response matters for Core Web Vitals (LCP in particular) and for crawl efficiency — slow responses are one of the two levers Google names for crawl budget, alongside content quality. ## Crawlability Generate and submit your XML sitemap under **Marketing > SEO & Search > Site Map**, writing it to a path under `pub/media` if you're on Adobe Commerce Cloud infrastructure. Double check store-level indexing isn't blocked — Commerce Cloud has a separate "Hide from search engines" / indexing toggle in the Cloud Console that's easy to leave on for a staging clone and forget on production. ## How to validate - **View-source vs. rendered DOM**: compare `curl -s https://yoursite.com/product-url.html` against the browser DevTools "Elements" tab. If title, meta description, canonical, or JSON-LD appear in DevTools but not in the curl output, they're client-rendered only and invisible to most crawlers and AI agents. - **curl for headers and tags**: `curl -sI` for the canonical response, and `curl -s ... | grep -i 'canonical\| { "@context": "https://schema.org/", "@type": "Product", "name": "Example Product Name", "sku": "EX-1234", "description": "Server-rendered description text.", "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "129.00", "availability": "https://schema.org/InStock" } } ``` ## How to validate Don't trust a browser's Inspect Element panel — it shows the DOM *after* JavaScript ran. Check what arrives before any script executes: ```bash # Raw HTML exactly as a non-rendering crawler receives it curl -s https://example.com/products/widget-1234 | less # Look specifically for product data in that raw response curl -s https://example.com/products/widget-1234 | grep -i "application/ld+json" -A 20 ``` - **View-source vs rendered DOM:** open `view-source:https://example.com/products/...` (raw HTML) and compare it to the Elements panel (post-hydration DOM). If title, price, and JSON-LD appear only in the second, that content is CSR. - **Google Search Console → URL Inspection → "View crawled page"** shows Google's own rendered HTML and a screenshot — confirmation of what Googlebot resolved after running JS, beyond curl. - **Rich Results Test** validates whether `Product` structured data is present and well-formed, and surfaces it as missing if it's injected too late or blocked by consent/JS gating. - Disable JavaScript (DevTools → Command Menu → "Disable JavaScript," reload) and confirm the PDP still shows a name, price, and description. If it's blank, that's the page an AI crawler sees. ## Verified as of July 2026 Google's crawl/render/index model, its discouragement of dynamic rendering, and its Product structured data guidance are drawn from current Google Search Central documentation. AI-crawler JavaScript behavior (GPTBot, ClaudeBot, PerplexityBot) reflects third-party crawl-log analysis rather than an official spec, since none of those companies publish a formal rendering policy; treat it as directionally reliable and re-check periodically, since crawler behavior can change without notice. None of this matters if there's nothing worth rendering. Anglera enriches the underlying product data — attributes, specs, use-cases, identifiers — continuously, in whatever PIM, commerce platform, or metafield store you already run, so the SSR or pre-rendered HTML your engineering team ships has rich, accurate content to put on the page. --- # Building an attribute schema for Skincare that shoppers and AI can actually use Source: https://www.anglera.com/blog/skincare-attributes Published: 2026-05-26 Industries: skincare ![Building an attribute schema for Skincare that shoppers and AI can actually use](/og/hero-skincare-attributes.jpg) Skincare is the category where "just add more attributes" actually means something specific. A serum isn't just a serum: it's a skin type, a concern, a list of actives at particular concentrations, a texture, and a set of exclusions a shopper is actively filtering for. When those fields are blank, the product doesn't rank lower in search — it disappears from the facet entirely, and it never gets mentioned when someone asks an AI assistant what to buy. ## The attributes that actually matter in skincare Generic PDP templates give you brand, size, and price. Skincare shoppers filter on none of those first. They filter on: - **Skin type**: dry, oily, combination, normal, sensitive - **Skin concern**: acne, hyperpigmentation/dark spots, fine lines and wrinkles, redness, dullness, uneven texture, large pores, dehydration - **Key active ingredients and concentration**: niacinamide (2%, 5%, 10%), hyaluronic acid, vitamin C (L-ascorbic acid vs. derivatives), retinol/retinaldehyde, bakuchiol, peptides, salicylic acid, azelaic acid, glycolic acid - **Format/texture**: serum, gel-cream, lotion, oil, essence, ampoule - **Exclusion flags**: fragrance-free, alcohol-free, oil-free, silicone-free, sulfate-free, paraben-free, non-comedogenic - **Claims and certifications**: cruelty-free, vegan, dermatologist-tested, hypoallergenic, reef-safe (for SPF) - **Usage context**: AM/PM, pregnancy-safe, suitable for sensitive/reactive skin, layering order An academic study of ingredient-based product recommendation identified five core skin types, eleven skin concerns, and seventeen additional preference attributes (fragrance-free, cruelty-free, non-comedogenic, and similar exclusion flags) as the working vocabulary shoppers and recommendation systems actually use — see the [Beauty Beyond Words paper on explainable beauty recommendations](https://arxiv.org/html/2409.13628v1/). That's the real shape of a skincare schema. Anything narrower and you're filtering on brand and price alone, which is not how anyone shops for a serum. ## Why a missing attribute is worse than a missing photo A blank `skin_type` field doesn't get skipped in faceted search — the product gets excluded the moment a shopper clicks "sensitive skin" in the sidebar. Same with concern, same with "fragrance-free." Faceted navigation is a series of AND filters; a product with no value in a facet field fails every query that uses it, even if the product would have been a great match. AI shopping assistants have the same failure mode, just less visible. ChatGPT, Gemini, and Perplexity lean on structured product data — schema.org `Product`/`Offer` markup, merchant feeds — to decide what to surface and how to describe it. Reporting on ChatGPT's shopping behavior found that a majority of cited product pages carry structured data, and that schema.org markup is treated as a baseline threshold: without it, an assistant either skips the source or uses it "fragmentarily," per [analysis from iPullRank on how OpenAI's product feed works](https://ipullrank.com/ecommerce-chatgpt-product-feeds). Google's own guidance for merchant listing structured data lists the fields it expects on a product page, and skin type, concern, and active ingredient aren't part of the generic required set — brands have to add them explicitly, or an AI assistant summarizing "best serum for dry skin" has nothing to point to. See [Google's structured data guidance for products](https://developers.google.com/search/docs/appearance/structured-data/product). Ask an AI to recommend a niacinamide serum for oily, acne-prone skin under $30, and it will compose an answer from whichever products actually carry `active_ingredient`, `concentration`, `skin_type`, and `concern` values in machine-readable form. A serum with a beautiful product description and no structured attributes is invisible to that query, no matter how good the formula is. ## Before and after: a facial serum Here's a raw retailer feed for a niacinamide serum versus what an enriched attribute set looks like. | Attribute | Raw feed | Enriched | |---|---|---| | Title | "Brightening Serum 30ml" | "Niacinamide 10% Brightening Serum, 30ml" | | Skin type | (blank) | Oily, Combination, Normal | | Skin concern | (blank) | Dullness, Dark Spots, Large Pores | | Active ingredient | (blank) | Niacinamide 10%, Zinc PCA 1% | | Format | (blank) | Serum | | Fragrance | (blank) | Fragrance-free | | Comedogenic rating | (blank) | Non-comedogenic | | Usage | (blank) | AM/PM, apply before moisturizer | | Claims | "Cruelty-free" (in body copy only) | Cruelty-free, Vegan (structured fields) | | pH | (blank) | 5.5–6.0 | The raw version reads fine to a human scanning the PDP. It fails every faceted filter and gives an AI assistant almost nothing to match against a shopper's stated skin type or concern. The enriched version turns that same product into ten filterable, quotable data points — and the "cruelty-free" claim moves from unstructured body copy, which AI systems weight less, into an actual attribute field. ## Structuring the schema so it holds up A workable skincare schema separates fields into tiers instead of one flat attribute list: 1. **Core identity**: product name, format, size, brand 2. **Shopper-facing filters**: skin type, concern, active ingredient(s) with concentration 3. **Exclusion/claims flags**: fragrance-free, non-comedogenic, cruelty-free, vegan, pregnancy-safe 4. **Regulatory/compliance**: full INCI ingredient list, pH where relevant, SPF rating and broad-spectrum status for daytime products Each tier needs a controlled vocabulary — "oily" and "oily skin" should resolve to the same facet value, not fragment into two dead-end filters. That normalization work is usually where catalogs actually fall apart: attributes exist somewhere in a spec sheet or a marketing brief, but they never make it into the structured field a facet or an AI feed reads from. That gap between "the fact exists" and "the fact is in a queryable field" is exactly what Anglera closes. Your PIM stores the data; Anglera continuously scores product data completeness against schemas like this one, flags where skin type, concern, or active-ingredient fields are missing or inconsistent, and gap-fills them from existing content, brand specs, and ingredient lists — without requiring a rip-and-replace of whatever commerce stack or PIM you already run. --- # Optimas: The Fastener Roll-Up That Chose to Un-Roll Itself Source: https://www.anglera.com/blog/optimas-distributor-playbook Published: 2026-05-26 Industries: fasteners ![Optimas: The Fastener Roll-Up That Chose to Un-Roll Itself](/og/hero-optimas-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Optimas OE Solutions landed at #9 in Fasteners and #35 in Industrial Supply on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors/optimas-solutions/), on $577 million in 2025 revenue. The name sounds like a startup. The business underneath it is a century-old fastener supply chain that has been bought, merged, rebranded, and, most recently, cut in half on purpose. That last part is the story worth reading. ## A Roll-Up Wearing a New Coat Optimas the brand is only a decade old, but the businesses inside it trace back much further. According to [Optimas's own company history](https://optimas.com/about-us/), the lineage runs to 1890 through UK fastener distributor Infast Group and to 1932 through metal-forming manufacturer Barton Cold-Form. Between 2002 and 2008, those companies and several others, including Camille Gergen, MFU Holdings, Walters Hexagon Group, Sofrasar, Quality Screw & Nut, and Distribution Dynamics, were folded together, largely under Anixter International's ownership, into a fastener-and-C-parts platform. Private equity firm American Industrial Partners bought that platform out of Anixter, and on June 1, 2015 the combined businesses were relaunched under a single name: Optimas. [AIP still lists Optimas in its active portfolio](https://americanindustrial.com/portfolio/optimas/), describing it as a provider of integrated supply chain solutions and engineering support to commercial vehicle, luxury automotive, power generation, and agricultural equipment manufacturers. The roll-up kept rolling after the rebrand too: Barton Cold-Form's UK metal-forming operation was folded back in as a subsidiary in 2017, and Circle Bolt & Nut, a seven-branch Pennsylvania distributor, joined in 2018. By 2019 the combined company reported roughly $865 million in sales, 1,300 employees, 5,000 customers, and 4,000 supplier partners. That is a textbook PE playbook: buy a carve-out, bolt on adjacent distributors, chase scale. Nothing unusual about it. What happened next is. ## The Unusual Part: Un-Rolling on Purpose In February 2026, Optimas announced it was selling its entire international business, the EMEA and Asia-Pacific operations built up over that same acquisition run, to private equity firm Exponent. Per the [companies' joint announcement](https://www.prnewswire.com/news-releases/optimas-solutions-to-operate-as-independent-business-following-sale-of-international-region-to-exponent-302679386.html), the divested unit becomes a standalone company called Optimas International, headquartered in Gloucester, UK, while the remaining business keeps the Optimas Solutions name, stays in Wood Dale, Illinois, and focuses exclusively on North and South America. CEO Daniel Harms framed it as a response to supply chains that "must be agile and resilient," arguing the split would mean "faster decision making, greater service flexibility and more effective responses to local market and customer needs." That is the unique insight this piece wants to name plainly: Optimas spent roughly fifteen years assembling a global fastener network through acquisition, and is now paying to take it apart. Most distributors treat geographic breadth as the prize worth winning. Optimas is betting the opposite, that a fastener supplier's edge lives in how fast it can respond to a single regional customer's line, not in how many continents its logo appears on. The MDM revenue figure this piece opened with, $577 million for 2025, was reported before this split closes, so the Americas-only Optimas that emerges from it will report a smaller number next year by design, not by decline. ## Where the Actual Product Lives The reason this bet is plausible rather than reckless is that Optimas's real differentiation was never footprint, it was the inventory-management layer wrapped around fastener supply. The company's [OptiTech vendor-managed inventory platform](https://optimas.com/services/inventory-management-2/inventory-management/) uses two purpose-built tools: OptiScale, weight-sensor bins that track part quantities in real time and auto-trigger replenishment orders at preset min and max levels, and OptiRack, an RFID system that reorders stock the moment an empty bin is placed back on a shelf mat. That is a services and data business riding on top of a commodity part. It also points at why fastener distribution rewards this kind of instrumentation more than most categories. A recurring stat in Optimas's own materials holds that fastener parts account for only about 15 percent of a manufacturer's total supply chain cost for those parts, while the labor to select, manage, and process them eats the other 85 percent. If that ratio is even roughly right across the category, the money isn't in selling bolts cheaper. It's in removing headcount from a customer's receiving dock. A regional operator that can install sensors, tune replenishment logic, and show up in person when a line goes down has more leverage over that 85 percent than a bigger, more distant one does. ## The Trade-Off Worth Watching The honest tension: shedding the international business also gives up the cross-border customer relationships and combined purchasing scale that made Optimas a credible single call for a multinational OEM's global fastener program. The two Optimas entities say they'll still serve shared customers jointly, but jointly is a weaker word than unified. Whether regional speed actually outweighs global reach is the experiment Optimas just decided to run on itself, with a decade of roll-up history as the sunk cost. Distribution rarely gets remembered for the parts on the shelf. It gets decided by the branch network, the data behind the reorder point, and the catalog nobody outside the industry ever sees. Optimas just bet its next chapter on getting that infrastructure right at a smaller scale, on purpose. --- # Assortment planning in Consumer Electronics: the gaps your style-level reports can't see Source: https://www.anglera.com/blog/consumer-electronics-assortment-planning Published: 2026-05-26 Industries: consumer-electronics ![Assortment planning in Consumer Electronics: the gaps your style-level reports can't see](/og/hero-consumer-electronics-assortment-planning.jpg) A planner looking at a consumer electronics line by style number sees a clean table: 40 SKUs, sales by unit, margin by unit, done. What that table cannot show is the shape of the line underneath it. Portable speakers, soundbars, and headphones aren't really 40 independent items. They're 40 points scattered across a handful of attribute dimensions: price, IP rating, battery life, wattage, driver size, connectivity standard. The rollup by style hides where those points cluster and where they don't, and that's exactly where the next planning decision lives. This isn't a niche problem. Fisher and Vaidyanathan's demand estimation work, built specifically for assortment optimization and later implemented at retailers including tire and auto-parts chains, models a SKU as a bundle of attribute values and estimates demand share for each value independently, then multiplies them to forecast an item that doesn't exist yet in the assortment ([Fisher and Vaidyanathan, NYU Stern](https://web-docs.stern.nyu.edu/old_web/emplibrary/Fisher%20&%20Vaidyanathan%20Demand%20estimation%20and%20assortment%20optimization.pdf)). The whole method only works if the attribute values on every SKU are complete and consistent enough to aggregate. A style-level view was never built to answer "how is demand for IPX7-rated speakers trending against IPX4," because style-level views don't have an IP-rating column at all, or they have five spellings of it. ## Three things a SKU roll-up can't show you **White space.** Demand exists at an attribute value the line doesn't carry. Search and marketplace signal show steady interest in a combination, but no SKU in the assortment sits there. **Over-assortment.** Too many SKUs are stacked on one attribute value with little to differentiate them, cannibalizing each other's sell-through and consuming markdown budget that could fund something else. **Break points.** Two adjacent attribute values behave completely differently even though they look like a natural progression on a spec sheet. A jump from 6-hour to 10-hour battery life might not move units, while 10 to 20 hours might be the point buyers actually pay for. You can't see a break point in a style list. You can only see it once battery life exists as its own column you can group by. None of this is visible until the attribute is its own field, cleanly filled and standardized across every SKU, sitting next to price and sell-through in the same table. ## A worked example: portable Bluetooth speakers by IP rating Take a mid-market portable speaker line, 60 SKUs, sold through a mix of owned e-commerce and marketplace. The planner wants to know where to invest for next season. Style-level reporting says: three of the top five sellers are speakers, margins are fine, ship more of what's working. Pull IP rating (water and dust resistance) into its own attribute column, standardized to the actual test rating rather than marketing copy, and cross it with price band. A different picture appears. | Price band | IPX4 (splash) | IPX5 (jet spray) | IPX7 (submersible) | IP67 (dust + submersible) | |---|---|---|---|---| | $30-50 | 9 SKUs, sell-through 61% | 3 SKUs, sell-through 54% | 2 SKUs, sell-through 58% | 0 SKUs | | $50-80 | 6 SKUs, sell-through 48% | 4 SKUs, sell-through 51% | 12 SKUs, sell-through 22% | 1 SKU, sell-through 40% | | $80-120 | 2 SKUs, sell-through 44% | 0 SKUs | 3 SKUs, sell-through 71% | 0 SKUs | | $120-200 | 0 SKUs | 1 SKU, sell-through 63% | 4 SKUs, sell-through 68% | 2 SKUs, sell-through 66% | Three things jump out that no style-level report would surface. The $50-80 / IPX7 cell is carrying 12 SKUs at 22% sell-through, roughly a third of the whole line's unit count sitting in the weakest-performing cell. That's over-assortment: too many near-duplicate submersible speakers fighting for the same shelf space and the same shopper. Meanwhile $80-120 / IPX5 is empty, even though IPX5 performs respectably in every other band and the $80-120 tier sells well at IPX7. That's white space: a plausible, adjacent gap the line has simply never tested. And the jump from IPX4 to IPX5 barely moves sell-through in any price band, while the jump to IPX7 does, in every band except the over-assorted one. That's a break point: the attribute value that actually earns a price premium isn't the one halfway up the spec sheet, it's the one two steps up. None of that shows up until IP rating exists as a clean, standardized attribute on every SKU, not a phrase buried in a bullet-point description that might read "IPX7," "IP-7 waterproof," "submersible up to 1m," or nothing at all. ![Matrix: price band by attribute value, dot size showing SKUs offered and color showing sell-through, with one over-assorted cell and one empty high-demand cell](/diagrams/assortment-whitespace-matrix.svg) ## What has to be true of the data before this analysis works Three conditions, and all three usually fail at once in a real electronics catalog: **Fill.** Every SKU needs a value in the attribute you're grouping by. If IP rating is populated on 70% of the line and blank on the rest, those blank rows either disappear from the analysis or, worse, get silently bucketed as "none" and make an entire price band look weaker than it is. **Standardization.** The values that are present need to map to a shared, finite set. "Water resistant," "splash-proof," "IPX4 rated," and "IPX4" have to collapse to one value before a group-by means anything. Free text doesn't aggregate; it just sits there looking like data. **Correctness.** A rating pulled from marketing copy isn't the same as a rating pulled from the actual spec sheet or test certificate. Overstated or understated attribute values don't just mislead a shopper on a PDP, they mislead the rollup a planner is staring at, because the model can't tell a confident wrong value from a confident right one. Getting there usually means going back to the actual source documents, tech packs, spec sheets, certification records, and product imagery, rather than trusting whatever free-text description made it into the catalog first. That's slower manual work at scale (enrichment teams commonly cite something in the range of 30-45 minutes per SKU for this kind of attribute correction done by hand), which is precisely why most catalogs never get past style-level reporting in the first place. Retailers and brands who've automated attribute extraction and validation from those same source documents can backfill a rating like IP class across thousands of SKUs in about a day, then keep it current as new products land, rather than treating it as a one-time cleanup project that decays again within a quarter. The forecast, the assortment matrix, and the like-item substitution logic in your planning system are all aggregations. Attributes are the dimensions they aggregate along, and a wrong or missing value doesn't just cost you one SKU, it quietly bends every rollup built on top of it. Anglera doesn't replace the PIM or the planning tool doing that aggregating; it's the layer that goes back to source documents and imagery, extracts and standardizes the attribute values underneath the SKUs, flags what conflicts instead of guessing, and keeps that foundation current, so the matrix a planner builds on top of it actually reflects the line. --- # Server-side rendering on commercetools: making product data visible to Google and AI Source: https://www.anglera.com/blog/commercetools-ssr-rendering Published: 2026-05-26 Platforms: commercetools ![Server-side rendering on commercetools: making product data visible to Google and AI](/og/hero-commercetools-ssr-rendering.jpg) commercetools is a headless, API-first platform: it has no built-in storefront, no templates, and no opinion about rendering. Every product page you have is generated by a frontend layer you or a partner built on top of it — commercetools Frontend (the Next.js-based composable storefront), a custom Next.js/Remix/Nuxt build, or something else entirely. That means the question "will Google and AI crawlers see my product data?" isn't a commercetools question at all — it's a question about how that frontend layer renders. This guide covers how to check, and how to fix it if the answer is no. ## Why this matters more than it used to Googlebot has gotten good at executing JavaScript, but it does so in a second, delayed rendering pass, and it's still the exception among crawlers, not the rule. AI crawlers that feed ChatGPT, Claude, and Perplexity — GPTBot, ClaudeBot, PerplexityBot, and similar — fetch the raw HTTP response and parse it as text. They do not run a browser engine and do not execute your JavaScript bundle. If your product's name, price, specs, and availability only appear after client-side data fetching and hydration, Googlebot might eventually see them; most AI agents never will. For a category page or PDP, that's the difference between being cited (or ranked) and being invisible. ## How commercetools product pages actually get rendered There's no single answer here, because commercetools is composable by design — but two patterns cover most implementations: **commercetools Frontend (the official Next.js-based storefront).** This is built on Next.js and its App Router, with an "API Hub" acting as a backend-for-frontend that relays product, category, and layout data to the frontend at request time. Because it's Next.js, individual routes can be rendered a few different ways — server-rendered per request, statically generated at build time, incrementally revalidated, or rendered client-side — and the choice is made per page, not globally. The commercetools documentation is explicit that this flexibility is there so teams can "optimize for performance and search engine optimization (SEO) as needed" — in other words, SSR isn't automatic just because you're on commercetools Frontend. It has to be the mode you actually chose for the product detail route. **Custom frontends.** Many commercetools merchants build their own storefront directly against the Product Projections / GraphQL API, using Next.js, Nuxt, SvelteKit, Astro, or a fully custom stack. In these builds it's even more common to see the PDP shell (header, layout, chrome) delivered as static HTML while the actual product data — title, price, attributes, structured data — is fetched client-side after the page loads, often from a `useEffect` or a client-side data hook. That pattern is invisible to non-JS-executing crawlers no matter how good your commerce backend is. The commercetools Next.js migration guidance for the Store Launchpad reference storefront is a useful signal of the direction here: recent versions moved away from patterns like `getServerSideProps` toward fetching data directly inside Server Components and using the App Router's `generateMetadata` function for page metadata — both of which keep data-fetching and metadata generation on the server, in the initial HTML response, rather than in the client bundle. ## What "in the server-rendered HTML" actually means Two checks matter, and they're different checks: 1. **Is the core content (product name, price, description, key attributes) present in the HTML that the server returns**, before any JavaScript runs? 2. **Is structured data (JSON-LD `Product` schema) present in that same server response**, not injected afterward via `document.head` manipulation or a client-side script? If a Next.js route is genuinely server-rendered (or statically generated / ISR'd) and the product data and JSON-LD are produced inside a Server Component or a `generateMetadata`/metadata export, both checks pass. If the route is a client component that calls the commercetools API from the browser after mount, both checks fail — even though the page "looks right" once you load it in a browser, because a browser executes JavaScript and a non-JS crawler doesn't. A minimal example of what a Server Component doing this correctly looks like: ```tsx // app/products/[slug]/page.tsx — Server Component, runs on the server import { fetchProductBySlug } from "@/lib/commercetools"; export async function generateMetadata({ params }) { const product = await fetchProductBySlug(params.slug); return { title: product.name, description: product.metaDescription ?? product.shortDescription, openGraph: { images: [product.heroImage] }, }; } export default async function ProductPage({ params }) { const product = await fetchProductBySlug(params.slug); return ( <> {% endblock %} ``` ## How to validate - **View-source vs rendered DOM**: browser "View Page Source" shows the server-rendered Twig output before JS runs; if your attribute value is missing there but present in DevTools' Elements panel, something client-side (a widget, lazy block) is injecting it and it likely won't be visible to non-JS crawlers or simple agent fetchers. - **Block Debug Info**: enable "Include Block Debug Info Into HTML" under **System → Configuration → Development Settings**, then inspect the rendered page for `data-layout-debug-block-id` and `data-layout-debug-block-template` attributes to confirm which Twig block and template actually rendered a given element ([Frontend Developer Tools](https://doc.oroinc.com/frontend/storefront/debugging/)). - **Twig Inspector**: with the Symfony profiler active, use the Twig Inspector toolbar to click any rendered element and jump straight to the template/block that produced it — faster than grepping theme overrides by hand. - **curl**: `curl -s https://yourstore.example/product/123 | grep -i "rated_voltage\|application/ld+json"` confirms the value and any JSON-LD block exist in the raw HTTP response, independent of the browser. - **Google Rich Results Test**: once JSON-LD is in place, validate the markup at [Google's Rich Results Test](https://search.google.com/test/rich-results) to confirm it parses as a valid `Product` entity. - After any attribute, family, or layout change, clear the application and layout cache and reindex the storefront search index so the storefront reflects the new configuration. Verified as of July 2026 against current OroCommerce back-office and storefront-layout documentation; menu paths and Twig block-naming conventions can shift slightly between minor versions, so confirm against your instance's version-specific docs before shipping a layout override. Anglera plugs into the PIM or commerce platform you already run and keeps attributes like rated voltage, dimensions, and use-case data continuously enriched and accurate at the source — so once an attribute is assigned to a OroCommerce attribute group, the values flowing into that layout block are already complete instead of sparse. Your PIM stores the data; Anglera does the work of keeping it worth rendering. --- # Adding Product JSON-LD on Oracle Commerce — and keeping it in sync Source: https://www.anglera.com/blog/oracle-commerce-product-json-ld Published: 2026-05-24 Platforms: oracle-commerce ![Adding Product JSON-LD on Oracle Commerce — and keeping it in sync](/og/hero-oracle-commerce-product-json-ld.jpg) Oracle Commerce (the storefront platform Oracle sells as Oracle CX Commerce / Oracle Commerce Cloud, and its on-prem ATG-based predecessor) ships a built-in structured data generator, but retailers running custom widgets, headless storefronts, or older templates often need to hand-build or extend it. This guide covers both paths — using the native feature and writing your own Product JSON-LD — plus the field mapping and sync issues that actually cause Rich Results Test failures in production. ## Two ways to add Product JSON-LD on Oracle Commerce **Path 1 — use the built-in structured data feature.** Oracle's own documentation (Using Oracle CX Commerce guide, Manage SEO chapter, "Customize structured data" topic) confirms Commerce automatically generates JSON-LD for the homepage, product pages, and collection pages, covering `Product`, `BreadcrumbList`, `ItemList`, `Review`, `WebSite`, and `Organization` types out of the box. Commerce lets you switch off the default markup for a given page type and substitute your own script template that reads from Commerce's page variables — useful when you need product-type-specific properties (apparel size/color variants, B2B pack quantities) the default template doesn't cover. **Path 2 — add it yourself in a widget template.** Oracle Commerce Cloud storefronts are built from widgets (a `widget.json`, a `display.template` HTML fragment, and JavaScript under `js/`), rendered client-side with Knockout.js data-binding (`data-bind="text: $data.displayName"` and similar). If you're customizing the default `productDetails`-family widget or building a headless/PWA front end against the Commerce REST APIs, you inject a JSON-LD script block into the same template that renders the visible page, populated from the identical product/SKU JSON the page already fetched — not a second, separately-maintained copy: ```html ``` Either path lands in the same place: a JSON-LD script tag in the document that describes the product shown on the page. ## Which fields matter, and where they live in your catalog Oracle Commerce's data model separates the parent **Product** repository item (marketing content, `displayName`, category placement) from child **SKU** items (`catRefId`, price, stock, size/color variant properties). Map that to schema.org like this: - **name** — the Product's `displayName`. - **sku** — the SKU's `catRefId` (Oracle's catalog reference ID; this is your variant/SKU identifier, not the parent `productId`). - **brand** — a `Brand` object with `name`. Base Oracle Commerce doesn't ship a first-class "brand" property on Product or SKU; most catalogs add it as a custom property — on the on-prem platform, via the catalog repository definition; in CX Commerce, via the Admin API's product-properties/item-type endpoints — after which it appears as an editable field on the product's details page, and gets populated from the PIM feed. - **gtin** — also not native. It has to be added as a custom SKU-level property (map to `gtin13`/`gtin14` depending on your barcode format, or the unified `gtin` property) and populated from UPC/EAN data upstream — this is exactly the kind of identifier field that's easy to leave blank at catalog load time. - **offers** — an `Offer` (or `AggregateOffer` for multi-SKU products) built from the SKU's `listPrice`/active price, `priceCurrency`, `availability` (map from Commerce's stock status), and the canonical product URL. - **aggregateRating** — `ratingValue` and `reviewCount`, sourced from whatever review system is integrated (Oracle Commerce doesn't include a native reviews engine; this is typically Bazaarvoice, PowerReviews, or a similar add-on's aggregate feed). Omit the property entirely on pages with zero reviews — don't emit a rating of 0. ## A working example ```json { "@context": "https://schema.org", "@type": "Product", "name": "Milwaukee M18 FUEL 1/2 in. Hammer Drill/Driver Kit", "image": [ "https://www.example-distributor.com/media/catalog/product/m18-fuel-hammer-drill.jpg" ], "description": "Brushless hammer drill/driver kit with 2 REDLITHIUM batteries, charger, and case.", "sku": "SKU-2704-22CT", "gtin13": "0045242336289", "brand": { "@type": "Brand", "name": "Milwaukee" }, "offers": { "@type": "Offer", "url": "https://www.example-distributor.com/tools/m18-fuel-hammer-drill-2704-22ct", "priceCurrency": "USD", "price": "199.00", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "312" } } ``` For distributors with contract/tiered pricing where public "price" isn't meaningful, omit `offers.price` and use `offers.availability` alone, or represent price ranges with `AggregateOffer` (`lowPrice`/`highPrice`) rather than publishing a number that doesn't match what a logged-in buyer actually pays. ## Keeping the JSON-LD in sync with the visible page This is where most Oracle Commerce structured data quietly breaks: - **Client-side rendering + SEO snapshots.** Oracle Commerce Cloud storefronts render primarily client-side (Knockout.js), and Commerce generates static HTML "SEO snapshots" of crawlable pages for bots, refreshed roughly every 24 hours or on publish. If your JSON-LD is injected only by client-side JavaScript after page load, confirm it's actually captured in the snapshot pipeline — otherwise the copy served to crawlers can lag price and stock changes by up to a day. Triggering a republish after a catalog price change, rather than waiting for the nightly refresh, closes that gap. - **One data source, not two.** The most common drift is a custom JSON-LD template hard-coded with a price or availability string instead of reading the same `catRefId`/`listPrice`/stock-status variables the visible price widget uses. If a merchandiser changes price in the Commerce admin catalog and the visible page updates but the script tag doesn't, you have two sources of truth. Bind both to the same catalog fetch. - **Variant products.** For configurable products (color/size), make sure the JSON-LD reflects the *specific SKU* the shopper is currently viewing (or use `ProductGroup`/`AggregateOffer` for the parent view), not always the first child SKU in the catalog. - **Custom properties survive republishing.** Brand and GTIN are usually added as custom repository properties — confirm your catalog import/PIM sync actually writes to those properties on every update, not just on initial SKU creation. ## How to validate - **View-source vs. rendered DOM**: because Oracle Commerce Cloud pages are client-rendered, `view-source:` may not show the JSON-LD if it's injected purely client-side — check the *rendered* DOM (browser DevTools → Elements panel, or `document.querySelectorAll('script[type="application/ld+json"]')` in the console) to confirm what actually reaches the DOM. - **curl the URL with a bot user agent** to see what the SEO snapshot pipeline serves to crawlers specifically, since that may differ from what a logged-in browser session renders. - **Run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results)** and, in Search Console, the **URL Inspection tool's "View Crawled Page"** option, which shows the last-indexed rendered version — the one that matters for indexing (distinct from "View Tested Page," which reflects a fresh live test). - **Watch the Structured Data report in Google Search Console** over the following days for `Product` errors/warnings (missing `price`, missing `availability`) across the catalog, not just one page. **Verified as of July 2026** against Oracle's current CX Commerce documentation for structured data, SEO snapshots, and widget development; on-prem/ATG-based Oracle Commerce Platform installs use the same schema.org fields but implement the script tag in JSP templates rather than Knockout widgets, so file locations and menu paths above are specific to the CX Commerce (SaaS) admin. None of this works if `brand` and `gtin` sit blank on half your SKUs, which is the normal state of a distributor catalog fed by inconsistent supplier data. Anglera enriches those attributes continuously against your PIM or Oracle Commerce catalog directly, so whichever path above you choose to render the JSON-LD, the fields it needs are already populated rather than empty. --- # The hvac/r attributes buyers filter on — and most catalogs miss Source: https://www.anglera.com/blog/hvacr-attributes Published: 2026-05-24 Industries: hvacr ![The hvac/r attributes buyers filter on — and most catalogs miss](/og/hero-hvacr-attributes.jpg) A distributor rep can tell you the difference between a `24SCA436` and a `24SPA636` in about four seconds. A filtered search box can't, unless someone put that difference into structured fields. Most condensing unit catalogs still describe products the way a spec sheet PDF does, in prose, which means the exact attributes buyers and AI answer engines filter on are sitting in a paragraph nobody can query. ## The attributes that actually drive a condensing unit purchase Contractors and engineers aren't browsing HVAC/R catalogs. They're filtering. A rep sizing a replacement unit, or an estimator matching a spec, works down a checklist before they ever open a product page. Based on how AHRI's own certified product directory is structured, and what shows up on every serious manufacturer submittal sheet, the attributes that actually gate a decision are: - **Nominal cooling capacity** — tons and BTU/h, plus the specific staging (single-stage, two-stage, variable-capacity/inverter) - **Refrigerant type** — `R-410A`, `R-454B`, or `R-32`, and increasingly whether the unit is A2L-rated - **Efficiency rating** — SEER2 and EER2 (the DOE moved to SEER2/EER2/HSPF2 testing metrics starting January 1, 2023, per [SEER2.com](https://seer2.com/)) - **Electrical characteristics** — voltage/phase (208-230V/1ph, 460V/3ph, etc.), minimum circuit ampacity (MCA), and maximum overcurrent protection (MOP) - **Compressor type** — scroll, variable-speed, or reciprocating - **Sound rating** — dBA at a stated distance - **Refrigerant line set sizes** — liquid and suction line diameters, and maximum equivalent line length - **Low-ambient operating range** — the minimum outdoor temperature the unit can start and run at, with or without a kit - **AHRI certified reference/match number** — the specific indoor coil combination the rating applies to - **Coil construction** — fin-and-tube vs. microchannel, and corrosion protection (e.g. e-coated) - **Physical footprint** — dimensions, weight, and service clearance AHRI's own directory guidance confirms this is exactly how buyers narrow a search: filtering "by manufacturer, model number, voltage, and cooling capacity" to find [certified condensing units that meet a specific requirement](https://www.ahrinet.org/certification/cee-directory/how-use-directory). If your catalog only has three of those eleven fields filled in, you're filterable on three axes. Everything else, a buyer assumes doesn't exist. ## Why the refrigerant field is the one that's breaking right now This isn't a theoretical taxonomy problem. As of January 1, 2025, manufacturers can no longer build new residential and light-commercial equipment on `R-410A` — the industry has shifted to A2L refrigerants, primarily `R-454B` and `R-32`. Critically, the EPA does not allow an A2L unit to be dropped in as a straight retrofit for R-410A equipment; the outdoor unit and indoor coil have to be a matched, certified pair, and the whole system typically needs a redesigned coil with integrated safety features (see [ACDirect's transition guide](https://www.acdirect.com/blog/r454b-refrigerant-2026-homeowner-guide/)). That means "refrigerant type" isn't a nice-to-have attribute anymore — it's a compatibility gate. A distributor whose catalog doesn't cleanly separate R-410A legacy stock from R-454B/R-32 replacement units is going to get filtered out by any contractor (or any AI tool helping one) searching "3-ton R-454B condensing unit, matched coil." If that field is buried in a title string or missing outright, the SKU doesn't just rank lower. It doesn't show up. ## Ask an answer engine Try asking an AI assistant something like: *"What 3-ton R-454B condensing unit is rated for low-ambient operation down to 0°F without a kit?"* That query requires four structured facts to line up simultaneously: tonnage, refrigerant, low-ambient rating, and kit-dependency. If a manufacturer's feed has those as four separate, consistently-labeled attributes, the SKU is answerable. If they're scattered across a PDF spec sheet and a marketing paragraph, the answer engine has nothing to extract, and it recommends a competitor whose data happens to be structured. ## Before and after: a 3-ton condensing unit Here's what a typical raw feed record looks like next to what a buyer (or an AI answer engine) actually needs. **Raw feed description (typical):** "Carrier Comfort 3 Ton Condensing Unit R-410A. Reliable outdoor unit for residential cooling applications. Scroll compressor. 15 SEER2. Contact rep for specs." **Enriched attribute table:** | Attribute | Value | |---|---| | Nominal capacity | 3 ton (36,000 BTU/h) | | Refrigerant | R-410A (legacy, matched coil required) | | SEER2 / EER2 | 15.0 / 11.5 | | Compressor type | Single-stage scroll | | Voltage / Phase | 208-230V / 1-phase / 60Hz | | MCA / MOP | 18.2A / 30A | | Sound rating | 72 dBA | | Liquid / suction line | 3/8 in / 3/4 in, up to 250 ft equivalent | | Low-ambient operation | Down to 0°F with accessory kit | | AHRI reference number | Matched coil required for certified rating | | Coil type | Aluminum fin-and-tube | | Dimensions / weight | 30 in x 30 in x 34 in / 165 lb | | Application | Residential, ducted split system | The description isn't wrong, exactly. It's just unusable for filtering. Nothing in that first paragraph can populate a faceted search filter, a comparison table, or an answer-engine response. Every line in the table on the right can. ## How to structure it so it survives The fix isn't a longer product description. It's a fixed attribute schema, applied consistently across every condensing unit SKU in the line, with controlled values (not free text) for refrigerant type, voltage class, and application. Distributors carrying multiple manufacturers need that schema to be brand-agnostic, so a 3-ton R-454B unit from one OEM filters the same way as the equivalent from another. That's the mechanical work most catalogs quietly skip, because pulling MCA, MOP, line sizes, and low-ambient ratings out of a stack of PDF spec sheets runs about 30-45 minutes of manual work per SKU, multiplied across thousands of condensing units, coils, and package units in a full HVAC/R line. This is the exact gap Anglera is built to close. It doesn't replace your PIM or touch your CRM — it plugs into Akeneo, Salsify, inriver, or a flat file, extracts the real values sitting in supplier spec sheets, scores each SKU for completeness, and fills the attribute table so condensing units, coils, and package units show up in every filter a buyer or an AI answer engine actually uses. Most catalogs can be live within 30 days, starting from whatever data they already have. --- # Running a clean holdout test to isolate product-data lift Source: https://www.anglera.com/blog/holdout-test-product-data Published: 2026-05-24 ![Running a clean holdout test to isolate product-data lift](/og/hero-holdout-test-product-data.jpg) Most "before and after" enrichment reports are seasonality wearing a lab coat. Traffic mix shifts, a competitor runs a promo, Google reindexes a category — and suddenly your enriched SKUs look like they lifted 12% when half of that is noise. A holdout test is the only way to isolate what better product data actually did, because it gives you a group that experienced everything else that happened during the window except the enrichment itself. ## Why a holdout beats a before/after A before/after comparison has one arm. A holdout test has two: a treatment group that gets enriched (complete attributes, corrected specs, better titles and images, richer content) and a control group that doesn't, running at the same time, under the same conditions. Because both groups live through the same traffic swings, algorithm updates, and pricing changes, the only systematic difference between them is the data itself. That's what lets you attribute the delta to enrichment rather than to the calendar. ## Choose the unit of randomization This is the decision that determines whether your result is trustworthy or contaminated before you even collect data. There are three realistic options, and they trade off cleanliness against speed. | Unit | How it works | Best for | Main risk | |---|---|---|---| | SKU-level | Randomly split individual SKUs within a category into treatment/control | Large catalogs, categories with hundreds+ of SKUs | Buyers comparing two similar SKUs on the same page can "see" both conditions, muddying the read | | Category-level | Enrich entire categories, hold out sibling categories as control | Retailers whose categories are comparable in size/traffic (e.g., two sub-verticals of the same vertical) | Categories are rarely true twins — different seasonality, different average order value, different competitive intensity | | Traffic/session-level | Route a random slice of sessions to see enriched PDPs regardless of SKU | Sites with a testing/experimentation platform already wired to PDP templates | Requires engineering lift to serve two data states off the same SKU; on-site search and category pages can still expose the "wrong" arm | For most retailers and distributors, SKU-level randomization inside a single category is the pragmatic default — it doesn't require touching your experimentation stack, and it's the unit closest to where enrichment actually happens (attribute-by-attribute, SKU-by-SKU). Reserve category-level splits for catalogs too small to get statistically stable SKU groups, and traffic-level splits for teams that already run PDP experiments and want session-based read on a single hero SKU. ## Size the test before you run it Decide your sample size and runtime before launch, not after you like the trend line. You need four inputs: your baseline PDP conversion rate, the minimum lift you'd actually act on (don't bother detecting a 0.2-point move nobody will change budget over), a significance level (95% confidence is standard), and statistical power (80% is the common floor — meaning you have an 80% chance of catching a real effect if one exists). Plug those into a standard two-proportion sample size calculator; as a sanity check, one widely used framework for holdout sizing suggests treating [10,000 users per arm as a rough floor](https://zyabkina.com/control-holdout-group-sample-size-calculation/) for consumer-scale tests, and multiplying your calculated size by 3-4x if you plan to slice results by segment (category, price tier, channel) afterward. If your SKU count or traffic can't clear that bar in a reasonable window, don't fake it by peeking early or shrinking your minimum-detectable-effect after the fact — widen the category, extend the runtime, or accept that you're measuring a directional signal, not a publishable result, and say so internally. ## Guardrails against contamination A holdout test dies quietly, not loudly — you rarely get an error message when it's compromised, you just get a wrong answer that looks clean. Three failure modes account for most of the damage: - **Assignment drift.** SKUs or sessions bleed between arms mid-test because a merchandiser "just fixes" a control SKU's title, or a re-sync from the PIM overwrites your held-out state. Lock the control group behind a flag or a frozen export, and treat any manual touch to a control SKU as a test-ending event. - **Cross-exposure.** A shopper compares an enriched SKU against its held-out sibling on the same category page, or your on-site search results blend both arms. This is the sharpest argument for category-level or traffic-level splits when SKUs within a category are close substitutes. - **Concurrent experiments.** Running a pricing test, a merchandising test, and a data-enrichment test over the same SKUs at once makes it impossible to attribute lift to any one of them. If your experimentation platform supports it, keep the enrichment holdout on its own randomization unit, isolated from other live tests, and log every SKU that moves between other experiments during your window. ## Reading the result Once you close the test, look at more than the topline conversion delta. Pull PDP conversion rate, add-to-cart rate, and return rate for both arms — enrichment should raise conversion and add-to-cart while lowering returns tied to wrong-fit or wrong-spec purchases, and a lift in the first two without movement in the third is a flag to check whether the enrichment was cosmetic (better images and copy) rather than substantive (correct dimensions, materials, compatibility). Check organic and on-site-search impressions for the treatment SKUs too; enrichment often shows up as more qualified traffic before it shows up as conversion, so a flat conversion delta with a rising impression count can still mean the test is working, just early. Report the confidence interval, not just the point estimate. "Enrichment lifted conversion 6.3%, 95% CI [1.1%, 11.5%]" is honest; "enrichment lifted conversion 6.3%" invites someone to bet the annual roadmap on a number that could plausibly be 1% or 11%. ## The caveats worth saying out loud A holdout test measures the SKUs and window you ran it on — it doesn't automatically generalize to your whole catalog, especially if you tested a high-traffic category and your long tail behaves differently. Novelty effects can inflate early results as returning shoppers notice the change; a 3-6 week runtime that spans at least one full buying cycle is a reasonable floor before you trust the number. And a holdout tells you enrichment worked, not which piece of it worked — if you want to know whether it was the corrected spec, the added image, or the rewritten title, you need a second, narrower test. None of this is exotic statistics — it's discipline applied to a question retailers usually answer with a hunch. Anglera scores, gap-fills, and continuously maintains the product data going into a test like this, extracted and quality-scored from your existing supplier and source documents rather than guessed at, and it plugs into whatever PIM you already run without replacing it. The rigor of the test is on you; the enriched data feeding it is the part Anglera does the work on. --- # Health & Supplements is being reranked by AI shopping agents. Is your catalog readable? Source: https://www.anglera.com/blog/health-supplements-aeo Published: 2026-05-24 Industries: health-supplements ![Health & Supplements is being reranked by AI shopping agents. Is your catalog readable?](/og/hero-health-supplements-aeo.jpg) Health and supplements shoppers used to start with a search bar and a wall of reviews. Increasingly they start with a chat window, asking an AI agent to pick the right magnesium, probiotic, or protein for a specific goal. If your product data doesn't answer that question in structured, factual detail, the agent moves to the next brand, and the shopper never sees you at all. ## The channel shift is already measurable This isn't a future-tense trend. Adobe Analytics tracked traffic from generative AI sources to U.S. retail sites growing 1,200 percent by February 2025 compared to the prior July, and the pattern has kept compounding through 2025 into 2026 as ChatGPT, Google's AI Mode, Gemini, and Perplexity all shipped shopping-specific features ([Adobe](https://blog.adobe.com/en/publish/2025/03/17/adobe-analytics-traffic-to-us-retail-websites-from-generative-ai-sources-jumps-1200-percent)). ChatGPT alone is fielding tens of millions of shopping-related queries a day, and its shopping mode is built to compare products on named attributes rather than just surface a ranked list of links. Health and supplements is a natural fit for this shift. It's a category defined by specific, comparable facts: dose per serving, form (capsule vs. gummy vs. powder), third-party testing, allergen flags, and who a product is actually formulated for. That's exactly the kind of structured comparison an AI agent is good at, and exactly the kind of comparison a thin product page fails to support. ## Why thin data makes a catalog invisible An AI shopping agent doesn't read your homepage copy or your Instagram captions. It reads what's actually attached to the product record: title, description, structured attributes, and any schema markup on the page. When those fields are generic ("Premium Magnesium Supplement — Supports Wellness") instead of specific ("Magnesium Glycinate, 200mg elemental magnesium per capsule, third-party tested by NSF, non-GMO, vegan capsule"), the agent has nothing to match against a shopper's actual question. Supplement catalogs are especially prone to this because the same feed often gets reused across a marketplace listing, a DTC site, and a retail syndication partner, each with different field requirements. Dosage gets buried in an image of the supplement facts panel. Certification claims live in a PDF, not a field. Form and flavor variants collapse into a single vague title. None of that is readable by a model that's trying to answer "which magnesium is best for sleep and won't upset my stomach." ## What an AI actually does with the question Try this yourself: ask an AI shopping agent to "recommend a magnesium supplement for sleep that's third-party tested and won't cause stomach issues." A well-instrumented agent will try to filter on form (glycinate over oxide, since oxide is more likely to cause GI discomfort), elemental dose, and certification status. If a brand's data doesn't expose those three things as clean, extractable facts, the agent has no way to confirm the product qualifies, even if it actually does. It gets skipped, not because it's a worse product, but because it's an unreadable one. Here's what that looks like on an actual product record. | Field | Raw feed (typical) | Enriched for AI + shoppers | |---|---|---| | Title | Magnesium Supplement 60ct | Magnesium Glycinate 200mg, 60 Capsules — for Sleep & Muscle Recovery | | Form | (not specified) | Capsule, vegan shell | | Dose | See supplement facts | 200mg elemental magnesium per capsule (2 capsules = 400mg) | | Third-party testing | (not specified) | NSF Certified for Sport | | Allergen info | (not specified) | Gluten-free, soy-free, non-GMO | | Best for | Wellness | Sleep support, muscle recovery, magnesium-sensitive stomachs (glycinate form) | The left column is common, and it's not a failure of writing quality, it's a gap in the data pipeline. The right column is what makes a product eligible to be recommended by name. ## Certification data is doing more work than it used to Third-party verification marks like NSF and USP aren't just trust badges anymore, they're becoming machine-readable filters. NSF's dietary supplement certification checks that label claims match what's in the bottle and screens for contaminants under NSF/ANSI 173 ([NSF](https://www.nsf.org/consumer-resources/articles/supplement-vitamin-certification)), and USP's Verified Mark requires a facility audit plus lab testing against USP quality standards before a product can carry it ([USP](https://www.usp.org/verification-services/verified-mark)). Shoppers increasingly ask AI agents to filter on exactly this kind of verification, especially in a category with real safety stakes. If that certification status isn't structured data on your product record, an agent can't confirm it, and won't recommend the product on that basis even when it's true. ## The fix isn't a rewrite, it's continuous enrichment Most brands and retailers already have most of these facts somewhere, in a spec sheet, a certificate of analysis, a supplement facts panel image. The problem is getting them into structured, current fields across every catalog and syndication point, and keeping them there as formulas, certifications, and SKUs change. That's the layer Anglera runs on top of whatever PIM or commerce platform a retailer already has. It scores every supplement listing for the gaps that make it unreadable to AI agents, pulls missing facts like dose, form, and certification status from source documents, and keeps that data current as products change, without requiring a system migration. --- # Building an attribute schema for Electrical that buyers and AI can actually use Source: https://www.anglera.com/blog/electrical-attributes Published: 2026-05-24 Industries: electrical ![Building an attribute schema for Electrical that buyers and AI can actually use](/og/hero-electrical-attributes.jpg) An electrical distributor's catalog lives or dies on spec fields, not adjectives. A buyer specifying a panel doesn't search for "reliable circuit protection" — they search for a 3-pole, 400A frame, 65kA breaker with an electronic LSI trip unit. If that data isn't in structured fields, the SKU is invisible no matter how good the product is. Here's what actually belongs in an Electrical attribute schema, why gaps quietly delete SKUs from search and AI answers, and how to structure it so it holds up. ## Why Electrical punishes thin data harder than other categories Electrical buyers are usually engineers, contractors, or procurement staff working from a one-line diagram or a panel schedule. They already know the spec they need before they open your site. Their job is to confirm a match, not to be persuaded. That means the entire buying motion is filter-first. Distributors report that industrial and technical buyers narrow products using a handful of attributes before they ever open a product page, and platforms built for consumer-style browsing routinely break under that load — tokenized part numbers, missing cross-references, and generic brand/price/category filters that ignore the specs that actually matter, as [Hum Commerce documents in its breakdown of industrial catalog search failures](https://humcommerce.com/knowledge-center/industrial-product-catalog-search-filter-challenges/). The same piece cites B2B buyers who say they'd switch suppliers over a search experience that can't get them to the right part quickly. Electrical adds a second layer most categories don't have: code compliance. A breaker's AIC rating, UL listing, and SCCR aren't nice-to-haves — they determine whether it's legal to install in a given panel. If those fields are blank or buried in a PDF, the SKU doesn't just rank poorly. It gets filtered out entirely, because a compliance-driven buyer can't risk guessing. ## The attribute set that actually matters Electrical schemas need to go well beyond title, brand, and price. For breakers, disconnects, panels, and similar gear, the attributes that drive both filtered search and code-compliant selection fall into a few buckets: | Category | Attributes | |---|---| | Electrical ratings | Voltage rating, current/trip rating, interrupting rating (AIC/kA), short circuit current rating (SCCR), frequency | | Physical/mechanical | Frame size, number of poles, mounting type, termination/lug type, dimensions | | Function/control | Trip unit type (thermal-magnetic vs. electronic LSI/LSIG), adjustability, current limiting, series rating | | Compliance | UL/CSA listing (e.g. `UL 489`), NEMA/enclosure rating, RoHS/environmental | | Compatibility | Panel/enclosure fit, OEM cross-reference, accessory compatibility | This is roughly the same structure that European and increasingly North American electrical distributors are converging on through [ETIM](https://www.etim-na.org/), the electro-technical classification standard now used by wholesalers including Sonepar, Graybar, WESCO, and Rexel. ETIM's value isn't the taxonomy itself — it's that it forces every SKU into a class with a fixed, comparable set of features (rated current, poles, IP rating, and so on) instead of a free-text description. That's the same principle Anglera applies regardless of whether a distributor runs ETIM, a custom taxonomy, or nothing at all. ## Worked example: a molded-case circuit breaker Here's what a typical raw supplier feed looks like next to what a filterable, AI-legible listing needs. **Raw feed description (as received from a manufacturer):** > "Molded case circuit breaker, 3 pole, thermal magnetic, 400 amp, suitable for use in switchboards and panelboards, UL listed." That sentence is technically accurate and commercially useless. It has no interrupting rating, no frame/trip distinction, no voltage class. A buyer filtering for "65kA at 480V" will never see this SKU, and an AI answer engine summarizing options can't cite it either — there's nothing to extract. **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Molded case circuit breaker (MCCB) | | Poles | 3 | | Frame size | `400 AF` | | Trip rating | `400 AT` | | Voltage rating | `600 VAC` | | Interrupting rating (AIC) | `65 kA @ 480 VAC` | | Trip unit | Thermal-magnetic, fixed | | Termination | Lug, mechanical | | Standard/listing | `UL 489` | | SCCR | 65 kA | | Typical application | Switchboard, panelboard main or feeder | Same physical product, same manufacturer data — but now every field a spec sheet or a purchasing filter would ask for is broken out, quality-scored against the source PDF, and ready to drive a facet. ## Ask an answer engine This is the test that matters now as much as on-site search. A buyer or their AI assistant might ask: "what's a 400 amp, 3-pole molded case breaker rated for 65kA at 480 volts, UL 489 listed?" An answer engine can only surface and compare products whose attributes are explicit, structured, and consistent across brands. A PDF spec sheet or a paragraph description doesn't answer that question — a populated `interrupting_rating`, `frame_size`, and `standard` field does. Distributors who leave those fields as free text are opting out of that channel entirely, not just underperforming in it. ## Structuring the schema so it holds up A few practical rules make an Electrical schema durable rather than a one-time cleanup: - **Separate frame from trip.** Frame size (`AF`) and trip rating (`AT`) are different numbers on the same breaker and buyers filter on both independently — collapsing them into one "amperage" field loses information. - **Always pair a rating with its condition.** An AIC value without a voltage (`65 kA @ 480 VAC` vs. just "65 kA") is not comparable across products and shouldn't be treated as complete. - **Model compliance as its own field, not a checkbox.** `UL 489` vs. `UL 1077` changes what a breaker is legally allowed to protect — this belongs in a controlled attribute, not a marketing bullet. - **Keep trip unit type structured.** Thermal-magnetic vs. electronic, and within electronic, LSI vs. LSIG, is one of the most commonly filtered specs and one of the most commonly buried in prose. None of this requires ripping out an existing PIM or taxonomy. Your PIM stores the data — the work is pulling these values out of supplier documents, scoring them for completeness and consistency, and gap-filling what's missing so the catalog is filterable and machine-legible from day one. Anglera plugs into Akeneo, Salsify, inriver, or a flat file and does exactly that: extract from source, quality-score, enrich, and keep it current as new SKUs and revisions land — the same discipline this MCCB example shows, applied across a full electrical catalog. --- # BDI: How a Family Holding Company Built a Bearing Giant Source: https://www.anglera.com/blog/bdi-distributor-playbook Published: 2026-05-24 Industries: mro-industrial ![BDI: How a Family Holding Company Built a Bearing Giant](/og/hero-bdi-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In 1935, a small Cleveland outfit called Bearing Distributors, Inc. started supplying bearings to the steel mills lining the Cuyahoga River. Ninety years later, the company known simply as BDI ranks third in Power Transmission on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), with $1.0 billion in 2024 revenue, a top-15 placement in Fluid Power, and a top-25 spot in Industrial Supply. The interesting part of BDI's story isn't the scale. It's who still signs the checks at the top. ## From steel mills to a global product line BDI's original business was narrow by design: bearings, sold to the heavy industry clustered around Cleveland. The name change from "Bearing Distributors, Inc." to the shorthand "BDI" tracked a real strategic shift, as the company pushed outward into mechanical power transmission, then electrical power transmission, linear motion, fluid power, material handling, and industrial safety products. That progression is the standard playbook for a bearing house that wants to survive past its first product line: stop being a single-category reseller and become the technical layer between a plant's maintenance team and the hundreds of vendors it would otherwise have to manage directly. A second inflection came north of the border. According to [the Canadian Fluid Power Association](https://cfpa.ca/members/bdi-canada-inc/), BDI Canada went through an ownership change that merged it with the Cleveland parent, and by the end of the 1990s the combined entity was the largest bearing, power transmission, and fluid power distributor in Canada. That merger is a useful marker for how BDI actually grows: not by inventing new categories, but by absorbing regional operators who already have the category and the customer relationships, then running them at BDI's scale. Trade press over the years has logged the same pattern domestically, with acquisitions of regional bearing houses like Bearing Sales and Brown Bearing folded into the BDI branch network rather than kept as separate brands. ## The unglamorous part: who owns BDI Here's the detail that doesn't show up on a typical distributor scorecard. BDI is a subsidiary of [Forge Industries](https://forgeindustries.net/), a family-owned private holding company founded in 1919 and headquartered in Youngstown, Ohio, about seventy miles from BDI's own Cleveland base. Forge's other subsidiaries are Akron Gear & Engineering, a gear shop, and Miller Spreader, a maker of asphalt and concrete construction equipment. That is an odd portfolio for a company sitting on top of a billion-dollar bearing distributor: a gear machinist and a paving-equipment manufacturer, bundled with the third-ranked power transmission distributor in North America, all under one family's control for over a century. Most of BDI's real competitive set has taken a different ownership path. Applied Industrial Technologies and Motion Industries (a Genuine Parts Company subsidiary) are public. Kaman's distribution arm and a long list of regional power transmission houses have moved through private equity hands over the past two decades, often multiple times, as PE firms buy, consolidate, and flip bearing and MRO distributors on standard hold-period timelines. BDI has stayed put. The strategic tension in that is real and worth naming honestly: family ownership means no PE sponsor pushing for an accelerated roll-up or a dressed-up exit, which can mean slower access to acquisition capital when a competitor is willing to overpay for share. It also means no earnings calls, no sponsor-driven cost-cutting cycles, and no pressure to hit a return threshold inside a five-to-seven-year fund window. For a distribution business where trust with plant maintenance managers is built branch by branch over years, that patience is arguably worth more than the leverage a financial sponsor could bring. ## What the branch map says about the strategy BDI now operates more than 180 branches across roughly a dozen countries in North America, Europe, and Asia, per [Power Transmission Engineering's company directory](https://www.powertransmission.com/companies/bdi-bearing-distributors-inc). The company has kept opening and relocating branches through 2025, including a first location in Oklahoma and expanded facilities in the Atlanta and Charlotte metro areas, according to reporting in [Industrial Distribution](https://www.inddist.com/home/news/13768671/bdi-opens-new-branch-in-tulsa-ok). That is organic density-building, not the kind of headline-grabbing mega-acquisition that shows up in a PE-backed competitor's press releases. It matches the ownership structure: a family holding company compounds branch count and category depth over decades rather than swinging for a transformational deal that resets the balance sheet. BDI's 2026 MDM placements: | Vertical | 2026 MDM Rank | |---|---| | Power Transmission/Bearings | #3 | | Fluid Power | #13 | | Industrial Supply | #24 | BDI's 2025 MRO placement (#13) is no longer part of MDM's 2026 list. The value-added services layered onto that branch network, including inventory optimization, technical support, documented cost-savings reporting, and end-user training, are what every serious industrial distributor now offers. What sets BDI apart is that it can offer them at national scale while still being small enough, corporately, that a family in Youngstown can decide how fast to grow without checking in with a fund's investment committee. ## Sources - [Modern Distribution Management, 2026 Top Distributors](https://www.mdm.com/top_distributors) - [Forge Industries, company overview](https://forgeindustries.net/) - [Canadian Fluid Power Association, BDI Canada Inc. member profile](https://cfpa.ca/members/bdi-canada-inc/) - [Power Transmission Engineering, BDI company directory](https://www.powertransmission.com/companies/bdi-bearing-distributors-inc) - [Industrial Distribution, BDI branch expansion coverage](https://www.inddist.com/home/news/13768671/bdi-opens-new-branch-in-tulsa-ok) Every distributor on this list runs on the same unglamorous inputs: a catalog worth trusting, a branch worth stocking, and data clean enough to move product without a phone call. This series looks at how each one built theirs. --- # Syndicating apparel data to every channel without the re-keying Source: https://www.anglera.com/blog/apparel-syndication Published: 2026-05-24 Industries: apparel ![Syndicating apparel data to every channel without the re-keying](/og/hero-apparel-syndication.jpg) Apparel is the category where marketplace syndication punishes sloppiness fastest. A shirt with a vague size field or no GTIN doesn't just rank lower on Amazon or Google Shopping — it gets suppressed outright, invisible to the shopper and to the AI agent evaluating it on her behalf. The fix isn't a bigger content team. It's a completeness bar you check before the feed ever leaves your system. ## Why apparel fails the bar more than other categories Apparel has more required, variant-level attributes than almost any other vertical: size, size class, size system, body type, height range, color, material, gender, age group. Google Shopping requires GTIN specifically for apparel and accessories, and [a product without a matching GTIN-to-brand pairing gets limited performance](https://www.datafeedwatch.com/blog/google-merchant-center-disapproved-products) — fewer placements, lower auction priority, no appearance in free Shopping listings. Amazon has tightened this further. As of late 2025, [Amazon began systematically suppressing manual size chart images](https://www.zentail.com/blog/amazon-apparel-size-standards) from the listing gallery in favor of its structured Size Chart Self-Serve Tool, pushing sellers away from a JPEG of a size table and toward machine-readable size data per variant. Miss the structured fields — apparel size class, size value, body type (slim, regular, plus, big and tall), height (petite, regular, tall) — and the listing can be hidden from search and browse entirely, not just ranked poorly. That's the core difference from most categories: apparel non-compliance doesn't cost you a few positions in search. It costs you the listing. ## The three-layer bar: content, attribute, identifier Every marketplace channel enforces some version of the same three-layer bar before a listing goes live: | Layer | What it checks | Apparel-specific failure mode | |---|---|---| | Content | Title length, bullet count, description depth, image count/resolution | Title over character caps (Amazon is moving toward a 75-character cap across most categories in 2026); no lifestyle or fit image | | Attribute | Category-required fields fully populated per variant | Missing size class, body type, or `outer_material_type`; color inconsistent across parent/child | | Identifier | Valid GTIN/UPC/EAN matched to the correct brand | No GTIN, or a GTIN registered to a different brand than the one in the feed | Miss any one layer and the behavior differs by channel: Amazon suppresses (hidden, not deleted), Google disapproves the specific offer, Walmart rejects the item at ingestion. All three outcomes look the same to a shopper: the product isn't there. ## A men's dress shirt, before and after Here's a typical raw PIM export for a men's dress shirt versus what a marketplace-ready feed needs, side by side. **Raw feed (as it often sits in the PIM):** | Field | Value | |---|---| | Title | Men's Shirt Blue | | Size | M | | Color | Blue | | Material | Cotton | | GTIN | (blank) | | Fit | (blank) | | Sleeve length | (blank) | **Enriched, channel-ready:** | Field | Value | |---|---| | Title | Men's Slim Fit Dress Shirt, French Blue, Long Sleeve | | Size class / value | Alpha / Medium (Neck 15.5–16, Sleeve 34/35) | | Body type | Slim | | Color | French Blue | | Outer material type | 100% Cotton, Non-Iron Finish | | Fit | Slim Fit | | Sleeve length | Long | | GTIN | 8-digit UPC, brand-matched | The raw version is technically "in the feed." It just isn't sellable — it fails the attribute layer (no fit, no body type, no material subtype) and the identifier layer (no GTIN) at the same time. The enriched version is what an AI shopping agent needs, too: ask ChatGPT or Gemini to "recommend a slim-fit non-iron dress shirt in size 15.5/34-35," and it can only surface a product whose feed actually states fit, neck size, sleeve length, and fabric finish as structured fields — not buried in a paragraph description. ## Why this becomes a re-keying problem Most apparel retailers don't lack this data entirely. It's scattered: fit and body type live in a merchandising spreadsheet, GTINs sit in a separate vendor master, care and material detail is buried in a supplier PDF. Getting all of it into one variant-level record, then reformatting it per channel (Amazon wants `outer_material_type`, Google wants a different material taxonomy, Walmart wants its own attribute names for the same concept), is exactly the manual, repetitive work that turns a single SKU into a dozen re-keyed rows across a dozen tabs. The [most common cause of feed rejection across marketplaces](https://www.inriver.com/resources/what-causes-rejected-product-listings-amazon-walmart-online-marketplace/) is still a missing required attribute — not a policy violation, not a pricing error. It's a field nobody filled in because nobody owned it consistently across every SKU and every channel. ## Reaching channel-ready completeness The practical path is to define the completeness bar once, at the variant level, before mapping to any channel: every apparel SKU needs size class, size value, body type, height (where applicable), color, material composition, fit, sleeve/inseam length where relevant, and a brand-matched GTIN. Score every SKU against that bar, gap-fill from supplier data or existing product content where it exists, and only then map to each channel's specific field names and formats. Anglera sits on top of your PIM and does exactly this layer of work. It scores every apparel SKU against the attribute and identifier bar each marketplace enforces, gap-fills missing fields like fit, body type, and material detail from your existing product content, and keeps variants consistent as channels change their requirements — so your team maps once instead of re-keying the same shirt eight different ways for eight different feeds. --- # Building an attribute schema for Waterworks & Utility that buyers and AI can actually use Source: https://www.anglera.com/blog/waterworks-attributes Published: 2026-05-23 Industries: waterworks ![Building an attribute schema for Waterworks & Utility that buyers and AI can actually use](/og/hero-waterworks-attributes.jpg) A resilient-wedge gate valve isn't a commodity part with a size and a price. It's a bundle of a dozen discrete engineering facts, and a buyer's filter (or an AI answer engine parsing a spec question) checks most of them before the SKU is even eligible to be shown. Get the schema right and the part is findable. Leave half the fields blank, the way most manufacturer feeds do, and the valve effectively doesn't exist for anyone searching by spec instead of by part number. ## Why waterworks can't use a generic attribute template Most e-commerce attribute thinking comes from categories where "size" and "color" cover most of the filtering. Waterworks doesn't work that way. A `6-inch` gate valve has a valve design, a body material, an end connection on each side, a pressure class, a stem type, an operating mechanism, a coating system, a seat material, a standard compliance citation, and a certification list — and a municipal engineer or contractor is typically filtering on six or seven of those at once, not browsing. That filtering is almost always "and" logic, not "or." A buyer searching for an `AWWA C509`-compliant, mechanical-joint, non-rising-stem valve isn't interested in near matches. If the pressure class field is blank, the SKU drops out of that result set entirely — it doesn't rank lower, it disappears. The same logic applies to an AI answer engine: if it can't confirm a field against the query, it moves to a competitor's SKU that made the match easy, which is increasingly the mechanic B2B teams are optimizing for under the banner of [generative engine visibility](https://www.kensium.com/blog/b2b-ecommerce-strategy-generative-engine-optimization-geo). ## The schema a gate valve actually needs For resilient-wedge and resilient-seated gate valves specifically — the workhorse isolation valve in most water distribution systems — the attribute set that gates a filter or an AI match looks like this: | Attribute | Typical values | Why it gates search | |---|---|---| | Nominal size | `4 in` through `48 in`, with `DN` metric equivalent | Primary filter on every valve page | | Valve design | Resilient wedge, double disc, solid wedge | Buyers and specs distinguish these explicitly; not interchangeable | | Body / bonnet material | Ductile iron (`ASTM A536`), gray iron | Ductile iron is the de facto spec on most municipal jobs | | End connections | Mechanical joint (`MJ`), flanged (`FLG`), push-on | Each end can differ — `MJ x FLG` is common and must be captured per side | | Pressure class | `Class 150`, `Class 250`, `psi` working pressure | Determines legal use on a given main; a hard filter for municipal buyers | | Stem type | Non-rising stem (`NRS`), rising stem (`RS`), `OS&Y` | `NRS` is standard for buried service; `OS&Y` is required where stem position must be visually verified | | Operating mechanism / direction to open | `2-inch` square nut or handwheel; open left or open right | Buried valves take a nut and a valve key; direction to open varies by utility standard | | Interior / exterior coating | Fusion-bonded epoxy per `AWWA C550` | Corrosion protection, increasingly specified explicitly | | Wedge / seat material | `EPDM` or `NBR` encapsulation | Governs compatibility with water chemistry and disinfectant residual | | Standard compliance | `AWWA C509`, `AWWA C515` | Buyers cite the standard directly in RFQs; the two are not interchangeable | | Certifications | `NSF/ANSI 61`, `NSF/ANSI 372` (lead-free), `UL`/`FM` listing | Potable contact requires `NSF/ANSI 61`; fire service requires `UL`/`FM`, a qualification most feeds omit | Most manufacturer flat files capture size, end connection, and maybe pressure class. Stem type, standard compliance, and the UL/FM distinction are the fields that consistently go missing — exactly the fields a spec-driven buyer, or a model parsing a spec question, treats as non-negotiable. ## Before and after: one resilient-wedge gate valve Here's a raw manufacturer feed row for an 8-inch resilient-wedge gate valve, next to what it needs to look like to survive a filtered search and be legible to an answer engine. **Before (raw supplier feed):** > "8IN RW GATE VLV FLGXMJ OSY 250# EPOXY UL/FM" That string is dense with real information, but it's compressed into abbreviations with no labels. A filter can't parse `OSY` as "outside screw and yoke, stem type," or `250#` as "Class 250 pressure rating," and neither can a language model asked to confirm a spec match. **After (enriched attribute set):** | Attribute | Value | |---|---| | Product type | Resilient-wedge gate valve | | Nominal size | `8 in` (`DN200`) | | End connections | Flanged x mechanical joint | | Pressure class | `Class 250` (`250 psi` working pressure) | | Stem type | Outside screw and yoke (`OS&Y`), rising stem | | Operating mechanism | Handwheel | | Body material | Ductile iron, `ASTM A536` | | Wedge / seat | Ductile iron wedge, `EPDM`-encapsulated | | Coating | Fusion-bonded epoxy, `AWWA C550` | | Standard compliance | `AWWA C509` | | Certifications | `UL` and `FM` listed for fire protection service, `NSF/ANSI 61` | Same physical part, but only one version answers a filter for "OS&Y, Class 250, UL/FM listed, flanged by mechanical joint." The other version is real inventory that never surfaces, because the data never stated the claim in a field a machine can check. **Ask an answer engine:** a fire protection contractor typing "8-inch OS&Y resilient wedge gate valve, UL and FM listed, flanged by mechanical joint" is describing that table row field by field. If `OS&Y`, the `UL`/`FM` listing, and the split end connections only live inside a compressed ERP string or a scanned cut sheet, most retrieval systems can't verify the match confidently enough to cite it. Pressure-rating and flange-class terminology is confusable enough on its own that ambiguity here is a spec risk, not just a search problem ([Mueller Systems on flanged valve pressure rating standards](https://muellersystems.com/news/standards-clarification-pressure-rating-standards-for-flanged-valves/)). ## Structuring the schema so it holds up A few discipline points make this schema durable rather than a one-time cleanup: - Split `MJ x FLG`-style compound strings into separate end-one and end-two fields, since a valve can have different connections on each side. - Keep coating, wedge material, and body material as distinct fields rather than one "construction" blob; each answers a different filter or compliance check. - Treat `AWWA C509` and `C515` as separate, explicit values, not synonyms, since specs often cite one and not the other. - Carry certification as a list, not a single flag — `NSF/ANSI 61`, `NSF/ANSI 372`, and `UL`/`FM` are independent qualifications a valve can hold in any combination, which is exactly why NSF maintains a [searchable listing of certified components](https://info.nsf.org/certified/pwscomponents/index.asp?standard=061) rather than a single yes/no badge. Getting this right at scale is a data problem before it's a search problem. Your PIM, or a flat file if that's what you've got, is where these values should live. Anglera's job is scoring each SKU against a schema like the one above, gap-filling the fields manufacturer feeds routinely drop by extracting from real supplier documentation, and keeping values current as specs change. It plugs into whatever system already runs the catalog, live in weeks rather than a multi-year integration — so a resilient-wedge gate valve gets found because the data described it correctly, not lost because a filter or a model couldn't tell an `OS&Y` from an `NRS`. --- # What messy product data actually costs Pet Supplies retailers Source: https://www.anglera.com/blog/pet-supplies-state Published: 2026-05-23 Industries: pet-supplies ![What messy product data actually costs Pet Supplies retailers](/og/hero-pet-supplies-state.jpg) Pet supplies retail is in a strange spot: the category is growing fast, more of it than ever is happening online, and most catalogs still can't answer basic questions like "will this fit a 70-pound dog" or "is this grain-free." That gap is not cosmetic. It shows up in search rankings, cart abandonment, return rates, and now, whether an AI shopping agent recommends the product at all. ## The pet catalog is more complicated than it looks A single SKU in pet supplies carries more decision-critical attributes than most categories realize. Life stage (puppy, adult, senior), breed size suitability, protein source, ingredient exclusions (grain-free, poultry-free), coat type or hairball formulas for cats, aquarium water chemistry compatibility, bird seed blend ratios. None of this is optional trivia. It is what a shopper — or an AI agent shopping on their behalf — filters on before they'll even look at price. Most PIMs and supplier feeds were not built to carry that depth. A distributor feed typically arrives with a title, a brand, a category, and maybe a weight. Life stage, breed size, and ingredient flags get left to manual entry, and manual entry does not scale across tens of thousands of variants (a 30-lb bag, a 15-lb bag, a 5-lb bag, three flavors, two formulas). The category is also large enough that gaps compound. The U.S. pet industry hit [$158 billion in 2025](https://americanpetproducts.org/news/u.s.-pet-industry-reaches-158-billion-in-2025-poised-for-continued-growth-in-2026), and pet food and treats alone accounted for $68.3 billion of that. Online is no longer the minority channel: [53% of pet parents now purchase products online](https://www.petfoodprocessing.net/articles/20316-us-pet-owners-spend-29-more-on-pet-products-in-2025) versus 45% in-store, and pet food e-commerce sales grew 45.7% between 2020 and 2025. A thin catalog isn't a rounding error on a shrinking channel. It's a growing hole in your biggest one. ## What thin data actually costs The costs show up in three places, and they compound on each other. | Where it breaks | What happens | Why it costs money | |---|---|---| | Search and filtering | Shopper filters "large breed," "grain-free," "senior" — your SKU is missing the attribute, so it doesn't surface | Lost impressions before the shopper ever sees a price | | Conversion | Product page is missing feeding guidelines, ingredient list, or size-fit guidance | Shopper leaves to check another retailer or Amazon, where the same SKU has a fuller listing | | Returns and support | Shopper guesses on breed size, harness fit, or aquarium tank compatibility and gets it wrong | Return shipping, restocking, and a support ticket eat the margin on that order | None of these are dramatic single failures. They're small leaks, repeated across a catalog with thousands of SKUs and dozens of attributes per SKU, every day. That's what makes messy pet data expensive: not one broken listing, but a systemic gap that touches most of the catalog most of the time. ## Before and after: a bag of dog food Here's what a typical distributor feed looks like next to what the same product needs to actually compete for search, filters, and AI recommendations. | Attribute | Raw distributor feed | Enriched | |---|---|---| | Title | "Dog Food Chicken 30lb" | "Large Breed Adult Dry Dog Food, Chicken & Rice, 30 lb Bag" | | Life stage | (missing) | Adult | | Breed size | (missing) | Large breed (50+ lb) | | Protein source | Chicken | Chicken (first ingredient), no poultry by-product | | Grain status | (missing) | Contains grain (rice, oats) | | Feeding guideline | (missing) | 3-4 cups/day for 60-90 lb adult dog | | Special diet flags | (missing) | Not grain-free; not suitable for poultry-allergic dogs | The raw version answers "what is this." The enriched version answers "is this right for my dog" — which is the actual question being asked, whether it's typed into a search filter or asked of an AI agent. ## Ask an AI to recommend a large-breed senior dog food, grain-free Type that request into ChatGPT, Gemini, or Perplexity today and watch what happens: the assistant reasons over life stage, breed size, and ingredient exclusions simultaneously, then only surfaces products whose data explicitly confirms all three. A product with a great formula but a missing "grain-free" flag or absent breed-size attribute doesn't get excluded on merit. It gets excluded because the agent can't verify it. This is the part of 2025-2026 that raises the stakes past "better search rankings." OpenAI's Instant Checkout, live since September 2025 and running the Agentic Commerce Protocol, requires retailers to push machine-readable product feeds directly to the platform — schema, availability, and pricing all included ([OpenAI](https://openai.com/index/buy-it-in-chatgpt/)). Google's Universal Commerce Protocol, announced for AI Mode and Gemini in early 2026, follows the same logic. Pages with clean structured data are already cited roughly [3.1x more often in AI Overviews](https://elogic.co/blog/chatgpt-commerce-statistics/) than pages without it. A missing attribute used to cost you a filter click. Now it can cost you being considered at all. Marketplace pressure compounds it. Chewy, Amazon, and Petco all compete on the same SKUs your site sells, and their listings tend to carry deeper attribute sets because they've invested in enrichment at scale. When a shopper (human or AI) compares a thin listing to a full one for the identical bag of food, the fuller listing wins the click, the conversion, and increasingly, the AI recommendation. ## Fixing this without touching the PIM None of this requires ripping out a PIM or building an enrichment team from scratch. Your PIM stores the data; Anglera does the work of finding what's missing — life stage, breed size, ingredient flags, feeding guidance — and filling it in at the SKU and variant level, continuously, as new products land in the feed. It plugs into whatever system already holds your catalog, no migration required, and scores every listing for the kind of completeness that both shoppers and AI shopping agents are now filtering on. --- # A retailer's guide to species, size, and ingredient data in pet supplies Source: https://www.anglera.com/blog/pet-supplies-guide Published: 2026-05-23 Industries: pet-supplies ![A retailer's guide to species, size, and ingredient data in pet supplies](/og/hero-pet-supplies-guide.jpg) A shopper buying a 30-pound bag of dog food is answering five questions at once: right species, right size, right life stage, right ingredients, right price. Miss any one on the product page and you get a return, a one-star review, or a bounce to a competitor's listing that answers it. Here's what a complete pet supplies product page looks like, why the gaps are so costly, and a checklist to close them. ## The questions a pet supplies shopper is actually asking Pet product pages get treated like generic grocery listings, but pet owners are buying on behalf of a living thing they can't ask "does this fit." Before checkout, most shoppers are silently working through: - Is this for my animal? Dog vs. cat vs. small animal food is not interchangeable, and a surprising number of listings bury this in a title abbreviation. - Is this the right life stage? Puppy, adult, senior, and "all life stages" formulas have different nutrient minimums, and feeding an adult formula to a growing large-breed puppy is a real concern vets flag. - What size or bag weight am I getting? "5 lb" vs. "30 lb" changes the unit price and the shipping box, and it's a common source of ecommerce returns. - What's actually in it? Ingredient order, protein source, and allergen flags (chicken, grain, beef) matter more in pet food than in most grocery categories, because a meaningful share of dogs and cats are managed for allergies or sensitivities. - How much do I feed, and how long will the bag last? Feeding guidelines by body weight are legally required on the package but frequently missing or garbled on the digital listing. None of this is exotic. It's already printed on the bag under federal and state pet food labeling rules. The AAFCO model regulations require a guaranteed analysis (minimum crude protein and fat, maximum fiber and moisture), a complete ingredient list in descending order by weight, a nutritional adequacy statement identifying the life stage the food is formulated for, and feeding directions by animal weight — see [AAFCO's own explainer on reading pet food labels](https://www.aafco.org/consumers/understanding-pet-food/reading-labels/). The data exists. It just doesn't always make it from the bag to the buy box. ## A bag of chicken-and-rice kibble: raw feed vs. enriched Here's a typical raw product feed pulled straight from a supplier file, next to what an enriched listing should carry. | Attribute | Raw feed (as received) | Enriched (shopper- and AI-ready) | |---|---|---| | Title | "Chicken Rice Dog Food 30LB" | "Chicken & Rice Recipe Dry Dog Food, Adult, 30 lb Bag" | | Species | (missing — inferred from category) | Dog | | Life stage | (missing) | Adult maintenance (AAFCO nutritional adequacy statement) | | Breed size guidance | (missing) | Suitable for all breed sizes; large-breed adult formula also available | | Net weight / size options | "30LB" only | 5 lb, 15 lb, 30 lb — with per-pound unit price shown | | Primary protein | (buried in image only) | Chicken (first ingredient) | | Guaranteed analysis | (image only, not text) | Crude protein min 24%, crude fat min 14%, fiber max 4%, moisture max 10% | | Allergen flags | none | Contains chicken; grain-inclusive (contains rice) | | Feeding guideline | (image only) | Approx. 1.5–2.5 cups/day for a 30–50 lb adult dog; bag lasts ~20 days at that weight | | Calorie content | (missing) | 3,500 kcal/kg (metabolizable energy) | The left column isn't hypothetical — it's what a PIM ends up with when a supplier spec sheet and a product image get ingested, but nobody extracts the packaging text into searchable, filterable fields. The bag has every one of these answers printed on it. The listing just doesn't. ## Why the gaps show up as returns, not just bad reviews Product-information problems are a leading, well-documented cause of ecommerce returns generally, and pet supplies has specific failure modes that make it worse. Industry return-rate research puts sizing and fit mismatches at roughly 45% of all returns, with inaccurate or incomplete descriptions cited as a distinct driver on top of that — see [Ringly's 2026 ecommerce return statistics roundup](https://www.ringly.io/blog/ecommerce-return-statistics-2026) and [Richpanel's category benchmark analysis](https://www.richpanel.com/learn/ecommerce-return-rates). In pet food and litter, "size" isn't a fit problem, it's a bag-weight and feeding-duration problem: a shopper who can't tell 5 lb from 30 lb apart at a glance orders the wrong one and either returns it or quietly churns. Ingredient gaps carry a second cost that never shows up as a return: the shopper with an allergy concern or a vet-recommended limited-ingredient diet simply never adds to cart, because the listing didn't answer the question fast enough. That's lost conversion with no complaint attached, so it never appears on a returns dashboard. ## The new customer asking these questions is an AI agent Shoppers increasingly delegate the first pass of this research to an AI assistant. Chat-based shopping tools built for pet retailers now explicitly ask species, breed, age, and dietary restrictions up front, then filter the catalog against those fields before returning options — a pattern described in [Zipchat's pet-industry AI chatbot writeup](https://www.zipchat.ai/industries/pets). Amazon's Rufus assistant behaves the same way inside pet supplies, leaning on products with complete, structured specifications when deciding what to surface, per [AdsX's analysis of AI visibility for pet brands](https://www.adsx.com/blog/ai-visibility-pet-stores-brands). Ask an AI assistant to "recommend a grain-inclusive adult dog food for a 45-pound dog with no chicken allergy," and it can only surface your product if species, life stage, weight range, and allergen data are structured fields, not text buried in a hero image. ## The pet supplies data checklist - Species and pet type stated as a structured field, not just implied by category - Life stage and AAFCO nutritional adequacy statement extracted as text, matching what's on the package - All size/weight variants listed with clear unit pricing, not just the case pack size - Full ingredient list, in order, with allergen flags called out separately - Guaranteed analysis (protein, fat, fiber, moisture) as searchable attributes, not an image - Feeding guidelines by pet weight, plus an estimated "bag lasts X days" figure - Breed-size suitability noted where the formula is breed-size specific ## What Anglera does Anglera plugs into whatever PIM or feed you're already running and continuously scans pet supplies listings for exactly these gaps — species, life stage, size variants, ingredients, guaranteed analysis, feeding guidance — then gap-fills the attributes so shoppers and AI shopping agents can match a product to a pet. Your PIM stores the data; Anglera does the work of making it complete enough to sell from. --- # Global Industrial: The Distributor That Undid Its Own Empire Source: https://www.anglera.com/blog/global-industrial-distributor-playbook Published: 2026-05-23 Industries: mro-industrial ![Global Industrial: The Distributor That Undid Its Own Empire](/og/hero-global-industrial-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Global Industrial Company landed at #20 in Industrial Supplies, #8 in MRO, #12 in Safety, and #10 in JanSan on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors), on $1.38 billion in 2025 revenue. That placement looks like a straight line: a 75-year-old MRO catalog house that grew into a full digital distributor. The actual path bends hard through a decade spent owning the wreckage of America's computer superstore business, then walking away from all of it on purpose. ## A Queens material-handling shop, 1949 Michael and Paul Leeds started the company in Queens, New York in 1949, selling material handling equipment. The mail-order catalog came in 1972 under the name Global Industrial Products, and it worked well enough that by 1985 the company added a second catalog line, Global DirectMail, selling computers and office furniture. That second line would eventually swallow the first. ## The detour: three decades as a computer retailer Through the 1990s and 2000s, the computer side compounded fast enough to define the company. It renamed itself Global Direct-mail in 1995, then Systemax in 1999, chasing the build-to-order PC boom under its own Systemax brand. Then came the acquisitions that turned a catalog seller into a retail chain: Systemax picked up the CompUSA brand, trademarks, and e-commerce operation in 2008, and bought Circuit City's name and web domain for $14 million in 2009, according to [Wikipedia's account of the company's history](https://en.wikipedia.org/wiki/Global_Industrial_Company). Both moves landed in the exact months those chains were liquidating in bankruptcy. Systemax wasn't just buying customer lists; it was buying the corpses of the two biggest electronics retail brands in the country and running them as TigerDirect storefronts, alongside a European IT reseller business it built through deals like the 2009 purchase of WStore. By the early 2010s, Systemax was, in practice, a consumer electronics retailer with an industrial supplies business bolted to the side. ## Unwinding it, one deal at a time Then the company spent five straight years reversing course. TigerDirect's B2B assets sold to PCM Inc. in late 2015. Misco Germany went to CANCOM SE in 2016. The bulk of the remaining European technology operations sold off through 2017 and 2018, and the France IT reseller business closed out in August 2018. By its 2019 10-K, [Systemax reported operating as a single segment](https://www.sec.gov/Archives/edgar/data/945114/000094511420000008/a123119systemax10-k.htm): the Industrial Products Group, the MRO business it had run continuously since 1949. In 2021 the corporate name followed the business back to its roots, becoming Global Industrial Company. That is the insight worth naming plainly: most distributors that change shape do it by adding scale in one direction, through roll-up acquisitions or vertical expansion. Global Industrial did the opposite. It built an entire second identity as a computer and electronics retailer, then spent the better part of a decade deliberately dismantling that identity to re-become the narrower, more boring business it started as. Few public companies get to unwind a strategic bet that large and still end up bigger and more focused than before they made it. ## What the refocused business looks like now Under CEO Anesa Chaibi, who joined in February 2025 from a decade running HD Supply Facilities Maintenance, per [Digital Commerce 360's coverage of the leadership change](https://www.digitalcommerce360.com/2025/02/10/global-industrial-new-ceo-chaibi/), the company runs a two-brand model: Global Industrial for MRO, and Indoff, acquired for $69.2 million in 2023, for commercial interiors and material handling projects. Indoff came with something Global Industrial didn't have in-house: a network of more than 350 independent sales partners, according to [Global Industrial's own acquisition announcement](https://investors.globalindustrial.com/news/news-details/2023/Global-Industrial-Acquires-Indoff-Inc/), extending the company's reach into project-based, relationship-driven selling without adding headcount to the core catalog business. The digital side carries the weight of daily volume. Full-year 2025 sales reached $1.38 billion, up 4.8% year over year, [per MDM's reporting](https://www.mdm.com/news/top-distributor-sectors/industrial-supplies/global-industrial-sales-grow-to-1-38b-in-2025/), with online transactions making up the majority of orders and a recommendation engine tuned on billions of purchase signals steering repeat buyers toward higher-margin private label. That private label push matters more than it sounds: exclusive brands reportedly account for close to 40% of revenue, giving Global Industrial a margin lever most single-line MRO distributors don't have, since it isn't just moving other manufacturers' SKUs at a markup. ## The family thread underneath One detail rarely gets mentioned in the coverage of the pivot: the Leeds family never left. Richard Leeds, from the founding family, chaired the board through the CompUSA years, through the unwind, and stepped in as interim CEO himself for six months in 2024 before handing the operating role to Chaibi. A public company with three completely different business models in 75 years, run under one family's board control the entire time, is not the norm in a sector where private equity typically forces the pivots. Global Industrial made its own. Every distributor on this list runs on the same unglamorous machinery underneath the growth numbers: a catalog that has to be right, a fulfillment network that has to hold up, and product data clean enough that a customer searching for a specific bolt or blower actually finds it. Global Industrial's fourth act is a reminder that getting the catalog right can matter more than getting bigger. --- # Distribution Solutions Group: The Roll-Up Going Full Circle Source: https://www.anglera.com/blog/distribution-solutions-group-distributor-playbook Published: 2026-05-23 Industries: mro-industrial ![Distribution Solutions Group: The Roll-Up Going Full Circle](/og/hero-distribution-solutions-group-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Distribution Solutions Group lands on [MDM's 2026 Top Distributors lists](https://www.mdm.com/top_distributors) at No. 19 in Industrial Supplies, No. 11 in MRO (up from No. 17 the year before), No. 12 in Fasteners, and unranked-but-present in Specialty Adhesives, on $1.98 billion in FY2025 revenue. Most companies with four placements on that list got there by digging one hole deeper for seventy years. DSG got there by welding three unrelated holes together, and it is about to change hands again before the paint dries. ## A fastener seller and two strangers The oldest part of the business goes back to 1952, when Chicagoan Sidney Port started selling fasteners out of his car trunk and eventually built [Lawson Products](https://www.chicagobusiness.com/manufacturing/small-gains-are-fueling-big-turnaround), named after a newspaper publisher he admired rather than himself. Lawson spent decades as a plain-vanilla MRO distributor selling fasteners, cutting tools, and specialty chemicals to small and midsize shops through a van-based sales force. It was not a growth story. Expenses outran sales through the 1990s, the stock stalled around $22, and by the mid-2000s the company was cutting $20 million in costs and laying off 11 percent of its workforce just to get back to breakeven. Profits didn't return until 2017 and 2018, after five loss-making years out of six. That slow, unglamorous turnaround is what made Lawson useful for something its old sales reps never saw coming: a listed shell. ## The merger that wasn't an IPO In April 2022, Lawson's shareholders approved a plan to combine the company with two businesses it had never competed against a day in its life: TestEquity, a distributor of test-and-measurement gear and electronic production supplies, and Gexpro Services, an OEM supply-chain and kitting provider. Both were [portfolio companies of LKCM Headwater Investments](https://investor.distributionsolutionsgroup.com/news-releases/news-release-details/lawson-products-announces-stockholder-approval-merger-agreements), the private-equity arm tied to Fort Worth's Luther King Capital Management. DSG issued roughly 10.3 million new shares for the two companies in an all-stock deal, and the following month Lawson renamed itself Distribution Solutions Group and swapped its ticker from LAWS to DSGR. Functionally, that is a reverse merger: a sponsor using an existing public listing to bring private portfolio companies to market without underwriting an IPO. It is a well-worn move in biotech and mining. It is unusual in industrial distribution, where the standard path to public markets runs through a traditional offering or a SPAC, not through the balance sheet of a 70-year-old fastener seller that had just finished paying down its own turnaround debt. ## Bolting on, fast Once assembled, DSG did what roll-ups do: it bought. In 2023 it paid up to $319 million for Hisco, an industrial technology and specialty products distributor, folding it into TestEquity. In 2024 it added Bolt Supply on Canada's west coast and then [Source Atlantic](https://www.businesswire.com/news/home/20240710008968/en/Distribution-Solutions-Group-Enters-into-Agreement-to-Acquire-Source-Atlantic), a 157-year-old, Irving-family-stewarded MRO wholesaler in Saint John, New Brunswick, generating roughly CAD 250 million and running 24 locations across Eastern Canada. The two Canadian deals were combined into a new Canada Branch Division segment, DSG's fourth. By 2024, Lawson, TestEquity, and Gexpro Services alone were reporting a combined $1.68 billion in segment revenue, with Canada layered on top to reach MDM's $1.8 billion figure. None of that came from one distributor organically out-growing its category. It came from a sponsor with a checkbook and a public vehicle to run it through. ## The insight: a holding company wearing a distributor's clothes Here is the pattern worth naming: DSG never merged its acquisitions into one brand. Lawson reps still sell as Lawson. TestEquity still sells as TestEquity. Source Atlantic's counter staff in New Brunswick still work under a name their customers have trusted since the Irving family owned it. DSG describes this explicitly as a decentralized operating model, and it is closer to how a diversified industrial holding company like Watsco or Constellation Software operates than how a typical MRO distributor consolidates. Most roll-ups buy a niche player and repaint the trucks. DSG buys the niche and leaves the paint alone, betting that the customer relationship a specialty brand carries is worth more than the cross-sell synergy a single unified brand might generate. | Year | Event | |---|---| | 1952 | Sidney Port founds Lawson Products in Chicago | | 2012 | Lawson cuts 11% of workforce to complete a decade-long turnaround | | Apr 2022 | Lawson combines with TestEquity and Gexpro Services in an all-stock reverse merger; renamed Distribution Solutions Group | | Jun 2023 | DSG closes ~$319M acquisition of Hisco | | 2024 | Bolt Supply and Source Atlantic acquisitions form the Canada Branch Division segment | | Jul 2026 | LKCM Headwater agrees to take DSG private at $35/share | That trade-off cuts both ways, and it is the honest tension in the model. A decentralized platform can integrate niche acquisitions without blowing up the sales relationships they were bought for. It can also mean the "One DSG" story that looks tidy on an investor slide never quite reaches the loading dock, where four ERP systems and four go-to-market motions still run in parallel under one ticker. ## The loop closes Which brings the story to July 2026. LKCM Headwater, which already owned about 79 percent of DSG's stock from the original combination, [agreed to take the company private](https://www.businesswire.com/news/home/20260715224213/en/Distribution-Solutions-Group-to-Be-Taken-Private-by-Affiliates-of-LKCM-Headwater-Investments-for-$35.00-Per-Common-Share-in-Cash) at $35 a share, up from an initial $29.50 offer and an 81 percent premium to where the stock closed the day before that opening bid. J. Bryan King, DSG's chairman and CEO, is also the managing partner of LKCM Headwater. The same sponsor that used Lawson's public shell to bring TestEquity and Gexpro to market in 2022 is now buying that shell back four years and roughly a billion dollars of bolt-on M&A later. Few distributors make that round trip. DSG went from a struggling public fastener seller, to a reverse-merger platform for a private equity roll-up, to a $1.98 billion four-segment distributor, to private again, inside one CEO's tenure. The MRO business he started with never stopped selling fasteners the whole time. Every distributor on this list runs on the same unglamorous machinery: catalogs that have to match what's on the truck, branches that have to match what's in the catalog, and data that has to match all of it before a customer ever notices. This series looks at how each one built theirs. --- # Datacom & Networking has a product-data problem — and 2026 is when it starts costing deals Source: https://www.anglera.com/blog/datacom-networking-state Published: 2026-05-23 Industries: datacom-networking ![Datacom & Networking has a product-data problem — and 2026 is when it starts costing deals](/og/hero-datacom-networking-state.jpg) Datacom and networking distribution runs on parts that live or die by compatibility: the right transceiver for the right switch, the right category cable for the right distance, the right patch panel for the right rack. That's exactly the kind of buying decision AI search and agentic tools are now inserting themselves into — and it's exactly the kind of decision a thin, inconsistent product record can't support. Here's what's broken in the channel's product data, what it's already costing, and why 2026 is the year it starts showing up in lost deals instead of just internal frustration. ## What's actually broken Walk through any distributor's catalog of transceivers, patch panels, media converters, or structured cabling components and the pattern repeats: a manufacturer ships a cut sheet or a flat file, a distributor's team manually retypes the parts that matter into their PIM or ecommerce platform, and whatever doesn't fit the existing template gets dropped. Wavelength, reach, connector type, DDM support, fiber mode, MSA compliance, shielding class, category rating, punch-down type — these are the attributes that determine whether a part actually works in a customer's rack, and they're also the first things to go missing when data moves by hand between systems that were never designed to talk to each other. This isn't unique to networking, but the category makes it worse. Optical transceivers alone ship in hundreds of variants from a single vendor, each differing by a spec most generalist catalogers don't know to capture. Category cable and structured cabling gear carry overlapping, sometimes-conflicting standards (TIA-568, ISO/IEC 11801) that a distributor's data team has to translate into consistent, comparable attributes across dozens of brands. The industry doesn't lack standards — cabling has some of the most detailed technical specifications of any distribution channel — it lacks a reliable way to get those specs into every product record, every time, without a human retyping them. Adjacent channels have already put a number on what this costs. Electrical distribution, which carries much of the same low-voltage, structured cabling, and connectivity gear that runs through datacom channels, has NAED-backed research pegging [the cost of bad product data at $5 billion annually](https://www.ewweb.com/business-management/e-biz/article/55370077/what-a-broken-coffee-table-taught-me-about-distributions-data-problem) for distributors and manufacturers combined — and that's described as just one vertical. There's no reason to think datacom and networking, with its own sprawl of SKUs and compatibility-dependent purchases, is immune. ## What it costs on the page Here's what a typical raw feed hands a distributor for an SFP+ transceiver: **Raw feed description:** `10G SFP+ Transceiver Module` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Data rate | 10GBASE-LR, 10 Gbps | | Wavelength | 1310nm | | Fiber type | Single-mode (SMF) | | Max reach | 10 km | | Connector | Duplex LC | | DDM/DOM support | Yes | | MSA compliance | SFF-8431 | | Compatible platforms | Cisco, Arista, Juniper (coded) | | Operating temp | 0°C to 70°C (commercial) | The first version tells a buyer nothing about whether the part will work in their switch. The second is a spec a network engineer can actually validate a purchase against — and it's the difference between a product page that converts and one that generates a support ticket or a return. That gap shows up downstream in familiar ways: thin PDPs that don't rank or convert, buyers who can't filter by the one attribute that matters (reach, connector type, category rating), and returns when a "compatible" part turns out not to be. None of that is exotic to networking — it's the standard cost structure of incomplete product data, just concentrated in a category where compatibility mistakes are expensive and visible. ## Why 2026 is the year it starts costing deals Three things are converging that make this harder to ignore than it was even a year ago. First, buyers are increasingly starting research in AI tools instead of search engines or distributor sites. [Digital Commerce 360 reports](https://www.digitalcommerce360.com/2025/10/15/generative-ai-traditional-search-b2b-vendor-discovery/) that a quarter of B2B buyers now prefer generative AI over conventional search when researching suppliers, and about two-thirds rely on AI chatbots as much as or more than traditional search during vendor evaluation. An answer engine can only recommend a part it can parse — structured, complete, comparable attributes, not a PDF bolted to a product page. Second, the buyers doing that research skew younger every year. [Bain research](https://www.bain.com/insights/your-next-customer-will-find-you-using-ai-now-what/) finds AI-tool adoption running roughly twice as fast among Gen Z and millennial buyers as among older generations — and those are the engineers and procurement leads increasingly deciding which distributor gets the order. Third, the channel itself is consolidating. Amphenol's roughly $10.5 billion deal to acquire CommScope's connectivity and cable solutions business, announced in 2025, is one signal that scale and integration pressure is reshaping who controls product content upstream. When supply consolidates, distributors that can't independently maintain accurate, comparable product data become more dependent on whatever their upstream partner hands them — and less able to differentiate on their own catalog. Put together: ask an answer engine "SFP+ transceiver, single-mode, 10km reach, compatible with Cisco Catalyst 9300" and it needs a structured record to match against — reach, fiber type, coding, connector — not a product name and a PDF. Distributors whose catalogs can answer that question get considered. The ones whose data can't get skipped, regardless of price or inventory position. ## Where this goes None of this requires ripping out a PIM or waiting on a multi-year systems project. Your PIM stores the data; the work is making sure every record in it is complete, consistent, and readable by both engineers and the AI tools now standing between them and your catalog. That's the layer Anglera runs on top of — scoring, gap-filling, and maintaining product data from the specs suppliers actually publish, so a distributor's catalog stays answerable to the questions buyers (and their AI tools) are already asking. --- # The five questions datacom & networking buyers ask that your product page must answer Source: https://www.anglera.com/blog/datacom-networking-guide Published: 2026-05-23 Industries: datacom-networking ![The five questions datacom & networking buyers ask that your product page must answer](/og/hero-datacom-networking-guide.jpg) A network admin buying a 48-port PoE switch isn't shopping the way a consumer shops. They're running a mental spec check against a wiring closet, a camera count, and a budget they don't want to blow mid-project. When a product page skips one of five questions, the order still goes through — and then the wrong unit shows up, or it shows up right but underpowered for the access points it's supposed to run. Here's what those five questions are, why the gaps cost distributors real money in returns and support load, and what a fixed product page looks like for a real 48-port PoE switch. ## Why datacom returns look different from other categories Datacom and networking gear rarely gets returned because it's damaged or the wrong color. It gets returned because it's the wrong *configuration* — the buyer needed `802.3bt` and got `802.3at`, or needed 10G uplinks and got four gigabit SFPs. Across e-commerce broadly, [roughly 23% of returns are attributed to receiving the wrong item and another 22% to the product looking different than expected](https://www.lateshipment.com/blog/return-reasons/) — and datacom's version of "different than expected" is almost always a spec mismatch, not a cosmetic one. That distinction matters for distributors because a wrong-spec networking return isn't a quick reshelve. The unit likely needs testing, the RMA has to route through the OEM's process, and the buyer — often an integrator mid-install — is now calling support instead of self-serving. Support cost benchmarks for B2B and high-tech products run [$28-$60 per contact](https://www.mava.app/blog/reduce-call-center-costs), and phone support specifically runs [3-5x more than chat or email](https://www.mava.app/blog/reduce-call-center-costs) for the same issue. A page that answers the question up front is cheaper than any of that. ## The five questions a datacom buyer is actually asking Before adding a switch, access point, or media converter to cart, a buyer is checking a short list against their job requirements: | Question the buyer is asking | Why it's a return risk if the page doesn't answer it | |---|---| | **What's the real PoE budget, and per-port power at full load?** | A 370W budget across 48 ports doesn't mean 48 devices at 30W each. If the page states max port wattage but not total budget, the buyer over-orders devices the switch can't actually power. | | **Which PoE standard, and is it delivered or theoretical power?** | `802.3af`/`at`/`bt Type 3`/`bt Type 4` all mean different guaranteed power at the device. [802.3bt Type 4 is rated up to 90-100W at the source but only ~71W guaranteed at the powered device](https://www.fs.com/blog/understanding-poe-standards-and-wattage-21.html) after cable loss — a gap that matters for PTZ cameras and Wi-Fi 6E APs. | | **What are the uplink ports — speed, count, media type?** | `4x SFP+` vs `4x RJ45` vs `2x SFP28` changes what transceivers and cabling the buyer needs to also purchase. Miss this and the switch arrives with no way to connect to the core. | | **Is it managed, smart, or unmanaged — and does it support the buyer's protocol stack?** | VLANs, `LACP`, `802.1X`, and stacking support determine whether IT can actually deploy it in an existing network, not just plug it in. | | **What's the physical footprint — rack units, depth, fan noise, mounting?** | A `1U` switch that's 15" deep won't fit a shallow wall-mount enclosure. Fan noise matters in open-plan IT closets near desks. | Miss any one of these and the order still clears checkout — the return happens after the box is opened. ## Before and after: a 48-port PoE switch Here's a typical distributor feed straight from a manufacturer flat file, next to what a buyer needs to self-qualify. **Raw feed description (before):** "48-Port Gigabit PoE+ Managed Switch with 4 SFP+ Uplinks. High-performance switching for enterprise networks. 802.3at compliant." **Enriched attribute table (after):** | Attribute | Value | |---|---| | Port count | `48x 10/100/1000 RJ45` | | PoE standard | `802.3at (PoE+)`, `802.3af` backward compatible | | Total PoE power budget | `380W` | | Max power per port | `30W` (25W guaranteed at PD) | | Uplinks | `4x 1G/10G SFP+` (transceivers sold separately) | | Switching capacity | `176 Gbps` | | Management | `L2+ managed`, VLAN, LACP, 802.1X, SNMP | | Stacking | Not supported | | Form factor | `1U`, `17.3" deep`, rack-mountable | | Fan noise | Fanless below 60% load; `~35 dBA` under full PoE load | The raw version tells a buyer it's PoE+. The enriched version tells them exactly how many 15W cameras or 25W access points the switch can run before the budget runs out — the number that decides whether this SKU or the next one up gets ordered. ## Ask an answer engine This is also how buyers now shortcut the research step. A prompt like *"which 48-port PoE+ switches have at least 380W PoE budget and 10G SFP+ uplinks"* only surfaces a distributor's SKU if the attributes are structured and complete enough for an AI answer engine to parse and compare. A page with only a marketing paragraph doesn't get cited; a page with a clean spec table does. ## The checklist For any datacom SKU — switches, APs, media converters, patch panels — audit the fields tied to compatibility first, not the ones tied to marketing copy: - Total PoE power budget (not just max per-port wattage) - PoE standard, with PD-guaranteed wattage stated separately from source wattage - Full uplink spec: port count, speed, and media type - Management tier and protocol support (VLAN, LACP, 802.1X, stacking) - Physical dimensions, rack units, and mounting type - Operating temperature range and fan noise, if the SKU is destined for a closet or rack near occupied space Every SKU in a datacom catalog can be checked against this list in minutes; the gaps usually cluster in the same three or four fields across a supplier's whole line, because they were incomplete in the source data to begin with. ## Where this connects back to enrichment None of this is a copywriting problem — it's a data completeness problem, and it shows up the same way across categories: a handful of buyer-critical fields are missing or inconsistent at the source, and nobody has the bandwidth to chase them down SKU by SKU across a multi-manufacturer catalog. Your PIM stores whatever fields you give it; it doesn't know a PoE budget field is empty on dozens of switch SKUs unless something is checking. That's the layer Anglera adds on top of any PIM, or a flat file if there's no PIM yet — scoring, gap-filling, and enriching product data from supplier source documents so the fields that actually prevent returns show up complete on the page. --- # Berkshire Tool Supply Group: Wholesaler for Independents Source: https://www.anglera.com/blog/berkshire-tool-distributor-playbook Published: 2026-05-23 Industries: mro-industrial ![Berkshire Tool Supply Group: Wholesaler for Independents](/og/hero-berkshire-tool-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* In 1951, Dan Kahn opened a tool store near Detroit with three employees and a Rolodex of local machine shops. Sixty-six years later, Berkshire Hathaway bought it, and instead of rolling it into a national chain, built it into a wholesale supplier for the independent distributors it could easily have driven out of business. That company, now Berkshire Tool Supply Group, lands at #18 on the Industrial Supply list and #16 on MRO Industrial in [MDM's 2026 Top Distributors rankings](https://www.mdm.com/top_distributors/berkshire-tool-supply-group/) — Industrial Supply has climbed steadily from #24 in 2022, while MRO Industrial has slipped back after climbing as high as #9 in 2025. ## A hardware counter that outlasted its category Production Tool Supply, as it was known for most of its life, grew the way most Rust Belt distributors did: one branch, one buyer relationship, one decade at a time. By 1976 it had outgrown its original footprint and built a headquarters in Warren, Michigan. It kept adding branches through the '80s and '90s, printed its first full-color 1,700-page catalog in 2001, and by the 2010s was running a private-label vending program and an early e-commerce storefront for reseller customers, according to the company's own [career-page history](https://ptsolutionscareers.com/who-we-are/). Nothing about that arc was unusual. Hundreds of regional tool distributors followed the same script and either sold to a roll-up, shrank, or quietly closed. ## The acquisition that didn't fit the thesis What happened next did not follow the script. In fall 2017, Berkshire Hathaway acquired Production Tool Supply outright, a modest-sized deal for a conglomerate built on insurance float and railroads, and used it as the seed for a new division called Berkshire eSupply, according to [Industrial Distribution's reporting at the time](https://www.inddist.com/home/article/13775417/exclusive-berkshire-hathaway-acquires-production-tool-supply-forms-new-wholesale-division-berkshire-esupply-and-sets-out-to-help-independent-distributors). Berkshire Hathaway does not typically buy small industrial distributors to compete harder in a fragmented category. It buys cash-generative businesses and leaves management alone. Here it did something closer to venture-building: fund an entirely new go-to-market layer on top of a company it had just bought. The company backed that bet with real capital. In 2018 it broke ground on a $45 million, roughly 210,000-square-foot headquarters and fulfillment center in Novi, Michigan, projected to add 240 jobs, according to [Crain's Detroit Business](https://www.crainsdetroit.com/article/20180329/news/656566/berkshire-esupply-plans-45-million-headquarters-240-jobs-in-novi). The distribution arm was rebranded PTSolutions in 2019; the wholesale arm kept the Berkshire eSupply name. Both now sit inside the umbrella entity Berkshire Tool Supply Group, alongside Morse Cutting Tools and a vendor-managed-inventory unit called Matrix. ## The bet: arm the competition instead of replacing it Here is the part that would not show up on a company timeline. Berkshire eSupply's actual product is a white-labeled catalog, website, and fulfillment network that small and mid-size independent tool distributors, typically $10 million to $50 million in revenue, can put their own name on and sell as if it were their own inventory. The distributor keeps the customer relationship and the margin on top; Berkshire eSupply carries the SKUs, the warehouse, and the shipping. That is the opposite of how most master distributors and marketplaces behave. A conventional platform, an Amazon Business or a Grainger, owns the customer data and the storefront, and pushes the cost and risk of holding inventory onto third-party sellers. Berkshire eSupply flips that: the independent owns the customer and the brand, and the wholesaler absorbs the working capital and logistics. A 2019 analysis from [Distribution Strategy Group](https://distributionstrategy.com/from-master-distributors-to-marketplaces-part-2-berkshire-esupply-is-an-upside-down-marketplace/) called this an "upside-down marketplace" for exactly that reason, and flagged the obvious tension: eSupply carries most of the variable cost of the business while giving up the data and platform leverage that make marketplace economics scale. It is a strategic choice to be the arms supplier to thousands of small distributors rather than the chain that replaces them, and it only works if those small distributors keep their independence worth defending. That is the insight worth sitting with. A Berkshire Hathaway-owned company, sitting on the balance sheet and patience to build a national chain that could out-price every regional tool shop in North America, chose instead to build the back office those shops need to survive. It is a bet on the durability of the independent distributor as a channel, made by one of the few owners with the capital to bet against it instead. ## What the model has produced since The infrastructure kept compounding after the headquarters opened in 2020. Berkshire Tool Supply Group now runs product out of distribution centers in Detroit, Houston, and Los Angeles, carrying more than a million industrial and MRO SKUs from over 1,000 suppliers. In May 2024, PTSolutions signed an exclusive cutting-tool partnership with the National Tooling and Machining Association, giving NTMA's member shops preferred pricing and access to same-day shipping and factory-trained technical support, according to [the partnership announcement](https://www.prweb.com/releases/ptsolutions-and-ntma-form-exclusive-metalworking-partnership-creating-exciting-benefits-for-the-ntma-members-302150266.html). That is a trade-association deal, not a headline acquisition, and it fits the pattern: growth through deeper channel relationships rather than branch count. | MDM List | 2022 rank | 2026 rank | |---|---|---| | MRO Industrial | #12 | #16 | | Industrial Supply | #24 | #18 | The Industrial Supply climb over four years suggests the model is gaining share on that list while wearing someone else's name on the box. MRO Industrial tells a different story: it climbed as high as #9 in 2025 before slipping to #16 in 2026, and the rankings don't say why. The unglamorous parts of this business, the catalog data, the branch inventory, the fulfillment network, are what let Berkshire eSupply's partners look like national players without becoming one. That is the quiet infrastructure question every distributor on this list has answered differently, and it is the thread this series keeps pulling. --- # How Wesco Became the Distributor Wiring the AI Data Center Boom Source: https://www.anglera.com/blog/wesco-distributor-playbook Published: 2026-05-22 Industries: electrical ![How Wesco Became the Distributor Wiring the AI Data Center Boom](/og/hero-wesco-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Wesco International sits at No. 1 on [Modern Distribution Management's 2026 Top Distributors list](https://www.mdm.com/top_distributors) for electrical, with $23.5 billion in fiscal 2025 revenue, and also lands at No. 13 in industrial supplies and No. 11 in safety, down from No. 5 the year before. Few distributors span that many verticals at that scale. Fewer still started life as another company's captive sales arm and ended up selling the physical guts of the artificial intelligence boom. ## Born a subsidiary, not a company Wesco did not start as an independent business. It began in 1922 as the Westinghouse Electric Supply Company, a Pittsburgh-based unit created to centralize wholesale distribution of Westinghouse's own electrical gear during the postwar electrification rush. For decades it existed to move one manufacturer's product, not to build customer relationships on its own terms. That changed only when Clayton, Dubilier & Rice bought the unit from Westinghouse in 1994 and spun it out as WESCO Distribution Inc., an independent company for the first time in 72 years. The Cypress Group bought it again in 1998 for $1.1 billion and formed the WESCO International holding structure that took the company public on the NYSE in 1999. That origin matters because it explains a trait Wesco still carries: it behaves less like a scrappy reseller and more like an infrastructure utility, comfortable with long capital cycles, thin-but-steady margins, and multi-year customer contracts rather than transactional selling. ## The merger that doubled the company overnight The single biggest strategic bet in Wesco's modern history was not an acquisition in the usual sense. In January 2020 Wesco agreed to buy [Anixter International](https://www.sec.gov/Archives/edgar/data/52795/000119312520005939/d869727dex991.htm) for roughly $4.5 billion, and closed the deal that June. Anixter was not a bolt-on. It was a company of comparable scale with deep strength in wire, cable, and network infrastructure, and the combination pushed Wesco past $17 billion in revenue overnight, more than 18,000 employees, relationships with over 30,000 suppliers, and a customer base topping 150,000. It was a merger of near-equals executed in the middle of a global shutdown, and it is the reason Wesco's current three-segment structure exists: Electrical & Electronic Solutions, Communications & Security Solutions, and Utility & Broadband Solutions, each descended from a different piece of the combined company's history. ## The pivot nobody would have predicted from the name Here is the part that would surprise anyone who only knows Wesco from its Westinghouse roots: a company born to distribute light bulbs and switchgear for one industrial manufacturer is now, a century later, one of the primary physical suppliers to the AI data center buildout. Wesco's data center sales hit a record $1.2 billion in a single quarter in late 2025, up roughly 60% year over year, and CEO John Engel has said the company is "not even close to seeing a peak in the cycle." That is not organic drift. Wesco built toward it deliberately, buying the systems integrator [Rahi Systems](https://www.businesswire.com/news/home/20221101006155/en/Wesco-International-Finalizes-Purchase-of-Rahi-Systems-a-Leading-Provider-of-Global-Hyperscale-Data-Center-Solutions) for $217 million in 2022 and the data center facility management provider [Ascent](https://www.prnewswire.com/news-releases/wesco-international-finalizes-purchase-of-ascent-a-premier-provider-of-data-center-facility-management-services-302324467.html) for $185 million in late 2024. Each deal moved Wesco a step further from "we ship you the cable" toward "we design, integrate, and manage the facility the cable runs through." That is the unique tension worth naming: Wesco is quietly climbing the value chain from distributor into systems integrator and facility operator, in a channel where its own customers are often electrical contractors and its own suppliers are the manufacturers whose gear it still moves in bulk. Every dollar Wesco earns doing integration and facility management directly is a dollar its contractor customers might otherwise have earned. So far the AI buildout has been large enough that this has looked like expansion rather than conflict. Whether that holds when data center capex cycles cool is the open question a channel analyst would flag. ## Scale as the actual moat Strip away the acquisitions and the moat is simpler: density. Wesco runs roughly 500 branches and ten fully automated distribution centers across North America and internationally, serving over 150,000 active customers. That footprint lets it offer vendor-managed inventory, kitting, pre-fabrication, and project logistics that a regional electrical distributor cannot match on its own, and it is why Wesco shows up not just in the electrical rankings but in industrial supplies and safety as well. Multi-vertical presence of that kind is usually the product of decades of branch build-out plus opportunistic M&A, not a single strategic masterstroke, and Wesco's history bears that out. | Year | Event | |---|---| | 1922 | Founded as Westinghouse Electric Supply Company | | 1994 | CD&R buyout creates independent WESCO Distribution | | 1999 | IPO on NYSE | | 2020 | Anixter merger closes, roughly doubling revenue | | 2022 | Acquires Rahi Systems, a hyperscale data center integrator | | 2024 | Acquires Ascent, a data center facility manager | Wesco's arc, from a manufacturer's captive supply arm to the No. 1 electrical distributor riding the AI buildout, is a reminder that distribution businesses are rarely static. The branches, the catalogs, and the fill rates behind them are what let a hundred-year-old supply company keep finding the next industrial revolution to serve. --- # Welding & Gas has a product-data problem — and 2026 is when it starts costing deals Source: https://www.anglera.com/blog/welding-gas-state Published: 2026-05-22 Industries: welding-gas ![Welding & Gas has a product-data problem — and 2026 is when it starts costing deals](/og/hero-welding-gas-state.jpg) Welding and industrial gas distribution runs on hundreds of thousands of SKUs across dozens of manufacturers, each shipping cut sheets, cylinder specs, and consumable data in its own format on its own schedule. That worked when a counter rep who'd been on the floor for fifteen years could translate a customer's question into the right part number. It works a lot less well when the buyer is a 30-something fabrication shop manager typing "0.035 flux-core wire for mild steel" into a search bar, or asking an AI assistant to shortlist a shielding gas mix before a rep ever hears from them. ## What's actually broken Ask anyone who owns product data at a welding or gas distributor and the same list comes up: manufacturer part numbers that don't reconcile with distributor SKUs, wire diameter and shielding gas mix buried in a PDF instead of structured as a filterable spec, cylinder size and CGA fitting data that's inconsistent from one gas supplier feed to the next, and product titles written like catalog copy instead of the spec a fabricator actually searches on. Vendors like [Distributor Data Solutions note that manufacturer product data for industrial gas and welding "rarely arrives in consistent formats,"](https://www.distributordatasolutions.com/industries/industrial-gas-welding/) leaving teams to reconcile documentation and update attributes across ERP, PIM, and e-commerce systems by hand — a problem that scales badly as catalogs expand into automation, laser, and consumable-efficiency lines. The category itself is also getting harder to sell into. The welding gas and shielding gas market is growing at roughly [9% CAGR according to The Business Research Company's 2026 global market report](https://www.thebusinessresearchcompany.com/report/welding-gas-or-shielding-gas-global-market-report), and the mix is shifting: bulk and merchant liquid supply is the fastest-growing segment as large fabrication and automated welding facilities move off cylinders, which means distributors now need to represent tank sizes, delivery modes, and purity grades correctly across a wider product range than the cylinder-and-cutting-torch catalog most of them built their systems around. Here's what the gap looks like on an actual product page. A typical manufacturer feed for a shielding gas cylinder might hand a distributor this: **Raw feed description:** `Shielding Gas Cylinder, Argon/CO2 Mix` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Gas mix | 75% Argon / 25% CO2 (C25) | | Cylinder size | 125 cu ft (`size 4`) | | CGA fitting | `CGA-580` | | Recommended process | MIG / GMAW, mild steel | | Purity grade | Welding grade, 99.9%+ | | Delivery mode | Cylinder exchange or bulk fill | **Ask an answer engine:** "What shielding gas mix and cylinder size do I need for MIG welding 16-gauge mild steel?" — an AI shopping assistant can only answer that from a catalog where mix ratio, process, and cylinder size are structured fields it can actually parse. A spec sheet in a PDF, or a title that just says "Argon/CO2 Mix," doesn't give it anything to cite. ## What it costs Incomplete and inconsistent welding and gas catalogs show up on the P&L in a few predictable places: - **Returns and wrong-fit orders.** A fabricator who can't confirm wire diameter, gas mix, or CGA fitting from the page either abandons the order or guesses — and a wrong shielding gas mix or the wrong cylinder valve isn't a minor return, it's a stalled weld job and an unhappy account. - **Lost search and lost shelf space.** Site search and marketplace listings both run on structured attributes. A consumable missing its wire diameter, amperage range, or process compatibility doesn't rank lower in search — it frequently doesn't surface at all, which is exactly how a fabricator narrows down a MIG wire or tungsten electrode. - **Deals that never reach a rep.** The buyer researching consumables and gas today is increasingly self-directed. Across B2B categories broadly, [McKinsey's research finds that roughly 70% of B2B buyers now fully define their own needs before ever talking to sales](https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/five-fundamental-truths-how-b2b-winners-keep-growing), and prefer digital self-service for that early research. If the catalog can't answer the spec question online, that buyer clicks to whichever distributor's page can — long before a quote request ever lands in an inbox. ## Why 2026 is the pressure point Three forces are converging on welding and gas catalogs at once. First, the workforce underneath the category is changing fast: the American Welding Society and its distributor partners are [tracking a chronic shortage of roughly 80,000 welders needed annually](https://gawdamedia.com/aws-welding-industry-value-2026/), which means more counter and shop staff are newer to the trade and leaning on the product page — not tribal knowledge — to get the spec right the first time. Second, the buyer is generational and channel-agnostic: [gas and welding distributors are being told directly by their own e-commerce vendors that inaccurate product information leads to lost sales and customer dissatisfaction](https://www.ecisolutions.com/blog/distribution/evolutionx/ecommerce-features-that-gas-and-welding-distributors-need/), because complex, spec-heavy products need comprehensive, accurate data to be searchable at all. Third, AI search has become a real discovery channel rather than a curiosity — buyers and procurement tools increasingly query answer engines to shortlist compliant consumables and gas mixes before visiting a single distributor site, and those engines can only surface what's structured, current, and specific. None of this requires ripping out the ERP or PIM a distributor already runs the business on. The fix sits upstream of all of it: get wire, gas mix, cylinder, and compatibility data extracted from supplier documentation, quality-scored, and kept current as manufacturer catalogs churn — so search, marketplace feeds, and AI answer engines all have something real to work with. That's the layer Anglera sits on. Your PIM or catalog still stores the data; Anglera does the work of making sure it's complete, consistent, and readable by the buyers — human and AI — who are already out there searching for the right weld. --- # The five questions welding & gas buyers ask that your product page must answer Source: https://www.anglera.com/blog/welding-gas-guide Published: 2026-05-22 Industries: welding-gas ![The five questions welding & gas buyers ask that your product page must answer](/og/hero-welding-gas-guide.jpg) A shop buyer ordering a spool of MIG wire isn't browsing. They know their machine, their gas mix, and their base metal, and they need a product page that confirms the wire matches all three before they click buy. When it doesn't, they either guess and return it, or they stop and call. Here are the five questions Welding & Gas buyers actually ask on a product page, using a spool of ER70S-6 MIG wire as the working example, and what it costs a distributor when the answers aren't there. ## Why this category punishes vague data more than most Welding consumables aren't discretionary purchases. A wrong wire diameter jams a feeder mid-job. A wrong shielding gas mix produces porosity that fails inspection. A wrong cylinder valve outlet means the regulator physically won't connect. Distributors here are already dealing with catalogs that don't fit standard e-commerce filters — attributes like AWS classification, polarity, and CGA outlet number don't map to generic "size/color" schemas, which is part of [why industrial catalogs break standard search and filter systems](https://humcommerce.com/knowledge-center/industrial-product-catalog-search-filter-challenges/). Layer thin, inconsistent supplier feeds on top, and the gap between what the page says and what the buyer needs shows up downstream as returns and phone calls, instead of on the page where it's cheap to fix. ## The five questions **1. What AWS classification is this, and what does it mean for my job?** `ER70S-6` on a spec sheet doesn't tell most buyers anything unless it's decoded. The `70` is minimum tensile strength (`70,000 psi`), `S` means solid wire, and the `-6` suffix indicates a deoxidizer/silicon package suited to dirtier, rusty, or scaled base metal, versus an `ER70S-3` for cleaner material, per the [AWS classification breakdown at Weld Guru](https://weldguru.com/mig-welding-wire-types/). Listing only the AWS code with no plain-language "best for" note asks the buyer to already be an expert, or to call one. **2. What diameter, and does it match my feeder and my joint?** `0.030"`, `0.035"`, and `0.045"` are the common sheet-to-medium-gauge diameters, and picking wrong means burn-through on thin material or a feeder that can't push the wire consistently. This is the single most common wrong-part return in wire: right alloy, wrong diameter, ordered again. **3. What shielding gas does this wire require, and in what mix?** Wire chemistry and shielding gas are matched pairs. A 75/25 argon-CO2 blend is the standard mix for general carbon steel GMAW, balancing arc stability against penetration, per [Weld Guru's gas cylinder sizing guide](https://weldguru.com/what-size-gas-cylinder/), while straight CO2 runs hotter with more spatter and 100% argon suits aluminum or stainless with a different wire entirely. A page that doesn't state the required or recommended gas is incomplete for anyone not already running that exact setup. **4. What spool weight and format does my job actually need?** The same wire ships as a `2 lb` retail spool, a `33 lb` or `44 lb` industrial spool, or a bulk drum. A hobbyist ordering a 44 lb spool for a feeder built for small spools is a returns ticket waiting to happen; a shop ordering 2 lb retail packs by mistake is a reorder-cycle problem. Format has to be as visible as alloy. **5. If this SKU is out of stock, what's the equivalent, and does the fitting even match?** On the gas side, this becomes literal: cylinders use specific CGA valve outlet numbers (`CGA 580` for argon, for example), and a regulator bought without confirming the outlet number won't thread onto the tank. Distribution buyers reorder on a cycle and expect the page to name compatible substitutes and confirm fitment, not force a call to verify what should have been on the page. ## What this looks like on the actual page A typical supplier feed for MIG wire looks like this: > "ER70S-6 carbon steel MIG welding wire, high quality, smooth feeding, various sizes available." That's a sentence, not a spec sheet. Here's the enriched version of the same spool: | Attribute | Value | |---|---| | AWS Classification | `ER70S-6` (AWS A5.18) | | Best For | Rusty, oily, or mill-scaled carbon steel | | Diameter | `0.035 in` | | Tensile Strength | `70,000 psi` min | | Shielding Gas | `75% Ar / 25% CO2` (or 100% CO2, higher spatter) | | Spool Weight / Format | `44 lb` plastic spool | | Polarity | DCEP (reverse polarity) | | Compatible Diameters (Same SKU Family) | `0.030 in`, `0.045 in` | | In-Stock Substitute | ER70S-3 (clean steel, lower silicon) | Ask an answer engine "what MIG wire do I need for rusty mild steel with a 75/25 gas mix on a Hobart 140" and it needs the diameter, the AWS suffix, and the gas match sitting in structured attributes to answer correctly — not buried in a paragraph of marketing copy. ## The cost of getting this wrong Bad product data isn't an abstract quality problem here, it's a direct line to returns volume and support headcount. Broader e-commerce research puts the revenue impact of poor product data at [23% of lost sales](https://www.williamflaiz.com/how-e-commerce-companies-lose-23-of-revenue-to-bad-product-data), and buyer behavior research shows [67% of shoppers avoid a company again after a bad return experience](https://www.ewweb.com/business-management/e-biz/article/55370077/what-a-broken-coffee-table-taught-me-about-distributions-data-problem). In welding and gas, the return isn't just a bad experience, it's a wire spool already half-used in a jammed feeder, or a cylinder that made it to the jobsite before anyone discovered the fitting was wrong. ## A five-question checklist for every SKU - Does the AWS classification (or equivalent gas/hardgoods spec) appear with a plain-language "best for" note, not just a code - Is diameter (or size/capacity) listed with the exact machine or application it fits - Is the required or compatible shielding gas mix stated, not implied - Is spool weight, cylinder size, or pack format stated as its own attribute, separate from the title - Does the page name an in-stock substitute or cross-reference when the exact SKU is unavailable Score your catalog against those five lines, SKU by SKU. The gaps driving returns and support tickets usually concentrate in a small share of high-velocity items — also where fixing them pays back fastest. Anglera doesn't replace your PIM or the supplier feeds you already pull from — it sits on top, continuously scoring which SKUs are missing exactly these answer-critical attributes, gap-filling them from source documentation, and keeping them current as suppliers update specs. For a category where the wrong diameter or the wrong gas mix turns into a jammed feeder or a failed weld, that's the difference between a page that sells and a page that generates a support ticket. --- # Getting enriched product data onto Unilog product pages Source: https://www.anglera.com/blog/unilog-data-to-page Published: 2026-05-22 Platforms: unilog ![Getting enriched product data onto Unilog product pages](/og/hero-unilog-data-to-page.jpg) Enriching a product record is only half the job — a spec, use-case, or identifier only earns its keep once it's visible on the live page. On Unilog's CX1 CIMM2 platform, that means understanding three separate layers: the PIM record where the attribute lives, the approval/publishing pipeline that moves it from draft to live, and the CMS/commerce template that decides whether and how it renders in the page's HTML. This guide walks through that path for a single attribute, distributor to distributor. ## Where the attribute actually lives CX1's built-in PIM stores product content as structured item records, not free text. Each item carries core fields (SKU, description, pricing references), taxonomy/category assignments, and a flexible data layer for custom attributes — Unilog's own PIM documentation describes this as a "flexible data module" that lets you "create custom data elements like attributes and fields unique to your products," on top of standard taxonomy management and data-quality tooling ([Unilog PIM datasheet](https://www.unilogcorp.com/wp-content/uploads/2022/12/Unilog_PIM.pdf)). Two details matter for getting a specific attribute onto a page: - **Attribute-to-category binding.** Attributes typically render per category (a "Voltage" attribute makes sense on electrical connectors, not on hand tools). If a new attribute isn't attached to the category/taxonomy node the item lives under, it can be populated in the PIM and still never surface on the storefront. - **Data layers.** CX1 supports "data layers" that let you override or supplement individual attributes and descriptions for specific channels or audiences without touching the core record. If your enriched value is meant for one storefront or customer segment only, it likely belongs in a layer rather than the base item. Unilog now markets the product as a single combined "CX1 CIMM2" offering rather than two distinct admin generations, but exact screen names and menu paths for attribute setup still vary by instance, version, and configuration. Confirm the current path with your Unilog account team or the in-app help before making changes in production. ## Getting the attribute into the PIM record There are three practical ways an enriched attribute value reaches the PIM: 1. **Manual entry** in the PIM admin — fine for one-off corrections, painful at catalog scale. 2. **Bulk import**, typically a spreadsheet/feed load that Unilog's Data Quality Management (DQM) module normalizes and validates into uniform values before it's usable. 3. **API Toolset** — CX1 PIM's add-on API gives developers programmatic `GET`, `POST`, and `PATCH` access to item, brand, and manufacturer data, plus control over taxonomy, approval workflows, and workspace publishing ([Unilog CX1 PIM API Toolset datasheet](https://www.unilogcorp.com/wp-content/uploads/2025/09/Unilog_CX1_PIM_API-Toolset_add-on.pdf)). This is the integration point for any external enrichment source — a PIM sync job, middleware, or an enrichment service pushing updated attribute values on a schedule. A representative (illustrative — confirm exact endpoint paths, auth, and payload schema against your API Toolset documentation) PATCH to update one attribute on an existing item looks like this: ```json { "sku": "CONN-4820", "attributes": [ { "name": "Operating Temperature Range", "value": "-40°F to 185°F", "attributeGroup": "Electrical Specifications" } ] } ``` Because the API operates on the same item records the admin UI edits, a value pushed this way still has to pass through whatever approval workflow your instance has configured before it's eligible to publish. ## From PIM record to published page CX1 PIM includes an approval-workflow capability and a "workspace publishing" step as part of the API Toolset's core capabilities. Practically, this means an edited or newly added attribute usually sits in a draft/workspace state until someone (or an automated rule) approves it, and then a publish action pushes the workspace's contents live. If your enriched attribute shows up correctly in the PIM admin preview but not on the public site, the workspace hasn't been published yet — that's the first thing to check, before touching template code. Once published, CIMM2's architecture treats the PIM as one of several "syndication points": the same approved record can feed the live storefront, an ERP, or a print/content feed simultaneously, which is the point of keeping enrichment in the PIM rather than hand-editing the page. ## How it binds to the template and renders in HTML The commerce/CMS module reads the published item record and renders it against a category-level product template. For an attribute to appear on the page, three things generally have to line up: - It's assigned to an **attribute group** that the category's product template is configured to display (commonly as a specifications table, filter facet, or comparison row). - It's flagged for **storefront display** (some fields exist for internal/ERP use only and are intentionally suppressed on the public page). - The **workspace has been published**, per above. On the rendered page, a typical specs-table output looks like ordinary server-rendered HTML — CIMM2/CX1 storefronts are template-driven, not a client-side SPA, so an attribute that's live should appear directly in the page source, not only after JavaScript executes: ```html
Operating Temperature Range -40°F to 185°F
``` If your build layers on structured data, confirm with your implementation team whether the CX1 template already emits `schema.org` `Product` JSON-LD for that attribute (Unilog markets SEO/metadata control as part of the CX1 CIMM2 platform); if it doesn't, adding it is typically a template-level change, not a PIM-level one: ```html ``` ## How to validate 1. **View-source vs. rendered DOM.** Load the live PDP, then use "View Page Source" (not just DevTools' Elements panel, which shows the post-JS DOM). If the attribute is present in the raw source, it's server-rendered and safe to assume search engines and simple crawlers see it too. If it only appears in Elements/Inspector but not View Source, something client-side is injecting it — flag that to your Unilog team, since it changes how discoverable the content is. 2. **`curl` the page directly** and grep for the attribute name or value, which mirrors what a non-JS crawler retrieves: ```bash curl -s https://www.example-distributor.com/products/conn-4820 | grep -i "Operating Temperature" ``` 3. **Check the PIM admin preview against the live URL** to confirm the workspace publish actually went out, not just that the record saved. 4. **Run the live URL through Google's Rich Results Test** if you've added or changed JSON-LD, to confirm the markup parses and the property is recognized. 5. **Spot-check the category facet/filter panel**, if the attribute is meant to be filterable — a value can render in the specs table but still be missing from search/facet configuration, which is a separate setup step. **Verified as of July 2026:** platform terminology, module names, and API capabilities above are drawn from Unilog's published PIM datasheet and CX1 PIM API Toolset add-on sheet. Unilog does not publish a fully open developer/API reference, and exact admin menu paths, field names, and API schemas are version- and instance-specific — validate against your own CX1 admin and API Toolset documentation before implementation. This whole path only pays off if the record entering the PIM is worth publishing in the first place. Anglera works upstream of exactly this pipeline: it continuously enriches product attributes, specs, use-cases, and identifiers, then pushes them into your PIM or commerce platform through the same kind of integration surface described above — so the workflow, publishing, and template steps in this guide have rich, accurate data to put in front of buyers and AI agents, not another manual data-entry backlog. --- # SunSource: How an Oil Company's Side Bet Built a Giant Source: https://www.anglera.com/blog/sunsource-distributor-playbook Published: 2026-05-22 Industries: pumps-fluid-power ![SunSource: How an Oil Company's Side Bet Built a Giant](/og/hero-sunsource-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* SunSource landed at No. 1 for Hose & Accessories and No. 1 for Fluid Power -- up from No. 2 the year before -- on the 2026 [MDM Top Distributors](https://www.mdm.com/top_distributors) list, with a No. 15 finish in Industrial Supplies and an estimated fiscal 2025 revenue north of $2 billion. Most distributors that big were built by a founder who never let go. SunSource wasn't. It was born as a hedge inside an oil company, and it has been owned by financial sponsors, one after another, for most of its life. ## A Refinery's Insurance Policy Sun Distributors L.P., the entity that became SunSource, was created in 1975 as a subsidiary of Sun Company, the oil corporation behind Sunoco stations. Sun's petroleum business was brutally cyclical, and its executives wanted a counterweight, so they built a distribution arm that could throw off steady cash regardless of what crude was doing. According to [FundingUniverse's corporate history](https://www.fundinguniverse.com/company-histories/sun-distributors-l-p-history/), the unit expanded fast through acquisition almost immediately: hydraulic and pneumatic controls maker Walter Norris in 1976, Kar Products for $31.5 million and Unibraze for $10 million in 1977, then Atlas Screw & Specialty and J.N. Fauver Company by 1979. By the end of 1977 the young distribution arm had already reached $20 million in sales. The strategic logic, as one contemporary analyst put it, was that Sun Distributors would "take over activities or functions performed by either the manufacturer or the customer and charge for them" -- value-added distribution as a business model, decades before that phrase became an industry cliché. That origin story is the unique insight worth naming plainly: SunSource is not a family business that grew into a conglomerate. It is a diversification hedge that outlived the reason it was created and then kept compounding under a rotating cast of financial owners. ## Four Owners, One Playbook Sun Company divested its non-energy assets in 1986. Shearson Lehman Brothers bought the distribution unit's stock for $199 million that October and restructured it in January 1987 as a master limited partnership, a tax-favored vehicle built for investors rather than operators. By 1994, squeezed by debt and a soft economy, the company narrowed to three core lines -- fluid power, glass, and maintenance products -- and sold off its struggling electrical division for $73 million, per the same FundingUniverse history. The fluid power piece kept going, eventually rebranded SunSource, and kept changing hands: private equity firm CHS Capital owned it through the 2000s, [Littlejohn & Co. bought it in October 2011](https://www.mdm.com/premium/operations/finance/sunsource-holdings-acquired-by-littlejohn-co/), and [Clayton, Dubilier & Rice acquired it from Littlejohn in December 2017](https://www.cdr.com/news/clayton-dubilier-rice-acquires-sunsource), where it remains today. | Era | Owner / Structure | |---|---| | 1975 | Founded as a Sun Company (Sunoco) subsidiary | | 1987 | Restructured as Sun Distributors L.P. under Shearson Lehman | | 2000s | Owned by CHS Capital | | 2011 | Acquired by Littlejohn & Co. | | 2017–present | Owned by Clayton, Dubilier & Rice | What's notable is not the churn itself -- plenty of industrial distributors have passed through PE hands. It's that SunSource's operating leadership barely moved while the ownership did. David Sacher joined in 2002, rose to COO in 2009, and became CEO in 2017 -- the same year CD&R took control -- while his predecessor Justin Jacobi shifted to executive chairman, according to [Modern Distribution Management's coverage of the transition](https://www.mdm.com/news/free/sunsource-appoints-new-ceo/). Four capital-structure changes, one continuous management bench. That's the trick: let the balance sheet rotate through sponsors chasing a return, and keep the people who actually run branches and answer engineering calls in place long enough to compound expertise. ## The Roll-Up Never Stopped Under CD&R, the acquisition engine that started with Walter Norris in 1976 kept running. SunSource bought [Ryan Herco Flow Solutions in April 2018](https://www.inddist.com/mergers-acquisitions/news/13775917/sunsource-acquires-fluid-power-distributor-ryan-herco-flow-solutions), adding high-purity fluid conveyance products for semiconductor and life-sciences customers, then folded in United Distribution Group the same year for MRO-focused fluid conveyance. Most recently, SunSource acquired Vytl Controls Group from MiddleGround Capital in early 2026, a Texas-based valve, actuator, and instrumentation platform with 32 branches across 11 states operating under brands like Setpoint Integrated Solutions and W&O Supply, according to [PE Professional's report on the deal](https://peprofessional.com/2026/02/middleground-sells-industrial-valve-platform-to-cdrs-sunsource/). Each deal adds adjacent technical capability -- flow control, high-purity fluid handling, valves -- rather than just more branches selling the same hydraulic hose. ## The Trade-Off The tension in this model is straightforward: a distributor that has never been anything other than a leveraged financial asset carries the debt load that implies. SunSource's capital structure includes a $465 million Term B facility, amended as recently as January 2026 to support continued acquisitions. That financing access is exactly what lets a No. 1 fluid power player keep its hold on No. 1 territory in hose too. It also means every downturn in industrial capital spending lands on a company that has to service that debt regardless of who owns the equity above it. A founder-run distributor can choose to slow down in a soft year. A sponsor-backed platform, four owners deep, is built to keep compounding. SunSource's bet is that technical depth -- engineers who can spec a hydraulic system, not just quote a part number -- is worth more to a customer than a lower price, and that bet has outlasted eight owners and one oil company's original hedge. This piece is part of Anglera's Distributor Playbooks series, an ongoing look at how the companies on MDM's Top Distributors list actually built their advantage, one branch, acquisition, and catalog at a time. --- # Why pet supplies products go invisible: the attribute gaps that filter you out Source: https://www.anglera.com/blog/pet-supplies-attributes Published: 2026-05-22 Industries: pet-supplies ![Why pet supplies products go invisible: the attribute gaps that filter you out](/og/hero-pet-supplies-attributes.jpg) A 25-pound bag of grain-free salmon kibble for adult large-breed dogs looks complete on the shelf. Online, if "large breed," "adult," or "salmon" never made it into structured fields, that same bag is functionally invisible to anyone who filters by them — and to any AI agent trying to match it to a shopper's question. Pet supplies is a category built on facets. Shoppers don't browse "dog food"; they filter by breed size, life stage, protein, and special diet, then narrow further inside a faceted search UI or ask an AI assistant to do the narrowing for them. [Google's own taxonomy](https://www.google.com/basepages/producttype/taxonomy.en-US.txt) breaks pet supplies into deep, specific branches (Animals and Pet Supplies, then Dog Supplies, then Dog Food, and onward into treats, wet food, dry food), which only works if the attributes underneath each node are populated. Miss the attribute, and the taxonomy placement doesn't save you. ## The attributes that actually gate visibility For food and treats, four groups of data determine whether a product surfaces in a filtered search or an AI answer: **Guaranteed analysis and label basics.** [AAFCO requires](https://www.aafco.org/consumers/understanding-pet-food/reading-labels/) minimum crude protein, minimum crude fat, maximum crude fiber, and maximum moisture on every label, in a specified order. That's not just a legal requirement — it's the raw material for any "high protein" or "low fat" filter a retailer or an AI agent might apply. **Life stage and breed size.** Puppy, adult, senior, and all-life-stages are standard filters on nearly every pet retailer's site. Breed size (small, medium, large, giant) is arguably the single highest-value dog food attribute, since [large-breed puppy formulas are calorie- and calcium-controlled differently](https://www.petmd.com/dog/nutrition/dog-food-ingredient-and-label-guide) than small-breed adult formulas, and getting it wrong is a health issue, not just a merchandising one. **Protein source and special diet.** First-ingredient protein (chicken, salmon, lamb, duck, beef) drives one of the most common filters and one of the most common AI-agent queries: "ask an AI to recommend a grain-free salmon food for a large-breed senior dog with a chicken allergy" only works if protein source, grain status, and allergen exclusions are all structured, separate fields — not buried in a paragraph of marketing copy. **Format and packaging.** Dry vs. wet vs. freeze-dried vs. topper, plus package size/weight, matter for both filters and for accurate price-per-pound comparisons that shoppers (and AI agents doing comparison shopping) rely on. For hardgoods — collars, leashes, crates, beds — the attribute set shifts but the principle doesn't: pet size/weight range, material, adjustable size range, and safety certifications (like breakaway clasps for cat collars) are the filters that matter, and [color, size, and material are consistently flagged](https://www.godatafeed.com/blog/google-shopping-product-categories) as make-or-break attributes for this vertical in Google's own feed guidance. ## Why AI agents are pickier than facets A faceted search UI on a retailer's own site can partially compensate for messy data — a merchandiser can manually tag a product into the "grain-free" filter bucket even if the field is technically empty. AI shopping agents don't get that safety net. They read structured data and page content directly, and [the highest-priority signals for agent retrieval are the basics](https://developers.google.com/merchant/api/reference/rest/products_v1/ProductAttributes): name, brand, GTIN, and offer data, layered with category-specific attributes like protein source and life stage. If those fields are blank, an agent has no reliable way to know the product qualifies — it just skips it in favor of a competitor's listing that answers the question directly. This matters more every year the pet category keeps moving online. The [American Pet Products Association reports](https://americanpetproducts.org/news/u.s.-pet-industry-reaches-158-billion-in-2025-poised-for-continued-growth-in-2026) the U.S. pet industry hit $158 billion in 2025, with pet food sales alone climbing toward $60 billion and 53% of pet parents now buying products online — a channel where nobody reads a full ingredient panel before deciding whether to click. ## A worked example: one bag of dog food Here's a raw feed for a bag of dog food, next to what an enriched, filter-ready version looks like. | Field | Raw feed (as received from brand) | Enriched attribute | |---|---|---| | Title | "Premium Salmon Recipe Dog Food 25 lb" | Same, unchanged | | Life stage | (not populated) | Adult | | Breed size | (not populated) | Large breed (50+ lb) | | Protein source | (not populated) | Salmon (first ingredient) | | Grain status | (not populated) | Grain-free | | Crude protein (min) | (buried in description text) | 28% | | Crude fat (min) | (buried in description text) | 15% | | Crude fiber (max) | (buried in description text) | 4% | | Moisture (max) | (buried in description text) | 10% | | Allergen flags | (not populated) | No chicken, no corn, no wheat, no soy | | Package format | (not populated) | Dry kibble, 25 lb bag | Before enrichment, this product is unreachable by a "large breed," "grain-free," or "no chicken" filter — even though the bag itself satisfies all three. After, it surfaces correctly in faceted search and answers an AI query like "recommend a grain-free large-breed dog food without chicken" directly, because every claim in that question maps to a structured field rather than a sentence the agent has to parse and guess at. ## Structuring it so it holds up The fix isn't just filling blanks once. Brand feeds change formulas, package sizes shift, and AAFCO statements get updated — a field that's correct at launch drifts out of sync within a season if nothing is watching it. The attributes also need to be genuinely separate fields, not concatenated into a single "features" blob a facet engine can't parse. Anglera plugs into whatever PIM or commerce platform a retailer already runs, or none at all, and continuously scores, gap-fills, and maintains attributes like breed size, life stage, protein source, and guaranteed analysis so pet supplies catalogs stay complete as brand feeds change. Your PIM stores the data — Anglera does the ongoing work of keeping it filter-ready and AI-readable. --- # Making your Optimizely Configured Commerce catalog agent-readable (AEO) Source: https://www.anglera.com/blog/optimizely-agent-readable Published: 2026-05-22 Platforms: optimizely ![Making your Optimizely Configured Commerce catalog agent-readable (AEO)](/og/hero-optimizely-agent-readable.jpg) Most Configured Commerce distributor catalogs were built to satisfy a buyer clicking through a category tree, not an AI agent trying to answer "does this fit a 3/4-inch NPT fitting" in one pass. Configured Commerce already ships the plumbing for both: structured attributes, a native Product structured-data toggle, and (on Spire) server-side rendering. The work is turning those mechanisms on, filling them in, and pointing them at real data instead of placeholder copy. Below is the implementation path, plus what an agent can and cannot pull off a typical distributor PDP today. Distributor catalogs are attribute-heavy — thread size, voltage, material, pressure rating, compatible models — and buyers (human or agent) usually arrive with a spec in hand, not a brand name. If that spec lives only in a PDF cut sheet or an unstructured paragraph, an LLM-based shopping agent has to guess at it. Getting attributes into Configured Commerce's structured fields, and those fields onto the rendered page, turns "guess" into "cite." ## Step 1: Get the data into structured fields, not prose Configured Commerce separates three content mechanisms, and agent-readability depends on using the right one for each kind of fact: - **[Attributes](https://support.optimizely.com/hc/en-us/articles/4413199911565-Manage-attributes)** (`Admin Console > Catalog > Attribute Types`) are the closest thing to true structured data. Each attribute type has an `Include On Product` toggle to show it on the PDP, `Filterable` to expose it in facets, and `Comparable` for product comparison. Attribute types are assigned to categories first, then values are assigned to individual products — so a mis-attributed category silently produces products with no filterable specs. - **Specifications** are the content-tab mechanism (a Content Editor writes rich text, a Content Approver publishes it) — good for a torque chart or install note, but it's HTML in a WYSIWYG field, not machine-parseable key/value data. Treat specs as supplementary explanation, not the primary source for a fact like voltage or GTIN. - **Product documents** (spec sheets, SDS, CAD files) attach files to the product, but the content inside them is invisible to structured data and, generally, to agents, unless you extract the key facts into attributes. Rule of thumb: any fact a buyer would type into a search box or ask an agent (size, material, certification, compatible part number) belongs in an **attribute**, not a specification tab's paragraph text. ## Step 2: Turn on native Product structured data Configured Commerce has a built-in [Product structured-data feature](https://support.optimizely.com/hc/en-us/articles/5638590918029-Schema-org-tags) that reads Product Details and emits JSON-LD into the page ``. On Spire, enable it under `Administration > Settings > Site Configurations` in the SEO section (off by default). On Classic CMS, open the Product Detail Page in Content Administration and check `Enable Structured Page Data`. Optimizely has since added companion toggles for Breadcrumb, SiteLinksSearchBox, and Organization structured data in the same settings area — turn all four on. The generated markup follows the standard `schema.org/Product` shape. A representative distributor PDP should render something like this: ```json { "@context": "https://schema.org", "@type": "Product", "name": "1/2 in. Brass Ball Valve, 600 WOG", "sku": "BV-050-BR", "mpn": "BV050BR", "gtin12": "012345678905", "brand": { "@type": "Brand", "name": "Acme Flow Controls" }, "description": "Full-port brass ball valve rated to 600 WOG, NPT threaded, for potable water and compressed air lines.", "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "18.42", "availability": "https://schema.org/InStock", "url": "https://distributor.example.com/p/bv-050-br" } } ``` Two things distributors get wrong here. First, `price` and `availability` only reflect reality if your storefront resolves list pricing (rather than "log in to see price") for at least the unauthenticated view — otherwise the structured data contradicts the visible page, a mismatch both Google and AI crawlers treat as a trust signal against you. Second, `gtin` and `mpn` require those fields to actually be populated on the product record; a blank field just drops out of the markup silently, so a Product schema can ship without its most useful identifiers and no one notices. ## Step 3: Make sure the content is actually server-rendered Spire is a server-side-rendered React storefront, and [Optimizely's SSR guidance](https://docs.developers.optimizely.com/configured-commerce/docs/server-side-rendering-ssr-guidelines-for-spire) is explicit that product detail, brand, and product/category list pages should render server-side because they're what crawlers depend on. Configured Commerce also lets you defer catalog, pricing, or inventory data from server to client rendering for performance — useful for Core Web Vitals, but a crawler or agent that doesn't fully execute JavaScript can see a PDP shell with price or stock missing if those settings are tuned too aggressively. If real-time ERP pricing is slow, defer inventory, but keep name, attributes, description, and identifiers server-rendered. Classic CMS handles this differently: it has a separate SEO rendering path (`/Views/SeoCatalog/SeoProductDetail.cshtml`) that serves crawlers a lightweight, server-rendered version of the page independent of the client-side theme. Optimizely's own guidance is blunt about the tradeoff: these SEO views work out of the box, but if you customize the client-side product page template, you have to customize the matching SEO view too — otherwise the two versions quietly drift apart, and crawlers keep seeing the old one. ## Step 4: Answer the buyer's question in the copy, not just the spec sheet Structured data tells an agent *what* a product is; the description and specification tabs need to answer *whether it fits the use case*. For distributor SKUs, that means writing to the actual buyer question — "rated for outdoor use?", "compatible with [common mating part]?", "max pressure?" — as a direct sentence near the top of the description, not just a row in an attribute table. Agents summarizing a page tend to quote sentences, not reconstruct them from rows. ## What an AI agent can and cannot extract **Can extract reliably**, once the steps above are done: product name, SKU/MPN/GTIN, brand, price and stock status (if server-rendered with an unauthenticated fallback), attributes marked `Include On Product`, breadcrumb path, and any sentence-form answer in the description or a published specification tab. **Cannot extract, or extracts unreliably**: facts that exist only inside an attached PDF; attributes assigned at the category level but never given a value on the product; pricing gated entirely behind login; anything rendered only after client-side hydration when catalog/inventory SSR has been deferred; and specification content still sitting Draft/unpublished, since only published content reaches the rendered page. ## How to validate - **View-source vs. rendered DOM**: load the PDP with JavaScript disabled (or `curl -s https://yourdomain.com/p/sku | less`) and confirm the product name, attributes, price, and JSON-LD block are present in the raw HTML, not only in the hydrated client render. - **Structured data**: run the page through [Google's Rich Results Test](https://search.google.com/test/rich-results) and the [Schema.org Validator](https://validator.schema.org/) to confirm the `Product` type parses and required fields (`name`, `offers`, `brand`, `gtin`/`mpn`) are present. - **Spot-check attribute coverage**: pick a handful of PDPs per category and diff the attributes shown against the attribute type list for that category — gaps usually mean a value was never set on the product record. - **SEO/Classic parity**: if you're on Classic CMS, confirm `SeoProductDetail.cshtml` shows the same content set as the live theme by comparing a rendered page to its SEO-crawler equivalent. Verified as of July 2026 against current Optimizely Configured Commerce (Configured Commerce SDK / Spire and Classic CMS) documentation; menu paths and toggle names can shift slightly between releases and plan tiers, so confirm against your instance's Site Configurations before rolling out broadly. None of this matters if the underlying attribute data is thin, which is the more common failure mode on distributor catalogs than a missing JSON-LD toggle. Anglera enriches product records — attributes, specs, identifiers, use-case language — continuously, and pushes them into whatever PIM or commerce platform already holds your catalog, Configured Commerce included, without a rip-and-replace. Once that data is complete, the steps above put it in front of buyers and their agents. --- # How The Hillman Group Turned Screws Into a Robotics Business Source: https://www.anglera.com/blog/hillman-group-distributor-playbook Published: 2026-05-22 Industries: fasteners ![How The Hillman Group Turned Screws Into a Robotics Business](/og/hero-hillman-group-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* The Hillman Group lands at No. 3 on [MDM's 2026 Top Distributors list for fasteners](https://www.mdm.com/top_distributors/distributor_categories/fasteners/), behind only Fastenal and Würth Industry North America, plus No. 17 in industrial supplies and No. 14 in MRO, on FY2025 revenue of $1.55 billion. Those three rankings undersell what Hillman actually is. Read the label and you see a fastener distributor. Read the balance sheet and you find a company that uses screws and bolts as the delivery vehicle for a much stranger, much higher-margin business: robots. ## A bolt shop that survived four ownership changes Max W. Hillman Sr. started the company in 1964 in Cincinnati, selling fasteners to independent hardware stores. His sons Mick and Rick joined in 1969, took over daily operations in 1984, and then watched the business get sold to private equity three separate times in a decade: 2001, 2004, and 2010. CCMP Capital Advisors took the majority stake in 2014, and in 2021 Hillman went public on the Nasdaq under the ticker HLMN through a SPAC merger, according to the [company's own history page](https://www.hillmangroup.com/pages/our-history). Most family-founded distributors that survive that many ownership flips get hollowed out for cash flow along the way. Hillman instead used the private equity years to keep buying: the company has acquired more than 30 businesses, per its [mergers and acquisitions page](https://www.hillmangroup.com/pages/mergers-acquisitions), stacking capabilities in fasteners, hardware, protective gear, and eventually robotics on top of the original bolt bins. ## The insight: fasteners buy the shelf, kiosks monetize it Here is the part that does not show up on Hillman's About page. The company's 2025 10-K and its own investor materials describe a field force of more than 1,100 associates who physically visit roughly 40,000 retail locations, restocking pegs, rebuilding planograms, and keeping the hardware aisle sellable, a service layer wrapped around 111,000-plus fastener and hardware SKUs. That field force and that shelf-space relationship is the real asset. It is also what lets Hillman operate something almost nobody associates with a fastener distributor: a fleet of more than 31,500 self-service key-cutting and engraving kiosks inside the same retail footprint, a business it built by acquiring MinuteKey in 2018 and has kept upgrading with the MinuteKey 3.5 rollout ever since, per [Hillman's own release on the deal](https://www.prnewswire.com/news-releases/the-hillman-group-completes-acquisition-of-minutekey-300696736.html). That Robotics and Digital Solutions segment pulled in roughly $220 million in 2025 revenue on a razor-and-blade model: Hillman owns the machines, retailers give up the floor space, and Hillman keeps the recurring cut of every key and every engraved dog tag. A commodity fastener business earns the shelf presence; a vending-machine business monetizes it. Few distributors in any vertical have built that second leg, because few have the store-level relationship to place equipment there in the first place. ## Buying capability, not just volume Hillman's acquisition list reads less like a roll-up chasing scale and more like a company filling gaps in what it can put in front of a retail buyer. Koch Industries, picked up in January 2024, brought 2,300 SKUs of rope, twine, and chain and roughly $45 million in revenue, expanding a category Hillman didn't previously own, according to [the deal announcement](https://finance.yahoo.com/news/hillman-acquires-koch-industries-enters-211500236.html). In April 2026, Hillman bought Campbell Chain & Fittings from Apex Tool Group, adding US-based chain manufacturing and an expected $20 million-plus in incremental 2026 sales, and the same month picked up Delaney Hardware from Sargent and Greenleaf, per [the Campbell Chain release](https://www.globenewswire.com/news-release/2026/4/6/3268355/0/en/hillman-acquires-campbell-chain-fittings-expands-industrial-mro-presence.html). Each deal is small enough to digest inside existing distribution and sales infrastructure rather than requiring a fresh go-to-market. That is the opposite of empire-building for its own sake, and it is a deliberate contrast with acquirers who buy revenue and sort out integration later. ## MDM 2026 placements | Category | 2026 MDM Rank | |---|---| | Fasteners | #3 | | Industrial Supplies | #17 | | MRO | #14 | ## Betting the back office on one building Hillman's next big move is physical, not financial. In June 2026 it broke ground on a 715,000-square-foot distribution and operations facility in Forest Park, Ohio, built on the former Forest Fair Mall site, consolidating several Cincinnati-area operations into a single hub, according to [Hillman's groundbreaking announcement](https://ir.hillmangroup.com/news/detail/163/the-hillman-group-and-hillwood-celebrate-groundbreaking-of-new-multipurpose-facility). Consolidating logistics into one campus cuts overhead, but it also concentrates operational risk in one address for a company whose entire model depends on never missing a restock at 40,000 stores. Layered on top is a planned CEO handoff: COO Jon Michael Adinolfi became president and CEO on January 1, 2025, with longtime leader Doug Cahill moving to executive chairman, a transition [announced in August 2024](https://www.globenewswire.com/news-release/2024/08/06/2924944/0/en/Hillman-Announces-Leadership-Succession-Plans-COO-Jon-Michael-Adinolfi-to-be-Appointed-as-Next-CEO-CEO-Doug-Cahill-to-Become-Executive-Chairman.html) well ahead of the effective date, the kind of orderly succession that public roll-ups don't always manage cleanly. Hillman is a case study in what happens when a distributor treats its shelf space as the product. The bolts get you in the door; the kiosk in the corner is what pays for the trip. --- # Why furniture & home feeds underperform on Amazon — and how to fix the data Source: https://www.anglera.com/blog/furniture-home-syndication Published: 2026-05-22 Industries: furniture-home ![Why furniture & home feeds underperform on Amazon — and how to fix the data](/og/hero-furniture-home-syndication.jpg) Furniture and home listings get suppressed on Amazon more often than almost any other category, and it is rarely a pricing or reviews problem. It is a data problem: missing dimensions, vague materials, no assembly detail, and identifiers that don't resolve. Here's the actual bar Amazon enforces, and what it takes for a sofa listing to clear it. ## Why furniture data breaks more often than other categories Furniture has more required fields than a T-shirt or a phone case, and more ways for those fields to be wrong. A sofa listing needs precise item dimensions, material composition down to the frame and fill, assembly requirements, weight capacity, and often compliance documentation like flammability or FSC sourcing, on top of the eleven universal fields Amazon requires for every listing: SKU, title, description, bullets, main image, price and quantity, category, GTIN, brand, condition, and backend search terms, according to [Inriver's Amazon seller reference](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/). Most PIMs were built to hold a title and a price cleanly. They were not built to hold "kiln-dried hardwood frame, 8-way hand-tied springs, high-resiliency foam, performance fabric, 32 inch seat depth, tool-free leg attachment" in a structured, submittable format. So brands ship what the PIM has, not what the channel needs, and the gap shows up as suppression, poor placement, or a listing that ranks but doesn't convert. Common issues for furniture specifically: - Safety data not provided or incomplete (flammability, stability testing for case goods) - Vague or missing assembly instructions - Dimension fields submitted in the wrong unit format (Amazon's JSON schema wants "centimeters," not "cm," and a mismatch throws a validation error) - Sourcing compliance not documented (FSC certification for wood products) - Photography that doesn't meet the pure-white-background, 85%-of-frame, no-lifestyle-shot rule for the primary image Any one of these can silently suppress a listing after it's already live. Amazon's enforcement has gotten stricter through 2025 and into 2026, with automated scans flagging missing attributes, title violations, and variation conflicts unevenly across marketplaces, so a listing can pass review in one region and get flagged in another without a seller doing anything differently. ## The bar in 2026 isn't just "fields filled in" Two things have changed the definition of "complete" for a furniture listing. First, Amazon's catalog enforcement is stricter and less forgiving of shortcuts. GTIN exemptions still exist for handmade or custom bundle furniture, but the default expectation is a valid GTIN from GS1, a brand that matches Brand Registry enrollment, and attribute values that match the category's product type schema exactly, not approximately. Second, Amazon's shopping layer now reasons over the data, not just indexes it. Alexa for Shopping (the renamed Rufus assistant) pulls structured attributes, reviews, and Q&A to generate comparisons and recommendations, and [products with full structured attributes, material, use case, certifications, outperform keyword-stuffed listings](https://www.amalytix.com/en/knowledge/ai/amazon-rufus-guide-2026/) in that layer. A sofa listing that's missing fill type or frame material doesn't just rank lower in classic search. It gets left out of the comparison the assistant builds when a shopper asks it to recommend one. Ask an AI shopping assistant to "recommend a sofa for a small apartment that a 6-foot-tall person can nap on comfortably," and it needs seat depth, overall length, and fill type to answer with confidence. A listing without those numbers doesn't get excluded politely. It gets skipped. ## What channel-ready actually looks like: a sofa example Here's the same sofa, as a typical raw brand feed versus what Amazon's furniture template and AI-shopping layer both need. | Attribute | Raw feed (typical) | Channel-ready | |---|---|---| | Title | "Modern Sofa Grey" | "3-Seat Sofa, Grey Performance Fabric, Kiln-Dried Hardwood Frame, 84 in" | | Dimensions | Missing | Overall: 84 in W x 36 in D x 33 in H; Seat depth: 22 in; Seat height: 18 in | | Material | "Fabric" | Frame: kiln-dried hardwood; Suspension: 8-way hand-tied springs; Fill: high-resiliency foam + down wrap; Cover: polyester performance fabric | | Weight capacity | Missing | 750 lb evenly distributed | | Assembly | "Some assembly required" | Legs attach tool-free; no additional hardware; 10-minute setup, instructions included | | Certifications | Missing | FSC-certified wood; CA TB117-2013 flammability compliant | | GTIN | Missing or reused across variants | Unique UPC per color/size variant | | Images | One lifestyle photo | Pure white background, product at 85%+ of frame, plus dimension diagram | The raw version might load into Amazon's system without a hard error. The channel-ready version is the one that survives an automated attribute scan, shows up correctly in a size/color comparison table, and gives an AI assistant enough to recommend it by name. ## Reaching completeness without redoing your PIM The fix isn't a new PIM. It's a layer that checks every SKU against the actual attribute schema each marketplace enforces, catches the sofa that's missing seat depth or has "cm" where "centimeters" belongs, and fills the gap from spec sheets, existing copy, or manufacturer data before it ever hits a validation error. That's a maintenance job, not a one-time project. Amazon changes product type schemas, and a template update can silently invalidate attributes that were fine last quarter. Anglera sits on top of whatever PIM or spreadsheet a furniture brand already uses and continuously scores every product against marketplace-specific completeness bars, flags the exact gaps, dimensions, materials, certifications, GTINs, and fills them so a sofa listing is genuinely channel-ready before it syndicates, not after the suppression notice arrives. --- # DXP Enterprises: One CEO's 30-Year Run of Serial Tuck-Ins Source: https://www.anglera.com/blog/dxp-enterprises-distributor-playbook Published: 2026-05-22 Industries: pumps-fluid-power ![DXP Enterprises: One CEO's 30-Year Run of Serial Tuck-Ins](/og/hero-dxp-enterprises-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* DXP Enterprises shows up four times on [MDM's 2026 Top Distributors lists](https://www.mdm.com/top_distributors): No. 16 in Industrial Supplies, No. 13 in MRO (a slip from No. 8 the year before), No. 4 in Fluid Power, and No. 8 in Power Transmission/Bearings. That spread across categories is itself a clue. DXP does not compete as a single-line distributor. It competes as a holding company for dozens of once-independent pump, bearing, and supply businesses, run by the same person who has held the top job since before most of its current employees were born. ## A pump company that became a portfolio The company traces to 1908, when Charles Levins founded Southern Engine and Pump Company in Houston to sell water pumps to Texas farmers. SEPCO survived the Depression, rode the Gulf Coast oil boom, and by the 1980s was a multi-state distributor of pumps, engines, and compressors. David Little, who joined SEPCO in 1975 as a staff accountant, acquired a controlling interest in 1986 and took the company public a decade later under a new name: DXP Enterprises, "The Distribution Experts," according to the [company's own history page](https://www.dxpe.com/about-us/history/). That single fact, buried in an About page most readers skip, is the piece worth naming outright: David Little has been chairman, president, and CEO of DXP continuously since 1996, per the [company's board bio](https://ir.dxpe.com/governance/board-of-directors/person-details/default.aspx?ItemId=79f89977-69d4-4c68-a0a7-7cd884679ca9). Industrial distribution has spent the last two decades getting rolled up by private equity, with portfolio companies cycling through CEOs on three-to-five-year holding periods. DXP took the opposite path: it went public and kept the same operator running the acquisition machine for thirty years. That continuity is why DXP's roll-up strategy reads as coherent rather than opportunistic. The person setting acquisition discipline in 2026 is the same one who set it in 1996. ## The tuck-in machine The mechanism itself is unglamorous and repeatable. DXP has completed roughly 60 acquisitions since its IPO, according to [MDM's earnings coverage](https://www.mdm.com/news/operations/earnings/acquisitions-power-dxps-strong-annual-sales-gain/), most of them small, regional, distribution-focused tuck-ins rather than transformative mergers. Seven acquisitions closed in 2024 alone, contributing $80.5 million in combined annual sales. In 2025 the pace accelerated further: Arroyo Process Equipment, Moores Pump & Services, Triangle Pump & Equipment, APSCO, and Pump Solutions all closed within the year, per [Business Wire](https://www.businesswire.com/news/home/20251203892578/en/DXP-Enterprises-Inc.-Announces-Acquisition-of-Pump-Solutions-Inc.) and [DXP's investor relations site](https://ir.dxpe.com/news/news-details/2025/DXP-Enterprises-Inc--Announces-Acquisition-of-Triangle-Pump--Equipment-Inc-/default.aspx). To fund the pace, DXP refinanced its debt in 2025 to add $205 million in incremental capacity, explicitly to keep the deal pipeline open into 2026. None of these targets is individually notable. Pump Solutions, a four-location Texas distributor, generated about $36.8 million in trailing sales. Triangle Pump & Equipment, founded in 1975 in Ridgefield, Washington, brought $15.1 million. That is the point. DXP buys businesses too small to interest larger strategics or generalist private equity, absorbs their branch networks and customer relationships, and lets its existing Service Centers infrastructure carry the overhead. The model depends on having more candidates to buy than competitors are chasing, which is precisely what a fragmented, multi-decade-old pump and MRO sector still supplies. ## Three segments, one water bet DXP organizes around three units: Service Centers (branch-based MRO and rotating equipment, the largest segment), Innovative Pumping Solutions or IPS (custom pump skids and engineered systems), and Supply Chain Services (vendor-managed inventory and integrated procurement). IPS is where the recent acquisition wave is aimed, and where DXP's strategic pivot is clearest. CFO Kent Yee has said the goal is to "build DXP Water into a full-line products and service-focused platform," according to [Distribution Strategy Group's coverage](https://distributionstrategy.com/dxp-enterprises-acquires-triangle-pump-equipment-expanding-water-and-wastewater-reach/) of the Triangle deal. IPS segment sales grew 47.7% in 2024 to $323 million, well ahead of the rest of the company. A distributor whose identity was built on Gulf Coast oilfield pumps is quietly becoming a municipal water and wastewater platform, acquisition by acquisition, without renaming a segment or issuing a strategy manifesto. It is a hedge against oil and gas cyclicality dressed up as ordinary tuck-in growth, and it is easy to miss unless you read five consecutive 8-Ks. ## The trade-off worth naming A 30-year founder-CEO gives DXP capital discipline and acquisition consistency competitors with rotating leadership struggle to match. It also concentrates institutional knowledge of the deal pipeline, integration playbook, and lender relationships in one person, at a company now doing about $2.0 billion in FY2025 revenue. Succession is not a crisis, but it is the one strategic question DXP's model has not yet had to answer at scale, and every year the M&A pace accelerates raises the stakes on the answer. | MDM 2026 category | DXP rank | |---|---| | Fluid Power | 4 | | Power Transmission/Bearings | 8 | | MRO | 13 | | Industrial Supplies | 16 | DXP's story is a reminder that distribution advantage rarely shows up as a single dramatic bet. More often it is the compounding effect of buying small and buying often under one operator who has outlasted the holding periods of every private equity firm that tried to do the same thing faster. --- # Server-side rendering on Salesforce Commerce Cloud: making product data visible to Google and AI Source: https://www.anglera.com/blog/salesforce-commerce-cloud-ssr-rendering Published: 2026-05-21 Platforms: salesforce-commerce-cloud ![Server-side rendering on Salesforce Commerce Cloud: making product data visible to Google and AI](/og/hero-salesforce-commerce-cloud-ssr-rendering.jpg) Salesforce Commerce Cloud (B2C Commerce) gives you two different rendering paths for a product detail page, and they behave very differently in front of a crawler. One serves complete product data in the first response; the other can serve an empty shell until JavaScript runs. Knowing which one you're on, and confirming it, is the difference between a PDP that Google and AI agents can actually read and one they silently skip. ## Two rendering paths on the same platform **SFRA (Storefront Reference Architecture)** is the traditional, monolithic storefront: a controller (`Product-Show`) builds a ViewModel from the B2C Commerce script API, converts it into a plain JSON object, and hands it to an ISML template via `res.render()`. ISML is a server-side tag language, similar in spirit to JSP, that's compiled to HTML on Salesforce's servers before the response ever leaves the data center. In SFRA, the price, name, description, variation attributes, and availability that appear on a PDP are baked into the HTML by the time it hits the wire. Client-side JavaScript in SFRA (jQuery-based add-to-cart, swatches, carousels) only handles interaction after the fact — it isn't what puts the product data on the page ([SFRA architecture docs](https://developer.salesforce.com/docs/commerce/sfra/guide/b2c-sfra-features-and-comps.html)). **Composable Storefront (PWA Kit + Managed Runtime)** is Salesforce's React-based headless option and the one receiving most current investment. It's isomorphic: the same React components render once on the server (via Managed Runtime, Salesforce's serverless SSR hosting) and then "hydrate" in the browser, at which point rendering duties hand off to the client ([PWA Kit rendering guide](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/rendering.html)). Salesforce's own debugging guide is explicit that this matters for crawling: "seeing the server-side rendered version of the page helps troubleshoot issues not only with server-side rendering, but also with SEO since search engines crawl this version of the page" ([PWA Kit debugging guide](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/debugging.html)). Props from API calls are serialized into the initial HTML specifically so the client doesn't have to re-fetch them — which also means, done correctly, that data is present in the raw response. The risk isn't "React is bad for SEO." It's that PWA Kit can be deployed in ways that break the SSR guarantee: a route component that fetches product data only in a client-side effect instead of the server-side data-fetching strategy, a build that ships as a static SPA bundle outside Managed Runtime, or a hybrid rollout (SFRA for some routes, PWA Kit for others, per Salesforce's [hybrid implementation guidance](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/hybrid-implementation.html)) where the PDP route quietly ends up on the client-only side of that split. Any of these leaves the initial HTML with a loading skeleton and no product attributes. ## Why this matters beyond Googlebot Google runs a two-wave process: it indexes the raw HTML immediately, then queues the page for a headless Chromium render and re-indexes with whatever JavaScript produced ([Google's JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)). That second wave has a real but variable delay, and it can fail silently if the render times out or the client-side fetch depends on a cookie, region header, or auth token the renderer doesn't have. Most AI crawlers — the agents summarizing or citing your PDP for a shopping answer — don't render JavaScript at all; they read the first response. If your product name, price, and specs only appear after hydration, an SSR-only crawler sees nothing to cite. ## Getting product data into the response **On SFRA**, this is mostly a discipline problem, not a technology problem: keep the ISML template rendering directly from the ViewModel/`pdict`, and don't move core product fields (price, availability, key specs) into a component that's populated by a client-side AJAX call after page load — a pattern some teams introduce for "dynamic pricing" widgets. If you inject Product schema, do it server-side in the same template pass, not via a client-side script tag added after load: ```isml var jsonLdObj = { "@context": "https://schema.org/", "@type": "Product", "name": product.productName, "sku": product.id, "image": product.images.large[0].url.toString(), "offers": { "@type": "Offer", "priceCurrency": product.price.sales.currency, "price": product.price.sales.value, "availability": product.available ? "https://schema.org/InStock" : "https://schema.org/OutOfStock" } }; ``` That `encoding="off"` on the `` tag is not optional decoration — ISML HTML-encodes expression output by default (it's the platform's XSS protection), which will silently mangle the quotes and braces in your JSON-LD if you drop a bare `${JSON.stringify(...)}` straight into the template instead. **On Composable Storefront**, use the framework's server-side data-fetching strategy (the route's `getProps`/loader pattern, not a `useEffect` fetch) so product data is resolved before the server render completes and gets serialized into the initial payload along with the rest of the component props. If a PDP route is intentionally client-rendered for personalization reasons, make sure the non-personalized core fields — name, SKU, price, description, key specs — still ship in the SSR pass, and layer personalization on top rather than gating the whole product block behind it. ## How to validate Don't trust what your browser shows you — DevTools has already run the JavaScript. Compare the raw response to the rendered DOM instead: ```bash # Raw server response — this is what non-JS crawlers see curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \ https://www.example.com/product/12345.html | grep -i "application/ld+json" -A 20 ``` - **View-source vs rendered DOM**: `view-source:` on the PDP shows the raw HTML; comparing it against what you see in the regular DevTools Elements panel (post-hydration) will surface anything that only appears after JS runs. - **Google URL Inspection Tool** (Search Console): shows the rendered HTML from Google's own Web Rendering Service, plus the raw HTTP response — the authoritative check for what Googlebot actually indexed. - **Rich Results Test**: fetches and renders the URL through the same rendering service and validates any Product/Offer JSON-LD it finds; use URL mode, not code-paste mode, so you're testing the live rendering path. - **curl with no user agent tricks needed for structured data**: since JSON-LD should be server-rendered either way, a plain `curl` of the page should return the full JSON-LD `script` block. If it doesn't, but the DOM shows it, your schema is being injected client-side. ## Verified as of July 2026 SFRA and Composable Storefront (PWA Kit + Managed Runtime) details reflect Salesforce's current developer documentation as of July 2026; confirm behavior against your specific SFRA version or PWA Kit release, since rendering and caching defaults have shifted across releases. Rendering discipline only pays off if there's rich, structured product data to render in the first place — attributes, use-cases, identifiers, comparison specs, the details that turn a bare PDP into something worth indexing. That's the data side of this problem, and it's what Anglera is built to keep current continuously, sitting on top of your existing PIM or commerce platform rather than replacing it, so your SFRA or PWA Kit templates always have complete data to server-render. --- # Lighting on marketplaces: the listing data that wins the buy box Source: https://www.anglera.com/blog/lighting-syndication Published: 2026-05-21 Industries: lighting ![Lighting on marketplaces: the listing data that wins the buy box](/og/hero-lighting-syndication.jpg) A 200-watt LED high-bay with a two-line description and a stock photo can be the right fixture at the right price and still lose the featured offer to a competitor's SKU with a complete spec table. Lighting sells on numbers — lumens, watts, CCT, CRI, IP rating — and marketplaces, distributor punchouts, and utility rebate databases all check those numbers before a listing ever gets a chance to convert. This is about what that bar actually looks like in lighting, and how to clear it without re-keying the same spec sheet six times. ## The feed is fine for the warehouse, not for the channel Most lighting distributor and manufacturer feeds started life as an ERP export: catalog number, description, price, case pack, maybe a link to a PDF spec sheet. That's enough to quote and ship. It is not enough for Amazon Business, a Grainger or WESCO punchout, or a utility's rebate qualification lookup deciding whether a fixture answers "200W LED high bay, DLC Premium, 5000K, for a 30-foot ceiling." Those systems don't open PDFs. They read structured fields, and anything missing a required field gets suppressed, deprioritized, or never ingested at all. That gap shows up as three distinct failure modes: - **Content gaps** — thin titles, no bullet-level specs, no mounting or application context ("warehouse racking aisle," "gymnasium retrofit"). - **Attribute gaps** — the values a buyer or filter actually needs (lumens, wattage, efficacy, CCT, CRI, beam angle, IP/IK rating, dimming protocol) sitting only in a spec-sheet PDF instead of searchable fields. - **Identifier and compliance gaps** — missing or inconsistent GTIN/UPC, no DLC Qualified Products List (QPL) reference number, no UL or ENERGY STAR mark captured as data. Any one of these can knock a listing out of contention. Amazon's own product-ID rules require a valid GTIN from GS1 or an approved exemption before most new listings can even be created ([Amazon Seller Central](https://sellercentral.amazon.com/help/hub/reference/external/G200317520?locale=en-US)), and category-specific attributes determine whether a listing that does get created actually ranks or converts ([Inriver](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). For lighting specifically, that means efficacy and CCT sitting as filterable data, not prose in a title. ## The bar lighting channels actually enforce Lighting has an extra layer most categories don't: rebate eligibility. Roughly three-quarters of North American electric utilities and energy-efficiency programs use the DesignLights Consortium's technical requirements and Qualified Products List as the gate for lighting rebates and incentives ([DesignLights Consortium](https://designlights.org/fact-sheet/)) — which means a fixture's DLC status has to be captured as structured, verifiable data before a distributor or contractor can even quote a rebate-eligible project. Marketplaces layer commerce requirements on top of that. Combined, the checked layers look like this: | Layer | What's checked | Why it gates the listing | |---|---|---| | Identifiers | GTIN/UPC, manufacturer catalog number, ETIM/UNSPSC class | Matches the SKU to the right taxonomy node and search facet | | Photometrics | Lumens, wattage, efficacy (lm/W), CCT, CRI, beam angle | Drives filters and eligibility for "fits my space" searches | | Environmental / compliance | IP/IK rating, operating temperature range, DLC QPL status, UL/ETL listing, ENERGY STAR | Required for rebate qualification and safety sign-off, often a hard filter | | Content | Title, bullet specs, mounting/application use case, image count | Determines rank and click-through once the SKU is eligible | ## An LED high-bay, before and after Here's a typical raw feed row for an LED high-bay fixture, versus what a marketplace, a distributor punchout, or a rebate database actually needs before the listing displays or qualifies. **Raw feed description:** "LED high bay light, 200W, 5000K, indoor commercial use." **Channel-ready attribute table:** | Attribute | Value | |---|---| | Catalog number | `UFO-HB-200W-5K` | | Wattage | `200W` (selectable 150W/180W/200W) | | Lumen output | `27,000 lm` | | Efficacy | `135 lm/W` | | CCT | `5000K` | | CRI | `80 CRI` | | Beam angle | `90°` (or `120°` optic option) | | Input voltage | `120-277V` | | Dimming | `0-10V, 10%-100%` | | IP rating | `IP65` | | Certification | UL Listed, DLC Premium | | Mounting | Hook-and-chain, pendant, or surface | | GTIN | `00785xxxxxxxx` | | Application | Warehouse aisle, distribution center, gymnasium (18-40 ft ceilings) | None of those values are invented — they're the same photometric and certification data already sitting in the manufacturer's IES file, DLC QPL entry, and UL card. The work is extracting them into structured fields instead of leaving them trapped in a datasheet PDF. **Ask an answer engine:** "200 watt LED high bay, DLC Premium listed, 5000K, 0-10V dimmable, for a 30-foot warehouse ceiling." An AI shopping assistant or a procurement copilot matches that query against structured attributes — wattage, CCT, dimming protocol, certification status — not against a two-sentence description. A SKU that only has those values in a linked PDF doesn't get evaluated at all. ## Why "just export more fields" doesn't fix it The instinct is to add columns to the export and call it solved. But most lighting manufacturers and distributors don't have these values sitting cleanly in one system — photometrics live in an IES or spec-sheet PDF, DLC QPL status lives on a separate DLC lookup, GTINs live in a spreadsheet someone updates by hand. Reconciling that by hand runs around 30-45 minutes per SKU once you account for pulling the datasheet, checking the QPL entry, and typing values into the right fields — and a lighting catalog spanning high-bays, troffers, wall packs, and area lights across wattage variants can run into the thousands of SKUs. That's consistent with the broader pattern: shoppers who hit inconsistent or incomplete product content abandon at meaningful rates, with 54% citing inconsistent information across channels and 53% citing incomplete titles or descriptions as reasons they walked away from a purchase ([Salsify 2025 Consumer Research Report](https://www.salsify.com/resources/report/2025-consumer-research)). Re-keying at scale is exactly why so many lighting feeds stay thin. ## Where Anglera fits Your PIM stores the data; Anglera does the work of getting it channel-ready. It plugs into whatever's already in place — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file if there's no PIM at all — and it scores, gap-fills, and enriches attributes like efficacy, CCT, IP rating, and GTIN by extracting them from supplier documentation, not guessing at them. Most lighting catalogs can go from raw feed to marketplace-ready completeness in 30 days or less, without a rip-and-replace project or a re-keying sprint. Marketplaces and rebate programs aren't going to lower the bar. The faster path is making the data clear it once, everywhere it needs to go. --- # Graybar: The Electrical Distributor Nobody Can Buy Source: https://www.anglera.com/blog/graybar-distributor-playbook Published: 2026-05-21 Industries: electrical ![Graybar: The Electrical Distributor Nobody Can Buy](/og/hero-graybar-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Graybar closed fiscal 2025 at $12.9 billion in net sales, good for [#3 on Modern Distribution Management's 2026 Top Distributors list for electrical](https://www.mdm.com/wp-content/uploads/2026/06/MDM-2026-TD-Report-3.pdf) and #14 in industrial supplies. That places it behind only Wesco and Sonepar, and ahead of Rexel and Consolidated Electrical Distributors — companies with almost nothing in common with Graybar except a common product aisle. Look past the revenue table and the real story is who owns the place, because Graybar is the one major electrical distributor in the top tier that has never been sold, spun off, taken public, or bought by private equity since it became an independent company a century ago. ## The ownership structure nobody else in the top four shares Wesco is publicly traded and grew largely by buying Anixter in a $4.5 billion deal. Sonepar is controlled by the French Coutinho family's Sonepar Group, a global conglomerate spanning dozens of national brands. CED has been privately held by the Colburn family since 1964 and runs as a loose federation of acquired "profit centers" that keep their local names. Graybar is different in a way that rarely makes it into trade coverage: it is 100 percent owned by its own employees, and has been since 1929, when a group of Graybar workers scraped together $9 million to buy the supply arm out of Western Electric rather than let it be sold to outside investors, according to [Graybar's own company history](https://en.wikipedia.org/wiki/Graybar). That single fact shapes almost everything else about how the company runs. There is no parent conglomerate setting quarterly targets from Paris, no PE sponsor pushing toward a five-year exit, no public market rewarding buybacks over branch investment. Employees hold the stock directly, buy back in when they retire, and the company's own 2024 results release put it plainly: "At a time when American businesses are frequently bought and sold by investors on public markets, Graybar's consistent structure stands apart," per the company's [2024 financial results announcement](https://www.prnewswire.com/news-releases/graybar-announces-record-2024-financial-results-302401358.html). It's a genuine strategic choice with a real cost. Employee ownership means no war chest of public equity to fund a Wesco-Anixter-sized swing, and no outside capital to lean on in a downturn. Graybar has instead grown the patient way: 12 of the last 13 years produced record sales, and 2025 came in at a record $12.9 billion, up 10.6 percent, per the company's [2025 financial results](https://www.prnewswire.com/news-releases/graybar-announces-2025-financial-results-302711497.html). Steady compounding, financed internally, is the tradeoff for staying unownable. ## A century-old spinout that outlived its parent's ambitions The employee buyout only happened because Graybar was already a castoff of a bigger story. The roots go back to 1869, when inventor Elisha Gray and entrepreneur Enos Barton put up $2,500 apiece to start an electrical shop in Cleveland; the business was pulled into Chicago and grew into Western Electric Manufacturing Company by 1872, eventually becoming AT&T's manufacturing arm and the dominant supplier of telephone and electrical equipment in the country. Western Electric's supply and distribution department, the part that actually sold equipment to the outside world rather than just to the Bell System, was carved out as its own company on December 11, 1925, and named Graybar in honor of the two founders. Employees bought full control four years later. By 1941 they'd retired the last of Western Electric's residual shares with a $1 million check, according to the same company history. Graybar marked its 100th year as an independent company through 2025, a milestone most of its electrical-distribution peers, having been through a buyout, a merger, or an IPO in the interim, simply can't claim in the same unbroken form. ## Buying capability, not just volume Employee ownership didn't make Graybar acquisition-shy. It has just been selective about what it buys. Rather than rolling up look-alike branches for density, Graybar has spent the past several years buying technical capability it didn't have. The 2023 purchase of Valin Corporation, a 12-location automation, fluid-handling, and process-control distributor based in San Jose, pushed Graybar into industrial automation as a real platform rather than a product line, per [MDM's coverage of the deal](https://www.mdm.com/news/top-distributor-sectors/electrical/graybar-acquires-valin-corp-in-diversification-move/). In 2024 it added Blazer Electric Supply in Colorado, Dynamic Solutions in California through Valin, and Power Supply Company in Tennessee through its Cape Electrical Supply subsidiary. In 2025 it kept building the automation platform with Orbit Motion Systems and Burns Controls, both folded into existing specialty subsidiaries rather than the parent brand. The pattern is consistent: acquire a specialist, keep its name and expertise intact, and use it to deepen a vertical (utility gear, industrial automation, data center infrastructure) that a generalist electrical house would otherwise have to build from scratch. It's the opposite of CED's model of buying volume and leaving branches alone, and the opposite of Wesco's approach of buying scale in a single enormous deal. Graybar buys expertise in smaller bites and lets it compound alongside the core electrical business. ## The leadership continuity that matches the ownership model The company's management churn matches its ownership philosophy. Kathleen Mazzarella joined Graybar in 1980 as a customer service representative, worked her way through sales, operations, and strategic planning, and became president and CEO in 2012 and chairman in 2013, the first woman to lead the company in its history. Fourteen-plus years at the top of a company where the workforce owns the stock is not an accident; it's the same instinct toward continuity over disruption that shows up in the acquisition strategy and the balance sheet. ## The insight worth naming Every other major name on MDM's electrical list has changed hands, gone public, or answers to a holding company an ocean away. Graybar's moat isn't its branch count or its catalog, both of which rivals can match. It's that the company has spent a hundred years structurally immune to the thing that reshapes most of its competitors: a sale. Distribution rarely gets the glamorous coverage of the products moving through it, but the companies that win at it usually win quietly, in the catalog, the branch network, and the data behind both. --- # The ROI of product data in Furniture & Home: the numbers that actually move Source: https://www.anglera.com/blog/furniture-home-roi Published: 2026-05-21 Industries: furniture-home ![The ROI of product data in Furniture & Home: the numbers that actually move](/og/hero-furniture-home-roi.jpg) Furniture and home is a brutal category for conversion and an even more brutal category for returns. A sofa is a $1,500 decision made from a phone screen, and the data on the page is doing all the work a showroom floor used to do. This is a walkthrough of the four metrics product data actually moves in this vertical, and how to build a before/after case your CFO will sign off on. ## Why furniture is the hardest category to sell with data alone Furniture and home converts lower than almost any other ecommerce category, with 2025-2026 benchmarks putting the segment around 1.2-1.6% versus 2%+ blended ecommerce averages, according to [ConvertCart's industry breakdown](https://www.convertcart.com/blog/ecommerce-conversion-rate-by-industry). The gap isn't really about traffic quality. It's that furniture buyers can't touch, sit on, or measure the product, so every piece of missing or ambiguous data (exact dimensions, fabric composition, assembly requirements, weight capacity, care instructions) becomes a reason to close the tab and keep comparing. Category leaders like Wayfair and Overstock post conversion rates in the 2.9-3.1% range, roughly double the category average, which says the ceiling on this metric is a data and UX problem, not a ceiling on furniture demand itself. Returns compound it. Home goods and furniture return rates run around 19% on average, with furniture itself at roughly 22.7%, per [eightx's 2026 return-rate analysis](https://eightx.co/blog/average-ecommerce-return-rate), and the driver cited most often is "size, visual mismatch, damage," not buyer's remorse. A sofa that doesn't fit through the door, a stain color that reads differently on screen than in the room, a dining table that's 4 inches deeper than the buyer expected: these are data failures, not product failures. Furniture freight is bulky and fragile, so a return costs multiples of what a t-shirt return costs. The product itself is usually fine. The information about it was the problem. Consumer Reports' own furniture retailer survey, covering more than 38,000 purchases, found that only 6-10% of orders arrive damaged or with missing parts, and the same share again face delivery delays, per [its guide to furniture delivery and returns](https://www.consumerreports.org/home-garden/furniture/make-furniture-delivery-and-returns-as-hassle-free-as-possible-a5212662749/). That's a useful sanity check: most of that 22.7% isn't logistics failure. It's the gap between what the PDP promised and what showed up in the room. ## The four metrics that actually move Not every metric responds to product data the same way, and not every improvement shows up on the same timeline. Here's how to think about each one. | Metric | What good data does | How to measure it | |---|---|---| | PDP conversion rate | Fills in the dimension, material, and fit answers that stall a considered purchase; standardizes attributes so filters and comparison tables actually work | GA4 or your platform's ecommerce funnel, PDP-to-cart rate segmented by category before/after an enrichment pass, ideally A/B'd against an untouched control set | | Return rate (fit/spec-driven) | Reduces the "didn't match description" bucket specifically: accurate dimensions, weight, color/finish detail, assembly complexity | Your returns platform's reason-code breakdown, not blended return rate. Isolate codes like "too big/small," "not as described," "wrong color/finish" and track them against SKUs that were enriched vs. not | | Incremental discovery traffic | Complete titles, attributes, and category-schema markup make products eligible for more long-tail organic queries, richer marketplace listings, and comparison surfaces (search, on-site search, and increasingly AI answer engines as one channel among several) | GSC impressions/clicks by landing page, on-site search "zero result" and refinement rates, and a referral-source breakdown that includes AI-driven traffic as its own line, not the headline | | AOV / attach rate | Complete cross-sell data (matching collections, compatible dimensions, care/warranty add-ons) lets merchandising and recommendation engines actually recommend accurately | Average order value and units-per-order pre/post enrichment, segmented to isolate enriched SKUs from the rest of catalog | The common thread: every one of these is a data-completeness problem before it's a marketing or pricing problem. You can spend on ads to fix traffic volume, but you can't spend your way out of a PDP that's missing the one dimension a buyer needed to trust the purchase. ## Building the before/after case finance will believe Finance doesn't want a story about "better data." They want a controlled comparison with a dollar figure at the end. The structure that works: 1. **Pick a cohort, not the whole catalog.** Choose 200-500 SKUs across 2-3 subcategories (say, sofas and dining sets) where you have both weak baseline data and enough volume to get statistically meaningful before/after numbers within 60-90 days. 2. **Snapshot the baseline.** PDP conversion rate, return rate by reason code, and organic + on-site search visibility for that cohort, pulled for the 60-90 days prior to enrichment. 3. **Enrich, then hold the rest of the catalog constant as a control.** This is the part manual processes struggle with. Enriching 300-500 SKUs by hand at the industry benchmark of roughly 30-45 minutes per SKU adds up to 150-375 hours of skilled labor, which is why most retailers only ever get to their top 50 SKUs and never touch the long tail that's actually bleeding conversion and generating returns. 4. **Re-measure the same cohort against the untouched control group** at 30, 60, and 90 days, isolating conversion lift, return-reason-code shift, and traffic delta. 5. **Translate to dollars finance recognizes**: (conversion lift × cohort traffic × AOV) minus (enrichment cost) for revenue impact, and (return-rate delta × cohort order volume × average reverse-logistics cost per furniture return) for the cost-avoidance side. Both numbers, side by side, is what makes the case land. The honest caveat: not every SKU responds the same way, and a 90-day window won't capture full seasonal cycles for a category as gift- and moving-season-driven as furniture. Re-run the comparison across a full year before you present it as a permanent baseline. ## Where the data actually comes from None of this works if the enrichment is guessed. Values need to come from supplier spec sheets, manufacturer documentation, and existing PIM records, extracted and quality-scored, not invented, or the return-rate line in your model gets worse instead of better once inaccurate dimensions or care instructions start shipping at scale. This is the part of the funnel Anglera is built for. Your PIM (Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or none at all) keeps being the system of record, while Anglera continuously scores, gap-fills, and enriches the attributes sitting underneath your PDPs, live in about 30 days, starting from whatever data you already have, even a flat file. The metrics above are the scoreboard. Closing the gaps in the data underneath them is the actual work. --- # The product-data metrics Furniture & Home teams should actually track Source: https://www.anglera.com/blog/furniture-home-metrics Published: 2026-05-21 Industries: furniture-home ![The product-data metrics Furniture & Home teams should actually track](/og/hero-furniture-home-metrics.jpg) Furniture and home retailers already track conversion, returns, and AOV. What most don't track is the layer underneath those numbers: whether the product data feeding every PDP is complete, accurate, and readable at the moment a buyer is trying to decide if a sofa fits their room. This is a practical guide to the metrics that connect data quality to revenue, which ones lead and which ones lag, and how to instrument each one without kidding yourself about causation. ## Why Furniture & Home is a harder measurement problem Furniture converts low and returns high compared to most retail categories. Home & furniture PDP conversion rates typically sit in the [1.2%–1.4% range](https://blendcommerce.com/blogs/shopify/ecommerce-conversion-rate-benchmarks-2026), well below apparel or beauty, because the purchase is high-consideration and the buyer can't touch the product. Returns run the other direction: furniture return rates land anywhere from [roughly 6% to over 20%](https://www.ienhance.co/insights/how-leading-brands-reduce-furniture-returns-and-protect-margins) depending on category and how returns are counted, and the single biggest driver is dimensional and fit mismatch — buyers guessing at scale from a photo and a thin spec sheet. That combination (low conversion, expensive returns) means data quality shows up on both sides of the P&L, not just in traffic reports. ## The KPI set, and how to instrument it | Metric | Leading or lagging | What it shows | How to measure it | |---|---|---|---| | Attribute completeness rate | Leading | % of SKUs with all required attributes populated (dimensions, materials, weight capacity, care instructions, assembly requirements) | PIM or catalog export vs. a required-fields checklist, tracked per category | | Attribute accuracy / quality score | Leading | Whether populated values are correct and sourced, not just present | Sample audit against supplier docs or spec sheets; automated scoring if you have it | | On-site search zero-results rate | Leading | Whether shoppers can find what they're describing in your own catalog | Site search analytics (Algolia, Klevu, GA4 site search reports) — flag queries returning 0 or near-0 results | | PDP-to-cart and PDP conversion rate | Lagging | Whether the page itself is closing the sale once someone lands on it | GA4 or your analytics platform, segmented by category and by attribute-completeness tier | | Organic clicks to PDPs | Leading/lagging hybrid | Whether search engines can parse and rank your product content | Google Search Console, filtered to PDP URL patterns, compared pre/post enrichment | | AI referral and citation traffic | Leading | Whether AI answer engines can extract accurate specs to cite or recommend your products | Referrer segmentation in GA4 for known AI referrers, plus periodic manual prompts checking if your PDPs get cited | | Return rate, split by reason code | Lagging | Whether the product matched what was promised (size, color, material) vs. buyer's remorse | Returns platform (Loop, Narvar, ShipStation) with reason codes tagged specifically as "not as described" or "wrong dimensions" | | Attach rate / AOV | Lagging | Whether complete data (recommended pairings, care add-ons, protection plans) is driving basket size | Order data, cross-referenced against category attribute completeness | | Support tickets tagged "product question" | Leading/lagging hybrid | Whether the PDP is answering questions that should already be answered | Helpdesk tagging (Zendesk, Gorgias) by ticket category, pre-purchase vs. post-purchase | Leading metrics are inputs you control directly — completeness, search findability, support load. Lagging metrics are outcomes — conversion, returns, AOV. Track both, because a leading metric can improve for months before the lagging metric moves, and if you only watch the lagging number you'll conclude the work isn't working when it actually just hasn't compounded yet. ## A concrete example Say a mid-size outdoor and patio furniture retailer has 4,000 SKUs across sectionals, dining sets, and umbrellas. An attribute audit finds that only 61% of SKUs have complete weather-resistance ratings, seat depth, and assembly time listed, and umbrella SKUs are missing wind-rating data entirely — a spec buyers actively search for. Site search logs show "wind rated umbrella" and similar queries returning zero results despite the retailer carrying products that qualify; the attribute just isn't tagged or exposed to search. The retailer baselines: attribute completeness (61%), zero-results rate on outdoor-specific queries (14%, against a healthy target under [5%](https://wizzy.ai/blog/zero-result-search-ecommerce/)), PDP conversion for umbrella category (0.9%), and return rate for that category with reason codes (18%, with "product smaller/different than expected" as the top reason). After enrichment brings completeness to 95%+ and exposes wind rating as a filterable attribute, they re-measure the same four numbers on the same category, same time-of-year window, holding promotions and pricing constant. Zero-results rate on outdoor queries drops because the attribute now exists to match against. Conversion and return rate are the numbers that prove or disprove the investment — but only if nothing else material changed in that window. ## Attributing change honestly This is where most teams get sloppy. If you enrich data and launch a marketing campaign in the same month, you cannot cleanly credit the conversion lift to either one. A few disciplines help: - **Hold a control group.** If you're enriching in phases, enrich one category or vendor cohort first and leave a comparable one untouched for the same window. Compare deltas between the two, not just before/after on the enriched set alone. - **Segment before/after by SKU cohort, not site-wide.** Site-wide conversion moves for a hundred reasons — seasonality, ad spend, pricing. Category-level, SKU-level comparisons isolate the data effect. - **Log the exact enrichment date per SKU or category**, not just "we started a project." Attribution requires knowing precisely when the input changed. - **Give lagging metrics time.** Search engines need to recrawl and reindex. Returns take 30-90 days to fully resolve after a purchase. Don't call a verdict on return-rate impact after two weeks. ## Vanity metrics to skip Total number of attributes added, SKUs "touched," or words added per PDP tell you activity happened, not that it worked. Raw pageviews without conversion context are similarly meaningless for a high-consideration category like furniture — more traffic to an incomplete PDP just means more people bouncing off it. And a single AI citation screenshot is a nice anecdote, not a metric; track the referral pattern over weeks, not a one-off mention. ## Where Anglera fits This measurement discipline only works if the underlying data is actually getting better on a schedule you can attribute to — not a one-time cleanup that decays as new SKUs and suppliers roll in. Anglera plugs into whatever PIM you already run (or works from a flat file if you don't have one) and continuously scores, gap-fills, and enriches product data from real supplier and source documents, so completeness and accuracy are metrics you can baseline and re-measure on a rolling basis, not a project you do once a year. --- # How Ferguson Outgrew the British Company That Bought It Source: https://www.anglera.com/blog/ferguson-distributor-playbook Published: 2026-05-21 Industries: plumbing ![How Ferguson Outgrew the British Company That Bought It](/og/hero-ferguson-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Ferguson opens 2026 at No. 1 on [MDM's Top Distributors list](https://www.mdm.com/top_distributors/distributor_categories/plumbing/) for Plumbing, climbing to No. 1 in PVF as well, with a No. 3 finish in HVACR and top-12 placements across Industrial Supplies, MRO, Building Materials and JanSan. MDM credits the company with $31.3 billion in 2025 revenue, roughly 35,000 employees and about 1,800 locations. That scale is the least interesting thing about Ferguson. The stranger story is how a Newport News, Virginia plumbing supply house ended up owning the name of the British conglomerate that bought it. ## A Virginia plumbing shop, bought and swallowed Charles Ferguson, Ralph Lenz and Johnny Smither started Ferguson Enterprises in Newport News in 1953 as a plumbing and heating distributor. Growth was steady rather than spectacular for two decades, then in 1982 the company was acquired by [Wolseley plc](https://en.wikipedia.org/wiki/Ferguson_Enterprises), a UK building-materials conglomerate, for $30.7 million. On paper that was the end of Ferguson as an independent story: an American plumbing wholesaler folded into a much larger British parent. It didn't play out that way. Ferguson kept growing inside Wolseley's portfolio, expanded into new US regions, and merged with Familian Corporation of Los Angeles in 1999 to push further west. By the 2010s the US plumbing and HVAC business wasn't just Wolseley's biggest division, it was effectively the company. In 2017 Wolseley plc changed its own corporate name to Ferguson plc, an unusual move: the acquired subsidiary's brand replaced the acquiring parent's identity on the London Stock Exchange ticker. ## The insight: the subsidiary became the parent, then went home That renaming is the hinge of Ferguson's story, and it is worth stating plainly because it is easy to miss on the company's own history page: most distributors that get bought by a bigger conglomerate stay divisions. Ferguson became the whole company. It didn't stop there. In January 2021, [Ferguson divested its remaining UK retail operations](https://en.wikipedia.org/wiki/Ferguson_Enterprises) to private equity firm Clayton, Dubilier & Rice for £308 million, cutting the last operating tie to the country its parent came from. That same year it shifted its primary stock listing to the New York Stock Exchange. By August 2023 it qualified as a US domestic filer under SEC rules, and in August 2024 it completed a full corporate reorganization, replacing Ferguson plc with a new Delaware parent, [Ferguson Enterprises Inc.](https://www.corporate.ferguson.com/pressroom/news-releases/news-details/2024/Ferguson-plc-New-Corporate-Structure-to-Achieve-U.S.-Domicile/default.aspx), while the old Jersey-incorporated entity was renamed and quietly wound down to a shell. Forty-two years after a British company bought a Virginia plumbing wholesaler, the wholesaler finished the trade: it kept the growth, took the name, and sent the foreign incorporation home. Few companies in distribution have a founding story that ends with them out-lasting and out-scaling their own acquirer this cleanly. | Year | Event | |---|---| | 1953 | Ferguson Enterprises founded in Newport News, VA | | 1982 | Acquired by Wolseley plc (UK) for $30.7M | | 1999 | Merges with Familian Corporation, expands to the West Coast | | 2017 | Wolseley plc renamed itself Ferguson plc | | 2021 | Divests UK operations to CD&R; primary listing moves to NYSE | | 2023 | Qualifies as a US domestic filer | | 2024 | Redomiciles as Ferguson Enterprises Inc., a Delaware corporation | ## What the machine looks like today Underneath the corporate history is a distribution business built on density and specialization. Ferguson runs nearly 1,700 to 1,800 branches (the figure moves with each quarterly close) plus more than 270 high-end showrooms that sell fixtures directly to homeowners and designers, feeding a separate residential channel alongside its core wholesale trade counter business. About 5,000 outside sales reps call on contractors and job sites; a further 5,000-plus associates run national accounts. Digital has become a real second leg rather than a defense against Amazon: [digital orders grew 28% year over year](https://www.digitalcommerce360.com/2024/12/11/ferguson-digital-sales-q1-2024/) to reach 46% of pro sales in fiscal 2024, and Ferguson has been consolidating its e-commerce identity, merging its Build.com consumer brand into the main Ferguson site in 2025. The other constant is acquisitions. Ferguson has done roughly 50 deals over the past five years and [closed fiscal 2025 with nine of them](https://www.corporate.ferguson.com/pressroom/news-releases/news-details/2025/Ferguson-closes-the-fiscal-year-with-nine-acquisitions/default.aspx) in specialty categories like waterworks, environmental products and duct supply, adding about $300 million in annualized revenue. [MDM put full fiscal 2025 sales at $31.3 billion](https://www.mdm.com/news/top-distributor-sectors/contractor/fergusons-2025-led-by-31b-in-sales-8-acquisitions-as-nonres-powers-growth/), up 5% on the year, with acquisitions contributing a modest but steady one point of growth and non-residential construction driving the rest. ## The tension worth naming Ferguson is buying and pruning at the same time, and both are visible in the same fiscal year. While closing nine tuck-in deals, the company also recorded $14 million in restructuring charges tied to branch closures in Canada and sold a shuttered US distribution center. That is not contradiction so much as discipline: a company this size can add specialty capability through M&A in one region while rationalizing underperforming footprint in another, and treat both as normal maintenance rather than crisis. The risk sits in the mix, not the mechanics. Ferguson's growth is now split between an M&A engine that adds a point of revenue a year and a non-residential construction cycle that can swing much harder than that, and the model has to keep both moving in the same direction to keep compounding at this rate. The Plumbing #1 ranking MDM hands Ferguson each year measures the branches, the trucks and the revenue. It doesn't capture the part of the story that is actually unusual: a company that grew past the parent that bought it, took its name, and then went and got its own address back. --- # Why duplicated manufacturer copy keeps your SKUs invisible Source: https://www.anglera.com/blog/duplicated-manufacturer-copy Published: 2026-05-21 ![Why duplicated manufacturer copy keeps your SKUs invisible](/og/hero-duplicated-manufacturer-copy.jpg) Open the product page for a part on three different distributor sites. Odds are you'll see the same title, the same bullets, and the same description — because all three pasted the manufacturer's feed. To a search engine, that's a sea of duplicates. There's no signal that says *this* page deserves to rank over the others, so none of them rank well. ## Syndicated content is table stakes, not an advantage Content syndicators exist to hand every distributor the same manufacturer feed. That's useful for coverage, but it guarantees parity: if everyone has the same content, content stops being a differentiator and the buyer falls back to price. The distributors who win on more than price are the ones whose pages say something the manufacturer's feed never could. ## What differentiated content looks like - **Written for your buyer's job.** A facilities manager and a residential contractor search differently and care about different specs. Generic copy serves neither. - **Application and selection guidance.** "Choose Type L when…" is the kind of expertise that earns trust and links. - **Structured attributes** that power comparison tables and faceted search, so buyers can actually narrow down to the right part. - **On-page answers** to the real questions — compatibility, code approval, installation — that otherwise send buyers to a competitor or a forum. ## The payoff Unique, attribute-rich pages rank where duplicated copy never will, convert better because buyers get answers in place, and are far more likely to be surfaced by AI assistants that summarize from machine-readable content. You already stock the parts. Differentiated content is how you stop looking like everyone else who stocks them too. --- # How DNOW Bought a Bigger Rival to Reshape PVF Distribution Source: https://www.anglera.com/blog/dnow-distributor-playbook Published: 2026-05-21 Industries: oilfield-energy ![How DNOW Bought a Bigger Rival to Reshape PVF Distribution](/og/hero-dnow-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* DNOW landed four times on Modern Distribution Management's [2025 Top Distributors list](https://www.mdm.com/top_distributors) built from 2024 revenue: #13 in Industrial Supplies, #4 in Industrial PVF, #20 in MRO Industrial, #5 in Fluid Power. That snapshot was already out of date by the time it published. Five months later, DNOW closed on the biggest deal in its history, and the company MDM had just ranked #4 in pipe, valve and fittings distribution became something closer to the category's new center of gravity. The 2026 report, built from FY2025 revenue, shows the result: DNOW charts at #3 in Industrial PVF — the slot MRC Global held a year earlier — and climbs to #7 in Industrial Supplies from #13, on $2.8 billion in revenue, up 19%. It holds #5 in Fluid Power and sits at #19 in MRO Industrial. ## A spinoff that had to learn to allocate its own capital DNOW did not start as an independent company. It spun out of National Oilwell Varco in 2014, carrying distribution roots that trace back through Wilson Supply (1921) and the original Oilwell equipment business (1862), according to [DNOW's own company history](https://www.dnow.com/company) and [NOV's spinoff announcement](https://ir.dnow.com/news-releases/news-release-details/now-inc-spins-national-oilwell-varco-inc). For decades that distribution arm existed to move pipe, valves and fittings to oilfield customers on NOV's balance sheet, inside NOV's capital plan. The 2014 spinoff handed it a public listing, its own board and, for the first time, the job of deciding where its own cash went. That is a harder transition than it sounds. Plenty of corporate carve-outs spend their first decade just learning to run without a parent's shared services and cheap internal capital. DNOW's first eighteen months as a standalone company coincided with the 2015-2016 oil price collapse, a brutal opening test for a business that had never had to defend its own credit rating. It survived that downturn and the 2020 oil crash that followed, and came out of both with a cleaner balance sheet than most of its PVF peers, several of whom carried private-equity-era debt loads from leveraged buyouts. ## The insight: DNOW bought a bigger competitor in its own core category Here is the detail that does not show up in a press release headline. In MDM's 2025 PVF ranking, DNOW sat at #4 with $2.4 billion in 2024 revenue. MRC Global sat at #3, larger by revenue. A year on, MRC Global does not appear on MDM's lists at all and DNOW occupies the #3 spot — the ranking absorbed the acquisition the same way the balance sheet did. In June 2025, DNOW announced it would acquire MRC Global in an all-stock deal valued at roughly $1.5 billion including debt, and closed the combination on November 6, 2025, per [DNOW's completion announcement](https://www.dnow.com/news/2025/dnow-completes-combination-with-mrc-global) and the [original deal release](https://www.businesswire.com/news/home/20250626105189/en/DNOW-and-MRC-Global-to-Combine-in-All-Stock-Transaction-Creating-a-Premier-Energy-and-Industrial-Solutions-Provider). That is the reverse of the usual roll-up script, where the survivor absorbs smaller bolt-ons one branch at a time. DNOW went after a company bigger than itself in the exact vertical MDM had just measured them against, and it did so with stock as currency rather than a debt-funded tender offer. The balance sheet discipline built during two oil-price busts is what made that currency credible to MRC Global's shareholders, who ended up holding 0.9489 DNOW shares for every MRC share they owned. A distributor that spent a decade proving it could survive without a parent company's checkbook used that same discipline to become the acquirer of a rival with more revenue in its flagship category. The combined company now runs roughly 350 service and distribution locations across more than 20 countries with about 5,000 employees, up from DNOW's standalone 165 locations and 2,575 employees at the time of the MDM snapshot. Management has targeted $70 million in annual cost synergies within three years, coming out of duplicate public-company costs, overlapping IT systems and supply chain consolidation, according to the same completion release. ## Diversifying out from under a single customer type The strategic logic behind the deal is not just scale. It is customer mix. DNOW's legacy business skewed toward upstream and midstream oilfield operators, a customer base whose spending rises and falls with rig counts and commodity prices. MRC Global brought a heavier weighting toward gas utilities and industrial end markets, including chemical processing and municipal water infrastructure. Combined, DNOW now talks about serving construction and maintenance work across energy production, gas utilities, chemical processing, municipal water, mining and power generation, a materially broader base than either company carried alone. That diversification effort predates the merger. DNOW has been building out Process Solutions (engineered packages like LACT units and gas measurement skids), a Water Solutions line covering treatment plants and lift stations, and an energy transition practice touching carbon capture and hydrogen infrastructure, all pushing the company's revenue mix away from pure oilfield cyclicality. The MRC Global deal accelerates that shift by scale rather than by slow organic build-out. ## The digital layer holding a bigger footprint together None of this works without a way to manage inventory and orders across a suddenly much larger branch network. DNOW's DigitalNOW platform, accessible through shop.dnow.com, gives customers real-time inventory visibility, order tracking and digital catalog access across the network. For a distributor that just roughly doubled its location count in a single transaction, that digital backbone is less a customer convenience than the connective tissue that keeps a newly combined, geographically sprawling PVF business from fragmenting into disconnected regional fiefdoms during integration. The tension worth watching: DNOW built its credibility on capital discipline forged in downturns, then spent that credibility on the largest, most complex integration in its history, betting that cost synergies and a broader customer base outrun the execution risk of merging two distribution networks at once. Every ranking on a list like MDM's is a photograph of a company that keeps moving after the shutter clicks. Few in this series have moved as far, as fast, as the distributor that turned a 2014 spinoff into the acquirer of its own category's bigger rival. --- # Syndicating consumer electronics data to every channel without the re-keying Source: https://www.anglera.com/blog/consumer-electronics-syndication Published: 2026-05-21 Industries: consumer-electronics ![Syndicating consumer electronics data to every channel without the re-keying](/og/hero-consumer-electronics-syndication.jpg) A pair of wireless earbuds can have a clean spec sheet in the PIM and still get flagged, buried, or excluded from the buy box the moment it lands on a marketplace. That is not a pricing problem or a demand problem. It is a data-completeness problem, and consumer electronics has one of the least forgiving attribute bars of any category. ## The bar marketplaces actually enforce Amazon now requires roughly 274 attributes across 200 product types for new listings, a scope it expanded through 2025, and every consumer electronics submission has to clear category-specific fields like connectivity type, battery chemistry, wireless technology, and included accessories before the listing goes live ([Inriver](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). Miss a required field and the listing does not get a warning, it gets suppressed, often silently. Sellers find out by checking the search-suppressed filter in Seller Central, not from a notification. Identifiers are just as strict. Amazon checks GTINs against the GS1 registry directly, and UPCs or EANs from resellers or unauthorized sources get listings blocked outright rather than flagged for review. For electronics specifically, where counterfeit and gray-market concerns run high, brand-registry and identifier mismatches are one of the most common reasons a new ASIN never goes live. On top of the attribute and identifier bar, the submission mechanics changed too: Amazon retired its legacy XML and flat-file listing feeds on July 31, 2025, so any integration still built around those formats now throws a fatal error on every feed ([Inriver](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). Retailers who had a working syndication pipeline for years suddenly had a broken one, through no fault of their own product data. ## Where electronics feeds break down first Three things tend to fail before a consumer electronics listing ever reaches a shopper: **Bullet points and titles.** Amazon caps bullets at 255 characters for third-party sellers, gives five bullet slots, and its automated scanner now rejects emojis, all-caps, and promotional phrasing outright rather than just down-ranking it ([ListingForge](https://www.listing-forge.com/blog/amazon-bullet-points)). A feed written for a brand's own site, full of marketing language, gets stripped or rejected wholesale on the marketplace. **Images.** Main images need a pure white background and at least 1000 pixels on the longest side to unlock zoom; anything shot for a DTC lifestyle page rarely meets the marketplace spec without rework ([Amalytix](https://www.amalytix.com/en/knowledge/seo/amazon-bullet-points/)). **Technical attributes.** Connectivity standard, battery life in hours, charging case capacity, driver size, IP rating, and codec support are the fields that differentiate one pair of earbuds from a near-identical competitor. When these are blank, the listing looks unfinished next to one that filled every field, and marketplace search algorithms treat incomplete listings as lower quality. ## Before and after: a pair of wireless earbuds Here is a typical raw supplier feed for a wireless earbuds SKU next to what a marketplace actually needs before it will rank or qualify for the buy box. | Attribute | Raw feed (as received) | Channel-ready | |---|---|---| | Title | "Wireless Earbuds Bluetooth" | "Acme Sonic Pro Wireless Earbuds, Bluetooth 5.3, 30-Hour Battery, IPX5 Sweatproof, USB-C Charging Case" | | GTIN | Missing | GS1-issued UPC verified and matched to brand registry | | Connectivity | Blank | Bluetooth 5.3, multipoint pairing | | Battery | "Long battery" | 6 hours per charge, 30 hours with case, USB-C fast charge | | Water resistance | Not listed | IPX5 rated | | Bullets | One paragraph of marketing copy | 5 factual bullets, each under 250 characters, no punctuation at line end | | Main image | Lifestyle photo, gray background | White background, 1200px, product only | | Included accessories | Not listed | Charging case, USB-C cable, 3 ear tip sizes (S/M/L) | The left column is what most PIMs already hold. The right column is what gets a listing live, ranked, and eligible for the buy box on the first submission instead of the third. ## The AI shopping test Marketplace completeness now has a second audience beyond the shopper scrolling search results. Ask an AI shopping assistant to "recommend wireless earbuds with 24-plus hours of battery life and sweat resistance under 100 dollars," and it can only surface products whose feeds actually state battery life, IP rating, and price in a structured, consistent way. A listing with "long battery" instead of "30 hours with case" is invisible to that query, no matter how good the product is. Structured, attribute-complete data is what makes a product answerable, not just searchable. ## Getting to channel-ready without re-keying The instinct when a listing gets suppressed is to open Seller Central and patch it by hand, then patch the same gap again on Walmart Marketplace, then again on Best Buy Marketplace. That works once. It does not scale past a handful of SKUs, and every manual patch is a chance for the fix to drift out of sync with the PIM record it should have come from. The fix has to happen at the source, not channel by channel. That is the layer Anglera runs. Your PIM stores the data; Anglera continuously scores every SKU against the attribute and identifier bar each channel actually enforces, gap-fills the missing connectivity specs, battery figures, and compliant bullet copy, and keeps it in sync so a wireless earbuds listing is channel-ready everywhere it ships, without a single re-keyed field. It plugs into whatever PIM or commerce platform you already run, no rip-and-replace required. --- # Würth Industry North America: A Roll-Up That Stayed a Federation Source: https://www.anglera.com/blog/wurth-industry-distributor-playbook Published: 2026-05-20 Industries: fasteners ![Würth Industry North America: A Roll-Up That Stayed a Federation](/og/hero-wurth-industry-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Würth Industry North America enters Modern Distribution Management's [2026 Top Distributors report](https://www.mdm.com/top_distributors/wurth-industry-north-america/) ranked No. 2 in fasteners, No. 12 in industrial supplies, No. 10 in safety, and No. 17 in MRO. Four top-twenty finishes across four different verticals is an unusual spread for a company most people still describe with one word: screws. The more interesting story is what sits underneath those rankings, an American distribution network built almost entirely through acquisition that has never once folded its targets into a single national brand. ## The German parent nobody has to please Adolf Würth started selling screws out of a 170-square-meter annex in Künzelsau, Germany, in the summer of 1945, borrowing an ox cart to move inventory in an occupied country with almost no supply chain to speak of. He died in 1954. His son Reinhold took over the business at nineteen, with his mother Alma helping run it, and spent the next four decades turning a two-person wholesaler into what is now [the largest fastener distributor in the world](https://www.designworldonline.com/the-history-of-the-worlds-largest-fastener-distributor/), a group of more than 400 companies employing roughly 87,000 people worldwide. The detail that matters for a strategy read is what Reinhold Würth did with his own ownership stake. In 1987 he moved his shares into a set of family foundations rather than keeping them in his personal name, then stepped away from day-to-day management in 1994, handing the Advisory Board chairmanship to his daughter Bettina Würth in 2006, according to [Würth Group's corporate history](https://en.wikipedia.org/wiki/W%C3%BCrth_Group). The company stayed private. No IPO, no private equity sponsor, no fund with a five-to-seven-year clock. That structure is the quiet advantage running underneath everything Würth Industry North America does in the U.S. market: it can buy a company and never have to think about how or when to sell it. ## A roll-up that refuses to become one company Würth Industry North America itself dates to the mid-1990s, starting with the acquisition of Würth Revcar Fasteners in Roanoke, Virginia, and building outward from there through Indiana, Minnesota, Texas, and beyond before consolidating into a Greenwood, Indiana headquarters in 2016. In the years since, the acquisitions have kept coming: Atlantic Fasteners for construction services, Fasco Fasteners, and on the safety side Northern Safety & Industrial's 2021 purchase of [ORR Safety](https://www.wurthindustry.com/en/wina/resources/press/wurth_acquires_orr_safety.php), a $125 million Louisville company with four distribution centers and 250-plus employees serving rail, auto, and government accounts. What almost none of those targets got was a rebrand. Northern Safety & Industrial still operates as Northern Safety & Industrial. ORR Safety still operates as ORR Safety. Würth Action Bolt kept its name. This is the opposite of the Fastenal or Grainger playbook, where every acquired branch eventually disappears into one storefront and one part number system. WINA runs as a federation, a holding structure of more than 110 locations under allied brand names, each retaining its customer relationships and often its sales culture, while sharing back-office logistics, a fastener engineering bench, and increasingly a common technology layer underneath. For a customer, the practical effect is that Würth's scale is mostly invisible. You buy from ORR Safety or Northern Safety and never think about who owns the paperwork. The trade-off is real. A federated model sacrifices the brand equity and pricing leverage that comes from telling every buyer "you're buying from the biggest name in the category." It bets instead that acquired sales teams and regional trust survive better intact, and that the holding company's job is capital and infrastructure, not identity. In a sector where roll-ups usually mean rapid consolidation into one name, Würth has been rolling up American fastener and safety companies for thirty years and mostly still looks, from the customer's side of the counter, like dozens of separate ones. ## Where the field sales force actually earns its keep Underneath the acquisitions sits the piece of the model Würth invented before most competitors had a name for it: putting a technical rep and a bin of parts directly on the customer's production floor. The group's ORSY vending machines and Kanban replenishment racks, extended into digital Kanban and RFID-tagged bins in recent years, turn a fastener order from a purchasing decision into an automatic one. [Würth's 2020 agreement to nationally distribute Markforged 3D printers](https://www.prnewswire.com/news-releases/wurth-industry-north-america-signs-agreement-to-nationally-distribute-markforged-3d-printers-and-offer-new-digital-kanban-solutions-301031849.html) alongside its digital Kanban rollout is the same instinct applied to a newer problem: once a rep is embedded inside a customer's plant managing consumables, adding a printer for on-demand jigs and low-volume parts is a natural upsell rather than a new sales motion. ## A table of scale, not a headline number Würth Industry North America's own U.S. revenue isn't broken out publicly, which is why MDM lists it as not disclosed even while ranking the company by unit volume and market presence. The parent Würth Group, by contrast, is happy to publish a number: preliminary 2025 group sales of [roughly $24.3 billion](https://www.mdm.com/news/operations/earnings/wurth-group-annual-sales-top-24b-for-new-high-water-mark/), up 2.3 percent from 2024. That asymmetry, a global parent that reports proudly and a North American division that stays quiet, fits a company built for the long run rather than the next earnings call. | MDM 2026 Vertical | WINA Rank | |---|---| | Fasteners | #2 | | Industrial Supplies | #12 | | Safety | #10 | | MRO | #17 | Distribution rewards the companies willing to own the boring middle: the bin on the shop floor, the part number nobody else wants to stock, the truck that shows up on schedule regardless of who owns the name on the door. --- # Vallen Distribution: From Family Safety Firm to Serial Acquirer Source: https://www.anglera.com/blog/vallen-distributor-playbook Published: 2026-05-20 Industries: safety-ppe ![Vallen Distribution: From Family Safety Firm to Serial Acquirer](/og/hero-vallen-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Vallen Distribution lands at #10 in Industrial Supply, #6 in MRO, and #6 in Safety on the [2026 MDM Top Distributors](https://www.mdm.com/top_distributors) lists, Modern Distribution Management's annual ranking of North America's largest distributors. That placement undersells the more interesting fact about Vallen: for the better part of six decades, it was not really Vallen's company to run. It belonged to whoever owned it that year. The story worth telling is how a Houston safety-goggle shop spent sixty years as somebody else's subsidiary, then flipped the script and started buying divisions bigger than its own history. ## A husband-and-wife shop born out of OSHA's prehistory Leonard J. Bruce started Guardian Safety Equipment Company in Houston in October 1947, after touring Gulf Coast petrochemical plants and noticing how little serious safety gear was on offer. His wife Valerie was the company's other employee. In 1960 the business incorporated as Vallen Corporation, a name stitched together from Valerie and Leonard, and by then it was already generating $670,000 a year according to [FundingUniverse's company history](https://www.fundinguniverse.com/company-histories/vallen-corporation-history/). The business model that emerged is the same one distributors still run today: carry thousands of third-party safety products, but manufacture the specialized items customers actually need. Bruce launched Encon Safety Products in 1964 to make chemical goggles his customers couldn't source elsewhere. When OSHA passed in 1970, Vallen was already positioned as the technical safety expert plants called first, not a catalog house. It went public in 1979 at $13 a share, with Bruce keeping 63 percent of the stock. ## Three owners in twenty-three years Then the independence ended. Hagemeyer, the Dutch trading conglomerate, bought Vallen for $201 million in November 1999. Hagemeyer's US business changed hands again in 2007 when Sonepar acquired it. In 2014 Sonepar merged its Hagemeyer North America unit with another of its industrial distributors, IDG, and in October 2016 unified both under the Vallen name, an identity that had spent 17 years dormant inside somebody else's org chart. Being a rounding error inside two successive European conglomerates was not obviously a growth strategy, and Sonepar eventually agreed with that assessment. On [February 28, 2022, Sonepar announced](https://www.sonepar.com/en/newsroom/sonepar-enters-into-an-agreement-to-sell-vallen-north-america-35010) it would sell all of Vallen's US, Canadian, and Mexican operations, roughly €1.6 billion in sales and 4,200 employees at the time, to the private equity firm Nautic Partners. CEO Philippe Delpech framed it as Sonepar refocusing on core electrical distribution. For Vallen, it meant becoming an independent operating company again for the first time since Nixon was president. ## The unique insight: it stopped being acquired and started acquiring Here is the part that does not show up on Vallen's About page. A company that spent 1999 to 2022 as an acquisition target used its first two years of PE ownership to become one of the more aggressive acquirers in industrial MRO. On February 22, 2024, Vallen announced it would buy Wesco Integrated Supply from Wesco International for roughly $350 million, a deal that [closed April 1, 2024](https://www.marketscreener.com/quote/stock/WESCO-INTERNATIONAL-INC-14849/news/Vallen-Distribution-Inc-completed-the-acquisition-of-WESCO-Integrated-Supply-Inc-from-WESCO-Inte-46335377/). WIS was not a bolt-on. It carried $784 million in 2023 net sales on its own, more than twice the last publicly disclosed size of Vallen itself. Nautic managing director Chris Pierce described the intent plainly in the [deal announcement](https://nautic.com/news/vallen-distribution-to-acquire-wesco-integrated-supply/): building "another industrial distribution platform through an active M&A program." Three months later, on July 11, 2024, Vallen [acquired Eastland Engineering Supply](https://www.prnewswire.com/news-releases/vallen-distribution-expands-in-europe-with-acquisition-of-ees-302194166.html), a 30-year-old Dublin-based MRO supply chain provider with UK and US operations, giving Vallen its first real European footprint. Two acquisitions in five months, one of them larger than the acquirer, is not the cautious cadence of a company still finding its footing under new ownership. It is the cadence of a company that spent two decades being told what to do and now has a thesis of its own: integrated supply is the growth lane, and buying scale beats building it branch by branch. ## Why the tension is worth watching The trade-off is straightforward. WIS brought Vallen customers, a European base, and 50-plus years of onsite MRO program expertise, but it also brought the integration risk of digesting a business nearly the size of the parent inside a single fiscal year, on top of a second cross-border acquisition three months later. Distributors that grow this fast through M&A live or die on whether the back-office systems, vendor rebates, and branch operations of the acquired businesses actually merge, rather than just sitting side by side under one logo. Vallen's MDM placements this year (Industrial Supply #10, MRO #6, Safety #6) suggest the combination is holding revenue rank even mid-integration, which is the real test PE-backed roll-ups either pass or fail in year two or three. | Year | Event | |---|---| | 1947 | Leonard Bruce founds Guardian Safety Equipment, Houston | | 1960 | Incorporates as Vallen Corporation | | 1999 | Hagemeyer acquires Vallen for $201M | | 2007 | Sonepar acquires Hagemeyer's US operations | | 2016 | Rebranded as Vallen Distribution under Sonepar | | 2022 | Nautic Partners buys Vallen North America from Sonepar | | 2024 | Vallen acquires Wesco Integrated Supply ($350M) and Eastland Engineering Supply | A company that answered to Dutch and French parent conglomerates for most of its life is now the one signing the acquisition checks, and the industrial safety and MRO sector is watching to see if that appetite holds through a second integration cycle. Every distributor on the MDM list runs on the same unglamorous machinery underneath the growth story: branches that need stocking, catalogs that need to stay accurate across every acquired entity's SKUs, and product data that has to reconcile the moment two companies' systems become one. --- # Sporting Goods on marketplaces: the listing data that wins the buy box Source: https://www.anglera.com/blog/sporting-goods-syndication Published: 2026-05-20 Industries: sporting-goods ![Sporting Goods on marketplaces: the listing data that wins the buy box](/og/hero-sporting-goods-syndication.jpg) Amazon and the other marketplaces don't reject incomplete sporting goods listings outright. They just bury them, suppress a variation, or hand the buy box to a competitor with a cleaner feed. In a category with real safety regulation, like bike helmets, an incomplete feed is also a compliance problem, not just a merchandising one. ## The gate isn't approval, it's ranking and eligibility Sporting goods has been subject to a UPC requirement on Amazon since 2009, specifically because the category has so many near-duplicate SKUs that need to be grouped correctly under one listing rather than splintered across sellers ([Inriver, product data requirements for Amazon](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). Miss the identifier, and Amazon can't match your offer to the right ASIN. That's not a soft penalty. It means your offer doesn't show up where shoppers are looking, or it creates a duplicate listing that splits reviews and sales history. Beyond identifiers, Amazon's Sports & Outdoors style guide sets a specific content bar: titles capped around 50 characters in a strict brand-plus-product-line-plus-variation pattern, five bullets that cover dimensions, materials, and age-appropriateness, and images on a pure white background with the product filling at least 80 percent of frame at 300+ dpi ([Amazon Sports & Outdoors style guide summary](https://www.kua.ai/blog/selling-on-amazon-category-style-guide-sports-outdoors)). Every variation, color, size, style, needs its own complete SKU and image, or Amazon will suppress the parent listing rather than guess. None of this is exotic. It's a checklist. But most retail feeds, especially ones pulled straight from a PIM built for a DTC site, weren't built to that checklist. They were built for one channel, then copy-pasted everywhere else. ## Buy box eligibility runs on more than price Sellers spend a lot of energy on repricing, and price matters. But Amazon's featured-offer logic in 2026 also weighs fulfillment performance, seller health metrics like order defect rate, and increasingly, whether the underlying listing itself is complete and consistent ([Feedvisor, Amazon Buy Box guide](https://feedvisor.com/university/amazon-buy-box/)). A perfectly priced offer attached to a listing with three of nine required attributes filled in is still a weaker candidate than a marginally higher-priced offer on a complete one, because the algorithm and the shopper both read incompleteness as risk. That risk reading is especially sharp in sporting goods, where a meaningful share of the category, helmets, protective gear, safety harnesses, is subject to federal regulation. Consumer Reports has repeatedly found bike helmets sold through online marketplaces that didn't meet CPSC safety standards, including a recall of roughly 6,500 children's helmets sold through Amazon for labeling and certification failures ([Consumer Reports, bike helmets that don't meet federal safety standards](https://www.consumerreports.org/bike-helmets/bike-helmets-that-dont-meet-federal-safety-standards-are-widely-available/)). CPSC's own bicycle helmet rule (16 CFR Part 1203) requires a specific compliance label with manufacturer name, address, and phone number, visible on the packaging or point-of-sale material ([CPSC, Bicycle Helmets Business Guidance](https://www.cpsc.gov/Business--Manufacturing/Business-Education/Business-Guidance/Bicycle-Helmets)). A listing that doesn't carry the certification statement, the age range, and the correct standard reference isn't just thin content. It's a marketplace risk flag, and increasingly an outright suppression trigger. ## What a raw feed vs. a channel-ready feed looks like Here's a typical bike helmet, before and after enrichment to marketplace bar: | Attribute | Raw PIM feed | Channel-ready feed | |---|---|---| | Title | "Adult Bike Helmet Blue" | "Trailhead Adult Bike Helmet, Adjustable Fit, MIPS, Blue" | | GTIN/UPC | Missing | Present, matched to correct variation | | Safety certification | Not stated | "Complies with U.S. CPSC Safety Standard for Bicycle Helmets, Age 5+" | | Age/head size range | "One size" | "Fits head circumference 54-61cm, ages 14+" | | Material/construction | Blank | "In-mold polycarbonate shell, EPS foam liner, MIPS layer" | | Images | 1 lifestyle photo | 6 images: white background, 80%+ frame, size chart, label closeup | | Variation structure | Color as separate ASIN | Color as child variation under one parent | | Weight/dimensions | Missing | "310g, 22 x 18 x 11 cm" | The left column is what shows up when a merchandiser exports straight from the PIM and syndicates without a channel-specific pass. The right column is what wins the buy box and survives a compliance audit. The gap between them is rarely a data-entry problem for one SKU; it's a systemic gap across a few thousand SKUs, most of which nobody has time to fix by hand. It's also the gap that breaks AI shopping. Ask ChatGPT or Google AI Mode to "recommend a bike helmet with MIPS for a road cyclist under 60 dollars," and the agent needs the certification, the MIPS attribute, the size range, and the price all present and structured, or your helmet doesn't make the shortlist even if it's the right product at the right price. ## Getting to channel-ready without rebuilding the PIM The fix isn't a new PIM or a rip-and-replace of the feed pipeline. It's a layer that checks every SKU against the actual marketplace bar, identifier present, safety language correct, images to spec, variations structured properly, and fills the gaps before syndication, then keeps checking as attributes drift or new SKUs land. Your PIM stores the data. Anglera does the work: it scores every listing against marketplace and AI-agent readability, gap-fills the missing attributes and safety language, and keeps the feed audit-ready as Amazon's requirements shift. It plugs into whatever PIM or commerce stack you already run, no migration required. --- # Why sporting goods products go invisible: the attribute gaps that filter you out Source: https://www.anglera.com/blog/sporting-goods-attributes Published: 2026-05-20 Industries: sporting-goods ![Why sporting goods products go invisible: the attribute gaps that filter you out](/og/hero-sporting-goods-attributes.jpg) A bike helmet with no certification field, no MIPS flag, and no head-size range isn't invisible because it's a bad helmet. It's invisible because the facet engine and the AI shopping agent both have nothing to filter on. Sporting goods is one of the most spec-dense categories in retail, and the products that don't carry the right structured attributes quietly drop out of comparison shopping before a shopper — human or AI — ever sees them. ## The category runs on hard specs, not adjectives Apparel can survive on "breathable" and "lightweight." Sporting goods can't. A cyclist filtering for helmets wants a head-circumference range, a certification standard, and often a MIPS flag before they'll even open a product page. A runner filtering for shoes wants drop, stack height, and surface type. None of that is marketing copy — it's the exact vocabulary shoppers type into filters and ask AI assistants about. That's the trap. Merchandisers write helmet copy the way they'd write a jacket description, when the buying decision is closer to buying a component: does it fit, is it certified, does it have the safety feature I'm asking for. ## The attributes that actually gate sporting goods search Across the major sporting goods subcategories, a small set of attributes does almost all the filtering work. If they're blank, the product doesn't get excluded gently — it gets excluded silently, because most facet UIs (and every AI shopping agent) treat a missing attribute as a non-match rather than an unknown. | Subcategory | Required-to-be-findable attributes | Attributes shoppers ask AI about | |---|---|---| | Cycling helmets | head circumference range (cm), safety certification (`CPSC 1203`, `CE EN 1078`), helmet type (road, mountain, commuter, aero, full-face), weight (g) | MIPS or rotational-impact tech (yes/no), ventilation port count, visor included | | Running shoes | size range, gender fit, running surface (road, trail, track), drop (mm), cushioning level | stack height, width category, carbon plate (yes/no), pronation support | | Strength equipment | load weight, material (cast iron, rubber-coated, neoprene, chrome), unit type (single, pair, set) | grip diameter, adjustable weight range, knurling | | Tents / camping | capacity (person count), season rating, tent type (dome, tunnel, geodesic), packed weight | waterproof rating, vestibule count, floor area | This structure lines up with how commerce platforms are now formalizing the category — [Shopify's product taxonomy](https://www.shopify.com/blog/product-taxonomy) treats hard goods and soft goods within a sport as needing different attribute schemas, and taxonomy guides built specifically for sporting goods land on nearly this same attribute set for [cycling helmets, running shoes, strength equipment, and tents](https://wisepim.com/guides/product-categorization/sports). None of these are exotic fields. They're the fields that already exist in most manufacturer spec sheets. The gap is almost never "we don't know the answer" — it's that the data never got mapped from the spec sheet into a structured, filterable attribute. ## Worked example: a bike helmet, raw feed vs enriched Here's a typical raw PIM record for a mid-range road helmet, next to what an enriched version looks like. **Raw feed (as scraped from a supplier catalog):** | Field | Value | |---|---| | Title | Bell Helmet - Black | | Description | Lightweight road bike helmet with adjustable fit. Great for everyday riding. | | Category | Sporting Goods / Cycling | | Price | $129.99 | | Color | Black | **Enriched record:** | Attribute | Value | |---|---| | Title | Bell Falcon XR MIPS Road Bike Helmet | | Helmet type | Road | | Safety certification | `CPSC 1203`, `CE EN 1078` | | MIPS | Yes | | Head circumference range | 54-61 cm (M/L) | | Weight | 280 g | | Ventilation | 26 vents | | Visor | No | | Retention system | Dial-adjust, rear | | Color | Matte Black | | Price | $129.99 | The raw version isn't wrong, it's just untradeable — it can't answer "will this fit a 58cm head" or "is this MIPS." The enriched version can be matched against a filter, a size guide, and a shopper's exact question. ## Why this hits harder for AI shopping agents than for site search Faceted search on your own site fails soft: a shopper who doesn't find your helmet in the MIPS filter can still browse, scroll, or search by keyword. AI shopping agents fail hard. When a shopper asks an AI assistant to "recommend a MIPS road helmet under $150 for a 58cm head," the agent is pattern-matching against structured fields — certification, MIPS, size range, price — pulled straight from your feed. If those fields are blank, the agent has no basis to include your product, and it moves to the next retailer's feed instead. There's no scrolling past a missing attribute in a generated answer; the product is simply absent. Google has been formalizing this same connection. Merchant Center's 2026 rollout of [conversational and detail-level product attributes](https://ppc.land/8-google-merchant-center-attributes-your-feed-needs-for-ai-mode/) exists because AI Mode and Gemini need structured technical specs, not prose, to match a product to a conversational query. More complete structured attributes means more query patterns your product can match, in both facet UIs and AI answers. ## How to structure the attributes, not just collect them Collecting the right values only works if they're structured consistently: - Use enums, not free text, for anything a filter will run on — certification standard, helmet type, capacity, season rating. - Separate the boolean (MIPS: yes/no) from the descriptive text (a rotational-impact write-up), because agents and facets want the boolean, humans want the write-up. - Normalize units before they hit the feed — grams, not "light," cm ranges, not S/M/L alone, since a shopper or an agent asking for a 58cm fit needs the range attached to the size label, not just the label. - Keep certification and safety fields even where they aren't legally required on the page — the [CPSC bicycle helmet standard](https://www.cpsc.gov/Business--Manufacturing/Business-Education/Business-Guidance/Bicycle-Helmets) only mandates a label on the physical product, not a structured field in your catalog, and that gap between physical compliance and catalog data is exactly where products go missing from filtered search. Anglera plugs into whatever PIM or feed you already run and scores every sporting goods SKU against the attributes its subcategory actually needs — certification, MIPS, drop, capacity, and the rest — then gap-fills and normalizes them from the spec sheets and manuals you already have. It's additive to your existing system, not a replacement for it, so the enrichment shows up in the same catalog your team already manages. --- # How sporting goods shoppers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/sporting-goods-aeo Published: 2026-05-20 Industries: sporting-goods ![How sporting goods shoppers search now — and why your catalog isn't the answer](/og/hero-sporting-goods-aeo.jpg) A shopper training for a fall marathon doesn't open ten tabs anymore. They ask ChatGPT or Google's AI Mode one question — "what's a good stability running shoe for overpronators under $150" — and expect a shortlist with reasons attached. If your product pages don't answer that question in a format machines can parse, your shoes never make the list, no matter how good they are on the shelf. This is already showing up in the traffic numbers. ChatGPT hit [900 million weekly active users in February 2026](https://techcrunch.com/2026/02/27/chatgpt-reaches-900m-weekly-active-users/), roughly double where it was a year earlier, and shopping-style queries are a growing share of that usage. Google, Shopify, and a coalition that includes Target, Walmart, Etsy, and Wayfair have already launched a shared Universal Commerce Protocol so agents can browse and check out across retailers, while OpenAI and Stripe have their own competing Agentic Commerce Protocol — [the race to build agentic commerce](https://www.fastcompany.com/91533534/shop-til-you-bot-google-openai-and-the-race-to-build-agentic-commerce) is real and it's moving fast. Sporting goods, specifically, is one of the categories where this shift is landing hardest, because gear buying is naturally spec-driven — cushioning stack height, drop, weight, waterproof rating, flex pattern — and that's exactly the kind of detail conversational search is built to filter on. ## Why "detail-heavy" categories are ground zero Running shoes are a good proxy for the category's current momentum: running footwear grew [+8.9% year-over-year while lifestyle sneakers declined](https://www.yipitdata.com/resources/blog/corporate-footwear-market-trends-running-growth), with Hoka, On, and New Balance taking share on the strength of performance specs, not just style. That's a category where shoppers ask pointed comparison questions — stack height, drop, plate or no plate, wide-toe-box or standard — and an AI answer engine either has that data or it doesn't. Nearly a third of sporting goods purchases now begin or end in a digital moment — researched on a phone, compared against alternatives, then bought online or picked up in store. Increasingly, that research moment is a conversation, not a search-results page. If the AI can't cite your product's drop, weight, or width options, it recommends the competitor whose feed has them. ## The gap: your catalog was built for people, not agents Most sporting goods PDPs read fine to a human. A shopper can look at a photo of a trail running shoe and infer it's for trails. An AI agent can't infer anything — it reads whatever text and structured fields exist, and nothing else. Here's a realistic before/after for a trail running shoe listing: | Field | Raw feed (typical) | Enriched for AI + shoppers | |---|---|---| | Title | Men's Trail Shoe Sz 10 | Men's Trailrunner GTX Waterproof Trail Running Shoe | | Description | Great shoe for running | Waterproof trail running shoe with Vibram outsole, 8mm heel-to-toe drop, rock plate, for technical terrain up to 20 miles | | Terrain | (missing) | Trail, technical terrain | | Drop | (missing) | 8mm | | Waterproofing | (missing) | Gore-Tex membrane, waterproof | | Weight | (missing) | 10.6 oz (men's size 9) | | Width options | (missing) | Standard, Wide | | GTIN/UPC | (missing) | 8-digit valid GTIN present | | Return policy | Linked in footer only | Declared in product schema (30-day, free returns) | The right column isn't marketing copy — it's the set of discrete, machine-readable attributes an agent needs to decide whether this shoe answers a shopper's question at all. One mechanism matters more than most retailers realize: [GTIN is one of the strongest matching signals Google uses](https://www.paz.ai/guides/google-merchant-center-for-ai-mode) to cluster a product across retailers and pull it into AI Mode's comparison view. A missing, malformed, or reused GTIN doesn't just hurt SEO — it can drop a product out of the comparison set entirely, so an agent never even considers it against a competitor's cleats or hydration pack. Return policy is a second, less obvious one. AI shopping answers increasingly favor listings where `hasMerchantReturnPolicy` is explicitly declared in schema, because an agent trying to answer "can I return these if they don't fit" needs a structured answer, not a link to a policy page buried three clicks deep. ## What "machine-readable" actually looks like For a sporting goods catalog, agent-ready product content generally means: - **Schema.org Product and Offer markup** on every PDP — price, currency, availability, and GTIN as structured fields, not just visible text - **Attribute completeness by subcategory** — drop and stack height for running shoes, cleat pattern and turf compatibility for soccer boots, load capacity and frame material for packs, flex rating for skis - **A valid, unique GTIN or an explicit "no GTIN" flag** rather than a blank field, since agents and Merchant Center both treat blanks as a red flag - **Declared return and shipping terms** in structured data, not just footer copy - **Consistent pricing** between the feed, the schema on the page, and checkout — mismatches are one of the fastest ways to get an agent to demote or drop a listing Ask an AI right now: "recommend a waterproof trail running shoe with a rock plate for someone who overpronates, under $160." Watch which retailers show up. The ones that surface are, almost without exception, the ones whose product data already answers that exact question in a structured field — not the ones with the best shoe. That gap between what a catalog contains and what it can actually answer is the whole problem. Most sporting goods catalogs weren't built with terrain type, drop, or fit-width as required fields, because no one needed them to be until agents started reading feeds instead of pages. Anglera plugs into whatever PIM or commerce platform a retailer already runs — no rip-and-replace — and continuously scores, gap-fills, and enriches product content so attributes like drop, GTIN, and return terms are present, consistent, and structured the way AI shopping agents actually read them. Your PIM stores the data. Anglera does the work of making sure that data can answer the question a shopper — human or AI — is actually asking. --- # Server-side rendering on Optimizely Configured Commerce: making product data visible to Google and AI Source: https://www.anglera.com/blog/optimizely-ssr-rendering Published: 2026-05-20 Platforms: optimizely ![Server-side rendering on Optimizely Configured Commerce: making product data visible to Google and AI](/og/hero-optimizely-ssr-rendering.jpg) Optimizely Configured Commerce's modern storefront, Spire, is a React application that can render product pages either on the server or in the browser. For a distributor, the difference is not academic: if a product detail page's specs, attributes, and pricing only materialize after client-side JavaScript runs, search engines and AI answer engines may never see them. This guide covers how Spire's rendering pipeline works, where it commonly falls short for SEO, and exactly how to check what a crawler actually receives. ## How Spire renders a product page Spire replaced the older Classic (ASP.NET MVC/Handlebars) storefront as the current-generation front end for Configured Commerce 4.x/5.x. It's built on React with Redux for state, and Optimizely's own documentation is direct about the point of the work: Spire supports server-side rendering "to ensure search engine crawlers see the same content as users," so that a crawler that never executes JavaScript still gets a fully populated page rather than an empty shell. Mechanically, an incoming request runs through a Node.js SSR render loop that renders the React tree, lets Redux-connected components fire their data-loading logic, waits for the resulting promises to resolve, and re-renders — repeating until no new promises are created (Optimizely caps this at 10 iterations, logging or throwing if a component keeps triggering new fetches). The output is a fully populated HTML document sent to the browser, which then hydrates it into an interactive React app client-side. Two things make this different from a simple "SSR on/off" switch: 1. **SSR is not always on for every visitor.** By default, Configured Commerce sends the SSR-rendered HTML to requests it recognizes as web crawlers, based on the User-Agent header. Since release 5.2.2411, an "Enable Server-Side Rendering for All User Agents" option lets admins extend full SSR to every visitor rather than just known bots — useful if you also care about Core Web Vitals/LCP for real shoppers, not just crawlability. 2. **Not all React logic runs during SSR.** `useEffect` and `useLayoutEffect` do not execute on the server — only during client-side hydration. If a component's data-fetching or content logic lives in one of those hooks, that content simply will not exist in the HTML a crawler receives, even though it renders correctly in a live browser. Optimizely's own guidance is that logic required for SEO must live in `UNSAFE_componentWillMount` on a class component instead (or otherwise be handled outside the hook lifecycle). ## Where product data actually goes missing Configured Commerce gives admins three sub-settings that determine how much of a PDP the SSR pass waits for before returning HTML: - **Include the Catalog in the SSR Response** (waits for catalog/product-attribute APIs — default **Yes**) - **Include Real Time Pricing in SSR Response** (default **No**) - **Include Real Time Inventory in SSR Response** (default **No**) This is the most common source of "why isn't my product data in Google" tickets on this platform. If catalog data is included but pricing and inventory are not (the out-of-the-box default), that's usually fine — descriptions, attributes, specs, and identifiers render server-side, while price/stock defer to client hydration, which is a reasonable tradeoff since real-time price and inventory calls are typically per-user and slower. But if a custom widget was built to pull specs, use-case content, or attribute data through a real-time API call gated behind pricing or inventory logic (or behind a `useEffect`), that content silently drops out of the server HTML, even though a merchandiser looking at the live site in a browser sees it rendering just fine. AI crawlers make this worse than Googlebot does: Google's indexer will at least attempt a secondary JavaScript-rendering pass, on a rendering budget that isn't guaranteed and can lag by days. Most AI agents and LLM-based crawlers (ChatGPT's browsing, Perplexity, Claude's web fetch, and most third-party "AI visibility" scrapers) fetch the raw HTML response and do not execute JavaScript at all — so anything that depends on client-side rendering is invisible to them by default, full stop. ## Finding and setting the SSR toggles In the Admin Console, SSR configuration lives under **Administration → System → Settings**, in the settings group covering server-side rendering (search "Server Side Rendering" from the Settings landing page if the category tiles have been reorganized in your version — Configured Commerce groups Settings into a dashboard-style landing page with category tiles, and only shows settings relevant to your installed edition and role, so exact placement and visibility can shift between versions; the search box on that landing page is the most reliable way to find a setting by name). The toggles to check: ``` Enable Server Side Rendering → Yes Include the Catalog in the SSR Response → Yes Enable Server-Side Rendering for All User Agents → evaluate per Core Web Vitals goals (5.2.2411+) ``` Separately, structured data and crawler visibility for individual pages are configured on the **Websites → your website → SEO** tab (or the equivalent global defaults under Administration → Settings → Site Configurations) — this is where structured data and per-page crawler inclusion are turned on, and where canonical-link behavior for product pages is set. Optimizely's documentation notes that updating an SEO setting in one of these two locations reflects it in the other, since the website-level tab is a scoped view onto the same underlying configuration. A minimal example of what should land in the server HTML for a PDP: ```html ``` ## How to validate Don't trust what you see in a live browser tab — that's post-hydration DOM, not what a crawler fetched. Check the raw response instead: - **View-source vs. rendered DOM**: In Chrome, `Ctrl+U` / `Cmd+Option+U` (view-source:) shows the literal HTML the server sent, before hydration. Compare it against the regular Inspector/Elements panel (the live DOM after React hydrates). If specs, attributes, or price appear in Elements but not in view-source, that content is client-only. - **curl as a plain client**, no JS execution: ```bash curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \ https://www.example.com/products/pmp-4400-ss | grep -i "application/ld+json" -A 20 ``` Run it again with a generic browser User-Agent and diff the two responses — if Configured Commerce is set to serve SSR only to recognized crawlers, the bodies may differ until "Enable Server-Side Rendering for All User Agents" is turned on. - **Google's Rich Results Test / URL Inspection in Search Console**: paste the PDP URL and check the rendered HTML tab against the "page fetch" (raw) HTML tab — a mismatch on your Product schema or key attributes confirms a client-side-only dependency. - **Fetch with JavaScript disabled** (Chrome DevTools → Command Menu → "Disable JavaScript," then reload) to simulate how a non-executing crawler sees the page. Verified as of July 2026 against Optimizely's Configured Commerce developer documentation and Support Help Center articles; SSR-related setting names, defaults, and menu locations are version-dependent (notably the 5.2.2411 "all user agents" option and ongoing reorganization of the Settings landing page), so confirm exact placement against your instance's release notes before making changes. None of this matters if the underlying product data isn't there to render in the first place. Anglera plugs into your PIM or Configured Commerce catalog directly and continuously enriches products — attributes, specs, use-cases, identifiers — without displacing it as your system of record, so once your SSR pipeline is confirmed to pass catalog data through, there's substantive, structured content for it to put on the page. --- # MSC Industrial: The Founding Family That Chose to Let Go Source: https://www.anglera.com/blog/msc-industrial-distributor-playbook Published: 2026-05-20 Industries: mro-industrial ![MSC Industrial: The Founding Family That Chose to Let Go](/og/hero-msc-industrial-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* MSC Industrial Supply landed on four of Modern Distribution Management's [2026 Top Distributors](https://www.mdm.com/top_distributors) lists this year: #9 in Industrial Supply, #7 in MRO, #5 in Fasteners, and #9 in Safety, on $3.77 billion in fiscal 2025 revenue. Those rankings sit alongside branch-network giants with ten times MSC's location count. The company got there without ever trying to out-branch them, and its most interesting move in the last three years had nothing to do with product at all. ## From a trunk in Little Italy to a $2 billion metalworking house Sidney Jacobson started Sid Tool Co. in 1941 with $1,000 of his own money and $3,000 borrowed from his mother, selling cutting tools to Manhattan machine shops out of his car during the wartime supply crunch. The company incorporated in 1946, published its first "Big Book" catalog in 1964, and by 1969 had computerized its inventory system, an early move for an industrial distributor of that era, according to [MSC's own company timeline](https://www.mscdirect.com/corporate/company-timeline). It bought Manhattan Supply Company in 1970 and took the name MSC from the two firms' initials. Sid's son Mitchell Jacobson took over as president in 1982 and pushed the company through its defining growth phase: the 1995 IPO on the NYSE, a headquarters move to Melville, New York, and the 2006 purchase of J&L Industrial Supply from Kennametal for $349.5 million, a deal that roughly doubled MSC's metalworking catalog depth overnight, per [Wikipedia's account of the company's acquisition history](https://en.wikipedia.org/wiki/MSC_Industrial_Direct). Sid's grandson, Erik Gershwind, became president and CEO in 2013. Three generations, one family, in the chair for 72 straight years. ## Deep on metalworking, thin on branches, by design The instructive part of MSC's model is what it refused to build. Fastenal runs roughly 1,600 local branches and Grainger around 300. MSC operates a little over 40 locations nationwide, including five central distribution centers, leaning instead on catalog reach, next-day shipping (with an 8pm cutoff it added back in 2008), and a bench of metalworking specialists and application engineers who function more like technical consultants than order-takers. That depth in cutting tools and precision machining is the reason MSC shows up at #5 in Fasteners and #7 in MRO on the 2026 MDM list rather than trying to compete as a generalist against Grainger. That specialist posture is also why the company's recent strategic pivot, what it calls "Mission Critical," reads as a natural extension rather than a reinvention. Instead of chasing spot-buy transactions where price is the only variable, MSC has pushed hard into vending machines and in-plant programs embedded inside customer facilities, according to [MDM's reporting on the shift](https://www.mdm.com/company_article/behind-mscs-evolution-from-spot-buy-to-mission-critical-distributor/). Vending units alone grew from roughly 27,000 to nearly 29,600 in a single year, and embedded programs now account for around 40% of total sales. It is a bet that the way to defend margin against e-commerce price transparency is to make yourself physically inseparable from the customer's shop floor, not to win a race on SKU count. ## The unusual part: giving up the crown on purpose Here is the detail that does not show up on the About page. Public companies controlled by a founding family almost always keep that control through dual-class stock, and they keep it indefinitely. MSC had exactly that structure: Jacobson/Gershwind family Class B shares carried 10 votes each, giving the family roughly 66% of total voting power even as their economic ownership fell well below that. In 2023, the family proposed unwinding it. Under the agreement that followed, every Class B share converted into 1.225 Class A shares, and the family's voting power was capped at 15% going forward, with anything above that voted pro rata alongside every other shareholder, per [MSC's investor relations announcement](https://investor.mscdirect.com/2023-06-21-MSC-Industrial-Announces-Agreement-with-Jacobson-Gershwind-Family-to-Exchange-High-Vote-Stock-and-Eliminate-Dual-Class-Share-Structure) and the company's [SEC filing on the exchange](https://www.sec.gov/Archives/edgar/data/1003078/000110465923073176/tm2319189d1_ex99-1.htm). The family remains MSC's largest shareholder and keeps the right to nominate board seats, but it chose to trade permanent voting control for a cleaner shareholder register, years before it had to. That decision now looks like the first step in a longer handoff. Erik Gershwind is retiring as CEO effective January 1, 2026, moving to non-executive vice chair, and Martina McIsaac, currently president and CFO, is taking the top job. She is the first MSC chief executive in the company's 85-year history who is not a Jacobson. | Year | Event | |---|---| | 1941 | Sidney Jacobson founds Sid Tool Co. | | 1982 | Mitchell Jacobson becomes president | | 1995 | IPO on NYSE (MSM) | | 2006 | J&L Industrial Supply acquisition | | 2013 | Erik Gershwind becomes CEO | | 2023 | Dual-class share structure eliminated | | 2026 | Martina McIsaac becomes first non-family CEO | ## The tension worth watching A distributor built on technical trust, the kind that takes decades to earn with machine shops and manufacturing plants, is now testing whether that trust travels without a Jacobson in the corner office. MSC's answer so far has been to keep promoting from inside: McIsaac has been president and CFO, not an outside hire. It is a conservative way to make a radical change, and it fits a company whose biggest strategic moves, computerizing inventory in 1969, guaranteeing same-day shipping in 1991, giving up voting control in 2023, have consistently arrived a few years before the rest of the industry admits they are necessary. Distribution rewards whoever moves the boring stuff, tools, fasteners, safety gear, from a catalog page to a machine shop floor without a hiccup, and MSC's history is a reminder that the ownership structure behind that catalog can matter as much as what is in it. This is the fourth installment of Distributor Playbooks, a series on the operating logic behind the companies MDM ranks every year. --- # MRO & Industrial is being reranked by AI. Is your catalog readable? Source: https://www.anglera.com/blog/mro-industrial-aeo Published: 2026-05-20 Industries: mro-industrial ![MRO & Industrial is being reranked by AI. Is your catalog readable?](/og/hero-mro-industrial-aeo.jpg) A maintenance planner sourcing a replacement bearing for a conveyor motor doesn't start by opening your catalog anymore. He opens ChatGPT or Perplexity, describes the failure, and asks for a cross-reference and a source that can ship this week. If your product data can't answer that question in a form the model can parse, the engine routes around you and cites the distributor whose data made the match obvious. That shift is already visible in how manufacturers and distributors are rebuilding their product content — and it rewards a different kind of catalog than the ERP export most MRO lines still run on. ## Buyers are asking answer engines before they open your site This isn't a hypothetical. In June 2026, 3M launched [Ask 3M](https://news.3m.com/2026-06-22-3M-launches-Ask-3M,-an-AI-powered-tool-for-faster-access-to-technical-expertise), a conversational tool that answers technical product questions from "verified documentation and application knowledge across the company's 49 technology platforms" and then links the recommendation to authorized distributors. A buyer can now ask a manufacturer's own AI which adhesive bonds carbon fiber to aluminum, or how two tape SKUs differ, and get a specific answer before a distributor's site ever loads. Distributors are moving the same direction from the other side. Grainger — which carries roughly 2.5 million products and processes over 400,000 product changes a day — built a retrieval-augmented search system on Databricks specifically because buyers were typing incomplete, non-technical descriptions of the part they needed rather than exact part numbers ([Databricks customer story: Grainger](https://www.databricks.com/customers/grainger)). That's the same behavior showing up industry-wide: buyers describing a job or failure mode and expecting the system to find the matching SKU. For MRO and industrial parts, the stakes of getting that match wrong are higher than in most retail categories. A bearing, motor, or fastener is only a correct substitute if bore size, tolerance class, seal type, and load rating all line up with the application. That makes MRO one of the categories where an answer engine has the strongest reason to demand real attributes before it recommends a part — and one of the categories where "close enough" data does the most damage. ## Why a full catalog can still look empty to a model Most MRO product data was built for a counter clerk with a paper catalog and a part-number lookup, not for a language model. A typical feed row looks like this: **Raw ERP feed description (as-is):** > `BRG 6205 2RS C3 SKF DGBB` That string works fine if you already know bearing nomenclature. To a model — or a buyer who isn't a bearing engineer — it's close to opaque. The bore, seal type, internal clearance, and manufacturer are all compressed into a single token with no labels attached, so nothing in the string tells a retrieval system what job this part actually does. Enriched, the same SKU looks like this: | Attribute | Value | |---|---| | Product type | Deep groove ball bearing | | Bore diameter | `25 mm` | | Outside diameter | `52 mm` | | Width | `15 mm` | | Seal type | `2RS` (double rubber seal, contact) | | Internal clearance | `C3` (greater than standard) | | Manufacturer | `SKF` | | Typical application | Electric motors, conveyors, pumps — moderate speed, contaminated environments | | Max speed rating | `~9,000 RPM` (grease lubrication) | That's the difference between a code a warehouse system can pick against and a set of attributes a model can reason over. Once bore, clearance class, seal type, and speed rating are labeled fields instead of a compressed part-number string, a model can match "sealed bearing for a dusty conveyor motor, C3 clearance" to the SKU directly instead of guessing at what `2RS` and `C3` mean. ## Ask an answer engine: what this looks like in practice Here's a query a maintenance buyer would plausibly run today: > "My conveyor motor bearing is a 6205-2RS running at around 3,600 RPM in a dusty grain-handling environment. I want a C3 clearance replacement and I need it in stock this week — who carries it?" A model working through that query is matching on bore size, seal type, clearance class, speed rating, and environment — then checking availability. If your product page or feed encodes those as discrete attributes (in the visible page content and in `schema.org` `Product` / `additionalProperty` markup an AI crawler can actually parse), you're a plausible answer. Google's own guidance on [Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product) is explicit that richer, labeled product data is what lets systems surface specifics like these instead of a generic listing. If that information only lives in a scanned spec-sheet PDF or a compressed part number, the model has no reliable way to confirm fit, and it cites whichever competitor's data made the decision easy. ## What machine-readable actually requires None of this is exotic. It's the enrichment work MRO distributors already know they're behind on — it just now has a sharper reason to matter: - Split compressed part-number strings into discrete, labeled attributes (bore, OD, width, seal type, clearance class, load and speed ratings). - Standardize units and abbreviations so `2RS`, `C3`, and manufacturer-specific codes aren't ambiguous or missing. - Fill the gaps supplier feeds leave blank — load ratings, tolerance classes, and application notes are the fields most often dropped. - Keep it current as suppliers revise specs or discontinue lines, so the answer engine isn't citing a part that no longer exists. Manually, that kind of enrichment runs somewhere in the range of 30-45 minutes per SKU — pulling supplier documentation, normalizing units, filling gaps, verifying against the source. Across an MRO catalog with tens of thousands of active SKUs from dozens of manufacturers, that's not a project a data team clears before the next round of supplier updates makes it stale again. ## Where this fits for distributors Your ERP or PIM is still the system of record — Anglera doesn't replace it and it isn't a CRM add-on. Anglera plugs into whatever you already run (Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing at all — a flat file is enough to start) and continuously extracts, quality-scores, and gap-fills the attributes that turn a compressed part number into something an answer engine can match against a real query. Most distributors can get a meaningful subset of a catalog to that standard in 30 days or less, without a multi-year systems overhaul. As more MRO buying starts with a question to an AI instead of a search box, the distributors who show up in the answer are the ones whose data was already built to be read by one. --- # MRC Global: A Century of Roll-Ups Ends in Its Own Source: https://www.anglera.com/blog/mrc-global-distributor-playbook Published: 2026-05-20 Industries: oilfield-energy ![MRC Global: A Century of Roll-Ups Ends in Its Own](/og/hero-mrc-global-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* MRC Global spent a hundred years getting bigger by buying and merging with other pipe, valve, and fitting distributors. In November 2025, another distributor bought it. The Houston-based PVF specialist landed at No. 11 on Modern Distribution Management's [2025 Top Distributors list](https://www.mdm.com/top_distributors) for Industrial Supplies and No. 3 in Industrial PVF, on $3.0 billion in 2024 revenue. That ranking arrived just months before it stopped being an independent company at all, and MRC Global does not appear on MDM's 2026 lists. ## Two founders, one instinct The company's roots run through two separate businesses that never expected to become one. McJunkin Supply Co. opened in Charleston, West Virginia, on February 15, 1921, started by H.B. McJunkin and Bernard Wehrle, with a third partner, George Herscher, joining within three years. It built a century-long identity as the pipe house for Appalachian oil and gas country, according to [PHCP Pros' retrospective on the company's history](https://www.phcppros.com/articles/13311-how-a-century-of-moments-built-mrc-global). Red Man Pipe & Supply came from a very different direction. Lew Ketchum, a former chief of the Delaware tribe, opened it in Tulsa in March 1977 with little more than a $50,000 loan, building what [Supply House Times describes](https://www.supplyht.com/articles/90421-the-phenomenal-rise-of-red-man-pipe-supply) as the nation's only full-service, minority-owned oilfield supply company. Ronald Reagan honored Ketchum as Minority Entrepreneur of the Year at the White House in 1987. By the time Ketchum died in 1995, Red Man had grown to more than $250 million in annual sales across 38 branches. That founding story rarely makes it into industry shorthand about MRC Global, but it is a genuinely distinct origin for a Fortune 500-scale energy distributor: not a family dynasty or a corporate spinout, but a minority-owned Oklahoma startup that out-executed the market for two decades. ## The merger that made the powerhouse The two companies collided in 2007. Goldman Sachs Capital Partners had taken a stake in McJunkin the year before, and in July the two distributors announced what both sides called a merger of equals, creating McJunkin Red Man Corporation. The combination paired McJunkin's Appalachian and Gulf Coast pipe network with Red Man's downstream and production reach, giving the new company, in the phrasing of its own retrospective, the ability to serve a customer "from the oilfield to the market." MRC Global went public on the NYSE in April 2012, taking the ticker that became its permanent name. The next several years were about locking in scale: landmark global valve agreements with Shell, Chevron, and ExxonMobil, still in force today, a 2018 consolidation of four Houston-area operations into one complex in La Porte, Texas, and a 2019 e-commerce platform called MRCGO built to modernize a business that still runs on quote sheets and will-call counters as much as browsers. ## Diversifying away from the barrel The more interesting move came in how MRC Global reorganized what it sells. Rather than stay purely an oilfield house, it split its business into three lines: Gas Utilities, Production and Transmission Infrastructure, and a bucket it calls Downstream, Industrial and Energy Transition. That last category is a tell. A company built entirely on oil-price cyclicality spent the 2020s deliberately chasing the parts of the energy build-out least correlated with the rig count: utility pipe replacement, industrial plants, and energy-transition infrastructure like carbon capture and hydrogen projects. It is the same instinct that drove the 2007 merger, expressed a decade and a half later as portfolio management instead of M&A. ## The insight: a roll-up gets rolled up Here is the pattern worth naming directly. MRC Global's entire history is a story of merging to survive commodity cycles, first as two regional houses combining into a national one in 2007, then as a public company using acquisitions and contract wins to keep growing through oil busts in 2009, 2015, and 2020. In June 2025, DNOW Inc., another Houston-based, century-plus-old PVF distributor, announced it would acquire MRC Global in an all-stock deal worth roughly $1.5 billion. The deal closed on November 6, 2025. MRC Global's stock left the NYSE, and the company stopped filing with the SEC as an independent issuer, per [Valve World's coverage of the closing](https://valve-world.net/dnow-completes-mrc-global-acquisition-merger/). What makes this more than a routine buyout is the scale match. As [MDM's own coverage of the deal noted](https://www.mdm.com/news/top-distributor-sectors/facilities-maintenance-mro/dnow-to-buy-mrc-global-in-pvf-blockbuster/), MRC Global and DNOW ranked essentially back to back on both 2025 lists: 11 and 13 in Industrial Supplies, 3 and 4 in Industrial PVF. This wasn't a giant absorbing a footnote. It was two similarly sized, similarly aged energy distributors deciding that the gap to the sector's real giants was too wide to close alone. | Industrial PVF (MDM 2025) | 2024 revenue | |---|---| | Ferguson plc | $29.6B | | Core & Main | $7.4B | | MRC Global | $3.0B | | DNOW | $2.4B | The combined company now runs roughly 5,000 employees across more than 350 locations in over 20 countries, chasing $70 million in annual cost synergies within three years. MRC Global's own network, per its final annual filings, ran about 219 locations, 300,000 SKUs from 8,500 suppliers, and roughly 10,000 customers, a scale built specifically so it would never again be the smaller party in a deal like this one. It was anyway. The lesson for anyone building a distribution business on M&A is uncomfortable but plain: a roll-up strategy has no natural stopping point except getting rolled up yourself, and the only variable you control is whether you're the one holding the pen when it happens. MRC Global held the pen for a century. In its last year on the list, it didn't. Distribution's history is really a history of who controlled the catalog, the branch network, and the data that told a customer what was actually on the shelf. MRC Global's hundred years is one long chapter in that story, and its closing one. --- # Grocery & CPG is being reranked by AI shopping agents. Is your catalog readable? Source: https://www.anglera.com/blog/grocery-cpg-aeo Published: 2026-05-20 Industries: grocery-cpg ![Grocery & CPG is being reranked by AI shopping agents. Is your catalog readable?](/og/hero-grocery-cpg-aeo.jpg) Grocery shoppers are already asking AI for help before they open a retailer app. [FMI's January 2026 Grocery Shopper Snapshot](https://www.fmi.org/blog/view/fmi-blog/2026/01/29/from-smartphones-to-ai--how-shoppers-use-technology-to-feed-their-families) found 53% of shoppers have used AI tools for at least one food-related need, and 68% are aware of tools like ChatGPT. The question for retailers and CPG brands isn't whether AI answer engines matter for grocery yet — it's whether your catalog can actually answer the questions they're asking on your behalf. ## Shopping moved from search bars to answer engines The old grocery search flow was a shopper typing a query, scanning ten blue links or a shelf of thumbnails, and clicking through. That flow still exists, but it's no longer the only one. Google's AI Mode and Gemini can now research products and, on eligible retailers, complete a purchase. OpenAI has built comparative shopping research into ChatGPT. Both companies are pushing open agentic-commerce protocols (Google's UCP, OpenAI's ACP) specifically so an AI agent can query a retailer's catalog, compare options, and check out without a human clicking through every product page. Google Cloud's own framing for CPG brands calls this the ["invisible shelf"](https://cloud.google.com/transform/the-invisible-shelf-retail-cpg-agentic-commerce-how-to) — a layer of discovery that sits alongside the physical shelf and the traditional website, populated entirely by agents reading data, not people reading pages. That shift changes what "being found" means. A shopper browsing a shelf can forgive a vague label because they can pick up the box and read the back. An AI agent can't pick up the box. It can only work with what's in the feed. ## Thin data doesn't rank low — it disappears This is the part retailers underestimate. In classic SEO, a mediocre product page might still rank on page two. In agent-mediated shopping, a product with missing or ambiguous attributes often doesn't get evaluated at all — it's excluded from the candidate set before ranking even starts. Google's own guidance to CPG brands is blunt about the mechanism: if a product uses sustainable packaging but that fact isn't explicitly tagged and structured, an agent searching for "verified sustainable packaging" simply won't surface it, even if the claim is true and printed on the box. The same logic applies to allergens, pack size, dietary claims, and nutrition facts. An agent can't infer "probably nut-free" from a product photo. It needs the attribute, structured, in the record it can parse. Grocery and CPG catalogs are especially exposed here because the category runs on variants: the same base product multiplied across pack sizes, flavors, and formulations. When a size or flavor variant is missing its own GTIN, weight, or ingredient list — instead inheriting a vague parent-level description — an agent has no reliable way to tell a 6-pack from a 12-pack, or an original recipe from a "reduced sugar" line extension. Deloitte's research on CPG agentic commerce describes this as competing on an ["algorithmic shelf"](https://www.deloitte.com/us/en/industries/consumer/articles/agentic-commerce-in-cpg-algorithmic-shelf.html), where the data layer is now the shelf placement. ## What machine-readable grocery data actually looks like Machine-readable doesn't mean more marketing copy. It means specific, structured, verifiable attributes an agent can filter on, sitting in the underlying feed and (ideally) exposed as JSON-LD `Product` markup on the page — brand as a nested entity, GTIN, weight, and the category-specific facts that actually decide a grocery purchase: allergens, dietary claims, certifications, storage requirements, and nutrition-per-serving. Here's what that gap looks like on a real category — unsweetened oat milk, half gallon: | Attribute | Typical raw feed | Enriched record | |---|---|---| | Title | "Oat Milk 64oz" | "Unsweetened Oat Milk, Half Gallon (64 fl oz)" | | Allergens | (blank) | Contains: none listed; produced in a facility that processes tree nuts | | Dietary claims | (blank) | Dairy-free, vegan, non-GMO Project Verified | | Sugar per serving | (blank) | 0g added sugar per 8 fl oz | | Storage | (blank) | Refrigerated; shelf-stable variant available separately | | Pack size / GTIN | Shared parent GTIN across sizes | Distinct GTIN per pack size (half gallon vs. 32oz) | | Certifications | (blank) | USDA Organic, Gluten-Free Certified | The raw feed isn't wrong. It's just too thin to answer a real question. ## Ask an AI to recommend one, and watch what happens Try this the way an actual shopper would: ask ChatGPT or Gemini to "recommend an unsweetened oat milk that's shelf-stable, nut-free, and under 2 grams of sugar per serving." The agent isn't going to browse your category page. It's going to filter a set of products against exactly those three attributes — shelf-stability, nut-free status, sugar content — and only products carrying that data in a structured, trustworthy form make the shortlist. A product with a strong formulation but a blank allergen field and no shelf-stable/refrigerated distinction doesn't lose that comparison. It never enters it. ## Why most catalogs fail this test today It isn't a lack of effort. It's the mechanics of how CPG and grocery catalogs get built and maintained: - Attributes live at the parent level and get inherited (often wrongly) by every variant. - New pack sizes, formulations, and seasonal SKUs launch faster than anyone can manually re-tag them. - Nutrition, allergen, and certification data often sits in a supplier PDF or spec sheet, not in the commerce platform's structured fields. - Different retail partners want the same attributes in different formats, so brands maintain the "rich" version for one channel and a thinner version everywhere else. Structured data adoption is already a measurable factor in AI citation — research on AI-cited pages has found products with complete `Product` schema (price, availability, and attributes present) are more likely to be surfaced and cited by AI search tools, which is the mechanism-based version of the same point Google is making to CPG brands directly: the data is the new packaging, and it has to be structured before it can be read. ## Where Anglera fits Anglera doesn't ask you to move product data anywhere. It plugs into whatever PIM or commerce platform you already run — or none — and continuously scores each product record for the gaps that make it invisible to AI agents: missing allergens, absent certifications, inherited attributes that don't match the actual variant, thin nutrition data. It gap-fills and enriches those records in place, so the catalog a shopper browses and the catalog an AI agent reads are the same complete, accurate feed. Your PIM stores the data. Anglera does the work of making sure it's actually readable. --- # Getting datacom & networking products cited by ChatGPT, Perplexity, and AI Overviews Source: https://www.anglera.com/blog/datacom-networking-aeo Published: 2026-05-20 Industries: datacom-networking ![Getting datacom & networking products cited by ChatGPT, Perplexity, and AI Overviews](/og/hero-datacom-networking-aeo.jpg) A network engineer specifying a replacement transceiver for a switch upgrade doesn't start by browsing a distributor's category tree anymore. He opens ChatGPT or Perplexity and describes the job: form factor, data rate, reach, connector type, fiber mode. If your product page can't answer that in a format a model can extract cleanly, your SKU never enters the answer. A competitor's does. That's the new filter datacom and networking distributors are being run through, and most catalogs in this category were never built to pass it. ## Buying research has moved into the chat window This isn't a hypothetical for the category. Forrester's 2025 buyer research found generative AI is now the most-cited research method among B2B buyers, and a related 2025 buyer study put some form of LLM usage in the purchase journey at 94% of B2B buyers ([Creatuity, AI in B2B Commerce Statistics 2026](https://www.creatuity.com/insights/ai-in-b2b-commerce-statistics-2026/)). Separate tracking shows GenAI chatbots have become the single most influential source for building vendor shortlists, ahead of review sites, vendor websites, and peer recommendations ([6sense, How GenAI and LLMs Are Changing B2B Buyer Research](https://6sense.com/guides/how-genai-and-llms-are-changing-b2b-buyer-research-and-how-to-respond/)). Google AI Overviews now appear across a majority of search results, and Gartner has projected a real decline in traditional organic search volume as chatbots and AI agents absorb queries that used to land on a search results page ([ALM Corp, Answer Engine Optimization 2026](https://almcorp.com/blog/answer-engine-optimization-2026/)). Datacom and networking is a highly spec-driven category — transceivers, patch panels, switches, media converters — which is exactly the kind of research an answer engine is built to shortcut. The buyer isn't asking "what brands sell fiber transceivers." He's asking for the part that meets a spec, and he wants one answer with a name attached. An answer engine doesn't reward a category page. It rewards a catalog it can quote without guessing. ## Why a full warehouse looks empty to an LLM Most datacom product data was built for an ERP system and a counter sale, not a language model. A typical feed row looks like this: **Raw ERP feed description (as-is):** > `SFP+ TRANSCEIVER 10G SR MMF LC DUP CISCO COMPAT` A person who already knows the SKU can decode that. A language model deciding whether to cite this product against three other listings has almost nothing solid to anchor on: no confirmed data rate range, no verified reach in meters, no fiber type spelled out, no clear compatibility claim it can trust versus a marketing string. Datacom catalogs compound the problem at the source — the same physical part often ships under a manufacturer part number, an OEM-compatible part number, and a distributor's own SKU, with connector type, wavelength, and reach frequently missing or inconsistent across those variants ([Distributor Data Solutions, Product Data Platform](https://www.distributordatasolutions.com/)). Firmware and hardware revisions also change compatibility claims over time, and feeds rarely get updated when they do. Faced with that ambiguity, an LLM does the safe thing: it skips the product, or it hedges the citation so heavily that it isn't really a recommendation. ## What machine-readable actually looks like Enriched, the same part reads like this: | Attribute | Value | |---|---| | Product type | `SFP+` transceiver | | Data rate | `10 Gbps` | | Fiber type | Multimode (`MMF`) | | Wavelength | `850nm` (`SR`) | | Max reach | `300m` over `OM3`, `400m` over `OM4` | | Connector | `LC` duplex | | Compatibility | Verified against source documentation, Cisco-compatible | | Digital diagnostics | Supported (`DDM`) | | Source | Extracted from manufacturer spec sheet, quality-scored | That table isn't decoration. It's the raw material a `Product` and `Offer` schema markup block gets built from, and structured data is the mechanism Google itself points to for helping search and AI systems understand product pages accurately, down to attribute-level detail beyond price and availability ([Google Search Central, Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product)). ChatGPT has separately confirmed it uses structured data to help determine which products it surfaces, and one 2025 study found schema-marked pages saw roughly a 2.5x higher chance of appearing in AI-generated answers than unmarked pages ([Averi, Schema Markup for AI Citations](https://www.averi.ai/blog/schema-markup-for-ai-citations-the-technical-implementation-guide)). That said, markup alone doesn't rescue thin content — it clarifies what's already there; the underlying attributes still have to be correct and complete ([ALM Corp, Answer Engine Optimization 2026](https://almcorp.com/blog/answer-engine-optimization-2026/)). **Ask an answer engine:** *"What 10G SFP+ transceiver works with a Cisco Catalyst switch over 300 meters of OM3 multimode fiber, and who has it in stock?"* If your catalog has verified data rate, fiber type, reach, and connector type sitting in structured attributes, an answer engine can match that query field by field and cite your listing with a specific part number. If that same information is buried in an abbreviated string only a network engineer who already knows the part can parse, the model has no defensible basis to recommend you over a competitor whose page already states the spec plainly. ## The gap is a data problem, not a content problem Distributors in this category don't lack products or spec sheets. They lack product data structured well enough for a machine to trust on its own. A full PIM migration is a legitimate option for some, but it's a multi-year, multi-team undertaking most distributors can't justify to solve a search-visibility problem. The more direct fix is treating enrichment as its own layer: pull the raw feed as-is (even from a flat file), extract and verify attributes against manufacturer source documentation, quality-score each field, and push the result back out as structured data that your site, your PIM or ERP, and your answer-engine visibility all draw from — without ripping out anything you already run. ## Where this is heading The datacom and networking distributors who get cited in AI answers over the next few years won't be the ones with the broadest catalog. They'll be the ones whose data is legible enough for a system that has to decide, in one pass, whether a transceiver or a patch panel fits the spec it was asked about. Anglera's enrichment layer plugs into whatever you already run — Akeneo, Salsify, inriver, a flat file, or nothing at all — and turns thin ERP-style rows into verified, structured, quality-scored product data in weeks rather than a multi-year systems project, so legibility to both buyers and answer engines becomes a byproduct of how the catalog is maintained, not a separate initiative bolted on after the fact. --- # The real cost of incomplete product data Source: https://www.anglera.com/blog/cost-of-incomplete-product-data Published: 2026-05-20 ![The real cost of incomplete product data](/og/hero-cost-of-incomplete-product-data.jpg) Most catalogs aren't missing everything. They're missing 20-40% of the attributes that decide whether a SKU gets found, trusted, and bought — a spec here, a compatibility note there, a material or dimension field left blank because nobody had it at launch. That gap looks small in a PIM completeness report. It is not small on the P&L. Here's how to trace it from missing field to lost dollar — and how to measure it going forward. ## The gap isn't random, and that's the problem If missing attributes were spread evenly across your catalog, the damage would be diffuse and hard to argue about. They're not. Gaps cluster on the SKUs that need the most explanation: new items, private label, long-tail variants, anything sourced from a supplier feed instead of built in-house. Those are exactly the SKUs where a buyer has a real question — fit, compatibility, install, material, certification — and finds no answer on the page. Baymard Institute's research on product page content found that a meaningful share of major ecommerce sites fail to consistently meet shoppers' informational needs. When descriptions fall short, shoppers don't just skip the item — they make incorrect assumptions about it, which shows up later as [unnecessary returns](https://baymard.com/blog/product-descriptions). The gap doesn't cost you once, at the point of missed sale. It compounds a second time, when the silence gets mistaken for an answer. ## Where the missing 20-40% actually shows up Trace an incomplete SKU through the funnel and the cost model writes itself: - **Search visibility.** On-site search and filters run on structured attributes. A SKU missing the values shoppers filter by (size, material, compatibility, use case) doesn't rank lower — it's often excluded from the result set entirely. Invisible to anyone using a filter, which is most serious buyers. - **Syndication and marketplace feeds.** Amazon, Google Merchant Center, and most marketplace and retail-media feeds reject or suppress listings that are missing required attributes. A gap that's invisible in your own PIM becomes a hard block the moment you push that SKU to a channel with stricter requirements. - **PDP conversion.** Shoppers researching a purchase dig past page one: [41% look through page three of search results and 26% go as far as page five](https://www.salsify.com/blog/shoppers-look-past-page-one-of-ecommerce-search-results) rather than settle for a listing that doesn't answer their question. No field, no answer — they find a competitor's PDP that has both. - **Support tickets.** Every attribute a buyer can't find on the page becomes a question for a human instead — pre-sale chat, phone, a "does this fit" email. Marginal cost per SKU that a complete PDP would've absorbed for free. - **Returns.** Missing or wrong attributes don't just lose the sale — they lose it after fulfillment. Salsify's 2025 consumer research found [71% of shoppers have made a return because a product didn't match its online listing](https://www.salsify.com/resources/report/2025-consumer-research), and named inconsistent or incomplete content a top reason shoppers abandon a purchase in the first place. - **Trust, compounding.** Baymard's research also notes that shoppers who hit more than one weak product page start assuming the whole catalog is unreliable — and shop elsewhere. The cost isn't per-SKU. It's per-visit. ## A simple cost model You don't need perfect data to build a directional model. You need a completeness score, a way to segment SKUs by it, and clean data on what happens downstream. Here's the shape of it: | Completeness tier | What's typically missing | Effect on demand captured | |---|---|---| | 90-100% | Nothing decision-critical | Full addressable demand: indexed, filterable, syndication-eligible, converts at category benchmark | | 70-89% | Secondary specs, some facet values | Found via broad search, dropped from narrower facet/filter results; converts below benchmark | | 50-69% | Compatibility, fit, or use-case attributes | Found but stalls at the decision point; higher pre-sale ticket rate, elevated post-purchase returns | | Below 50% | Required marketplace/GTIN-level fields | Suppressed or rejected from key channels; demand never reaches the PDP at all | To put a number on a tier, run math retailers already have on hand: PDP sessions for that tier × (benchmark conversion rate − actual conversion rate) × average order value = leaked revenue. Then add return-processing cost for returns attributable to a "didn't match listing" reason code, plus support cost per ticket × tickets driven by missing-attribute questions. Global ecommerce conversion sits in the [1.8-3% range depending on category and source](https://www.smartinsights.com/ecommerce/ecommerce-analytics/ecommerce-conversion-rates/) — that's your benchmark line. The gap between it and your low-completeness tier's actual rate is the number finance cares about. ## How to actually measure it | Metric | What it shows | Where to measure it | |---|---|---| | PDP conversion by completeness score | Whether missing attributes are suppressing conversion, not just aesthetics | Analytics platform, segmented by a completeness field pulled from the PIM or enrichment layer | | Filtered-out SKU rate | Products excluded from on-site facet results due to missing attribute values | On-site search/facet logs, or a query against required-attribute coverage | | Syndication rejection rate | SKUs blocked or flagged by marketplace/channel feeds | Marketplace seller console error reports, feed validation logs | | Return reason codes tied to content | Returns caused by incorrect expectations, not product defects | Returns platform reason-code taxonomy, filtered to "not as described"/"didn't fit" categories | | Support tickets tagged "missing info" | Cost of unanswered questions on the page | Helpdesk tagging, cross-referenced to product/SKU | The tag discipline is the hard part. Most returns platforms and helpdesks already capture the data — almost nobody tags it back to a specific missing attribute. That link is what turns "we think our data is bad" into a defensible cost figure. ## Where this connects to enrichment None of this requires a new source of truth. It requires closing the gap in the one you already have. Anglera plugs into whatever PIM you run — or none — and works from the supplier docs and source data you already have, scoring completeness and filling in the attributes that are actually missing, not guessing at them. Most teams see a measurable lift in completeness within 30 days. No rip-and-replace project required. The cost model above doesn't move because a vendor says so. It moves when the missing 20-40% gets filled with values that are extracted and checked — not invented. --- # Category taxonomy that scales: attribute schemas buyers can filter Source: https://www.anglera.com/blog/category-taxonomy-that-scales Published: 2026-05-20 ![Category taxonomy that scales: attribute schemas buyers can filter](/og/hero-category-taxonomy-that-scales.jpg) Most category trees work fine at launch and fall apart at scale. The tenth supplier feed introduces a fourth spelling of "stainless steel," a fifth version of "valve," and a filter panel that used to have 8 clean options now has 40 near-duplicates. This is a design and governance problem, not a UI problem, and it shows up first in the filter panel because that's where inconsistent data becomes visible to a buyer. ## Why the tree breaks as SKU count grows A category tree is really two structures wearing one name: a navigation tree (how buyers click through the site) and an attribute schema (what's actually true about each product, per category). Distributors usually design the navigation tree first, in a spreadsheet, before they have SKUs in every leaf. Then suppliers arrive with their own category logic, attribute names, and units, and every new feed either gets force-fit into the existing tree or spawns a duplicate leaf. The failure mode is consistent: a category that should have one clean set of filterable attributes ends up with several. One supplier calls it "voltage," another "operating voltage," another "input voltage (v)." A faceted search engine treats those as three different attributes, so the filter either shows three noisy options or drops two of them silently. [Search Engine Land's faceted navigation guide](https://searchengineland.com/guide/faceted-navigation) frames the scale of it well: a store with 10,000 products and 50 filter options can generate over 100 million URL combinations, most of them near-duplicate pages that dilute crawl budget and buyer trust alike. The root cause upstream of that SEO problem is the same one that breaks the UX: attribute values were never normalized before they hit the page. ## Map the tree to a standard, then let it flex The fix isn't to invent a taxonomy from scratch. GS1's Global Product Classification (GPC) already defines roughly 40,000 categories across four levels, Segment, Family, Class, down to Brick, specifically so trading partners can agree on what a product *is* before they argue about what attributes it needs. [GS1's documentation](https://www.gs1.org/standards/gpc/how-gpc-works) is explicit that each Brick carries its own Brick Attributes, so "coffee, instant" and "coffee, ground" don't inherit the same filter set even one level apart. For a distributor or marketplace, the practical move is: - Map your navigation tree's leaf categories to GPC Bricks (or UNSPSC, if that's your industry's convention), even if your customer-facing category names stay simpler and more brand-appropriate. - Treat the Brick, not your internal category name, as the anchor for attribute schema decisions. Suppliers change; your mapping to a shared external standard doesn't have to. - Keep the customer-facing tree shallower than the classification standard. Buyers don't need four levels of GPC hierarchy in the URL bar; they need three or four clicks to a filterable result set. This mapping is also what makes AI answer engines legible. An engine answering "which stainless 3-way ball valves handle 400 PSI" needs the category, the material, and the pressure rating to co-occur cleanly on one page — and that only happens if the Brick-to-attribute mapping was done once, correctly, upstream. ## Attribute schemas that actually survive real supplier data Not every attribute deserves a filter. The test that holds up at scale: would a meaningful share of buyers narrow their result set with this value, and can you guarantee that value is populated and normalized across every SKU in the category. If either answer is no, it's a spec-sheet attribute, not a facet. | Attribute type | Example (industrial valves) | Belongs in filter panel? | |---|---|---| | Category-defining | Valve type (ball, gate, check) | Yes — always populated, high buyer intent | | Spec, high-coverage | Pressure rating, port size, material | Yes — if normalized to one unit/format | | Spec, low-coverage | Actuator torque | No — spec table only, coverage too spotty to filter reliably | | Marketing copy | "Industrial-grade durability" | No — not structured, not comparable across SKUs | | Free-text supplier field | "Body: SS304, 3pc design" | No — source for extraction, not a filter itself | A raw supplier feed for a ball valve typically looks like this: > "3 PC BALL VALVE SS304 THREADED NPT 1IN 1000WOG FULL PORT" That string is real information, but it's not filterable. Enriched into a schema, the same SKU becomes: | Attribute | Value | |---|---| | Valve Type | Ball valve, 3-piece body | | Material | Stainless steel 304 | | Connection | Threaded, NPT | | Port Size | 1 in | | Pressure Rating | 1000 WOG (cold non-shock) | | Port Style | Full port | Once every SKU in the Brick is normalized to that same attribute set and unit convention, the filter panel works, and it keeps working at 500 SKUs or 50,000, because the schema was designed at the Brick level rather than per feed. Ask an answer engine "1 inch full port ball valve rated for 1000 WOG in stainless steel" and it can only surface a distributor's page if pressure rating, port size, and material are all structured and consistent on that page — not buried in a title string. ## Governance is the part that actually decides whether this holds A taxonomy and schema are a one-time design exercise. Keeping them filterable as SKU count grows is an ongoing governance function, and most distributors skip it: - **Own the Brick-to-category mapping centrally.** New suppliers get mapped into the existing tree by one team, not left to auto-categorize into whatever new leaf a feed implies. - **Freeze attribute names and units per Brick.** "Voltage" is always "Voltage," always in volts, regardless of what the tenth supplier calls it in their feed. - **Score coverage per attribute, not just per SKU.** A category isn't ready to expose a filter until a defined threshold of SKUs in that Brick actually carry a normalized value. - **Review new leaf-category requests against the standard**, not against whatever a merchandiser wants to call something this quarter. None of this requires ripping out the PIM or catalog system already in place — it requires a layer that continuously extracts, normalizes, and quality-scores attribute values against a defined schema before they reach the storefront. That's the specific work Anglera does: it plugs into whatever PIM a distributor already runs, or starts from a flat file with none, and gets a category's attributes enriched and normalized to a schema like this in weeks rather than a multi-year integration. The taxonomy is a strategy decision; keeping every new SKU honest to it is the operational one, and that's what actually decides whether the filter panel still works at 10x the SKU count. --- # What messy product data actually costs Appliances retailers Source: https://www.anglera.com/blog/appliances-state Published: 2026-05-20 Industries: appliances ![What messy product data actually costs Appliances retailers](/og/hero-appliances-state.jpg) Appliances still sell mostly in showrooms, but the research happens online, and that research runs on product data most retailers haven't touched since the SKU launched. Decibel ratings, install clearances, panel-ready specs, and capacity figures sit buried in a PDF spec sheet while the live product page says "Stainless Steel Dishwasher" and little else. That gap is now showing up in search rankings, conversion rates, and return logs — and it's about to matter more, not less. ## The category has an unusually heavy data burden Appliances carry more decision-critical attributes than almost any other retail category: dimensions down to the eighth of an inch, venting and hookup requirements, noise levels, capacity, energy certification, control placement, and installation type (freestanding, slide-in, built-in, panel-ready). Miss one and the shopper either can't tell if the unit fits their kitchen or finds out after delivery that it doesn't. Online is still a minority of appliance transactions — 26.4% in Q4 2025, up only half a point from Q3, with in-store holding 73.6% of the category, according to [OpenBrand's market share tracking](https://openbrand.com/newsroom/blog/us-major-appliance-industry-market-share-trends-rankings-infographic). But that same data shows product selection as the second-highest purchase driver, at 35%, trailing only price at 52%. Shoppers are comparing assortments online even when they buy in a showroom, and an incomplete listing loses that comparison before a salesperson ever gets involved. ## What thin data actually costs Three failure modes show up over and over in appliance catalogs: - **Lost search and filter visibility.** A shopper filters for "panel-ready, 24-inch, quiet under 45 dB" and a unit that qualifies never shows up because the decibel and install-type fields are blank or buried in a description string instead of structured attributes. - **Conversion drag.** Buyers comparing three dishwashers open the one with a complete spec table and abandon the one with a single paragraph, even at a similar price, because incompleteness reads as risk on a $700-plus purchase. - **Returns and cancelled deliveries.** Size and fit problems remain among the most common return reasons in retail generally — 42% of shoppers cite fit issues on their last return, per [Narvar's returns research](https://corp.narvar.com/blog/common-reasons-for-retail-returns) — and appliances turn a "wrong size" mistake into a truck roll, a restocking fee, and a kitchen that's now missing a dishwasher for two weeks. Here's what that gap typically looks like on a real listing, before and after the data gets filled in: | Attribute | Raw feed | Enriched | |---|---|---| | Title | Stainless Steel Dishwasher | 24" Panel-Ready Built-In Dishwasher, Top Control | | Capacity | — | 16 place settings, 3rd rack | | Noise level | — | 44 dBA | | Installation type | — | Built-in, under-counter | | ADA compliant | — | Yes | | Energy certification | — | ENERGY STAR certified | | Depth (with door open 90°) | — | 47.5 in | | Control location | — | Top control, hidden | The left column is what a lot of appliance PDPs still ship with. The right column is what a shopper filtering for "quiet, panel-ready, ADA" needs to find the product at all — and what an AI shopping tool needs to recommend it. ## Why 2025-2026 raises the stakes Two things changed the math on appliance data quality this cycle. First, marketplace assortment pressure. Retailers are increasingly leaning on marketplace models to offer A-to-Z appliance selection without holding all the inventory themselves, which means more third-party feeds, more inconsistent attribute naming, and more listings that never got normalized against a house schema. Second, and bigger: AI shopping agents don't read marketing copy, they read structured fields. Shopify has reported that AI-driven traffic to its stores grew roughly 7x since January 2025, with AI-attributed orders up around 11x over the same period, and that searches routed through a structured product catalog convert at roughly double the rate of searches relying on scraped, unstructured data, according to [reporting on Shopify's agentic commerce rollout](https://www.digitalapplied.com/blog/ai-agentic-commerce-discover-in-ai-buy-on-site-2026). The same reporting notes that stock status, delivery timing, and shipping costs quoted from scraped pages were frequently stale by the time an agent surfaced them to a shopper — exactly the kind of attribute-level rot that piles up in appliance catalogs faster than almost anywhere else, given how many install and clearance details there are to get wrong. Try it yourself: ask an AI shopping assistant to "recommend a quiet, panel-ready 24-inch dishwasher under $900 for a small kitchen." Watch which brands and retailers show up — and which get skipped because their feed never specified decibel level or install type in a field the agent could actually parse. The units get skipped, not because they're worse, but because they're unreadable. ## The fix isn't a bigger content team Appliance catalogs don't need more marketing copy. They need every SKU's install requirements, capacity, noise rating, certifications, and dimensions filled in, standardized, and kept current as models get revised and discontinued — across however many PDFs, supplier feeds, and marketplace listings a retailer's assortment actually spans. That's a maintenance problem, not a one-time cleanup, because appliance lines refresh model years and specs shift in ways a static content push can't keep up with. Your PIM stores the data; Anglera does the work of finding what's missing, gap-filling it from manufacturer sources, and keeping it consistent across every channel and every AI agent that touches your catalog. It plugs into whatever system you already run — no rip-and-replace, no new platform to learn. The result is appliance listings that are complete enough to win a filter, a comparison, and an AI recommendation, not just a scroll-past. --- # A retailer's guide to dimension, capacity, and feature data in appliances Source: https://www.anglera.com/blog/appliances-guide Published: 2026-05-20 Industries: appliances ![A retailer's guide to dimension, capacity, and feature data in appliances](/og/hero-appliances-guide.jpg) A French door refrigerator is a two-person delivery, a torn-out door frame if it doesn't fit, and a $2,500 decision made from a phone screen. Shoppers can't open the doors or run a tape measure through the checkout flow, so the product page has to do that work for them. Most appliance listings still don't. ## What a refrigerator shopper actually needs answered Before a shopper adds a French door refrigerator to cart, they're quietly trying to answer questions that have nothing to do with color or brand: - Will it fit through my front door, my hallway, and the doorway into the kitchen? - Will it fit in the cutout between my cabinets, and does the door need clearance to swing open? - Is this counter-depth or standard-depth, and how far will it stick out past my counters? - How much usable capacity is there, and does that number account for shelves, bins, and the ice maker? - Does it need a water line, and where does the connection sit on the back panel? - Is the icemaker left-hinge or right-hinge, and can the doors be reversed? Standard French door refrigerators run roughly 30 to 36 inches wide, 29 to 35 inches deep, and 67 to 70 inches tall, while counter-depth models sit around 24 to 25 inches deep so they sit flush with cabinets instead of jutting into the walkway, according to [Whirlpool's sizing guide](https://www.whirlpool.com/blog/kitchen/french-door-refrigerator-sizes.html). That six-to-ten-inch depth difference is the whole ballgame for a lot of kitchens, and it's exactly the kind of attribute that gets flattened into one vague "dimensions" field on too many product pages. ## Where the feed breaks down Here's what a typical manufacturer feed hands a retailer for a 25 cu ft French door refrigerator, next to what the shopper actually needs to see on the page: | Attribute | Raw feed | Enriched listing | |---|---|---| | Dimensions | `35.75 x 34.5 x 70` | Width 35.75 in, depth 34.5 in (36.25 in with door open 90°), height 70 in (69.5–70.5 in with adjustable rollers) | | Depth type | (missing) | Standard-depth — extends about 3 in past most cabinets | | Capacity | `25 cu ft` | 25 cu ft total: 17.5 cu ft fresh food, 7.5 cu ft freezer, door bins and deli drawer included | | Door swing | (missing) | Reversible doors, 22 in clearance needed to open bins fully | | Water/ice | `icemaker: Y` | Requires 1/4 in water line hookup; icemaker produces up to 4 lb of ice per day | | Doorway fit | (missing) | Case depth (doors removed) 29 in — passes standard 30 in interior doorways | Every row in the "missing" column is a return waiting to happen, or a sale that quietly dies at the measuring-tape stage before the shopper ever reaches checkout. ## The returns math retailers already know Fit and sizing issues are the single biggest driver of e-commerce returns, responsible for roughly 45% of them across categories, per [Return Prime's 2025 e-commerce return data](https://www.returnprime.com/blog/e-commerce-return-trends). Items not matching their description account for another 22 to 31% of returns industry-wide, according to the same analysis. Appliances make that worse than average, because a mis-measured refrigerator isn't a $30 return-label problem — it's a two-person truck, a restocking fee, a torn-out cabinet, and in some cases a doorway or stairwell that simply won't accommodate the unit at all, a scenario appliance delivery teams describe as [one of the most common causes of failed deliveries](https://www.aztecappliance.com/blog/properly-measure-for-new-appliances). That failure mode almost never shows up as a "return reason: wrong size" line item, because the box never technically shipped wrong — the data on the page just wasn't complete enough for the shopper to self-select correctly. It shows up instead as a cancelled order, a rescheduled delivery fee, or a one-star review about "inaccurate dimensions," none of which get traced back to the missing case-depth attribute that caused it. ## The AI-shopping test Increasingly, that shopper isn't scrolling your PDP at all — they're asking ChatGPT or Google's AI Mode to "recommend a counter-depth French door refrigerator with an ice maker that fits a 30-inch doorway." An AI agent answering that query needs case depth, door-open clearance, and doorway compatibility as structured, queryable attributes, not buried in a PDF spec sheet or a paragraph of marketing copy. A listing with a single blended "dimensions" string and no depth-type flag simply won't surface for that query, no matter how good the product is. ## A dimension, capacity, and feature checklist Run every appliance listing against this before it goes live: 1. **Three dimensions, not one string** — width, depth, and height as separate fields, plus door-open depth. 2. **Depth type called out explicitly** — counter-depth vs. standard-depth, not just implied by the number. 3. **Capacity broken down** — total cu ft, plus fresh food and freezer split where applicable. 4. **Doorway/case depth for delivery** — the crated or door-removed dimension that determines whether it clears a standard interior doorway. 5. **Hookups and hinge behavior** — water line requirements, door reversibility, and clearance needed to open drawers and bins fully. 6. **ENERGY STAR and energy-use data** where it applies, since it's now a routine filter shoppers and comparison engines both use. Anglera runs this checklist against a retailer's live catalog automatically, flagging appliance listings with missing depth type, blended dimension fields, or absent capacity breakdowns, then filling the gaps from verified spec data. It plugs into whatever PIM or feed a retailer already runs — no rip-and-replace — so the fix shows up on the page without a re-platforming project attached to it. --- # Rendering pitfalls that hide product data from crawlers and agents Source: https://www.anglera.com/blog/rendering-pitfalls-hide-product-data Published: 2026-05-19 ![Rendering pitfalls that hide product data from crawlers and agents](/og/hero-rendering-pitfalls-hide-product-data.jpg) Enriching a product page is only half the job. If the specs, use-cases, and identifiers you've populated never make it into the HTML a crawler or AI agent receives, none of that work gets read. Googlebot renders JavaScript before indexing, but most AI crawlers and answer engines fetch raw HTML and stop there — so a page that "looks fine" in a browser can be functionally empty to the systems deciding what gets cited or ranked. Below are five common ways product data goes missing between the database and the DOM, how to catch each one, and how to fix it without a platform rewrite. ## Why this matters more for AI agents than for Google Googlebot processes pages in three phases — crawl, render, index — using an evergreen headless Chromium, so it eventually executes your JavaScript ([Google's JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)). AI crawlers generally don't get that far. Independent traffic analyses of GPTBot and ClaudeBot consistently find them issuing plain HTTP requests and parsing whatever HTML comes back, without executing scripts. Anthropic separately documents ClaudeBot as one of three distinct crawlers it operates, alongside Claude-User and Claude-SearchBot ([Claude Help Center: does Anthropic crawl the web](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)). A rendering gap that costs a Google impression today can cost an AI Overview or a chat citation entirely — there's no rendering step to close the gap later. ## Pitfall 1: Client-only rendering (empty initial HTML) **The problem.** In a fully client-side-rendered (CSR) app, the server returns a near-empty HTML shell, and the product title, price, specs, and description only appear after JavaScript bundles download and execute. Any crawler that doesn't run JS sees nothing but the shell. **How to detect it.** ```bash curl -s https://example.com/products/widget-100 | grep -i "widget-100" ``` If the product name, SKU, or price aren't in that raw response, they only exist post-render. You can also compare view-source against the rendered DOM in DevTools — a large gap between the two is the signature of CSR. **The fix.** Move to server-side rendering (SSR), static generation, or hybrid rendering so the initial HTML already contains title, price, availability, key specs, and identifiers (GTIN/MPN), with JavaScript layered on top for interactivity. Google now recommends SSR, static rendering, or hydration over client-only rendering, and treats "dynamic rendering" (serving crawlers a separate pre-rendered copy) as a deprecated workaround — it adds a second code path and does nothing for non-rendering AI crawlers ([Google: dynamic rendering as a workaround](https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering)). ## Pitfall 2: Lazy-loaded specs and images that never fire for crawlers **The problem.** Lazy loading helps page speed, but common implementations trigger on scroll events. Googlebot doesn't scroll like a user — it simulates a tall viewport and never fires scroll events — so scroll-triggered lazy loading can leave specs, tables, or images unloaded in the rendered DOM. Non-rendering AI crawlers never trigger any of it, since they don't execute the loading script at all. **How to detect it.** In Chrome DevTools, throttle or disable JavaScript and reload, or use Search Console's URL Inspection Tool to view the rendered HTML/screenshot Google actually captured — content missing from that rendered snapshot is content Google never indexed either. **The fix.** Use the native `loading="lazy"` attribute for images and iframes where possible, since it's parsed as HTML rather than JS-triggered, and reserve `IntersectionObserver`-based loading for elements needing custom behavior — firing on visibility, never on click or scroll ([Google: fix lazy-loaded content](https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading)). Anything crawlers must see regardless of viewport — spec tables, structured data, identifiers — shouldn't be lazy-loaded at all. ## Pitfall 3: Content locked behind JS-driven tabs and accordions **The problem.** Google has long said that content already in the HTML at load time (e.g., a "Specifications" panel with `display:none`) is crawled and indexed at full weight, even collapsed by CSS. The real risk is different: specs or use-case content fetched via a separate AJAX call only when a user clicks a tab. That content isn't in the DOM at all until the click fires — invisible to Googlebot's non-interactive crawl and to every non-rendering AI crawler. **How to detect it.** View-source or `curl` the page and search for the spec text. Present in a collapsed panel is fine. Only injected after a click handler fires an XHR/fetch call is missing. **The fix.** Render all tab and accordion panel content into the initial HTML and use CSS, not conditional JS fetches, to show and hide it. This keeps progressive-disclosure UX while guaranteeing the content ships on first response — a practice Google's guidance confirms is safe for indexing. ## Pitfall 4: Blocked resources that break rendering entirely **The problem.** A `robots.txt` that disallows `/js/`, `/assets/`, or a bundler's chunked script paths prevents Googlebot from fetching files it needs to render the page. Google is explicit that it won't render JavaScript from blocked files or pages, so a disallowed CSS or JS path can leave Googlebot indexing a broken, content-thin version, even though a human visitor sees the full thing. **How to detect it.** Check `robots.txt` for disallowed script/style paths, and use the URL Inspection Tool's rendered screenshot in Search Console — a visibly broken layout there is a strong signal that a required resource is blocked. **The fix.** Any resource required to render page content or layout should not be disallowed, even if you intentionally block other paths ([Google: how Google interprets robots.txt](https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt)). It's a one-line fix that's easy to overlook after a bundler or CDN path change. ## Pitfall 5: Slow hydration that times out the render **The problem.** Even with SSR, server-rendered markup isn't fully "live" until client-side hydration attaches event handlers and, in some setups, re-renders parts of the DOM. If hydration is slow — large JS bundles, waterfalled data fetches, heavy component trees — a crawler's rendering budget can expire before hydration-dependent content (price toggles, variant selectors, specs populated post-hydration) finishes. Google's Web Rendering Service also doesn't persist local storage, session storage, or cookies between page loads, so product data gated behind client-side state may never render for a crawler. **How to detect it.** Run Lighthouse or PageSpeed Insights for Time to Interactive and Total Blocking Time, and compare the URL Inspection Tool's rendered HTML against production. **The fix.** Reduce what depends on hydration to render at all — ship specs, identifiers, and pricing directly in server-rendered markup rather than a post-hydration fetch. Where interactivity is still needed, adopt partial or progressive hydration, or an islands-style architecture, so static product data is present immediately while only interactive widgets wait on JS. ## How to validate - **View-source vs. rendered DOM**: a plain `curl` request (or "View Page Source") shows what non-rendering crawlers get. Compare it against the DevTools "Elements" panel to see what only appears after JS runs. Re-running `curl` with a specific crawler's user-agent string can sanity-check the exact bytes that bot receives. - **Search Console URL Inspection Tool**: shows Google's actual rendered HTML, a screenshot, console errors, and blocked resources — the single best source of truth for what Googlebot saw. - **Rich Results Test**: confirms structured data (JSON-LD) is present and parseable in the rendered output, useful when JSON-LD is injected via JavaScript instead of emitted server-side. - **robots.txt check**: confirm no script, style, or data-fetch endpoint the page depends on is disallowed. Verified as of July 2026 against current Google Search Central documentation and Anthropic's published crawler behavior; consult your specific platform's rendering mode (SSR/SSG/ISR/CSR) documentation, since exact defaults vary by framework and version. None of this fixes what's missing from the data itself — a well-rendered page still needs specs, use-cases, and identifiers to put in that HTML. That's the side Anglera handles: it continuously enriches product attributes in your PIM or commerce platform, so once rendering is sound, there's rich, structured content ready to ship in the first server response instead of a partial record waiting on a client-side fetch. --- # The state of product data in Pool & Spa (2026) Source: https://www.anglera.com/blog/pool-spa-state Published: 2026-05-19 Industries: pool-spa ![The state of product data in Pool & Spa (2026)](/og/hero-pool-spa-state.jpg) The pool and spa industry is a $62 billion business built on a surprisingly analog supply chain habit: describing thousands of pumps, covers, chemicals, and heaters in whatever format a rep last emailed. That worked when a counter associate looked things up by memory. It does not work when the buyer is a homeowner comparing spec sheets on a phone, or an AI answer engine trying to figure out which variable-speed pump fits a 20,000-gallon inground pool. Here is what is actually broken, what it costs, and why the next 18 months make it harder to ignore. ## The catalog reality: flat files, PDFs, and whatever the last rep sent Most pool and spa product data still originates as a manufacturer spec sheet, a distributor price file, or a PDF cut sheet — not as structured, channel-ready attributes. Distributors like POOLCORP and Heritage Pool Supply Group move hundreds of thousands of SKUs across acquired regional book-of-business, and each acquisition tends to bring its own naming conventions, unit formats, and gaps along with it. A "36 in. LED spa light" from one supplier and a "0.9m submersible light, RGB" from another end up as two different-looking listings for the same functional product. The result is predictable: attribute fields that exist for some SKUs and not others, technical specs buried in a paragraph instead of a field, and category trees that don't match how a contractor or homeowner actually searches. None of this is a new observation in B2B distribution — differing data standards across manufacturers, vendors, and channels are a well-documented driver of inaccurate and incomplete catalogs, and manual entry errors compound as that data moves downstream through resellers ([Start with Data](https://startwithdata.co.uk/insight/the-essential-role-of-high-quality-product-data-in-b2b-distribution/)). Pool and spa is not a special case — it is a heavy-SKU, multi-tier vertical where the general problem shows up especially visibly. ## What it costs: returns, thin PDPs, and lost search Incomplete or inconsistent product data does not just look sloppy. It shows up on the P&L in three specific ways: - **Returns and support calls.** A pump description missing voltage, flow rate, or plumbing size gets ordered wrong, then returned or routed to a support call that a complete spec sheet would have prevented. - **Thin product pages.** A PDP with a two-line description and no attribute table ranks worse, converts worse, and gives a buyer no reason to trust the listing over a competitor's. - **Invisible in search.** Missing or inconsistent attributes mean a filter for "variable speed," "energy star," or "compatible with 1.5 in. plumbing" silently excludes products that should have qualified. None of this is hypothetical for the industry backdrop. PHTA's own reporting shows 64% of pool and spa industry sales already come from maintenance and consumable products — the recurring, repeat-purchase SKUs where a buyer's confidence in the listing (chemical concentration, filter micron rating, replacement part fit) directly drives whether they reorder from the same source or shop around ([PHTA industry data, via PoolDial](https://pooldial.com/resources/articles/business/pool-industry-statistics-2026)). ## Before and after: a variable-speed pump listing Here's what a typical raw supplier feed looks like next to what the same product needs to look like once it is enriched and quality-scored: | Field | Raw feed | Enriched | |---|---|---| | Description | "Variable speed pump, energy efficient, quiet operation" | "1.5 HP variable-speed pool pump, 230V, up to 130 GPM at 60 ft head, rated for pools up to 25,000 gal" | | Horsepower | (missing) | `1.5 HP` | | Voltage | (missing) | `230V` | | Flow rate | (missing) | `Up to 130 GPM` | | Compatible plumbing | (missing) | `1.5 in. / 2 in.` | | Energy certification | "energy efficient" | `ENERGY STAR certified` | | Noise level | "quiet operation" | `≤72 dB at 3 ft` | The raw version reads fine to a person skimming quickly. It fails the moment someone — human or machine — tries to filter, compare, or answer a specific question with it. ## Why 2025-2026 makes this urgent Three things are converging on pool and spa distributors and manufacturers right now: **AI answer engines are already sourcing product answers.** AI-driven traffic to retail sites grew roughly 4,700% year over year, and Salesforce's holiday research pegged AI influence at roughly 20% of global online holiday spend through recommendations and conversational discovery ([Miva, GEO for Ecommerce 2026](https://blog.miva.com/generative-engine-optimization-ecommerce)). An engine can only recommend a pump, cover, or sanitizer it can actually parse — unstructured PDFs and inconsistent attributes are effectively invisible to it. **The buyer is shifting younger, and buying differently.** Millennial and Gen X homeowners now invest in structural backyard additions like pools and spas at higher rates than Boomers, and they research on their own terms before ever calling a dealer. A thin, inconsistent PDP is the first thing that erodes trust in that self-serve moment. **Channel consolidation raises the stakes of a bad catalog.** As roll-ups like Heritage Pool Supply Group and POOLCORP absorb more regional distributors, more manufacturer catalogs get merged into fewer, larger storefronts — and every merge is an opportunity for attribute drift, duplicate SKUs, and gaps to multiply rather than resolve. Ask an answer engine "what pool pump works for a 20,000 gallon inground pool with 1.5 inch plumbing" and it needs a structured answer — horsepower, flow rate, plumbing size, all in queryable fields — not a marketing paragraph. Catalogs that can't supply that structure simply don't get cited, regardless of how good the product actually is. ## Where this goes from here None of this requires ripping out a distributor's PIM or a manufacturer's ERP. The fix is upstream of the storefront: extracting real values from supplier docs and spec sheets, scoring what's missing or inconsistent, and gap-filling attributes so pumps, covers, and chemicals show up complete and comparable everywhere they're sold. Anglera does exactly that — plugging into whatever system already holds the data, or starting from a flat file, so the catalog a buyer or an AI engine encounters actually matches the product being sold. --- # A distributor's guide to replacement-part compatibility Source: https://www.anglera.com/blog/pool-spa-guide Published: 2026-05-19 Industries: pool-spa ![A distributor's guide to replacement-part compatibility](/og/hero-pool-spa-guide.jpg) A pool builder replacing a pad pump isn't shopping for "efficient and quiet." They're matching a nameplate: total horsepower, voltage, frame, flange, plumbing size, and now, a federal compliance date. When a distributor's product page can't answer those questions, the buyer guesses, orders the wrong part, and the distributor eats the return. Here's what actually belongs on a Pool & Spa product page, why the gaps turn into RMAs and phone calls, and a checklist to close them. ## The question behind the question Nobody searches "variable-speed pool pump" and stops there. They're standing at the pad with an old motor's nameplate, or a service tech is texting a photo of a label to the counter. The real question is always some version of: does this part physically fit and electrically match what's already there. That question got harder in 2025. The Department of Energy's efficiency standard for dedicated-purpose pool pump motors requires that motors rated 1.15 to 5 total horsepower meet variable-speed-equivalent efficiency levels as of September 29, 2025, with a second tier (0.5 to 1.15 THP) following on September 28, 2027, according to the [Department of Energy's own program page](https://www.energy.gov/cmei/buildings/dedicated-purpose-pool-pump-motors) and the [Federal Register final rule](https://www.federalregister.gov/documents/2023/09/28/2023-20343/energy-conservation-program-energy-conservation-standards-for-dedicated-purpose-pool-pump-motors). Practically, that means a chunk of single-speed motors and pumps that used to be a straightforward swap are no longer legal replacements for anything in that horsepower band, and a buyer's old part number may map to a product that no longer exists in that form. That's a compatibility question a spec paragraph cannot answer, but a structured attribute set can. ## What actually needs to be on the page For pumps specifically, distributors selling into Pool & Spa need five or six fields locked down before anything else, because they're the fields that determine fit and function, not the fields that sell the sizzle: | Field | Why it's the field that matters | |---|---| | Total Horsepower (THP) | The number that actually cross-references across brands, not "rated HP," which varies by manufacturer marketing | | Voltage / phase | 115V, 230V, or dual-voltage; wrong voltage means a return, not an install | | Frame and flange type | Square (56Y/48Y) vs. round vs. C-face - physically determines if it bolts to the existing wet end | | Plumbing port size | 1.5" vs 2" unions; oversizing HP without matching plumbing creates flow problems, not upgrades | | DOE compliance status / effective date | Whether this SKU is a legal replacement for the buyer's horsepower band as of today's date | | Control/automation compatibility | Whether it talks to the existing automation panel, or needs an adapter | The pattern repeats for filters (element vs. cartridge vs. DE, tank diameter, flow rate in GPM) and heaters (BTU input, gas type, venting category), but the pump is the clearest case because the regulatory deadline forces the issue. ## Before and after: one SKU Here's what a typical supplier feed hands a distributor, versus what the product page needs to say. **Raw feed description:** "Energy-efficient variable-speed pool pump, quiet operation, easy install, WEF certified, ideal for residential pools." **Enriched attribute table:** | Attribute | Value | |---|---| | Total Horsepower | 2.0 THP | | Voltage | 230V (dual-voltage capable) | | Frame/Flange | Square flange, 56Y | | Plumbing port | 2" union | | DOE compliance band | Meets ≥1.15 THP standard, effective 9/29/2025 | | Control compatibility | Compatible with 4-function automation, RS-485 | | Cross-reference | Direct replacement for prior single-speed 56Y square-flange models in this HP class | The first version reads fine on a landing page. It answers zero of the questions a builder or service tech actually has, and it gives a buyer nothing to compare against the pump sitting on their pad. ## Ask an answer engine This is also how buyers increasingly search. Ask an AI answer engine "what replaces a 2 HP single-speed square-flange pool pump after the 2025 DOE rule" and it needs THP, flange type, and compliance status in structured form to return a usable answer. A product listing that only carries adjectives doesn't get cited. A listing with those six fields does. ## Why the gaps show up as returns, not just bounces Missing or vague compatibility data doesn't just cost a sale, it costs it twice: once when the buyer doesn't convert, and again when they do convert on a guess and send the part back. Poor product information is a documented driver of returns broadly. Akeneo's 2025 consumer research found 40% of shoppers had returned a product because the information they saw before buying turned out to be wrong, and roughly a third of shoppers reported the same experience with e-commerce product pages generally, per [reporting on the study](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/). In a category where the "wrong information" is a frame size or a voltage mismatch, that return isn't a re-shelve, it's a restocking fee, an outbound shipping cost, and a support call from a contractor who's now behind schedule on a job. For distributors, that support call is the expensive part. Every missing compatibility field that should live on the page instead gets asked over the phone or in a chat thread, by a counter rep who has to go find the answer manually. ## The checklist - Total horsepower (not just "HP") captured and normalized across brands - Voltage and phase explicit, not buried in a spec PDF - Frame/flange type named in buyer language ("square flange," not just a frame code) - Plumbing port size stated - DOE compliance band and effective date flagged for pumps in the affected THP ranges - A stated cross-reference or "replaces" relationship to prior part numbers - Control/automation compatibility called out where relevant ## Where this leaves distributors None of this requires ripping out a PIM or a catalog system. Your PIM stores the data; the work is making sure every one of those fields is actually populated, consistent, and current across every SKU, every supplier feed, and every regulatory change, before a buyer ever has to guess. Anglera plugs into whatever system a distributor already runs, scores catalogs against gaps like these, and fills them from supplier documentation, so the compatibility questions get answered on the page instead of in a return queue. --- # What messy product data actually costs Plumbing & PVF distributors Source: https://www.anglera.com/blog/plumbing-state Published: 2026-05-19 Industries: plumbing ![What messy product data actually costs Plumbing & PVF distributors](/og/hero-plumbing-state.jpg) Plumbing and PVF distribution runs on thousands of manufacturer brands, hundreds of thousands of catalog numbers, and product data that was never built to travel cleanly between them. For most of the industry's history that was a back-office problem. In 2025-2026, with e-commerce revenue climbing and buyers increasingly asking AI tools to find parts for them, it's a front-of-store problem — and the industry itself is now saying so out loud. ## What's actually broken Ask a PVF distributor where their catalog data comes from and the honest answer is: everywhere, and none of it consistently. Manufacturers ship spec sheets, cut sheets, and the occasional structured feed; distributors reconcile it across ERPs, PIMs, and spreadsheets built up over years by different teams with different conventions. The American Supply Association's own framing of the problem, in launching its new Product Data Standard, points directly at this: companies have relied on "inconsistent spreadsheets and slow onboarding," with core attributes like dimensions, materials, and UPCs defined differently from one manufacturer to the next ([ASA](https://www.asa.net/News/ASA-News/asa-launches-first-ever-product-data-standard-to-drive-industry-wide-digital-transformation)). That's not a minor formatting quirk — it means the same fitting can show up with three different material callouts depending on which manufacturer feed it came from, and a distributor's own team has to guess which one is right. ASA's research quantifies just how incomplete the resulting catalogs are. Organizations still building out their digital content operate below 40% SKU coverage, and even mid-tier performers only reach 50-60% completion rates on product attributes ([ASA, State of E-Commerce in Plumbing Distribution](https://www.asa.net/News/ASA-News/state-of-e-commerce-in-plumbing-distribution)). That's a majority of a catalog sitting on the site with a name, a price, and not much else. The same report found 44% of distributors rely very heavily on in-house teams to build that content, with in-house dependency reaching 88% once moderate reliance is included — meaning the industry has largely tried to solve a structural data problem with headcount, one SKU at a time. Here's what incomplete data looks like on an actual product page, for a common item like a PEX ball valve: **Raw feed description:** `1 in. PEX Ball Valve, Full Port` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Connection size | 1 in. PEX (expansion) | | Port type | Full port | | Body material | Forged brass, lead-free (`<0.25%` per NSF/ANSI 372) | | Handle type | 1/4-turn lever, stainless steel | | Pressure rating | 200 PSI CWP | | Temperature rating | -40°F to 200°F | | Certifications | NSF/ANSI 61, 372; ASTM F877 | | End connections | PEX x PEX | The first line is a product name. The second is what a plumber, a code inspector, or a buyer's filter actually needs to confirm the part fits the job. A distributor with a catalog stuck at 40-60% attribute completion has thousands of pages that look like the first line. ## What it actually costs This isn't abstract. Thin, inconsistent product data costs a PVF distributor in three concrete ways: - **Returns and mis-specs.** A missing pressure rating or an ambiguous connection size means a contractor orders the wrong fitting, and the distributor absorbs the freight both ways plus the goodwill hit. - **Lost search and filter visibility.** Faceted search runs on structured attributes. A valve with a blank "certifications" field doesn't rank lower when a buyer filters for NSF-certified parts — it simply doesn't appear. - **Thin PDPs that don't convert.** A page with a title and a price gives a buyer no reason to trust it's the right part without picking up the phone, which pulls a self-serve transaction back onto a counter rep's plate. Manual enrichment doesn't scale against catalogs this size. Pulling a spec sheet, mapping attributes, and writing a clean description properly runs somewhere in the 30-45 minute range per SKU — multiply that against a catalog with hundreds of thousands of line items across dozens of manufacturer brands, and a one-time cleanup project is out of date before it finishes. ## Why 2025-2026 raises the stakes Three things are converging right now. **AI answer engines are becoming a real discovery channel.** A contractor increasingly won't type "1 inch PEX ball valve" into a search box — they'll ask an assistant something like "what valve do I need for a 1-inch PEX line rated for outdoor use and lead-free code compliance?" That question only resolves to a specific SKU if the underlying attributes — material, certifications, pressure and temperature range — are structured and complete. A marketing sentence doesn't answer it. **The buyer is changing.** ASA's own e-commerce research found younger buyers show substantially higher propensity to complete transactions digitally, while buyers over 55 research online but still prefer phone or counter interaction ([ASA](https://www.asa.net/News/ASA-News/state-of-e-commerce-in-plumbing-distribution)). As that buyer base turns over through retirements and new hires, the report notes, digital-first expectations become the default rather than the exception — and digital revenue has already grown from 9.3% of plumbing distribution sales in 2023 to 12.2% in 2025. **The industry is finally naming the problem.** ASA's Product Data Standard, released July 1, 2025 and built with input from more than 30 manufacturers and distributors, covers full-line plumbing, water heaters, pipe and tubing, tools, and rough-plumbing accessories, with more categories planned ([Supply House Times](https://www.supplyht.com/articles/106881-building-a-common-language-for-product-data)). A shared schema is real progress. It doesn't, on its own, fill in the attributes for the SKUs already sitting in a distributor's catalog — someone or something still has to do that work, category by category, supplier by supplier. ## Where this goes A standard gives everyone a common column to fill in; it doesn't fill it in for them. That's the gap between having a schema and having a catalog that's actually complete, current, and readable by a buyer or an AI assistant. Anglera works on that gap directly: it plugs into whatever PIM or ERP a distributor already runs, scores existing catalog data against the attributes that matter for a given plumbing category, and continuously gap-fills from supplier documentation rather than waiting for the next manual cleanup cycle. The PIM still stores the data. The work of keeping it complete is what has to change. --- # Getting enriched product data onto Optimizely Configured Commerce product pages Source: https://www.anglera.com/blog/optimizely-data-to-page Published: 2026-05-19 Platforms: optimizely ![Getting enriched product data onto Optimizely Configured Commerce product pages](/og/hero-optimizely-data-to-page.jpg) Once a distributor's product data is enriched — specs, certifications, use-cases, cross-references — the remaining work is mechanical: get that value into the right Configured Commerce data structure, and make sure the storefront template is wired to render it. This guide covers that path on the current Spire storefront (Configured Commerce's Classic/AngularJS CMS reached end of life on January 1, 2025, so Spire's React/Redux front end is the one to build against today), with a concrete example and a way to validate against a live product page. ## Where enriched data can live on a Configured Commerce product Configured Commerce gives you three distinct places to put a new piece of product data, and which one you pick determines how it renders: - **Attribute Types and Values** — a structured, filterable model (e.g., Color: Red/Blue/Green). Attribute Types are assigned to a category, then specific Attribute Values are assigned to each product. This is the right home for enriched data buyers should be able to filter or facet by. - **Specifications** — free-form content tabs on the product detail page, built for longer spec-sheet-style content (dimensions, compliance notes, technical detail) rather than faceting. - **Custom Properties** — an Application Dictionary extension for a field that doesn't fit the attribute or specification model at all (a raw value you want on the product record and available to the API, without a UI widget out of the box). Most PIM-sourced enrichment — a rating, a certification, a use-case tag — maps cleanly to Attribute Types/Values or Specifications. Reach for Custom Properties only when the standard model can't represent the field. ## Getting the value onto the product record **Attribute-model data:** In Admin Console, under Catalog, Products, Attribute Types, create the Attribute Type (e.g., "IP Rating") and its Values (e.g., "IP65," "IP67"), assign the Attribute Type to the relevant category, then assign the value to each product. For bulk loads, the product import template accepts one column per attribute type, named `Attribute.[AttributeTypeName]` (for example `Attribute.IPRating`), with the value in each product's row — no hand-clicking hundreds of SKUs. **Specification content:** Create one at a time in Admin Console — open the product, go to the Specification tab, click **Add Specification**, then **Create Revision** to add the content and **Save** — or in bulk via import using paired columns per tab: `Specification1.Name` and `Specification1.CurrentDefaultContent` for the first tab, `Specification2.Name`/`Specification2.CurrentDefaultContent` for the second, and so on. Either way, a Content Approver or Content Admin still has to click **Publish** — draft content sitting unpublished is a common reason enriched content "didn't show up." **Custom Properties:** In Admin Console, go to Administration, System, Application Dictionary; find the entity (e.g., Product), open the Properties tab, and add the property (name, label, property type, control type). This only makes the field visible in Admin Console — by default a new Custom Property isn't returned to, or editable from, the storefront. To expose it, open the **Permissions** tab on that Custom Property and grant the **ISC_StoreFrontApi** role; skip this and the field exists in the database but is invisible to the front end and the Storefront API. ## How it binds to the Spire template On a standard Product Details page, Configured Commerce ships prebuilt widgets — Attributes, Specification, Price, Availability, Primary Image, and others — that read from the catalog with no development required. Two are relevant here: - The **Attributes** widget renders assigned Attribute Type/Value pairs. A "Display Attributes in Tabs" setting controls whether they show as a list under pricing or as their own tab, with an Attributes Tab Sort Order (Display First / Display Last) controlling where that tab lands relative to Specification tabs. - The **Specification** widget renders published specification tabs, with "Show Documents" and "Show Attributes" toggles for whatever else should surface alongside spec content. For the standard model, that's the whole binding: assign the value, publish it, and the existing widget picks it up — no template edit needed. Custom Properties don't have a stock widget, so they need a small Spire override. Spire widgets are TSX files under `modules/content-library/src/Widgets/[Category]/`, each exporting a `WidgetModule` (a connected component plus a CMS field definition) as its default export. To surface a custom property, create a matching file under your blueprint's `src/Overrides/Widgets/[Category]/` directory — the category path must mirror the source widget's folder — and build the override there rather than editing the shipped file. A restart is required the first time you add a new override file; after that, Spire's bundler hot-reloads it. ```tsx // Overrides/Widgets/ProductDetail/CustomAttributes.tsx import * as React from "react"; import { connect } from "react-redux"; import WidgetModule from "@insite/client-framework/Types/WidgetModule"; import ApplicationState from "@insite/client-framework/Store/ApplicationState"; import Typography from "@insite/mobius/Typography"; interface StateProps { fireRating?: string; } const CustomAttributes = ({ fireRating }: StateProps) => { if (!fireRating) return null; return (
Fire Rating: {fireRating}
); }; // The selector that exposes "the current product" lives in the Products // slice of client-framework/Store and follows the same pattern Configured // Commerce documents for pages (see getCurrentPage in PageSelectors.ts) — // confirm its exact name and import path against your SDK version. const mapStateToProps = (state: ApplicationState): StateProps => { const product = getCurrentProduct(state); const raw = product?.properties?.["FireRating"]; return { fireRating: raw ? JSON.parse(raw) : undefined }; }; const widgetModule: WidgetModule = { component: connect(mapStateToProps)(CustomAttributes), definition: { group: "Product Details", fieldDefinitions: [] }, }; export default widgetModule; ``` Custom Property values are stored as string key/value pairs in a `Properties` dictionary, with complex values serialized as JSON within it — so reading one back generally means parsing `product.properties["YourFieldName"]` rather than reading a plain typed field, whether from a Spire selector or the single-product REST response directly (see the endpoint below). ## A concrete walkthrough: a "Fire Rating" spec from the PIM 1. PIM enrichment produces `FireRating: "Class A"` for a SKU. 2. Push it as an Attribute Value (if buyers should filter by it) via bulk import, or as a Custom Property (if it's just informational) with the ISC_StoreFrontApi permission granted. 3. If it's an Attribute, no template work is needed — the Attributes widget renders it once the value is assigned and the page cache clears. 4. If it's a Custom Property, deploy the widget override above (or add the field to an existing overridden widget) so it renders in the DOM. 5. Confirm the field is returned by a `GET` request to the single-product endpoint before troubleshooting the widget — if it's missing from the API response, the permission grant (or the import) is the problem, not the front end. ## How to validate - **View-source vs. rendered DOM matter differently here than on most sites.** Spire renders server-side by default only for requests it identifies as web-crawler user agents; regular browser sessions get a client-rendered shell that hydrates via React. So `curl` or "View Page Source" on a plain request may show a near-empty shell even when the attribute is correctly wired — that's expected, not a bug. To see what a crawler sees, use a crawler user agent, e.g. `curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://yoursite.com/product-page`, and check the response body for the attribute text. Since release 5.2.2411, Configured Commerce has offered an "Enable Server-Side Rendering for All User Agents" setting; with that on, plain `curl` output should match too. - Compare that raw HTML against the browser's Inspect panel (Elements tab, rendered DOM) for the same URL — both should contain the attribute value; if only the rendered DOM has it, SSR isn't picking up the field for crawlers. - Hit the product record endpoint directly (`GET` to the versioned `api/v1/products` path for a single product ID) to confirm the value is present in the API payload independent of any template issue. - Run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm crawler-visible HTML includes the value if it supports structured data or on-page copy AI agents and search crawlers will read. Verified as of July 2026 against Optimizely's Configured Commerce developer documentation and Support Help Center articles; Configured Commerce is versioned and admin-configurable, so exact menu labels, import column names, and internal selector paths may vary by release — confirm each against your own instance before shipping. None of this matters if the underlying data isn't there to bind in the first place. Anglera enriches the product record continuously — attributes, specs, certifications, identifiers — directly in the PIM or commerce platform you already run, so the Attribute Types, Specifications, and Custom Properties above always have something accurate to populate. Your PIM stores the data; Anglera keeps it current, so this page-side wiring only has to happen once. Sources: - [Use custom properties](https://docs.developers.optimizely.com/configured-commerce/docs/use-custom-properties) - [Creating a custom property in the application dictionary](https://docs.developers.optimizely.com/configured-commerce/docs/creating-a-custom-property-in-the-application-dictionary) - [Product Details Elements widgets](https://support.optimizely.com/hc/en-us/articles/11449338645389-Product-Details-Elements-widgets) - [Manage attributes](https://support.optimizely.com/hc/en-us/articles/4413199911565-Manage-attributes) - [Use the import template for products and related products](https://support.optimizely.com/hc/en-us/articles/4413199921037-Use-the-import-template-for-products-and-related-products) - [Creating specifications](https://webhelp.optimizely.com/latest/en/b2b-commerce-sdk/products/specifications/createspecifications.htm) - [Building sites with Spire and React Redux](https://docs.developers.optimizely.com/configured-commerce/docs/building-sites-with-spire-and-react-redux) - [Replacing an existing widget in Spire](https://docs.developers.optimizely.com/configured-commerce/docs/replacing-an-existing-widget-in-spire) - [Creating a custom widget in Spire: Redux-connected widget](https://docs.developers.optimizely.com/configured-commerce/docs/creating-a-custom-widget-in-spire-redux-connected-widget) - [Server-side rendering (SSR) guidelines for Spire](https://docs.developers.optimizely.com/configured-commerce/docs/server-side-rendering-ssr-guidelines-for-spire) - [Enable Server-Side Rendering in Spire](https://support.optimizely.com/hc/en-us/articles/32036706029197-Enable-Server-Side-Rendering-in-Spire) - [Get started with Configured Commerce REST APIs](https://docs.developers.optimizely.com/configured-commerce/reference/getting-started-with-the-b2b-commerce-rest-apis) --- # Why medical & dental feeds lose to marketplaces — and how to close the gap Source: https://www.anglera.com/blog/medical-dental-syndication Published: 2026-05-19 Industries: medical-dental ![Why medical & dental feeds lose to marketplaces — and how to close the gap](/og/hero-medical-dental-syndication.jpg) A box of exam gloves looks like the simplest SKU in a medical-dental catalog — until a buyer needs to know if it's powder-free, what the AQL rating is, whether it's rated for chemo drug exposure, and which size actually fits their staff. Most distributor feeds answer one or two of those questions. Marketplaces and hospital procurement portals now require the rest, in structured fields, before they'll rank the listing at all. Here's why thin feeds keep losing shelf space to marketplace-native sellers, and what channel-ready completeness actually requires. ## Why "we have a description" isn't enough anymore Medical-dental distributors have historically competed on relationship and price, not content. The feed was built to move a flat file into an ERP, not to answer a buyer's question at the point of search. That worked when reps and catalogs mediated the sale. It doesn't work on a marketplace, where ranking and buy-box eligibility are driven almost entirely by how completely and correctly a listing matches the category's required schema. Google Merchant Center is explicit that products without a valid identifier — GTIN, MPN, or brand — become ineligible for full Shopping placement, not just downranked (support.google.com/merchants/answer/6324461). Amazon's medical and PPE categories often require Product ID validation even where GTIN exemptions exist elsewhere, and category-specific attribute sets (glove type, powder status, AQL, sterility) get enforced at the point of listing, not discovered later. In parallel, the industry's own data backbone — GS1's GDSN and the newer Global Data Model — exists specifically because healthcare retailers and distributors kept failing to synchronize a consistent set of foundational attributes across trading partners (gs1.org/services/gdsn). None of this is optional structure. It's the schema the channel checks against before it will show your product at all. ## The bar marketplaces actually enforce Three layers matter, and medical-dental feeds typically clear one of them. | Layer | What's checked | Where feeds usually fail | |---|---|---| | Identifiers | Valid GTIN/UPC, brand, MPN, and — where applicable — UDI-DI mapped correctly to GUDID for regulated devices | GTINs reused across pack sizes; UDI present on the label but never structured back into the feed | | Attributes | Category-specific required fields: glove material, powder status, AQL level, sterile vs. non-sterile, chemo rating, size, latex-free flag | Buried in a PDF spec sheet or the free-text description, not a structured attribute | | Trust content | Images showing packaging and count, compliant claims language, certifications (FDA clearance, ASTM D6319) | Stock manufacturer image with no lot-count or size call-out, unverifiable claims | A field existing somewhere in your data isn't the same as a field existing correctly for the category node the product sits in. That distinction is what silently throttles otherwise-live listings — no rejection email, just quiet suppression in search. ## Case in point: a box of exam gloves Here's what a typical supplier feed hands a distributor, next to what a marketplace and a procurement buyer actually need to make a decision. **Raw feed description (typical):** "Nitrile exam gloves, box of 100, blue, various sizes available." **Channel-ready enrichment:** | Attribute | Value | |---|---| | Glove material | Nitrile, latex-free | | Powder status | Powder-free | | Size | Medium (also listed: S, L, XL as variant GTINs) | | AQL rating | 1.5 | | Chemo-rated | Yes, ASTM D6978 | | Sterility | Non-sterile, single use | | Count | 100 gloves / box, 10 boxes / case | | Regulatory | FDA 510(k) cleared, class I exempt | | Identifier | GTIN-14 (case), GTIN-12 (each), UDI-DI cross-referenced | The first version reads fine to a human skimming a page. It fails almost every structured check a marketplace or GPO portal runs, and it gives an AI-driven answer engine nothing to match against a specific query. ## Ask an answer engine A buyer today doesn't browse a PDF catalog — they ask a question. "What's a chemo-rated, powder-free nitrile exam glove in medium that's AQL 1.5 or better?" only surfaces a distributor's product if size, AQL, powder status, and chemo rating exist as separate, correctly labeled values the engine can parse and compare. A description that just says "various sizes available" is invisible to that query, no matter how good the price is. ## Closing the gap without a re-platform None of this requires ripping out the ERP or running a multi-year PIM migration. Distributors typically start from whatever they already have — a flat export, a supplier spec PDF, images from the manufacturer — and the gap is almost always the same: values exist in source documents but were never scored, gap-filled, and mapped into the fields each channel actually checks. This is the layer Anglera works in. It plugs into an existing PIM (Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica) or sits on top of a flat file if there's no PIM at all — your system of record stays the system of record, and Anglera does the enrichment work: scoring completeness against the specific rules each marketplace or GPO enforces, extracting and gap-filling attributes from real supplier documentation, and getting a catalog to channel-ready in weeks rather than the multi-year timeline a full data-quality overhaul usually implies. The exam glove problem isn't unique to gloves — it's every SKU in a medical-dental catalog where the buyer's question is more specific than the feed's description. --- # McMaster-Carr: How the Silent Giant of MRO Wins Source: https://www.anglera.com/blog/mcmaster-carr-distributor-playbook Published: 2026-05-19 Industries: mro-industrial ![McMaster-Carr: How the Silent Giant of MRO Wins](/og/hero-mcmaster-carr-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* McMaster-Carr shows up on six different lists in [MDM's 2026 Top Distributors report](https://www.mdm.com/top_distributors) — #5 in Industrial Supply, #3 in MRO, #4 in Fasteners, #3 in Safety, #8 in Fluid Power, #11 in Jan/San — and it will not confirm a single one of those figures. The company does not disclose revenue. It has never done a press interview in recent memory, run an ad, or issued an earnings call. It is also, by wide industry consensus, the best-run catalog operation in American industrial distribution. Those two facts are not in tension. They are the same strategy. ## A 124-year-old company still owned by one family McMaster-Carr traces to 1901, when T.J. McMaster, a former stationary engineer, and F.C. Davis, a former U.S. Navy chief engineer, opened the McMaster-Davis Supply Company in Chicago with $50,000 in capital, according to [Wikipedia's company history](https://en.wikipedia.org/wiki/McMaster-Carr). Walter S. Carr, an attorney with an engineering background, bought in by 1904, and the name flipped to McMaster-Carr within a few years. The Carr family has held control ever since, through a business now run day-to-day by longtime president and CEO James DeLaney, according to [LegalClarity's ownership research](https://legalclarity.org/who-owns-mcmaster-carr-and-why-its-so-secretive/). That is the unusual part worth naming plainly: in a fastener and MRO distribution landscape that private equity has spent two decades rolling up into national platforms, McMaster-Carr has made zero acquisitions of note, taken no outside capital, and never filed for an IPO. It competes against public giants and PE-backed consolidators as a single-family-owned operating company that has simply never needed anyone else's money. ## The catalog is the moat McMaster-Carr's real product is not any single bolt or bearing. It is finding the right one in seconds. The company stocks roughly 700,000 SKUs and fills 98% of orders for same- or next-day delivery, per reporting cited by [Accio's 2025 supplier analysis](https://www.accio.com/biz-company/mcmaster-carr). Every part page reads like it was built by an engineer for an engineer: exact tolerances, load ratings, material certs, CAD downloads, no marketing copy, no upsell banners. Procurement teams and product designers alike treat mcmaster.com as a default reference site the way developers treat Stack Overflow — a place you land on without ever having clicked an ad, because someone linked the part number. That is the payoff of a print tradition the company has kept alive since its first 506-page catalog in 1908. The annual catalog is now a design-world artifact in its own right, and the website is its digital descendant: obsessively organized, fast, and utterly unbranded in tone. McMaster-Carr spends nothing convincing you it exists. It spends everything making sure that once you land there, you never want to search anywhere else. ## Winning through logistics density, not sales reach McMaster-Carr has no field sales force knocking on plant doors the way a Grainger or a Fastenal onsite rep does. Instead it wins on raw delivery physics: a small number of very large, very automated distribution centers positioned to blanket the country. Historically that meant hubs outside Chicago (Elmhurst), Atlanta, Cleveland, Los Angeles, and Robbinsville, New Jersey. In 2025 the company broke ground on a sixth: an [$360 million, roughly 840,000-square-foot regional headquarters and distribution center in Fort Worth](https://www.inddist.com/company-expansion-consolidation/news/22871306/mcmastercarr-to-expand-to-texas), targeted for completion by 2027 and expected to add hundreds of jobs. It is also mid-expansion at home. McMaster-Carr's Elmhurst campus is being built out toward capacity for roughly 1,900 employees, according to local reporting on the [Elmhurst headquarters expansion](https://patch.com/illinois/elmhurst/large-elmhurst-employer-plans-big-expansion), and it has renewed and expanded facilities in Ohio and Southern California in the same window. None of this comes with a press tour. It shows up in permit filings, tax-incentive votes, and trade press, because that is the only place McMaster-Carr's growth is ever visible. | Facility | Region | Status | |---|---|---| | Elmhurst, IL | Chicago (HQ) | Expanding toward ~1,900 employees | | Robbinsville, NJ | Northeast | Established hub | | Douglasville, GA | Southeast | Established hub | | Santa Fe Springs, CA | West Coast | Recently renewed lease | | Aurora, OH | Midwest/East | Recently expanded | | Fort Worth, TX | South-Central | Under construction, targeting 2027 | ## The secrecy is a strategy, not an accident Most large distributors compete partly on being known: investor days, trade show booths, LinkedIn thought leadership, acquisitions announced in press releases. McMaster-Carr treats all of that as noise it doesn't need. It has no social media presence, gives no interviews, publishes no investor materials, and gates its own website behind a business-account login. As LegalClarity's research puts it, this is a deliberate posture rather than an oversight: staying private and quiet removes any incentive to explain pricing, margin, or sourcing decisions to anyone but the customer placing the order. The trade-off is real. A private, non-acquisitive McMaster-Carr will never be the distributor that rolls up five regional players in a category to buy scale, the way many of its MRO and fastener-sector peers do. Its growth is organic and self-funded, which is slower by construction. What it buys instead is total control over the one thing its customers actually judge it on: whether the part shows up tomorrow, exactly as specified, with no salesperson required. ## The insight McMaster-Carr's advantage is not its catalog breadth or its delivery network alone. It's that it has never let anyone talk it into becoming a different kind of company. In a channel where scale increasingly comes from M&A, sales headcount, and public-market pressure to show quarterly growth, McMaster-Carr proved a fourth path works too: build the best reference tool in the category, ship faster than anyone expects, and say nothing about any of it. This profile is part of Distributor Playbooks, a series on the operating models behind the companies that move the industrial economy — because behind every one of them is the unglamorous work of a catalog, a warehouse, and data that has to be right. --- # How Home Depot Built a Distributor It Refuses to Brand Source: https://www.anglera.com/blog/home-depot-pro-distributor-playbook Published: 2026-05-19 Industries: building-materials ![How Home Depot Built a Distributor It Refuses to Brand](/og/hero-home-depot-pro-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* On [MDM's 2026 Top Distributors lists](https://www.mdm.com/top_distributors/), The Home Depot's Pro business lands at No. 6 in industrial supplies, No. 4 in MRO, and No. 8 in JanSan. Those rankings undersell what's actually happening: a company most people still picture as an orange-aproned DIY retailer now runs one of the largest wholesale distribution operations in North America, and it built the current version of that operation by deliberately not doing what it did the first two times it tried. ## The Pro business is already half the company Home Depot doesn't break out Pro revenue as a clean line item, but the shape of the business has shifted underneath the brand. Roughly 55 percent of company revenue now comes from the 5 percent of customers enrolled in its Pro programs, mostly contractors and tradespeople rather than weekend renovators, and Home Depot has said openly it's chasing a Pro and building-materials market it sizes at over a trillion dollars ([Phenomenal World](https://phenomenalworld.org/analysis/home-depots-new-last-mile/), [PYMNTS](https://www.pymnts.com/earnings/2026/home-depots-b2b-business-nears-50percent-of-revenue-amid-diy-slowdown)). DIY has been soft. Pro has been the growth engine. That's the business context for everything below. ## The boomerang that explains the current model The clean way to understand Home Depot's Pro strategy is to look at what it tried before, because it tried the obvious version twice and walked away from it both times. | Year | Move | Outcome | |---|---|---| | 1997 | Home Depot acquires HD Supply, builds it as an in-house wholesale arm | Centralized, Home Depot-run distribution unit | | 2007 | Sells HD Supply to a PE consortium (Carlyle, Bain, CD&R) amid the housing downturn | Company exits wholesale distribution entirely | | 2013 | HD Supply IPOs independently on NASDAQ | Runs as a standalone public distributor for years | | 2020 | Home Depot buys HD Supply back for $8B | Re-enters distribution, still under its own name | | 2024 | Acquires SRS Distribution for $18.25B, its largest deal ever | Enters Pro distribution through a multi-brand model instead | | 2025 | SRS acquires GMS for $5.5B, adding drywall, ceilings, steel framing | SRS crosses 1,250 locations across the U.S. and Canada | | 2026 | SRS acquires Mingledorff's, a 42-location HVAC distributor | Pro total addressable market expands to roughly $1.2 trillion | That table is the real story. Home Depot built and owned a distribution arm under its own name (HD Supply), decided the economics or the fit didn't work, sold it, watched someone else run it profitably enough to take public, bought it back, and then, for its next and far larger bet on Pro, chose an entirely different structural answer: acquire a company that operates hundreds of locations under names that have nothing to do with Home Depot, and leave it that way ([SRS Distribution history](https://www.srsdistribution.com/en/about/history/), [Berkshire Partners](https://berkshirepartners.com/leonard-green-partners-and-berkshire-partners-portfolio-company-srs-distribution-enters-into-a-definitive-agreement-to-be-acquired-by-the-home-depot-for-18-25-billion/)). ## The unique insight: a public retailer's biggest bet is on not being itself Here's the thing worth naming directly. Most retailers who buy into distribution eventually put their own name on the trucks, because brand consolidation is supposed to be where the synergy lives. Home Depot did that with HD Supply for over a decade and it didn't stick as a permanent structure. SRS Distribution, the vehicle for Home Depot's current and much larger Pro push, was founded in 2008 by Dan Tinker out of a bankruptcy-era roll-up of family roofing suppliers, and its whole model was built on keeping the local brand each acquired company brought to the table. Roofers buy from the regional supplier they've bought from for twenty years, not from a national logo. Home Depot bought that philosophy intact for $18.25 billion and has kept extending it: GMS's building-products brands stayed GMS, and Mingledorff's, the HVAC distributor SRS picked up in 2026, kept its own name and its own five-state Georgia-rooted footprint too ([Home Depot investor relations](https://ir.homedepot.com/news-releases/2026/05-11-2026-133053552)). That's the pattern worth flagging to a competitor's strategy team: Home Depot's largest and most consequential distribution bet in company history is structured, on purpose, as a portfolio of brands that don't say Home Depot anywhere. The retail giant with maybe the strongest single brand in home improvement decided the winning move in wholesale distribution was to stay invisible. ## The tension underneath the model There's a real strategic bet buried in that choice, and it cuts both ways. Keeping SRS, GMS, and Mingledorff's under their own names preserves the contractor trust and local rep relationships that made each of them worth buying in the first place. But it also means Home Depot is running, in effect, a federated company of dozens of distinct sales cultures, credit terms, and delivery fleets stitched together mostly through back-office integration rather than a single storefront. The GMS deal alone pushed SRS past 1,250 locations in roughly a year and a half of Home Depot ownership ([MDM](https://www.mdm.com/news/top-distributor-sectors/building-materials-construction/home-depot-srs-complete-5-5b-gms-acquisition/)). Every one of those brands still has to be onboarded onto shared systems, shared vendor terms, and eventually shared data, without contractors ever noticing the plumbing changed. That's a much harder integration problem than repainting a fleet, and it's the quiet work that determines whether this bet compounds or just adds up. The MDM rankings capture where Home Depot Pro sits today across industrial supplies, MRO, and JanSan. What they don't capture is that the company arrived there by trying centralization, abandoning it, and betting its largest acquisition ever on the opposite instinct. This series exists because the companies that move materials, parts, and supplies at scale win or lose on unglamorous things: what's in the catalog, what's on the truck, and whether the data behind both can keep up with how fast the branches multiply. --- # The ROI of product data in Consumer Electronics: the numbers that actually move Source: https://www.anglera.com/blog/consumer-electronics-roi Published: 2026-05-19 Industries: consumer-electronics ![The ROI of product data in Consumer Electronics: the numbers that actually move](/og/hero-consumer-electronics-roi.jpg) Electronics buyers research harder than almost anyone else in retail: they compare specs across tabs, cross-check compatibility, and read the box contents twice before they trust "add to cart." That means the funnel lives or dies on data quality at every step — discovery, the product page, and the moment right after checkout when a customer opens the box and decides whether the thing matches what they thought they bought. Here's how to measure where product data is actually moving revenue, and how to build a before/after case finance will sign off on. ## The metrics that actually respond to product data Not every KPI on a retail dashboard moves when you fix product data. These do, and each one has a specific, checkable mechanism behind it. | Metric | What it shows | How to measure it | |---|---|---| | PDP conversion rate | Whether the page answers the buyer's remaining questions | GA4 or your commerce platform's funnel report, segmented by category and by "data completeness" cohort (SKUs with full spec sheets vs. thin ones) | | Incremental organic traffic | Whether product pages rank for the long-tail spec and compatibility queries buyers actually type | Search Console impressions/clicks by page, before/after a re-enrichment pass, isolated from seasonal and paid-media swings | | Referral traffic from AI sources | Whether structured, accurate product data gets surfaced when buyers ask an AI assistant to compare or shop | Referral-source segment in GA4 (chatgpt.com, perplexity.ai, copilot, gemini, etc.), tracked as its own channel, not folded into "direct" | | On-site search zero-results / refine rate | Whether your own catalog can answer questions your buyers are already asking it | On-site search analytics: zero-result query rate, and how often shoppers add a filter after a search | | Return rate, split by reason code | Whether returns are caused by a broken product or a broken description | Returns platform reason codes, bucketed into "defective/damaged" vs. "not as described/wrong compatibility" | | AOV and attach rate | Whether complete data (compatible accessories, bundles, "works with" fields) is doing the cross-sell work | Order-level AOV and units-per-order, segmented by whether the anchor SKU had complete accessory/compatibility data | The common thread: none of these move because a page "looks nicer." They move because a specific piece of missing or wrong information got filled in or fixed. ## PDP conversion: the spec sheet is the sales rep In consumer electronics, the product page has to do the job a salesperson used to do in a big-box store: confirm compatibility, explain what's actually in the box, and preempt the question that would otherwise go to a support chat. When that information is missing, buyers don't guess — they leave. Industry survey data puts this bluntly: a large majority of shoppers say they'll abandon a site that doesn't give them enough product information, and roughly a third of returns trace back to the product not matching what was described before purchase, according to a [Syndigo study on product content](https://syndigo.com/news/syndigo-study-poor-product-content-hurts-sales/). The fix isn't more marketing copy. It's structured, verifiable fields — port types, wattage, dimensions, compatibility lists, what's in the box — sourced from the manufacturer spec sheet or datasheet, not guessed. To measure the lift, run a cohort comparison: take a sample of SKUs before enrichment, re-enrich them, and compare PDP conversion rate for that cohort against a control group of SKUs left untouched over the same window. That isolates the data effect from seasonality or promotions. ## Traffic: organic, on-site search, and AI referral are three separate lines, not one Electronics buyers discover products through several channels at once, and each one rewards a different kind of data completeness. Organic search rewards depth — the pages that rank for "does `[model]` support `[protocol]`" are the ones that actually answer it in structured text. On-site search rewards attribute coverage — if a shopper searches "65-inch TV under `[wattage]`" and your catalog has no wattage field, that's a zero-result query and a lost sale, full stop. And a growing but still modest slice of traffic now arrives as a referral from AI assistants that buyers ask to compare options before they ever land on a retailer site. That AI-referral channel is real and worth tracking as its own line in analytics — it behaves differently from organic (it rewards clear, structured, licensable content rather than keyword density) — but for most electronics retailers today it's still a minority of sessions next to organic search, on-site search, and marketplace traffic. Treat it as one more discovery surface to keep clean, not the centerpiece of the strategy. Track it separately so you don't misattribute its growth (or its absence) to something else. ## Returns: separate "broken" from "misunderstood" This is where the ROI case gets concrete fastest, because returns have a dollar sign attached and a paper trail. The National Retail Federation projects that [nearly 20% of online sales](https://nrf.com/research/2025-retail-returns-landscape) will come back in 2025, and while consumer electronics runs below the all-category average — commonly cited in the [8-15% range](https://www.richpanel.com/learn/ecommerce-return-rates) — the category still carries some of the highest "not as described" return rates because compatibility and spec mismatches are so easy to get wrong and so expensive to restock once a box has been opened. The measurement move: pull your returns reason codes for the last two quarters and bucket them into "product failed" (defective, damaged in transit) versus "product was fine, but wrong for the buyer" (wrong size, incompatible, didn't match listing). Only the second bucket is addressable by product data. If wattage, dimensions, or "works with" data was missing or wrong on the returned SKU's listing, that's your baseline. Fix the data, watch that specific reason-code bucket over the following quarter, and you have a return-rate reduction with a mechanism behind it, not just a coincidence. ## Building the case finance believes Finance doesn't trust a single before/after number — they trust a controlled comparison. The credible version looks like this: pick a meaningful sample of SKUs (ideally a few hundred, spanning multiple subcategories), record their baseline PDP conversion, return rate, and AOV for a full measurement window, enrich them, then hold out a same-size control group of comparable SKUs that don't get touched over the identical window. Compare the deltas, not the absolutes — that isolates the enrichment effect from traffic, seasonality, and pricing noise finance will otherwise flag. Layer in the support-ticket angle too: pull ticket volume tagged "compatibility question" or "missing info" against the same cohorts, since a drop there is pure cost avoidance and reads cleanly on a P&L. ## Where this connects to Anglera None of this requires ripping out a PIM or adopting a new system of record — your PIM still stores the data, and Anglera's job is to keep it complete, accurate, and quality-scored against the source documentation, whether that's Akeneo, Salsify, or a flat file with no PIM at all. Electronics retailers who treat product data as a measured input, not a one-time content project, are the ones who can show finance exactly which line item moved and why. That's the difference between "we improved our content" and a number with a mechanism behind it. --- # The technical SEO checklist for BigCommerce product pages Source: https://www.anglera.com/blog/bigcommerce-technical-seo-checklist Published: 2026-05-19 Platforms: bigcommerce ![The technical SEO checklist for BigCommerce product pages](/og/hero-bigcommerce-technical-seo-checklist.jpg) This checklist walks through the technical layer of a BigCommerce product detail page (PDP) — the part that determines whether a buyer's browser and an AI crawler can both actually read what's there. It assumes you're on Stencil (BigCommerce's standard theme engine); where a custom or headless storefront changes the picture, that's called out. ## Rendering: confirm the HTML is there before JS runs Stencil themes render product pages server-side with Handlebars templates and BigCommerce's page-context data objects — the HTML returned by the server already contains the product title, description, price, and structured data, with no client-side rendering step required. That matters more for AI agents than for Google: most answer-engine and LLM crawlers don't execute JavaScript, so content that only appears after a client-side fetch never gets seen. Stock Stencil gives you this for free. If you've moved to a custom or headless storefront (BigCommerce's Catalyst/Next.js framework or a bespoke frontend on the Storefront/GraphQL API), server-side rendering isn't automatic — verify your framework does SSR/SSG for PDP routes before assuming parity with a standard theme. ## Structured data: the JSON-LD Product block Cornerstone-based Stencil themes include a dedicated schema partial in the product template that outputs a single script block of type `application/ld+json`. In the current Cornerstone theme it looks like this (trimmed): ```json { "@context": "https://schema.org/", "@type": "Product", "name": "Example Product", "sku": "EX-100", "url": "https://yourstore.com/example-product/", "brand": { "@type": "Brand", "name": "Example Brand" }, "description": "...", "image": "https://cdn.yourstore.com/.../example.jpg", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "12" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "49.99", "itemCondition": "https://schema.org/NewCondition", "availability": "https://schema.org/InStock", "priceValidUntil": "2027-07-01" } } ``` A few implementation details worth knowing: `aggregateRating`/`review` only render if reviews are enabled and at least one exists (a zero-review product correctly omits them — don't hard-code fake ratings to fill the gap). Products with variant pricing output `minPrice`/`maxPrice` instead of a single `price`. `gtin` renders under a length-specific key (`gtin8`, `gtin12`, `gtin13`, `gtin14`) rather than a generic `gtin` field, which trips up validators expecting the generic name. This block is what makes a PDP eligible for Google's product rich results, and it's also the cleanest, least ambiguous data source an AI agent has for price and availability — cleaner than parsing prose. Theme customizations are the most common way this breaks: confirm the schema partial hasn't been trimmed or hand-edited after a redesign. Cornerstone's product page also pulls in the shared breadcrumbs component, which outputs its own `BreadcrumbList` JSON-LD alongside the `Product` schema — worth checking if breadcrumbs have been restyled or removed from the layout. ## Titles and meta descriptions Page title and meta description are per-product fields, set under **Products → Edit → SEO tab** (or the "Search Engine Optimization" section under Other Details, depending on your control panel version). Both auto-populate from the product name and URL on creation, which is exactly why so many BigCommerce catalogs ship with duplicate, boilerplate titles across near-identical SKUs — overwrite them. Practically, keep titles in the 60-70 character range (Google truncates by pixel width, not character count, so this is a guideline, not a hard cutoff) and meta descriptions around 120-155 characters with a concrete value proposition. These fields become the literal title and meta description tags that both search snippets and AI answer engines tend to quote when citing a product. ## Canonical URLs BigCommerce auto-generates a canonical link tag (`rel=canonical`) on every storefront page. For products, selecting a variant (size, material) appends query parameters to the URL, and BigCommerce canonicalizes those variant URLs back to the parent product page by default — that's correct behavior and prevents duplicate-content dilution across option combinations. The one case to review manually is color variants set up as separate product records: if "navy" and "white" versions of the same item carry meaningfully different search demand, folding them under one canonical can suppress keyword coverage you'd otherwise capture. That's a catalog-architecture decision the canonical tag won't make for you. ## Images and alt text Alt text is set per image under **Products → Edit → Images and Videos → Description** — that field populates the image's alt attribute and also feeds the `image` property in the JSON-LD block. Write literal, descriptive text (material, use case, model or SKU) rather than a repeated brand tagline. Alt text remains one of the few text-based signals available to image search, and to any AI crawler that can't reliably read text embedded in a photo. ## Internal linking Cornerstone's product template includes breadcrumbs by default, which double as machine-readable `BreadcrumbList` navigation and as a way for crawlers to understand category depth — keep category nesting shallow (3-4 levels) so breadcrumbs stay meaningful rather than reciting a warehouse taxonomy. The Related Products field and "customers also viewed" modules connect sibling and complementary SKUs, passing link equity between them and giving a crawler that lands on one PDP a path into the rest of the catalog it wouldn't get from a sitemap alone. Body copy in the product description is also linking real estate — link out to buying guides, comparison pages, or category pages with descriptive anchor text. ## Performance and Core Web Vitals BigCommerce's SaaS hosting handles base infrastructure, but LCP, INP, and CLS on a given PDP are still theme- and content-dependent. Cornerstone 4.0+ themes use `srcset`/`sizes` on product images so the browser requests an appropriately sized file per viewport, and the built-in lazy-load option should be turned off for the primary, above-the-fold product image — deferring that image behind a JS-triggered lazy load is a common, avoidable LCP hit. Third-party app scripts (reviews widgets, personalization, chat) are the most frequent source of INP and CLS regressions on PDPs; audit per template using Search Console's Core Web Vitals report (field data) and Lighthouse/PageSpeed Insights (lab data), not per individual URL. ## Crawlability: robots.txt and the sitemap `robots.txt` is editable at **Settings → Website**, in the Search Engine Robots section; BigCommerce's own guidance is to leave it alone unless you're confident in the syntax, since a stray disallow can silently deindex a whole path. Every storefront also ships with a default robots.txt that disallows checkout/cart/account paths and applies a built-in crawl-delay to known high-volume and AI crawlers — a throttle, not a block — and any rules you add are merged with those defaults rather than replacing them. The XML sitemap is generated and maintained automatically at `yourdomain.com/xmlsitemap.php` and can't be hand-edited — it's the canonical URL list to submit in Search Console, and your robots.txt should reference it with a Sitemap directive rather than a blocking rule. Because Stencil pages are server-rendered, crawlability issues on BigCommerce PDPs usually trace back to an accidental robots.txt disallow or a discontinued product left indexable with no redirect, not to a rendering gap. ## How to validate - **View-source vs. rendered DOM**: run `curl -s https://yourstore.com/your-product/` and confirm the title, meta description, canonical tag, and JSON-LD block are present in the raw response — Stencil should show full parity with the rendered DOM. A gap usually means a custom script or headless frontend is client-rendering something that should be server-rendered. - **Rich Results Test / Schema Markup Validator**: run the live PDP URL through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm `Product`/`Offer`/`AggregateRating` parse cleanly, especially after any theme edits. - **robots.txt and sitemap checks**: hit `https://yourstore.com/robots.txt` and `https://yourstore.com/xmlsitemap.php` directly and confirm the product URL is present and not disallowed. - **Core Web Vitals**: pull the per-template report from Search Console and spot-check the LCP element on a live PDP with Lighthouse. Verified as of July 2026 against BigCommerce's Stencil developer documentation and the current Cornerstone theme source. None of this fixes what actually goes into these fields — a JSON-LD block or an alt tag is only as good as the attributes, specs, and identifiers sitting behind it. Anglera enriches that underlying product data continuously inside the PIM or commerce platform you already run, so by the time it lands in the templates and fields above, there's something substantive for both the structured data and the visible copy to render. Your PIM stores the data; Anglera does the work of keeping it complete. Sources: [Stencil schemas — BigCommerce Developer Center](https://developer.bigcommerce.com/docs/storefront/stencil/themes/context/object-reference/schemas), [Cornerstone theme product schema partial — GitHub](https://github.com/bigcommerce/cornerstone/blob/master/templates/components/products/schema.html), [Canonical URL — BigCommerce Help Center](https://support.bigcommerce.com/s/topic/0TO130000005A5NGAU/canonical-url?language=en_US) --- # How Applied Industrial Technologies Turned Bearings Into Robots Source: https://www.anglera.com/blog/applied-industrial-distributor-playbook Published: 2026-05-19 Industries: mro-industrial ![How Applied Industrial Technologies Turned Bearings Into Robots](/og/hero-applied-industrial-distributor-playbook.jpg) *Part of [Distributor Playbooks](/blog/playbooks) — strategy teardowns of every company on the [MDM Top Distributors lists](https://www.mdm.com/top_distributors).* Applied Industrial Technologies opened for business in Cleveland in 1923 selling replacement bearings for cars and trucks. A century later it shows up on six separate categories of [MDM's 2026 Top Distributors report](https://www.mdm.com/top_distributors), the industry's annual ranking of North America's largest wholesale distributors. That spread across six verticals, rather than dominance in one, is the tell. Applied did not become big by being everything to everyone. It became big by picking fights it could win and quietly financing a second business inside the first. ## Six lists, one pattern Per MDM's 2026 report, Applied ranks No. 2 in Fluid Power (a slip from its 2025 No. 1 spot), No. 2 in Power Transmission/Bearings, No. 8 in Industrial Supplies, No. 9 in MRO, No. 11 in Fasteners, and No. 7 in Industrial PVF, on fiscal 2025 revenue of $4.56 billion. MDM has also named Applied an Industry Titan twice over, its designation for companies holding a top-three spot in a category for five straight years or longer. | Category | 2026 MDM Rank | |---|---| | Fluid Power | 2 | | Power Transmission/Bearings | 2 | | Industrial PVF | 7 | | Industrial Supplies | 8 | | Fasteners | 11 | | MRO | 9 | Notice what is missing: a No. 1 or No. 2 in the broad, catch-all MRO or Industrial Supplies categories, the lists Grainger and Fastenal dominate. Applied's top rankings cluster in the technical, engineered categories, fluid power and power transmission, where product knowledge and application engineering matter more than shelf breadth. That is not an accident of the market. It is the strategy. ## From Ohio Ball Bearing Co. to a hundred-year-old name change Joseph M. Bruening founded the company as the Ohio Ball Bearing Company in Cleveland on January 11, 1923, selling bearings for the auto trade before pivoting toward industrial customers within a year, according to [Applied's own 100-year anniversary release](https://www.businesswire.com/news/home/20230111005125/en/Applied-Industrial-Technologies-Commemorates-100-Year-Anniversary). The company renamed itself Bearings, Inc. in 1953, the same year it first listed on the American Stock Exchange. It did not become Applied Industrial Technologies until 1997, a rename meant to signal that bearings were no longer the whole story. That 1997 name change is worth dwelling on: it happened decades before the current automation push, which means diversifying beyond a single product category is a recurring instinct at this company, not a recent pivot forced by circumstance. ## The real pivot: buying its way into robotics The current chapter of that instinct is automation. Over the past several years Applied has bought a string of small, technical integrators rather than one transformative deal: Automation Inc., a Minneapolis motion-and-machine-vision distributor founded in 1981, in late 2022; Advanced Motion Systems the same year; [Bearing Distributors, Inc. and Cangro Industries](https://www.businesswire.com/news/home/20230905200324/en/Applied-Industrial-Technologies-Acquires-Bearing-Distributors-and-Cangro-Industries) in September 2023; and [Grupo Kopar](https://ir.applied.com/news/news-details/2024/Applied-Industrial-Technologies-Announces-Closing-of-Grupo-Kopar-Acquisition/default.aspx), a 16-location robotics and machine-vision integrator based in Monterrey, Mexico, in May 2024, adding roughly 200 associates and about $60 million in expected first-year sales. Then came the biggest bolt-on: [Hydradyne, LLC](https://www.businesswire.com/news/home/20250102751296/en/Applied-Industrial-Technologies-Completes-Acquisition-of-Hydradyne-LLC), a Dallas-based fluid power and automation specialist, closed December 31, 2024, expected to add about $260 million in sales and $30 million in EBITDA. None of these deals alone would make headlines. Stacked together, they have built Engineered Solutions, the segment housing automation, fluid power, and flow control, into roughly a third of company revenue. In [fiscal 2025's fourth quarter](https://ir.applied.com/news/news-details/2025/Applied-Industrial-Technologies-Reports-Fiscal-2025-Fourth-Quarter-and-Full-Year-Results-Issues-Guidance-for-Fiscal-2026/default.aspx), CEO Neil Schrimsher credited Engineered Solutions with executing "exceptionally well" and capitalizing on firming automation demand, as full-year sales reached $4.6 billion, net income $393.0 million, and free cash flow hit a company record. ## The unglamorous half is the funding engine Here is the part that does not show up on an About page. Engineered Solutions and the century-old Service Center distribution business, the branch network selling bearings, power transmission parts, and MRO supplies out of more than 400 local locations, run at roughly comparable EBITDA margins in the low-to-mid teens. That parity matters strategically. It means Applied is not milking its legacy branch business to bankroll a money-losing side bet on robotics. Both halves earn their keep, and the branch network's steady, recession-resistant cash flow gives the company the balance sheet room to keep bolting on automation integrators, deal after modest deal, without betting the company on any single acquisition. It is a rollup funded by boring, reliable distribution economics rather than by debt-fueled ambition. ## The trade-off nobody puts in the press release Rolling up two dozen small, founder-led automation integrators carries a real risk: each one was built on a handful of engineers with deep, local customer relationships, and that kind of technical trust does not always survive being folded into a national branch structure. Applied's bet is that its distribution scale, purchasing power, and cross-selling into its existing MRO customer base will outweigh whatever entrepreneurial edge gets lost in integration. The mid-pack rankings in broad MRO and Industrial Supplies (No. 9 and No. 8) suggest the company is comfortable not winning that fight at all, ceding the everything-store model to Grainger and Fastenal while it consolidates the narrower, higher-skill categories where it already leads. A hundred years after a Cleveland bearings shop opened its doors, the throughline is still the same: know exactly which fight you're in, and never assume the parts business and the engineering business have to be separate ambitions. This profile is part of an ongoing series examining the strategic choices behind North America's largest distributors, the branch networks, catalogs, and logistics that quietly keep industry running. --- # Adding Product JSON-LD on Shopify — and keeping it in sync Source: https://www.anglera.com/blog/shopify-product-json-ld Published: 2026-05-18 Platforms: shopify ![Adding Product JSON-LD on Shopify — and keeping it in sync](/og/hero-shopify-product-json-ld.jpg) Once product data is enriched with the identifiers and attributes that AI agents and rich results actually need, the remaining job is mechanical: get that data into a ` ``` Google requires `name` on every Product, plus at least one of `offers`, `review`, or `aggregateRating`; `image` is recommended rather than strictly required, but omitting it will cost you the visual in a rich result. For the merchant-listing (Shopping) treatment specifically, `price` and `priceCurrency` on the `Offer` are required, and `availability` is recommended and effectively necessary for eligibility — all three need to reflect real, current values, with price as a plain number or numeric string rather than a formatted currency string. If price or stock lives in an ERP or commerce platform rather than Akeneo, that field in the JSON-LD mapping should point there, not at a stale PIM copy of price. ## Rendering visible copy and JSON-LD from one source The most common cause of an AI agent reading something different from what a buyer sees is architectural: the visible product description is server-rendered from the PIM at build/request time, while the `JSON-LD` block is injected separately — by a tag manager snippet, a third-party app, or a template that reads from a cache with a different refresh cycle. Once those two paths diverge, they drift independently and nobody notices until an agent surfaces the wrong spec. The fix is to generate both the visible DOM and the `JSON-LD` block from the same in-memory product object, in the same server-side render pass, from the same locale/channel-resolved Akeneo values. If your storefront is a headless build (Adobe Commerce, commercetools, BigCommerce, or a custom Next.js/Remix front end pulling from Akeneo via API or connector), that means the JSON-LD template and the visible template both read from the same normalized product model — not two separate calls to Akeneo that could resolve to different completeness or channel scope. ## How to validate - **View-source vs. rendered DOM**: `curl -s https://example.com/products/pump-4402 | grep -A 30 'application/ld+json'`. If the JSON-LD is missing from raw HTML but present in a browser's rendered DOM, it's being injected client-side — most AI crawlers and many search bots won't execute that JavaScript, so they never see it. - **Diff against the source of truth**: pull the same product from Akeneo's REST API (`GET /api/rest/v1/products/{code}`) and diff the `name`, `mpn`, price, and availability fields against what's live in the JSON-LD block. Automate this as a scheduled check on a sample of SKUs, not a one-time audit. - **Google's Rich Results Test**: run the live URL through [Rich Results Test](https://search.google.com/test/rich-results) to confirm the markup parses and required properties are present. - **Event lag**: if using webhooks or the Event Platform, log the time between an Akeneo save and the page reflecting it; a growing gap usually means a queue backing up, not a broken mapping. Verified as of July 2026 against Akeneo's public API and Events/Event Platform documentation and Google Search Central's structured data guidance; confirm current rate limits, event retirement dates, and menu paths against your Akeneo edition before building, since these details move between releases. This whole exercise assumes the Akeneo record itself is complete — accurate attributes, specs, and identifiers for every SKU, not just the ones someone had time to enrich by hand. That's the piece Anglera handles: it continuously enriches product data in place in your PIM, so the mapping and rendering work above has a genuinely complete, current record to draw from rather than a partially-filled one. --- # Making Akeneo-managed catalogs agent-readable Source: https://www.anglera.com/blog/akeneo-agent-readable Published: 2026-05-16 Platforms: akeneo ![Making Akeneo-managed catalogs agent-readable](/og/hero-akeneo-agent-readable.jpg) Akeneo is very good at making sure a product record is complete: every family attribute filled in, every identifier validated, every locale translated. None of that guarantees an AI agent or shopping crawler can actually read it once the record leaves the PIM and becomes a rendered page. This guide walks through the three places that gap usually opens — attribute/identifier completeness in Akeneo, the export/mapping layer into your storefront, and the JSON-LD you emit on the page — and how to close each one. ## Why "complete in Akeneo" isn't "readable on the page" Akeneo's completeness score is calculated per product, per family, per channel, based on which required `attribute_requirements` have a value — it says nothing about what happens to that value downstream ([Akeneo, Understand product completeness](https://help.akeneo.com/serenity-your-first-steps-with-akeneo/serenity-understand-product-completeness)). A product can sit at 100% completeness in Akeneo and still land on the storefront as a hero image, a price, and three bullet points, because the connector export job only mapped a handful of attributes, or the PDP template only renders what's in the visual layout. Agents (and Google's crawlers) read the rendered DOM and any embedded structured data, not your PIM. So "agent-readable" is really three jobs in sequence: get the data structurally complete in Akeneo, get all of it onto the storefront, and describe it in a machine-parsable format on the page. ## Step 1: Make identifiers and attributes structurally complete in Akeneo Two Akeneo mechanics matter most here: **Identifiers.** Akeneo supports up to 20 attributes of type `pim_catalog_identifier`, one of which is designated the main identifier (SKU by default) ([Akeneo, Manage your product identifiers](https://help.akeneo.com/serenity-build-your-catalog/33-serenity-manage-your-product-identifiers)). In current Akeneo versions SKU itself is optional and can even be removed from a family, since every product also carries an immutable system UUID — don't assume it's a guaranteed non-empty field. Use additional identifier attributes, or a validated text attribute, to hold GTIN/EAN/UPC and MPN as first-class fields rather than free text buried in a description. Akeneo's identifier and text attribute types support a built-in validation rule that checks an 8/12/13/14-digit GTIN against its checksum, which is the cheapest way to catch a mistyped barcode before it ever reaches the storefront ([Akeneo, Manage your attributes](https://help.akeneo.com/serenity-build-your-catalog/serenity-manage-your-attributes)). **Family requirements.** Completeness is driven by each family's `attribute_requirements` object, which lists which attributes are required per channel (ecommerce, mobile, print, etc.). If GTIN, MPN, brand, and the core spec attributes aren't marked required for the channel that feeds your storefront, a product can reach 100% without them ([Akeneo API, Concepts & resources](https://api.akeneo.com/concepts/catalog-structure.html)). Audit your families: every family that maps to a sellable product type should require identifier and brand attributes for the storefront channel, not just for print or internal catalog channels. ```json { "code": "power_tools", "attribute_requirements": { "ecommerce": ["sku", "gtin", "mpn", "brand", "name", "short_description", "voltage"] } } ``` ## Step 2: Carry the full attribute set through the connector, not just the "display" fields Whether you use the Akeneo Connector for Adobe Commerce/Magento, the equivalent apps for Shopware/BigCommerce/Shopify, or a custom job against the REST API, the export step is where completeness silently narrows. The Adobe Commerce connector, for example, exports every attribute by default and handles native type mapping for attributes with matching codes automatically — but once a team turns on attribute filtering to trim the export, it's easy to forget to add a newly-required attribute later, and custom attribute types still need explicit type mapping ([Akeneo, Adobe Commerce Connector — Mapping Products](https://help.akeneo.com/adobe-commerce-connector-configuring-catalog-data/adobe-commerce-connector-map-products); [Akeneo, Filtering and mapping attributes](https://help.akeneo.com/adobe-commerce-connector-configuring-catalog-data/adobe-commerce-connector-filter-and-map-attributes-and-attribute-options)). Two rules help: if filtering is on, audit it against the whole required-attribute set for the channel, not the subset your current PDP template happens to render — templates change more often than integrations get revisited. And if you're integrating directly against the API, prefer the Product (UUID) endpoint over the identifier endpoint for anything that persists a reference, since UUIDs don't change if a SKU is later renamed ([Akeneo API, REST API reference](https://api.akeneo.com/api-reference.html)). ## Step 3: Render the attributes as real HTML, not just visual layout A rendered PDP is what agents and crawlers actually see. Two things routinely break this even when the data made it to the storefront: - **Client-side-only rendering.** If specs, identifiers, or descriptions are injected after page load via JavaScript with no server-rendered fallback, some crawlers and agent fetchers never see them. Compare `curl` output to what appears in DevTools' rendered DOM (see validation section below). - **Specs trapped in images or PDFs.** Spec sheets and comparison tables rendered as images are invisible to text-based agents. If Akeneo holds the data as structured attributes, render it as an HTML table or definition list, and keep the PDF as a supplementary download, not the only copy. A minimal, agent-friendly spec block looks like plain markup: ```html
MPN
PX-4410
GTIN
00812345678901
Voltage
18V
Weight
2.3 kg
``` ## Step 4: Emit Product JSON-LD from the same enriched attributes Structured data is the layer that turns "the page happens to mention 18V" into an unambiguous, typed fact. Google's guidance is to provide as much of the schema.org `Product` vocabulary as you have data for, since different surfaces (product snippets, merchant listings, shopping features) draw on different subsets, and Merchant Center feed data can supplement — but not replace — page-level structured data ([Google, Intro to Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product)). For a manufacturer/distributor PDP fed by Akeneo, map attributes straight through: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "18V Cordless Impact Driver", "sku": "PX-4410", "gtin13": "0812345678901", "mpn": "PX-4410", "brand": { "@type": "Brand", "name": "Praxis Tools" }, "description": "18V brushless impact driver, 2.3 kg, 4-speed torque control.", "image": [ "https://example.com/images/px-4410-1.jpg", "https://example.com/images/px-4410-2.jpg" ], "additionalProperty": [ { "@type": "PropertyValue", "name": "Voltage", "value": "18V" }, { "@type": "PropertyValue", "name": "Weight", "value": "2.3 kg" } ], "offers": { "@type": "Offer", "url": "https://example.com/products/px-4410", "priceCurrency": "USD", "price": "149.00", "availability": "https://schema.org/InStock" } } ``` Field notes: `name` is always required. Product snippet eligibility needs at least one of `offers`, `review`, or `aggregateRating` ([Google, How to add product snippet structured data](https://developers.google.com/search/docs/appearance/structured-data/product-snippet)); merchant listing eligibility needs `image` and an `Offer` specifically, not an `AggregateOffer` ([Google, How to add merchant listing structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing)). `description`, `sku`, `brand`, `mpn`, and the GTIN properties are recommended on the page markup itself — but Google's Merchant Center feed rules are stricter: a product with a GTIN must also carry `brand`, and a product without one must carry both `brand` and `mpn` ([Google Merchant Center, About unique product identifiers](https://support.google.com/merchants/answer/160161)). Mirroring that pairing in your JSON-LD, not just your feed, keeps the two sources consistent. Use `additionalProperty`/`PropertyValue` pairs for spec attributes without a dedicated schema.org property — voltage, dimensions, materials — so an agent can answer "what's the torque rating" without guessing from prose. Multi-variant catalogs (color/size variants in one Akeneo family) should use `ProductGroup` with `variesBy` and `hasVariant`-nested `Product` entries, Google's documented preferred structure, rather than one `Product` node per variant page competing for the same query ([Google, Product variant structured data](https://developers.google.com/search/docs/appearance/structured-data/product-variants)). ## How to validate - **View-source vs. rendered DOM**: `curl -s https://example.com/products/px-4410 | grep -A2 '"@type":"Product"'` shows what non-JS fetchers see; compare against Chrome DevTools' Elements panel (the live DOM) to confirm client-side rendering isn't hiding attributes or JSON-LD from simple crawlers. - **JSON-LD syntax**: run the page through [Google's Rich Results Test](https://search.google.com/test/rich-results) and the [Schema.org validator](https://validator.schema.org/) to catch malformed JSON or missing required fields. - **Data parity**: spot-check a handful of PDPs against the Akeneo product record via the Product (Identifier) REST API endpoint to confirm the identifier, GTIN, and key attributes on the page match the PIM source, not a stale export. - **Family-to-page audit**: for one representative product per family, list required `attribute_requirements` next to the rendered JSON-LD `additionalProperty` array; gaps here usually point back to an export job's attribute selection, not the PIM data itself. Verified as of July 2026 against current Akeneo PIM/API documentation and Google Search Central structured data guidance; menu paths and connector options vary by Akeneo edition (Community/Growth/Enterprise) and connector version, so confirm field names in your instance before shipping. This whole pipeline assumes the Akeneo side is actually filled in — complete attributes, valid identifiers, real specs instead of placeholder text. That's the part Anglera is built for: it enriches product data continuously (attributes, specs, use-cases, identifiers) directly against your PIM, so the mapping and JSON-LD work above has something rich to render rather than a half-empty family template. --- # Adding Product JSON-LD on WooCommerce — and keeping it in sync Source: https://www.anglera.com/blog/woocommerce-product-json-ld Published: 2026-05-15 Platforms: woocommerce ![Adding Product JSON-LD on WooCommerce — and keeping it in sync](/og/hero-woocommerce-product-json-ld.jpg) WooCommerce already writes basic Product JSON-LD into every product page. The gap most stores hit isn't "no schema," it's incomplete or stale schema — missing brand and GTIN, an aggregateRating that doesn't match the stars on the page, or a price that changed in the cart but not in the `application/ld+json` block. This guide covers the fields that matter, where WooCommerce populates them automatically, where you need to add data, and how to keep the two in sync. ## The fields that actually matter Google's Product structured data documentation requires `name` plus at least one of `offers`, `review`, or `aggregateRating` for a page to be eligible for a product rich result at all. Everything else is "recommended," but in practice these are the ones worth getting right: - **`name`** — required, must match the visible product title. - **`brand`** — not required for the basic Product snippet, but Google uses brand (together with GTIN and MPN) to match your listing to a known product entity, which matters more once you're feeding Merchant Center or AI shopping surfaces. - **`gtin` / `gtin8` / `gtin12` / `gtin13` / `gtin14`** — the most specific GTIN that applies. Recommended for the snippet, effectively required for Merchant Center / free listings eligibility. - **`sku`** — your internal identifier. Useful, but Google explicitly treats it as separate from GTIN/MPN for entity matching, not a substitute. - **`offers`** — needs `price` (decimal, e.g. `39.99`) and should include `priceCurrency` (ISO 4217) and `availability` (schema.org `ItemAvailability` values). - **`aggregateRating`** — needs `ratingValue` and `reviewCount`/`ratingCount`, and it must reflect real, on-page reviews. Google prohibits self-authored or fabricated review markup, and will disable rich results if the markup doesn't match what's visible. ## What WooCommerce generates on its own WooCommerce ships a `WC_Structured_Data` class that automatically renders `application/ld+json` on every single product page — view-source on any product and search for `application/ld+json` to see it. Out of the box, `generate_product_data()` sets `name`, `url`, `description`, `sku`, `@id`, and an `image` if the product has a featured image. It adds `offers` whenever the product has a price (the shape differs for simple, variable, and grouped products), and it adds `aggregateRating` (and up to five recent `review` entries) automatically once the product has at least one approved rating **and** two checkboxes are both on under *WooCommerce → Settings → Products*, in the *Reviews* section: **Enable product reviews** and **Enable star rating on reviews**. Either one turned off suppresses `aggregateRating`, even if the product has ratings. Two fields are worth calling out specifically: - **GTIN**: as of WooCommerce 9.2, there's a native "GTIN, UPC, EAN, or ISBN" field (`global_unique_id`) in the Inventory tab of the product editor, for both simple products and variations. `WC_Structured_Data` strips any non-digit characters from that field, then emits the result as `gtin` (always that one key, never `gtin8`/`gtin12`/`gtin13`/`gtin14`) only if what's left is exactly 8, 12, 13, or 14 digits. Punctuation like hyphens or spaces is harmless — it's discarded before the length check — but letters, or a digit count that doesn't land on 8/12/13/14 after stripping, gets silently dropped from the JSON-LD. On an older WooCommerce version the field doesn't exist at all, which is the more common reason a store has GTIN data entered (in a custom field) but missing from its native markup. - **Brand**: `WC_Structured_Data` does not set `brand` at all, on any version. WooCommerce's Brands functionality (a `product_brand` taxonomy, folded into core as of WooCommerce 9.4, on by default since 9.6) doesn't feed the structured data output either — you still need a small filter to map it into the schema. ## Closing the brand and GTIN gaps Add a `functions.php` (or must-use plugin) filter on `woocommerce_structured_data_product` to fill in what core leaves out: ```php add_filter( 'woocommerce_structured_data_product', function ( $markup, $product ) { // Brand: pull from the product_brand taxonomy if present. $brands = get_the_terms( $product->get_id(), 'product_brand' ); if ( $brands && ! is_wp_error( $brands ) ) { $markup['brand'] = array( '@type' => 'Brand', 'name' => $brands[0]->name, ); } // GTIN fallback: if the native field is empty, read from a custom meta key. if ( empty( $markup['gtin'] ) ) { $gtin = preg_replace( '/[^0-9]/', '', (string) $product->get_meta( '_custom_gtin' ) ); if ( preg_match( '/^(\d{8}|\d{12,14})$/', $gtin ) ) { $markup['gtin'] = $gtin; } } return $markup; }, 10, 2 ); ``` Because this reads live product data on every request (rather than writing a static string), it self-corrects whenever the underlying attribute or meta field changes — which is the core discipline for keeping schema in sync. ## Keeping JSON-LD in sync with the visible page The failure mode to design against isn't "we never added schema" — it's schema that drifts from the page. Three causes cover most real cases: 1. **Hardcoded snippets.** A JSON-LD block pasted into a theme header or a page builder's "custom HTML" widget will not update when price, stock, or rating changes. Always generate markup from the live `$product` object via the `woocommerce_structured_data_product` and `woocommerce_structured_data_product_offer` filters, never as a static string. 2. **Duplicate schema sources.** Yoast SEO, Rank Math, and similar plugins can also emit Product schema. If both WooCommerce core and an SEO plugin output a `Product` block, you get two (sometimes conflicting) JSON-LD graphs on one page. Check your SEO plugin's schema settings and disable its Product/offer schema if WooCommerce's is the one you're maintaining, or vice versa — pick one source of truth. 3. **Full-page caching.** If you run a page cache (server-level, a plugin, or a CDN), a cached HTML page can serve JSON-LD with yesterday's price or stock status even after the product updates. Make sure product save/stock-change events purge that specific product page from cache, not just the shop/category pages. ## A worked example ```json { "@context": "https://schema.org", "@type": "Product", "@id": "https://example.com/product/trail-runner-boot/#product", "name": "Trail Runner Waterproof Boot", "description": "Waterproof trail boot with reinforced toe cap and Vibram outsole.", "image": "https://example.com/wp-content/uploads/2026/06/trail-runner-boot.jpg", "sku": "TRB-2200-BLK-10", "gtin": "0885909950805", "brand": { "@type": "Brand", "name": "Anglera Outfitters" }, "offers": { "@type": "Offer", "url": "https://example.com/product/trail-runner-boot/", "priceCurrency": "USD", "price": "129.00", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "82" } } ``` ## How to validate - **View-source vs. rendered DOM**: view-source (Ctrl/Cmd+U) shows exactly what WooCommerce emitted server-side; also inspect the live DOM in DevTools to confirm no JavaScript later strips or duplicates the ` ``` ## Keeping it in sync with the visible page The failure mode to design against is a JSON-LD block that quietly diverges from the DOM — a price or inventory change that reaches the visible PDP but not the schema. Three practical rules: 1. **One data source, two renderers.** The JSON-LD generator and the visible price/availability/rating widgets should read from the same product model response, not independent queries or cached snapshots taken at different times. 2. **Turn on real-time pricing and inventory (RTPI)** if you enable Product Structured Data — Optimizely ties accurate `Offer` data to RTPI being active; without it, the schema can advertise a stale price even with the toggle "on." 3. **Treat GTIN, brand, and manufacturer number as catalog-governed fields, not template constants.** If they live in a spreadsheet import or an ERP field not wired to the product model the PDP/JSON-LD reads from, they'll go stale independently of the rest of the page. Route metadata (title, meta description, meta keywords) the same way — via Admin Console → Catalog → Products → Edit → Content tab, Product Import, or ERP integration — rather than hand-editing it separately from JSON-LD. ## How to validate - **View-source vs. rendered DOM.** Because Spire server-renders the head, `curl` should return the same JSON-LD script block as "View Page Source" in the browser. If it only shows up in DevTools' rendered DOM, it's being injected client-side after the crawler-relevant response and won't be reliably read by all consumers. ```bash curl -s https://www.example-distributor.com/p/BV-0750-NPT | grep -A 30 'application/ld+json' ``` - **[Google's Rich Results Test](https://search.google.com/test/rich-results):** paste the live URL, confirm the `Product` type is detected with no errors, and check that price/availability match what's rendered on the page. - **[Schema Markup Validator](https://validator.schema.org)** for a stricter, non-Google-specific check of the vocabulary itself. - **Spot-check after a price or inventory change** — update a SKU's price in the admin, then re-curl the PDP to confirm `offers.price` moved with it, not just the visible page. Verified as of July 2026 against Optimizely's Configured Commerce support and developer documentation; menu paths and default field lists are current for Spire and Classic CMS as published, but confirm against your version and plan since structured data behavior can vary by release. None of this works without clean data behind it, though — a JSON-LD block is only as good as the GTIN, brand, and spec values feeding it. Anglera plugs into your PIM or Configured Commerce catalog directly, continuously enriching those underlying attributes so the fields above (GTIN, mpn, category, spec-driven descriptions) stay populated and current, rather than blank or stale when your schema tries to read them. --- # Lost trust: the compounding cost of a catalog buyers stop believing Source: https://www.anglera.com/blog/lost-trust-bad-product-data Published: 2026-05-14 ![Lost trust: the compounding cost of a catalog buyers stop believing](/og/hero-lost-trust-bad-product-data.jpg) Trust is not a feeling your brand team tracks in a survey once a year. It is a behavior that shows up in repeat-purchase rate, review language, branded search volume, and how often people bounce back to Google to double-check what you told them. A buyer who catches your catalog in one wrong spec does not just distrust that SKU — they start re-verifying everything else in your store, on someone else's terms. That is the compounding part, and it is measurable long before it shows up as a revenue miss. ## Why one bad spec poisons the whole catalog Buyers don't audit your PIM. They pattern-match. If a buyer orders a jacket sized to your chart and it doesn't fit, they don't conclude "that one listing had an error" — they conclude "this retailer's sizing can't be trusted," and they start re-checking dimensions, materials, and compatibility specs on every future purchase, on every future visit, often on a competitor's tab open next to yours. Industry research backs this pattern: in Akeneo's 2025 survey of shoppers, 68% said they'd stop buying from a brand after a bad product-information experience, and 65% said they'd abandon a purchase if data from any source felt unreliable — not just the specific field that was wrong ([Retail Times](https://retailtimes.co.uk/the-trust-gap-why-incomplete-product-information-is-curshing/)). Trust doesn't fail at the SKU level. It fails at the catalog level, because that's the level at which humans generalize. The same survey found consumer dissatisfaction with product-data comprehensiveness more than doubled since 2023, from 13% to 30% ([360 Magazine](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/)). That's not a story about buyers getting pickier. It's a story about the bar for "good enough" data rising faster than most catalogs are improving — which means the trust penalty for a stale or wrong attribute is getting steeper every quarter, not staying flat. ## Trust is a lagging indicator with leading proxies You can't query "trust" directly, but you can query its downstream signals. Each one below is something you can pull this week, and each one moves in a predictable direction when data quality changes. | Signal | What it shows | How to measure it | |---|---|---| | Repeat-purchase rate by first-order category | Whether the first product experience made someone come back | Cohort report in your commerce platform or CDP: 90-day repeat rate segmented by which SKUs/categories had recent data-quality remediation vs. untouched ones | | Review sentiment and "not as described" language | Whether buyers feel misled after unboxing, not just dissatisfied with the product | Text-mine review content (star rating alone hides this) for phrases like "not as pictured," "different than listed," "wrong size/color" — track frequency as a rate per 1,000 reviews | | Branded query volume and branded CTR | Whether people trust your name enough to search for it directly instead of generic terms, and whether they still click when they see it | Google Search Console, filtered to branded terms; watch trend, not absolute volume, against a baseline period | | Return-to-site / re-verification behavior | Whether buyers are leaving your PDP to fact-check you elsewhere before converting | GA4 exit-and-return sessions on the same product within a session window; also watch on-site search spikes for a SKU right after a data change | | Return rate tagged "item not as described" | The most direct, dollarized signal of a trust breach, distinct from "changed my mind" returns | Returns platform reason-code breakdown — if your reason codes don't separate "not as described" from "no longer wanted," fix that first; it's the single highest-leverage report you're probably not running | | Support-ticket load with pre-purchase questions | Whether buyers no longer trust the PDP enough to buy without asking a human first | Ticket tagging by category ("sizing question," "compatibility question") as a rate per 1,000 sessions on that PDP | The pattern across all six: trust erosion shows up as buyers doing extra work — extra searching, extra asking, extra returning — to compensate for information they no longer believe. Every one of those extra steps is a friction cost you can put a number on, and most of them are already sitting in tools you have. ## Returns are the sharpest signal, and most retailers are measuring them wrong Returns get bucketed together — "changed my mind," "found it cheaper," "item not as described" — and then reported as one blended rate. That blend hides the trust problem. A return because a buyer changed their mind is a normal cost of doing business. A return because the listed material, dimensions, or compatibility spec was wrong is a return your catalog caused, and it's also the return most likely to produce a review, a support ticket, and a lost repeat customer. Separating "not as described" from everything else in your reason codes turns returns from a cost-center number into a trust-diagnostic number — and it lets you tie specific SKUs, categories, or data sources back to the erosion. ## Rebuilding trust is a consistency problem, not a campaign You cannot advertise your way out of a trust deficit caused by bad data — a discount or a marketing push might recover a single sale, but it doesn't touch the underlying reason the buyer stopped believing your PDPs. What rebuilds trust is the same catalog behaving the same way, correctly, every time a buyer checks it: the spec sheet matches the product photo, the size chart matches what arrives, the compatibility claim holds up. That consistency has to be maintained continuously, because supplier feeds change, new SKUs launch, and attributes drift out of date — a one-time cleanup buys you a temporary bump, not a durable recovery in the metrics above. This is the problem Anglera is built around. Your PIM stores the data; Anglera continuously scores, gap-fills, and enriches it against the source documents your suppliers actually provide, so the specs a buyer sees are accurate and consistent the tenth time they check as much as the first. It plugs into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file with none of those — it's additive to what you already run, live in weeks rather than a multi-year rebuild. Trust, tracked properly, is one of the clearest ROI cases for getting product data right — because it's the metric that decides whether a buyer ever gives you a second look. --- # The datacom & networking attributes buyers filter on — and most catalogs miss Source: https://www.anglera.com/blog/datacom-networking-attributes Published: 2026-05-14 Industries: datacom-networking ![The datacom & networking attributes buyers filter on — and most catalogs miss](/og/hero-datacom-networking-attributes.jpg) A buyer searching for a "48-port PoE switch" isn't browsing a category page — they're filtering on PoE budget, uplink type, and switching capacity, then discarding anything that doesn't answer those questions in structured form. In datacom and networking, the spec sheet is the product page. When a supplier feed collapses those specs into a paragraph, the SKU doesn't rank low in filtered search — it disappears from it entirely, and it becomes invisible to AI answer engines doing the same filtering under the hood. ## The attributes that actually gate a datacom purchase Networking buyers, whether they're a systems integrator specifying a wiring closet or a facilities manager sizing a camera deployment, filter on a fairly consistent set of technical facets. Missing any one of these removes the product from consideration, not just from search rank. | Attribute | Why it gates the purchase | |---|---| | Port count | Determines fit against a floor plan or rack budget — 24 vs. 48 is a different quote | | PoE standard | `802.3af` (Type 1, up to 15.4W/port), `802.3at` (PoE+, up to 30W/port), or `802.3bt` (PoE++, up to 60W or 100W/port) — each supports a different class of powered device | | Total PoE power budget | The aggregate wattage available to share across all PoE ports — this is what actually limits how many cameras or phones can be powered simultaneously, not the per-port max | | Switching capacity (Gbps) | The switch fabric's total throughput; a 48-port gigabit switch fully utilized needs roughly 96 Gbps of non-blocking capacity, so published fabric numbers below that indicate oversubscription | | Uplink type and count | `SFP+`, `SFP28`, or copper — this is what connects the switch to the rest of the network and determines if it can be a distribution-layer device or only access-layer | | Managed vs. unmanaged vs. smart-managed | Gates whether VLANs, `802.1X`, QoS, and link aggregation are even configurable | | Layer 2 vs. Layer 3 | Determines if the switch can route between subnets or only switch within one | | Forwarding rate (Mpps) and MAC table size | Secondary specs that matter to network engineers sizing for dense deployments | | Mounting and rack depth | Physical fit constraint that's easy to skip and hard to reverse after delivery | None of this is exotic. According to buying guides from [IP Security Depot](https://www.ipsecuritydepot.com/guides/network-switch-poe-buying-guide/) and [FS.com](https://www.fs.com/blog/understanding-poe-standards-and-wattage-21.html), these are the exact fields procurement teams and integrators compare across vendors before they ever open a quote request. Distributor and manufacturer sites that don't expose these as structured, filterable fields lose the comparison before the buyer reads a word of marketing copy. ## Why a missing attribute is worse than a low rank Faceted search doesn't degrade gracefully. If a shopper sets a filter for "PoE budget: 500W+" and a switch's power budget lives only inside a PDF datasheet linked from the product page, that switch has no value in the `poe_budget` field — so it's excluded from the result set, full stop. It doesn't show up ranked tenth. It doesn't show up at all. The same failure mode now extends to AI answer engines. Ask an answer engine "what 48-port PoE switch supports eight PoE++ cameras and has 10G uplinks," and it needs power-per-port, PoE standard, and uplink type as discrete, comparable values across every candidate product it's evaluating. A product description that says "high-power PoE switch with fast uplinks" gives the model nothing to compare. A product with `poe_standard: 802.3bt`, `poe_budget_watts: 600`, `uplink_type: SFP+`, `uplink_count: 4` gets cited; the vague one gets skipped, regardless of how good the underlying hardware actually is. ## Worked example: 48-port PoE switch, raw feed vs. enriched Here's what a typical supplier feed hands a distributor, and what a buyer or answer engine actually needs. **Raw feed description (as received):** > "48 port gigabit switch with PoE, high power budget, fast uplinks, rack mountable, managed switch for enterprise networks." **Enriched attribute table:** | Attribute | Value | |---|---| | Port count | 48 | | Port speed | `1000BASE-T` (Gigabit Ethernet) | | PoE port breakdown | 40x PoE+ (`802.3at`), 8x PoE++ (`802.3bt` Type 3/4) | | Max power per port | 32W (PoE+ ports), 60W (PoE++ ports) | | Total PoE power budget | 600W | | Switching capacity | 176 Gbps | | Non-blocking throughput | 88 Gbps | | Forwarding rate | 131 Mpps | | Uplink ports | 4x `SFP+` (10G/1G) | | Management | Fully managed (CLI, SNMP, `802.1X`, VLAN, LACP) | | Layer | Layer 2, with static routing | | MAC address table | 16,000 entries | | Form factor | 1U rack mount, 400-1200mm rack depth | The raw version reads fine as marketing copy. It fails as data. "High power budget" isn't a filter value; "600W" is. "Fast uplinks" doesn't tell a buyer whether they're getting `SFP+` or `SFP28`; "4x SFP+ (10G/1G)" does. ## Structuring it so it holds up The pattern that works across datacom catalogs is to separate physical specs (port count, form factor, mounting) from power specs (PoE standard, per-port wattage, total budget) from performance specs (switching capacity, forwarding rate, table size) from management capability (Layer 2/3, managed tier, protocol support) — each as its own attribute group with controlled values, not a single free-text spec block. That's what lets a distributor's site facet on "PoE budget over 400W" or "SFP+ uplinks" without someone manually tagging thousands of SKUs. Getting there means pulling the real values out of manufacturer datasheets — not writing new copy, and not guessing at a wattage. Anglera plugs into whatever a distributor already runs, whether that's Akeneo, Salsify, Syndigo, or a flat file with no PIM at all, and extracts and quality-scores attributes like these directly from supplier source documents so the catalog can go from a paragraph to a filterable spec table without a rebuild of the underlying system. In a category where the spec sheet is the product, that structural work is what keeps a SKU visible to both a procurement filter and an answer engine's citation logic. --- # Why building materials SKUs go invisible: the attribute gaps that filter you out Source: https://www.anglera.com/blog/building-materials-attributes Published: 2026-05-14 Industries: building-materials ![Why building materials SKUs go invisible: the attribute gaps that filter you out](/og/hero-building-materials-attributes.jpg) A builder or estimator specifying an LVL beam isn't browsing — they're matching a structural calculation to a product. If the E-value, grade, and use category aren't in structured fields, the exact SKU that fits the job never surfaces, no matter how good the mill run is. Here's the attribute set that actually drives filtered search and AI answers in building materials, worked through a real LVL beam example, and how to structure it so it holds. ## Why building materials data breaks in a specific way Most building materials buyers — contractors, estimators, lumberyard counter staff, building departments — arrive with a spec already in hand from a plan set or an engineer's letter. They're not shopping for "strong beams." They're matching a load table entry: a specific depth, E-value, and use classification. That's a filter-first buying motion, the same pattern that breaks industrial catalogs when platforms default to generic brand/price/category filters instead of the specs buyers actually search on. Building materials adds two wrinkles most categories don't have. Code compliance is load-bearing in the literal sense: an LVL beam's grade and third-party evaluation report (ICC-ES or APA) determine whether an inspector passes the job, not just whether a customer likes the product. And most of the catalog is engineered wood — LVL, I-joists, glulam, LSL — where two SKUs that look identical in a photo differ entirely in the numbers: modulus of elasticity, bending strength, shear value. If those numbers live in a PDF instead of a field, the SKU is functionally invisible. ## The attributes that actually matter For LVL, and by extension most engineered building products, the fields that drive both faceted search and code-driven selection cluster into a few groups: | Category | Attributes | |---|---| | Structural rating | Grade/E-value (e.g. `1.9E`, `2.0E`), bending strength (`Fb`), shear (`Fv`), modulus of elasticity (`E`), compression perpendicular (`Fc-perp`) | | Physical dimensions | Thickness, depth, length (random or fixed), camber | | Use classification | Dry-use vs. wet-use/exterior exposure, treatment type (untreated, PWT/preservative-treated for ground contact or weather exposure) | | Compliance | Manufacturing standard (`ASTM D5456`), ICC-ES or APA/CCMC evaluation report number, applicable code (IBC/IRC) | | Application/compatibility | Intended use (header, floor beam, ridge beam, rim board, column), connector/hanger compatibility | | Logistics | Unit of measure, packaging (bundle quantity), weight per linear foot, manufacturer/product line | This is the same discipline that classification standards like [ETIM and eCl@ss](https://wisepim.com/guides/product-categorization/industrial-equipment) impose on industrial catalogs: force every SKU into a class with a fixed, comparable set of fields instead of a free-text description. Building materials has no single dominant standard the way electrical has ETIM — which is exactly why so many distributor feeds still bury E-value and use classification inside a paragraph instead of a field. ## Worked example: a raw LVL feed line vs. an enriched record Here's a typical LVL beam coming off a manufacturer's flat file, next to what a filterable, AI-legible listing needs. The dimensions and grade reflect real mill technical guides like [RedBuilt's LVL specifier data](https://www.redbuilt.com/wp-content/uploads/2020/03/RedLam-LVL-Specifiers-Guide.pdf) and [Murphy's LVL technical design guide](https://www.murphyplywood.com/pdfs/engineered/Murphy_LVL_Technical_Guide.pdf); the under-structured presentation below is typical of a raw supplier feed. **Raw feed description (as received from a manufacturer):** > "Laminated veneer lumber beam, 1-3/4 x 11-7/8, 24 ft random length, 2.0E, for use as header or beam in residential construction." That line is technically accurate and nearly unusable in a filter. There's no shear value, no use classification, no evaluation report number, and "for use as header or beam" isn't a structured field a search facet can query. A builder filtering for "2.0E LVL rated for wet-use exposure, 11-7/8 depth" will not find this SKU, and an AI assistant summarizing beam options has nothing extractable to cite. **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Laminated veneer lumber (LVL) beam | | Grade/E-value | `2.0E` | | Modulus of elasticity (E) | `2,000,000 psi` | | Bending strength (Fb) | `2,600 psi` (edgewise, per manufacturer design values) | | Thickness | `1-3/4 in` | | Depth | `11-7/8 in` | | Length | `24 ft` (random length) | | Use classification | Dry-use | | Treatment | Untreated | | Manufacturing standard | `ASTM D5456` | | Evaluation report | ICC-ES `ESR` (manufacturer-specific number) | | Applicable code | IBC / IRC | | Typical application | Header, floor beam, ridge beam | | Connector compatibility | Standard joist hanger series (manufacturer cross-reference) | | Packaging/UOM | Each, sold by the linear foot or full length | Same physical product, same source documents — but now every field an estimator's spec sheet or a filter would ask for is broken out, quality-scored against the manufacturer's technical guide, and ready to drive a facet instead of sitting in a sentence. ## Ask an answer engine This is worth testing directly. A contractor or their AI assistant might ask: "what LVL beam works for a 24-foot header, 2.0E, dry-use, 11-7/8 depth?" An answer engine can only surface products whose attributes are explicit and structured — a scanned spec PDF doesn't answer that, but a populated `grade`, `depth`, and `use_classification` field does. Distributors whose LVL, I-joist, and glulam data lives only in attached PDFs are opting out of that channel entirely, a gap that only widens as buyer research shifts from typed search toward conversational tools heading into [2026](https://searchengineland.com/mastering-generative-engine-optimization-in-2026-full-guide-469142). ## Structuring the schema so it holds up A few rules keep a building materials schema durable instead of a one-time cleanup project: - **Never collapse grade and E-value into one free-text string.** `2.0E` needs to be filterable on its own, separate from species, thickness, or brand. - **Pair every strength value with its test basis.** An `Fb` or shear value without the design-value condition it was tested under isn't comparable across manufacturers. - **Model use classification and treatment as controlled fields, not adjectives.** Dry-use vs. wet-use vs. ground-contact-treated changes what a beam is legally allowed to do. - **Keep the evaluation report number attached to the SKU, not buried in a linked PDF.** Inspectors and estimators both search on it directly. - **Treat dimensions as three separate fields (thickness, depth, length), never one string.** Free-text strings like "1-3/4 x 11-7/8 x 24" can't be range-filtered, and range filtering is exactly how builders shop engineered lumber. None of this requires replacing a taxonomy or a PIM. Your PIM stores the data — the work is pulling grade, E-value, use classification, and evaluation report numbers out of supplier PDFs, quality-scoring them against the source, and gap-filling what's missing. Anglera plugs into Akeneo, Salsify, inriver, or a plain spreadsheet and does exactly that: extract, score, enrich, and keep it current as new mill runs land — the same discipline this LVL example shows, applied across a full catalog. --- # The returns math: what wrong-fit and wrong-part returns really cost Source: https://www.anglera.com/blog/product-data-returns-cost-math Published: 2026-05-13 ![The returns math: what wrong-fit and wrong-part returns really cost](/og/hero-product-data-returns-cost-math.jpg) Ask a retailer for their return rate and you'll get an answer to the decimal point. Ask what's driving it, and the room goes quiet. That's not a data gap. The reason codes already exist inside the returns system — they're just never joined back to the product record that caused the return in the first place. Do that join, build out the full cost stack, and the returns line stops looking like a fulfillment problem. It starts looking like a product-data problem that happens to arrive with a fulfillment bill attached. ## The real return rate, and why it's worse than the headline number Ecommerce returns now sit around 19-21% of orders on average — roughly two to three times the brick-and-mortar rate of under 9% — according to the [National Retail Federation's 2025 Retail Returns Landscape data as summarized by Richpanel](https://www.richpanel.com/learn/ecommerce-return-rates). Category spread is wide: - Apparel: 20-40% - Footwear: 17-30% - Home and furniture: 15-23% - Electronics: 8-15% - Beauty: 4-12% U.S. retail returns totaled roughly $890 billion in 2025 by some estimates — close to 15% of annual sales, per the same NRF-sourced dataset. That's the headline number. The part that doesn't make the press release: a large share of those returns were preventable at the point of listing, not the point of shipping. ## Building the full cost stack A "return" isn't one line item. Every unit that comes back triggers a sequence of costs, and most finance teams only track the first one or two of them. | Cost bucket | What it captures | How to measure it | |---|---|---| | Reverse logistics | Inbound shipping, warehouse handling, label costs | Freight + 3PL invoices tagged to return SKUs, per [Shopify's reverse logistics breakdown](https://www.shopify.com/enterprise/blog/reverse-logistics) | | Inspection & restocking | QA check, repackaging, putaway labor | Labor hours per return x fully loaded hourly rate | | Markdown / liquidation | Value lost when a returned unit can't be resold at full price | (Original price - resale/liquidation price) x units returned | | Lost margin on the original sale | Contribution margin given up when the unit never nets out as a keep | Unit margin x return rate; compounds fast — a 25% return rate can cut unit contribution margin dramatically | | CX and support load | Agent time on return authorizations, disputes, refund processing | Support tickets tagged "return/exchange" ÷ total return volume, cost per ticket from your helpdesk | | Trust and repeat-purchase erosion | Customers who don't come back after a bad return experience | Repeat purchase rate, cohort-split by return-history vs. no-return-history | Processing a single return typically costs somewhere between $10 and $65 depending on category and channel, with electronics and furniture at the high end because of size, weight, and refurb requirements. Layer in that two-thirds of shoppers say they won't buy from a retailer again after a poor return experience, and the real cost model runs well past the current quarter's P&L. That last row is the one most retailers never quantify — and it's often the largest number on the sheet. ## How much of that is a product-data problem Not every return is a data problem. Some are genuine change-of-mind, some are damage in transit, some are just buyer's remorse. But the returns industry's own reason-code data points to a data-quality core: - **Fit and sizing** is consistently cited as the single largest return driver in apparel, with estimates running from roughly 60% to 70%-plus of apparel returns tied to size or fit mismatch. - **"Item different than described or pictured"** shows up as a top-three reason code across general merchandise, frequently in the 20-25% range of stated return reasons. - **Wrong item received** — a fulfillment-adjacent but often catalog-rooted issue (duplicate SKUs, mismatched variant mapping, ambiguous product identifiers) — is regularly cited in a similar range. Add those up and a meaningful share of returns in any non-trivial catalog — plausibly a third to half in apparel and general merchandise — trace back to the product record. A missing dimension. An out-of-date size chart. A spec that didn't match the buyer's actual need. An image that implied a color or finish the item didn't have. That's not a shipping problem or a customer problem. That's an enrichment problem — and it shows up on the returns dashboard, not the PDP dashboard, which is exactly why it goes unmeasured. ## The attributes that move the needle most Not all missing fields cost the same. Some attributes correlate directly with return reason codes; others are nice-to-have. Prioritize enrichment against the return driver — not against catalog completeness for its own sake. | Attribute type | Return driver it addresses | Reported impact | |---|---|---| | Size chart / fit measurements | Wrong size, fit mismatch | Detailed, brand-normalized size charts are associated with return-rate reductions in the 20-30%+ range in fashion ecommerce studies | | True material / fabric spec | "Not as described" | Reduces expectation-gap returns when material, weight, and stretch are stated plainly, not just "cotton blend" | | Compatibility / fitment data | Wrong part, wrong SKU purchased | Critical in auto parts, appliance parts, and hardware, where fitment errors drive a large share of the ~19% category return rate | | Accurate, multi-angle imagery + color-true rendering | "Looks different than pictured" | Directly targets the described-vs-received gap, one of the most cited return reasons | | Dimensions and weight | Space/fit disappointment in furniture and home | Reduces the 15-23% home-goods return band tied to size-in-room mismatches | The pattern holds across categories: attributes that close the gap between what the buyer *expected* and what arrived are the ones with measurable return impact. Attributes that just make a listing longer are not. ## Measuring the connection at your own company You don't need a new BI stack to see this. Three steps: 1. Pull your return reason codes for the last two quarters. 2. Bucket them into "data-attributable" (size/fit, not-as-described, wrong item/spec) versus "non-data" (damage, change of mind, delivery). 3. Join that against a data-completeness or data-quality score for the returned SKUs. If data-attributable returns cluster on the SKUs with the thinnest, oldest, or lowest-scored attribute sets — and they usually do — you've got a defensible ROI case. Model the reverse-logistics-plus-CX cost of just the data-attributable slice, then price out closing the attribute gap on your highest-return, highest-volume SKUs first. This is the same problem Anglera exists to close on the front end. Your PIM stores the size chart, the fitment data, the material spec. Anglera continuously scores what's missing or stale, gap-fills it from supplier and source documentation, and keeps it current as products and variants change — without replacing whatever system already holds the data. Treat returns math as a second, brutally honest measurement of catalog quality. PDP conversion tells you if the listing gets the sale. The returns line tells you if the listing was actually true. --- # The last inch: the product-page facts that push a ready buyer to buy Source: https://www.anglera.com/blog/last-inch-conversion-details Published: 2026-05-13 ![The last inch: the product-page facts that push a ready buyer to buy](/og/hero-last-inch-conversion-details.jpg) A ready buyer doesn't abandon your site because they changed their mind. They abandon because, at the exact moment they went to click "add to cart," one fact they needed wasn't on the page. Stock status, exact fit, whether it works with what they already own, what happens if it's wrong, how it stacks up against the other tab open in their browser — miss any one of these and a converted sale becomes a bounce. This is the last inch: the few seconds after intent has already formed, where product data either closes the sale or loses it. The good news is that the last inch is measurable. Each reassurance fact maps to a specific hesitation, and each hesitation shows up as a specific, trackable drop between product view, cart add, and checkout completion. Fix the data, watch the funnel move. ## The five facts, and the doubt each one kills | Fact on the page | Hesitation it removes | Where you'll see the lift | |---|---|---| | Real-time stock and lead time | "Will this actually ship, and when will I have it?" | Cart-add rate, checkout completion | | Exact dimensions, weight, and fit | "Will this fit my space, my body, my truck bed?" | Cart-add rate, size-guide/spec-sheet engagement | | Compatibility with what they own | "Will this work with the system I already have?" | Add-to-cart on accessory/replacement SKUs | | Clear, specific returns terms | "What happens if I'm wrong?" | Checkout completion, post-purchase return rate | | Comparison specs vs. alternatives | "Is this actually the right one, or just the first one?" | Time on page before conversion, PDP-to-cart on comparison-heavy categories | Extra costs and unclear logistics are still the single biggest reason carts die: shipping fees, taxes, and other last-minute costs account for roughly 48% of abandonments, more than any other cause ([SellersCommerce, 2026](https://www.sellerscommerce.com/blog/shopping-cart-abandonment-statistics/)). A meaningful share of that is a data problem, not a pricing problem — the buyer wasn't shown accurate shipping and lead-time information early enough to price it into their decision. Delivery-date uncertainty compounds it. Baymard Institute's research found that 41% of sites don't show a delivery date at all, forcing shoppers to guess and increasing abandonment as a result ([via Jay Group](https://www.jaygroup.com/blog/how-estimated-delivery-dates-edd-7-day-shipping-weekend-fulfillment-win-conversions/)). "Ships in 3-5 business days" is not the same fact as "arrives by Thursday, July 9." One is a policy statement; the other is a commitment a buyer can plan around. Returns terms carry similar weight, but from the other direction. Shoppers who are unsure what happens if the product doesn't work out don't wait to find out — they leave before they ever risk it. And for the ones who do buy, unclear or incomplete data is a direct driver of the return itself. Retailers project 15.8% of 2025 sales will come back, totaling $849.9 billion, with the online rate running higher at 19.3% ([NRF, 2025 Retail Returns Landscape](https://nrf.com/research/2025-retail-returns-landscape)). Not all of that is buyer's remorse. A meaningful share is a mismatch between what the PDP promised — the fit, the finish, the compatible part number — and what showed up in the box. ## Why these five and not more You could reassure a buyer with a dozen different facts. These five earn their place because each one maps to a distinct type of hesitation, and each type of hesitation kills the sale differently: - **Stock and lead time** kill sales before checkout even opens — the buyer leaves the PDP the moment "in stock" is vague or missing. - **Dimensions and fit** kill sales at the point of comparison — the buyer opens a tape measure, a size chart, or a spec sheet from a competitor in a second tab, and if your page doesn't answer the question, theirs does. - **Compatibility** is the accessory and replacement-parts killer — B2B buyers and DIYers alike will not gamble on "should work with most models." - **Returns terms** are a checkout-stage killer — the buyer has the item in cart and is deciding whether the risk is worth it right now. - **Comparison specs** determine which SKU wins when the buyer has already decided to buy something in the category, just not which one. Each of these is a data completeness and accuracy problem before it's a UX or merchandising problem. You can redesign the PDP all you want; if the stock feed is stale, the dimension field is blank, or the compatibility list hasn't been updated since the last product refresh, the reassurance isn't there to display. ## How to measure the lift Treat each fact as a testable hypothesis, not a nice-to-have. The instrumentation is the same pattern across all five: 1. **Segment PDPs by data completeness.** Pull a cohort of pages missing the fact in question (no lead-time field populated, no dimensions, no compatibility list) and a matched cohort where it's present. Compare cart-add rate and checkout completion rate between the two in your analytics platform (GA4, Shopify/BigCommerce native analytics, or your CDP) over a stable trailing window. 2. **Run it as a proper test where volume allows.** For high-traffic categories, A/B or holdout the fact itself — show delivery date vs. generic shipping copy, exact dimensions vs. "see size guide," specific return window vs. generic policy link — and measure cart-add and checkout-completion delta directly. 3. **Watch the downstream metrics, not just the funnel.** Fit and compatibility data show up twice: once in cart-add rate, and again — with a lag — in the return rate and reason codes for that SKU. If "wrong size" or "didn't fit my setup" is a top return reason for a product family, that's the data gap talking, not the buyer. 4. **Track support-ticket load as a leading indicator.** Pre-sale tickets asking "does this fit," "is this compatible with X," or "when will this ship" are the questions your PDP failed to answer. A drop in that ticket volume after a data fix is often visible before the conversion lift is. 5. **Roll it into AOV and attach rate.** Compatibility data doesn't just protect the primary sale — clear "works with" information is what makes attach and cross-sell recommendations trustworthy enough to click. None of this requires guessing. It requires having the fact, correctly, on the page, and then watching the same funnel you already track. ## The connective thread Getting the right buyer to the right product is only half the funnel. The other half is giving that buyer, at the exact moment of intent, every fact that removes a reason to hesitate — and then proving it moved the numbers. This is the layer Anglera works on: continuously scoring PDPs for the specific gaps that stall a ready buyer — missing dimensions, stale stock signals, incomplete compatibility data — and filling them from real supplier and source documentation, not guesswork, so the last inch stops costing you sales you already earned. --- # Getting jan/san & packaging products cited by ChatGPT, Perplexity, and AI Overviews Source: https://www.anglera.com/blog/jan-san-aeo Published: 2026-05-13 Industries: jan-san ![Getting jan/san & packaging products cited by ChatGPT, Perplexity, and AI Overviews](/og/hero-jan-san-aeo.jpg) A facilities manager restocking a multi-site cleaning program doesn't start with a distributor's website search bar anymore. She opens ChatGPT or Perplexity, describes the spec — dilution ratio, certification, case pack — and asks for a match. If your Jan/San or packaging catalog can't answer that question in structured form, the engine routes around you to a supplier whose data made the decision easy. That shift is showing up across B2B purchasing broadly, and it exposes a specific weakness in how most Jan/San distributors have exported product data for the last twenty years. ## The research step moved off your website and into a chat window This is not a niche trend. Forrester's 2026 Buyers' Journey Survey of 18,000 global business buyers found that 94% of B2B buyers used AI somewhere in their most recent purchase process, up from 89% a year earlier, and that generative AI now edges out vendor websites, product experts, and sales reps as the single most influential research source ([Machine Relations, B2B AI Vendor Research 2026](https://machinerelations.ai/research/b2b-ai-vendor-research-2026)). The same research puts 55% of buyers comparing vendors inside AI tools and 54% researching product information directly through them, often before a distributor's sales team knows the deal exists ([73% of B2B Buyers Use AI Tools in Purchase Research](https://finance.yahoo.com/sectors/technology/articles/73-b2b-buyers-ai-tools-231200431.html)). For Jan/San and packaging distributors, the facilities manager, BSC owner, or procurement generalist restocking chemicals, dispensers, liners, and case-pack supplies is increasingly running that restock as a prompt, not a site search. Jan/San buying is often done by someone juggling ten other responsibilities — exactly the profile most likely to lean on an answer engine to translate a facility need ("green-certified, low-foam floor cleaner safe for LVT flooring") into a specific SKU. If your catalog can't supply that translation in a form the model can parse, you get skipped. ## Why a full warehouse looks empty to a language model Most Jan/San ERP exports and legacy catalog feeds were built to print a price sheet, not to answer a question. A typical row looks like this: **Raw ERP feed description (as-is):** > `CHEM MULTI-SURF CLNR RTU 4/1GAL GRN SEAL` That string tells a counter clerk who already knows the shorthand what's in the case. It tells a model — or a buyer typing into Perplexity — almost nothing verifiable. Is it ready-to-use or a concentrate that needs dilution? What does "GRN SEAL" actually certify, and is that certification current? What surfaces is it rated safe for? None of that is answerable from the string itself. Enriched, the same SKU looks like this: | Attribute | Value | |---|---| | Product type | Multi-surface cleaner | | Formulation | Ready-to-use (`RTU`), no dilution required | | Case pack | `4 x 1 gal` | | Certification | `Green Seal` certified | | Surface compatibility | Sealed floors, LVT, laminate, most hard surfaces | | pH | Neutral | | Fragrance | Unscented | | Typical use case | Daily maintenance cleaning, schools and healthcare-adjacent facilities | That's the gap between a string an ERP can print on an invoice and a labeled attribute set an answer engine can reason over. A model matching "Green Seal certified, low-VOC, safe-for-LVT daily cleaner, ready-to-use, sold in case packs" against your catalog needs those values sitting in fields it can parse — not compressed into a ten-character abbreviation string. ## Ask an answer engine: what this looks like today Here's a plausible query from a facilities buyer managing several commercial sites: > "I need a Green Seal certified, ready-to-use all-purpose cleaner safe for LVT and laminate flooring, sold by the case, for a school district contract. Which distributors carry it and can fulfill a standing order?" An answer engine parsing that is matching on certification, formulation type, surface compatibility, pack configuration, and fulfillment capability. If your product content encodes those as explicit, labeled attributes — on the page, in `schema.org` `Product` and `additionalProperty` markup, in a feed a retrieval layer can actually ingest — you're eligible to be the cited answer. Independent benchmarking backs this up directionally: pages with valid structured product markup have been observed appearing roughly 20-30% more often in AI-generated summaries than unstructured equivalents, though the mechanism is indirect — structured data helps a model confirm meaning that already exists in the content, it doesn't invent it ([Schema Markup for AI Visibility, ailabsaudit.com](https://ailabsaudit.com/blog/en/schema-markup-ai-visibility-guide)). Packaging categories carry the same problem in a different shape — a corrugated case or stretch film SKU is only matchable if burst strength, gauge, and dimensions are explicit fields, not folded into a size code only your ERP understands. ## What "machine-readable" actually requires This isn't a rebuild. It's the enrichment work most Jan/San and packaging distributors already know is behind, with a sharper reason it now matters: - Break compound spec strings into discrete labeled fields: formulation type, certification, dilution ratio, surface compatibility, case pack. - Standardize the abbreviations that vary supplier to supplier — `RTU` vs. concentrate, `Green Seal` vs. `EcoLogo`, fragrance-free vs. unscented — so a query and a catalog value can actually match. - Fill the fields supplier feeds routinely leave blank. Certifications and surface compatibility are two of the most commonly missing attributes in raw Jan/San distributor data, and they're exactly what an answer engine needs to confirm a fit. - Keep it current as manufacturers reformulate or recertify products, so an answer engine isn't citing a SKU on a lapsed certification. Done by hand — checking supplier documentation, normalizing terminology, filling gaps, re-verifying against updated spec sheets — that enrichment work runs in the range of 30-45 minutes per SKU. Across a Jan/San or packaging catalog with tens of thousands of active SKUs spanning dozens of manufacturers, that's not work a data team clears before the next supplier update makes the catalog stale again. ## Where this fits for distributors Your PIM or ERP stays the system of record — Anglera doesn't replace it and has nothing to do with your CRM. What Anglera does is plug into whatever you already run (Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing — a flat file is enough to start) and continuously extract, quality-score, and gap-fill the attributes that turn a compressed spec string into something a buyer's answer engine can actually match. It's live in about 30 days, not a multi-year integration project. Distributors getting their Jan/San and packaging data to that standard aren't optimizing for a traffic metric — they're making sure their SKU is the one an answer engine can confidently recommend when the question that used to start with a phone call to the rep now starts with a prompt. --- # The technical SEO checklist for commercetools product pages Source: https://www.anglera.com/blog/commercetools-technical-seo-checklist Published: 2026-05-13 Platforms: commercetools ![The technical SEO checklist for commercetools product pages](/og/hero-commercetools-technical-seo-checklist.jpg) commercetools is headless: there is no built-in storefront, so every technical SEO decision — what gets rendered, what shows up in view-source, what search engines and AI agents actually receive — lives in whatever frontend you've paired with it (commercetools Frontend on Next.js, a custom Next.js/Nuxt build on the Composable Commerce API, or a legacy SPA). This checklist walks through the parts of a commercetools-backed PDP that most often break SEO, with the actual field names and mechanisms involved, so you can audit your own implementation against them. ## Rendering: confirm the PDP is actually in the HTML Product data in commercetools lives behind the Product Projections / GraphQL API, so nothing renders until your frontend fetches it and puts it into a response. commercetools Frontend handles this with a Next.js catch-all route (`pages/[[...slug]].tsx` in the Pages Router, or the equivalent App Router segment) where "all Data Sources are executed in parallel" server-side before the page reaches the client. On a custom storefront built directly on the API, the same principle applies regardless of framework: title, description, price, availability, and specs need to be present in the server-rendered or statically generated HTML, not injected client-side after hydration. This matters more for AI agents than for classic search bots. Googlebot renders JavaScript, but many AI crawlers and answer-engine fetchers take the raw HTTP response and never execute it. If your PDP content only exists after a client-side fetch, those systems see an empty shell. ## Structured data: map Product schema to commercetools fields commercetools doesn't generate structured data for you — you build the JSON-LD from `masterData.current` on the Product and inject it server-side. A practical mapping: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "product.masterData.current.name", "description": "product.masterData.current.description", "sku": "product.masterData.current.masterVariant.sku", "image": [ "largest available size from masterVariant.images[].url" ], "offers": { "@type": "Offer", "priceCurrency": "from the selected price's currencyCode", "price": "from the selected price's centAmount / 10^fractionDigits", "availability": "derive from the variant's inventory/availability data", "url": "canonical product URL built from the localized slug" } } ``` Two commercetools specifics to know before you build this: there's no native GTIN/MPN field on a Product — `gtin13` or `mpn` need to be modeled as custom attributes on the Product Type and mapped explicitly. And price/availability aren't flat fields; they come from Price Scopes/Channels and inventory, so the JSON-LD should reflect whatever price and stock your storefront logic actually selects for the visitor, not just the first price in the array. Google's [structured data guidelines for Product](https://developers.google.com/search/docs/appearance/structured-data/product) list which fields are required versus recommended for rich-result eligibility. ## Titles and meta descriptions `ProductData` (both `current` and `staged`) has three built-in, localized fields for exactly this purpose: `metaTitle`, `metaDescription`, and `metaKeywords`, documented as "used by search engines" and kept separate from the display `name` and `description` — so a merchandiser can write a customer-facing name ("Classic Leather Jacket") and a distinct title tag without touching the display copy. On commercetools Frontend, page folders carry their own `seoTitle`/`seoDescription`/`seoKeywords` configuration for non-product pages, accessible in data sources via `context.pageFolder.configuration.seoTitle`. Build a fallback chain (product `metaTitle` → product `name` → category name) so pages never ship an empty or generic title tag. ## Canonical tags and duplicate PDP URLs Slugs are commercetools' mechanism for clean URLs: a slug is the user-defined identifier used in a deep-link URL for a product, and per the API reference it "must be unique across a Project," though a single product can reuse the same slug value across its own different locales. In practice that means no two different products can ever share a slug string, regardless of locale — so slug collisions are a project-wide validation error, not a per-locale one. The duplicate-content risk isn't the slug itself — it's everything downstream: the same product reachable at multiple category-prefixed paths (a product can belong to more than one category), plus variant-selection and filter query parameters. Pick one canonical path per product per locale (typically a flat product-slug path such as `/products/product-slug`, or a single primary category path) and self-reference it with a canonical link tag, even when the PDP is also linked to from other category or search-filtered URLs. ## Images and alt text commercetools stores uploaded images on its own CDN and automatically generates multiple resolutions per upload — documented examples include a `thumb` size (90x60), a full/`large` size (600x400), and a `zoom` size (3000x2000) — each source carries its own key, dimensions, and content type, so reference the size key your layout needs rather than re-processing images yourself. The catch on alt text: the `Image` type's `label` field is a single plain string, not a `LocalizedString`, so it can't natively hold per-locale alt text the way `name` or `slug` can. For real, localized, descriptive alt text (not a repeated product name), use a separate mechanism — a custom attribute on the product type, or a mapping table in your frontend — populated per locale, per image. ## Internal linking and breadcrumbs Categories carry their own localized, unique slugs, and commercetools models category hierarchy through parent/child references, so breadcrumb trails (Home / Category / Subcategory / Product) can be built directly from the category tree rather than hardcoded. Render breadcrumbs as real anchor links (not JS-only navigation state) and add corresponding `BreadcrumbList` structured data. Cross-links between PDPs — accessories, "customers also viewed," variant switches — should also be real anchor tags pointing to the product's canonical slug URL, since crawlers and AI agents that follow links to map a catalog rely on discoverable anchors, not JS-driven pickers that only update state. ## Performance Server-rendered or statically generated PDPs with CDN-cached data sources give you the biggest Core Web Vitals win with the least custom work — cache product responses at the edge and revalidate on catalog updates rather than fetching on every request. Serve the CDN-generated image size that matches its rendered dimensions (don't ship the zoom asset in a product grid), and lazy-load below-the-fold images while keeping the primary hero image eager so it doesn't hurt LCP. ## Crawlability: sitemaps and redirects On commercetools Frontend, sitemap generation is a documented pattern: separate route handlers (e.g., `src/app/[locale]/sitemap-products.xml/route.tsx`, plus `sitemap-categories.xml` and `sitemap-static.xml`) page through products and categories with cursor-based pagination and emit `SiteMapField` entries with `lastmod`/`changefreq`, and a `postbuild` script runs after `next build` to assemble a master `sitemap.xml` index referencing every locale variant. Whatever frontend you use, the same shape applies: paginate the full catalog, include `lastmod`, and reference the sitemap index from `robots.txt`. When slugs change — a rebrand, a URL restructure, a product merge — commercetools Frontend's Studio supports bulk redirect upload via CSV (up to 500 rows, UTF-8, semicolon-delimited); on a custom stack, replicate this as a redirect map your edge middleware checks before falling through to a 404. ## How to validate - View-source (not just the rendered DOM) on a live PDP and confirm title, meta description, canonical link, and the full JSON-LD block are present in the raw HTML response. A fast sanity check: ```bash curl -s https://yoursite.com/products/product-slug | grep -i "application/ld+json" ``` - Run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm the Product markup is valid and eligible, and check for missing required fields. - Diff view-source against the rendered DOM in Chrome DevTools; if key content (price, title, description) only appears in the rendered DOM and not view-source, it's client-side only and invisible to non-JS-executing crawlers. - Fetch `/sitemap.xml` and a locale-specific sitemap directly and confirm product counts roughly match your live catalog size. - Spot-check a few slug-changed products against your redirect map to confirm old URLs 301 rather than 404. Verified as of July 2026 against current commercetools API and Frontend documentation; confirm field names and menu paths against your own plan and Frontend version, since some page-folder schema and Studio features are configuration-dependent. None of this replaces having good data to put on the page in the first place — a perfect JSON-LD template still needs an accurate GTIN, a real spec sheet, and descriptive alt text behind it. Anglera enriches that underlying product data continuously in your PIM or commerce platform, including the custom attributes commercetools doesn't natively provide (GTIN, MPN, per-locale alt text), so the rendering work above has something rich to actually display. --- # The technical SEO checklist for SAP Commerce Cloud product pages Source: https://www.anglera.com/blog/sap-commerce-technical-seo-checklist Published: 2026-05-12 Platforms: sap-commerce ![The technical SEO checklist for SAP Commerce Cloud product pages](/og/hero-sap-commerce-technical-seo-checklist.jpg) Enriched product data only helps buyers and AI agents if it actually reaches the rendered page in a form they can parse. This checklist walks through the technical layer on top of that data — rendering strategy, structured data, metadata, canonicals, images, internal links, performance, and crawl controls — for SAP Commerce Cloud's Composable Storefront (Spartacus) and, where it still applies, the legacy Accelerator storefront. ## Rendering: make sure there's HTML to read Composable Storefront ships as an Angular single-page application, which means content is assembled client-side by default. Googlebot can generally execute JavaScript, but many AI crawlers (and some verticals of Googlebot) fetch pages without a full render, and SPA hydration timing can still cause partial or empty snapshots. SAP's own guidance is to run Server-Side Rendering (SSR) for storefront routes that are indexed or bot-crawled, and to reserve client-side rendering (CSR) for authenticated, session-specific views. SAP recommends adding SSR via Spartacus's own schematics (`ng add @spartacus/schematics --ssr`) rather than hand-wiring Express/Angular Universal, then tuning `SsrOptimizationOptions` — `concurrency` (max simultaneous renders before falling back to CSR, default 20), `timeout` (per-render wait before falling back to CSR, default 3000ms), `maxRenderTime` (hard cap before a stuck render's slot releases, default 300000ms/5 min), and `cache`/`cacheSize` (default 3000 cached entries) — so PDP renders don't queue behind slow ones under load. If you're still on the JSP-based Accelerator storefront, this isn't a concern since pages are server-rendered by default; the tradeoff there is templating flexibility, not crawlability. ## Structured data that matches what's on the page Spartacus includes a `StructuredDataModule` (under the `SeoModule`) that emits JSON-LD via a `ProductSchemaBuilder`, using a `JSONLD_PRODUCT_BUILDER` injection token so you can extend or override individual fields without forking the whole schema. Google's guidance for Product structured data is unchanged in substance: `name` is required, plus at least one of `offers`, `review`, or `aggregateRating`; adding a complete `Offer` (`price`, `priceCurrency`, `availability`, `url`) plus `aggregateRating` is what actually earns rich results and merchant-listing eligibility, not the bare minimum. A representative block: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "Example Widget 3000", "sku": "WID-3000-BLK", "gtin13": "0012345678905", "brand": { "@type": "Brand", "name": "Example Co" }, "image": ["https://cdn.example.com/wid-3000-black-1.jpg"], "description": "Industrial-grade widget rated for continuous duty...", "offers": { "@type": "Offer", "price": "249.00", "priceCurrency": "USD", "availability": "https://schema.org/InStock", "url": "https://www.example.com/widgets/wid-3000-black" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "38" } } ``` Google explicitly warns that dynamically-generated markup — JSON-LD injected only after client-side hydration — makes Shopping/Merchant crawls "less frequent and less reliable" for fast-changing fields like price and availability, which is another reason SSR matters here, not just for visible text. ## Titles and meta descriptions Spartacus resolves page metadata through `PageMetaResolver`s: a title resolver combines product name, category, and brand into the ``; a description resolver drives the meta description; a `PageRobotsResolver` sets the `robots` meta tag. The defaults are workable but generic — for distributor/manufacturer catalogs with thousands of near-duplicate SKUs, override the product title resolver to include the differentiator that matters (size, capacity, finish) rather than relying on the raw product name, and keep meta descriptions under ~155 characters and unique per SKU rather than templated boilerplate that just swaps the product name. ## Canonical URLs, especially for variants Canonical URL generation was introduced in Spartacus 3.2 as an opt-in feature and only became part of the default configuration starting in version 4.0; storefronts upgraded from an older custom SEO setup can still have it silently overridden off, so verify it's actually on: ```typescript provideConfig({ pageMeta: { canonicalUrl: { forceHttps: true, forceWww: false, removeQueryParams: true, forceTrailingSlash: true, }, }, }) ``` For variant products (color/size groups), the canonical resolver is meant to point variant URLs at the base product — confirm this is actually happening in your catalog model. Spartacus's resolver has a documented gap with multi-level variants (the OCC API only exposes the direct `baseProduct`, not a super-base higher up), so a common failure mode is every variant self-canonicalizing, fragmenting authority and confusing AI agents that dedupe by canonical URL. On the legacy Accelerator, equivalent SEO directives are configured per catalog/page and control both the canonical tag and sitemap inclusion. ## Images and alt text `MediaModel` in SAP Commerce has a native `altText` attribute; the gap is almost never the field, it's population discipline — alt text left blank or auto-filled with the SKU code helps neither accessibility nor image search nor an AI agent trying to confirm what's in the shot. Also confirm image URLs served through your CDN/media conversion layer (Cloudinary, Scene7, or the platform's own media conversion) are stable and not query-string-only, since a canonicalized product URL paired with churning image URLs still reads as "changed" to some crawlers. ## Internal linking and crawl paths PDPs that are only reachable through faceted-search URLs with query parameters are effectively orphaned for crawlers that don't execute filter interactions. Make sure every sellable PDP has at least one static, canonical path from a category/PLP page and, where relevant, from breadcrumb and cross-sell components — Spartacus renders breadcrumbs from the CMS content slot, but they're only as good as the category hierarchy backing them, so a flat or overly deep catalog tree undermines this even when the component itself is correct. ## Performance SSR optimization settings double as a performance lever: an undersized `cacheSize` or too-low `concurrency` causes PDPs to fall back to CSR under load precisely when crawlers hit them in bulk. Pair that with standard storefront hygiene — image compression through your CDN, lazy-loading below-the-fold PDP modules, and trimming render-blocking third-party scripts — since Core Web Vitals still factor into ranking and slow renders increase the odds of an SSR timeout fallback. ## Crawlability: robots and sitemaps Composable Storefront's default `PageRobotsResolver` behavior is FOLLOW/NOINDEX until a resolver explicitly sets INDEX, which is a safe default for non-purchasable pages but needs to be deliberately overridden for real, sellable PDPs — audit this rather than assuming it's correct. Sitemap generation runs on the commerce backend, not the storefront: the `SiteMapMediaCronJob` triggers the `SiteMapMediaJob` performable class, which runs its configured list of `SiteMapGenerator` beans — including `ProductPageSiteMapGenerator` — to build sitemap XML per site, independent of whether you're on Accelerator or Composable Storefront. Confirm the cronjob is scheduled (not just configured) and that discontinued/unpurchasable SKUs are excluded rather than lingering in the sitemap. ## How to validate - View-source vs. rendered DOM: run `curl -A "Googlebot" https://yoursite.com/p/SKU123` and diff it against what you see in browser dev tools' Elements panel — if title, meta description, or JSON-LD are missing from the curl output but present in the DOM, SSR isn't serving that route. - Structured data: paste the live URL into Google's [Rich Results Test](https://search.google.com/test/rich-results) and check for both errors and missing-recommended-field warnings, not just pass/fail. - Canonicals: spot-check a variant URL and confirm the `<link rel="canonical">` in the raw HTML points at the base product, not itself. - Sitemap: fetch `/sitemap.xml` (or the site-specific sitemap index) and confirm recently added SKUs appear within your expected refresh window. Verified as of July 2026 against SAP Help Portal and Spartacus documentation for Composable Storefront; SSR optimization defaults, resolver behavior, and structured-data requirements are version- and configuration-dependent, so confirm against your specific SAP Commerce Cloud release notes before treating any default as fixed. None of this matters if the underlying product data is thin — a perfectly rendered page with three bullet points and no attributes still gives buyers and AI agents little to work with. Anglera plugs into SAP Commerce Cloud (or whatever PIM feeds it) to keep specs, use-cases, and identifiers enriched continuously, so the rendering and structured-data work above has something substantive to carry onto the page. --- # Adding Product JSON-LD on SAP Commerce Cloud — and keeping it in sync Source: https://www.anglera.com/blog/sap-commerce-product-json-ld Published: 2026-05-12 Platforms: sap-commerce ![Adding Product JSON-LD on SAP Commerce Cloud — and keeping it in sync](/og/hero-sap-commerce-product-json-ld.jpg) Getting Product structured data onto an SAP Commerce Cloud storefront is mostly a mapping problem: the JSON-LD has to describe the same product the shopper (and any AI agent reading the page) actually sees, using data that already lives in your product model. This is a field-by-field walkthrough for distributors and manufacturers running either the composable storefront (Spartacus) or a legacy Accelerator (JSP) storefront. ## Where structured data lives in SAP Commerce Cloud If you're on the composable storefront, JSON-LD generation is already built in, not something you have to bolt on. Spartacus ships a `StructuredDataModule` (imported by `SeoModule`) that renders schema.org markup as part of server-side rendering. That matters because Google, and most AI crawlers, only reliably read structured data present in the initial HTML response, not markup injected client-side after hydration. The actual schema builders live in `JsonLdBuilderModule`, with a `ProductSchemaBuilder` assembling the Product schema out of pluggable sub-builders: one for base product data, one for the `Offer` (price/stock), one for `Rating`/`Review`. SAP registers them against the `JSONLD_PRODUCT_BUILDER` injection token, so a custom builder for a distributor-specific identifier can be added without touching the base builder. If you're still on the older JSP-based Accelerator storefront, common on longer-running B2B implementations that haven't migrated to Spartacus, there's no equivalent built-in module. JSON-LD has to be hand-rolled as a `<script type="application/ld+json">` block inside the Product Details Page JSP (`productDetailsPage.jsp` in the stock Accelerator, under `WEB-INF/views/pages`, though a customized storefront may rename it), populated from the same `ProductModel` fields Spartacus would use, and registered in the appropriate Content Slot on the Product Details Page template, ideally via an addon so it survives storefront upgrades. ## The fields that matter Seven properties do most of the work for [merchant listing rich results](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) (Google requires `name`, `image`, and `offers` with a valid `price`/`priceCurrency`; the rest are recommended) and for giving an AI shopping agent something unambiguous to parse: - **`name`**: the product's display title. Pull it from the same localized `ProductModel` name field the PDP title renders from. Don't hand-author a separate SEO title, or the two will drift apart within a quarter. - **`image`**: at least one high-resolution product image URL. Spartacus wires this up out of the box from the product's primary image, so it's usually free; on an Accelerator storefront it has to be added by hand alongside the other fields. - **`brand`**: schema.org (and Google) want this as a nested `Brand` object with a `name`, but Spartacus's own default builder emits it as a plain string (the `ProductModel.manufacturer` value). Getting the object form, or sourcing brand from a `Brand` category or classification attribute instead of the free-text manufacturer field, takes a small custom builder, not a config toggle. - **`gtin`** (or `gtin8`/`gtin12`/`gtin13`/`gtin14`, depending on identifier length): Google recommends including this because it's widely used for cross-referencing a listing against a manufacturer's own data. Distributors carrying manufacturer catalogs frequently have GTIN/EAN/UPC sitting in a classification attribute already; map it as-is instead of reformatting it. It isn't a field on the out-of-box product model on either storefront, so it has to be read out of that classification attribute explicitly. - **`sku`**: your own product identifier, typically the `ProductModel.code`. It doesn't need to be globally unique, just unique in your catalog. - **`offers`**: a nested `Offer` with `price`, `priceCurrency` (ISO 4217), `availability` (an `ItemAvailability` value), and `url`. Most likely block to go stale, since it's driven by the same price row and stock level data that powers the buy box. - **`aggregateRating`** (and optionally `review`): `ratingValue` and `reviewCount`/`ratingCount`. If you're using SAP Commerce's native ratings/reviews feature or an integrated ratings provider, these values already exist on the product. The schema builder just needs to read from the same source the visible star rating widget reads from. ## Mapping product model fields to the schema On the composable storefront, this mapping happens in TypeScript, not markup. The out-of-box `Product` model has no `gtin`/`mpn` fields, and the default builder emits `brand` as a plain string, so a distributor-specific builder typically does two things: pull GTIN and MPN out of the classification system, and re-shape `brand` into the nested object Google expects. A minimal custom addition to the product builder chain looks like this: ```typescript import { Injectable } from '@angular/core'; import { JsonLdBuilder } from '@spartacus/storefront'; import { Classification, Product } from '@spartacus/core'; import { Observable, of } from 'rxjs'; // Class and feature codes here are placeholders — confirm the actual // codes your classification system (or PIM) uses for GTIN/MPN. function featureValue( classifications: Classification[] = [], classCode: string, featureCode: string ): string | undefined { const classification = classifications.find((c) => c.code === classCode); const feature = classification?.features?.find((f) => f.code === featureCode); return feature?.featureValues?.[0]?.value; } @Injectable({ providedIn: 'root' }) export class DistributorGtinBrandBuilder implements JsonLdBuilder<Product> { build(product: Product): Observable<Record<string, unknown>> { return of({ gtin13: featureValue(product.classifications, 'GTIN_CLASS', 'gtin13'), mpn: featureValue(product.classifications, 'GTIN_CLASS', 'mpn'), brand: product.manufacturer ? { '@type': 'Brand', name: product.manufacturer } : undefined, }); } } ``` ```typescript import { NgModule } from '@angular/core'; import { JSONLD_PRODUCT_BUILDER } from '@spartacus/storefront'; import { DistributorGtinBrandBuilder } from './distributor-gtin-brand.builder'; @NgModule({ providers: [ { provide: JSONLD_PRODUCT_BUILDER, useClass: DistributorGtinBrandBuilder, multi: true }, ], }) export class DistributorStructuredDataModule {} ``` The `multi: true` provider lets your builder run alongside SAP's default `JsonLdBaseProductBuilder`, `JsonLdProductOfferBuilder`, and `JsonLdProductReviewBuilder` instead of replacing them; `ProductSchemaBuilder` collects every registered `JSONLD_PRODUCT_BUILDER` and merges their output into one object, with later-registered builders' keys winning on overlap (how the `brand` override above takes effect). Spartacus then writes that merged object straight into a single `<script id="json-ld" type="application/ld+json">` element appended to the document during SSR. That's a different mechanism from the `[cxJsonLd]` template directive, which is for hand-adding supplementary JSON-LD elsewhere on a page and isn't part of this automatic pipeline. ## A real example Here's what the merged output should resemble for a distributor-carried industrial part: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "1/2 HP Bronze Circulator Pump, Threaded", "sku": "CP-0500-BR-T", "gtin13": "0785123456781", "mpn": "179-002", "brand": { "@type": "Brand", "name": "Taco Comfort Solutions" }, "offers": { "@type": "Offer", "url": "https://www.example-distributor.com/p/CP-0500-BR-T", "priceCurrency": "USD", "price": "214.99", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "38" } } ``` ## Keeping it in sync with the visible page Drift is the recurring failure mode here, not a missing field. Four places it shows up in SAP Commerce Cloud implementations: - **Price and stock caching.** SAP Commerce Cloud's CMS cache and CDN layer cache pages more aggressively than they cache the price/stock service that feeds the buy box. If the `Offer` block is built from a different cache region or refresh cadence than the visible price, the two can disagree for minutes at a time during a price change. - **Availability values that don't cover the real states.** Spartacus's default offer builder only distinguishes in-stock vs. everything else, as plain `InStock`/`OutOfStock` strings rather than full `https://schema.org/...` URLs. Backorder, preorder, or discontinued states in your buy box will silently flatten into "out of stock" in the schema unless a custom builder maps the full set of states your stock service returns. - **Variant vs. base product mismatch.** Multi-variant PDPs (size, color, pack size) need the JSON-LD to describe the exact variant the shopper landed on, with a URL canonical to that variant rather than the base product, or the price and GTIN in the schema won't match what's rendered. - **Review widget vs. schema source.** If ratings render from a third-party widget (client-side) but the schema pulls `averageRating`/`numberOfReviews` from the `ProductModel`, the two numbers can quietly diverge after a widget migration. The fix in every case is the same: point the schema builder and the visible component at the same underlying service call, not two independent reads of "similar" data. ## How to validate - **View-source vs. rendered DOM**: because Spartacus renders JSON-LD during SSR, `curl` (or "view page source") should already show the full `<script type="application/ld+json">` block — if it only shows up in the browser's rendered DOM inspector, structured data is being generated client-side and search engines won't reliably see it. - **`curl -s https://yoursite.com/p/SKU | grep -A 30 'application/ld+json'`** confirms the block is present server-side and lets you diff it against the visible price/availability on the page. - Run the URL through Google's [Rich Results Test](https://search.google.com/test/rich-results) to confirm the Product markup parses and is eligible for merchant listing / product snippet features, and check the [Merchant Listing structured data reference](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) if a required property is flagged as missing. Verified as of July 2026 against SAP's composable storefront documentation and Spartacus's structured data module; menu paths and class names for JSP-based Accelerator storefronts will vary by version, so confirm against your own codebase before shipping. None of this works if the underlying attributes (GTIN, brand, spec-driven use cases, normalized identifiers) aren't populated and current in the first place. That's the half of the problem Anglera handles: it enriches product data continuously inside the PIM or commerce platform you already run, so the JSON-LD builder above always has a complete, accurate record to map from instead of blank fields to work around. --- # Adding Product JSON-LD on OroCommerce — and keeping it in sync Source: https://www.anglera.com/blog/orocommerce-product-json-ld Published: 2026-05-12 Platforms: orocommerce ![Adding Product JSON-LD on OroCommerce — and keeping it in sync](/og/hero-orocommerce-product-json-ld.jpg) Once product data is enriched — real names, brand, identifiers, specs, availability — the remaining job is getting that data onto the rendered page in a form buyers and AI/search crawlers can both parse. OroCommerce ships its own Schema.org markup out of the box, but it's HTML Microdata, not JSON-LD, and it's driven by a fixed set of SEO settings rather than the full Product vocabulary distributors usually need (GTIN, MPN, aggregateRating). This guide covers how to add a proper JSON-LD `Product` block to the OroCommerce storefront PDP, which fields actually matter, and how to keep the markup from drifting away from what's rendered on the page. ## What OroCommerce already renders OroSEOBundle extends the `Product` entity with localized SEO Title, SEO Description, and SEO Keywords fields (stored as `LocalizedFallbackValue` collections), and it emits Schema.org **Microdata** — `itemprop`/`itemscope` attributes — directly in the storefront HTML. Two related settings live under **System → Configuration → Commerce → Guests → SEO** (also configurable per organization or per website): - **Disable Product Microdata Without Price** — turns off the microdata block for products with no assigned price, since crawlers can flag priceless product markup as invalid. - **Used Product Description Field** — controls whether the Microdata `description` pulls from the long description, the SEO Meta Description, or the short description. This native markup is useful but limited: no `gtin`, `mpn`, `aggregateRating`, or explicit `availability`/`priceCurrency` out of the box, and Google's own guidance is that JSON-LD is the preferred format for structured data even though Microdata is still parsed. Adding a JSON-LD block alongside (or in place of) the Microdata is the standard move — just make sure the two never disagree, since Google treats contradictory markup as low quality. ## Fields that matter, and where they live in Oro | JSON-LD property | OroCommerce source | |---|---| | `name` | `Product::names` (localized `ProductName` collection) — `entity.defaultName.string` in Twig | | `sku` | `Product::sku` (native field, always present) | | `brand` | `Product::brand` — the `Brand` entity relation | | `gtin` / `gtin13` / `mpn` | **Not native.** Create as custom Product Attributes | | `description` | `Product::descriptions` / `shortDescriptions`, or the SEO Meta Description field | | `image` | `Product::images` (`ProductImage` collection, filtered by image type) | | `offers.price`, `priceCurrency` | Resolved price from the active price list / price rule for the visitor's price list (PricingBundle) | | `offers.availability` | Inventory status (In Stock / Out of Stock / Backorder) from InventoryBundle | | `aggregateRating` | Only if you have a reviews/ratings source actually rendered on the page | GTIN, UPC, EAN, and MPN are not system fields on `Product` — OroCommerce's EAV-based **Product Attributes** framework is where you add them. In the back-office, go to **Products → Product Attributes → Create Attribute**, choose the **String** type, set the field name (e.g., `gtin`), and on the following step enable **Show On View** under Storefront options so the value is exposed to the storefront rather than kept back-office-only. Then assign it to the relevant Attribute Family/Group so it appears on the products that need it. Once saved, the value is reachable in Twig the same way native fields are — `entity.gtin` — because Oro's extended-entity layer generates the accessor for you. ## Rendering the JSON-LD through a layout update OroCommerce storefront pages are composed through the Layout component, not by editing controller templates directly. The product view page route is `oro_product_frontend_product_view`. Layout updates for a single route live under a theme folder matching that route name: ``` src/Acme/Bundle/ThemeBundle/Resources/views/layouts/default/oro_product_frontend_product_view/layout_update.yml ``` Add a block (parented to `head`, alongside where Oro's own `meta` blocks for title/description already attach) and point it at a Twig file: ```yaml layout: actions: - '@add': id: product_json_ld parentId: head blockType: container options: attr: class: 'product-json-ld' - '@setBlockTheme': themes: '@AcmeThemeBundle/layouts/default/oro_product_frontend_product_view/product_json_ld.html.twig' ``` Then define the widget block in the matching Twig file, reusing the exact same entity accessors the core PDP template uses (`entity.sku`, `entity.defaultName.string`, `entity.brand`, `entity.images`) so the JSON-LD is always sourced from the same data the visible page renders from, not a hand-copied duplicate: ```twig {% block _product_json_ld_widget %} <script type="application/ld+json"> {{ { "@context": "https://schema.org", "@type": "Product", "name": entity.defaultName.string, "sku": entity.sku, "gtin13": entity.gtin, "mpn": entity.mpn, "brand": { "@type": "Brand", "name": entity.brand ? entity.brand|oro_format_name(null, 'full') : null }, "description": entity.defaultShortDescription.text, "image": product_image_url, "offers": { "@type": "Offer", "url": product_url, "priceCurrency": price_currency, "price": price_value, "availability": "https://schema.org/" ~ availability_schema } }|json_encode(constant('JSON_UNESCAPED_SLASHES') b-or constant('JSON_UNESCAPED_UNICODE'))|raw }} </script> {% endblock %} ``` The exact variable names available inside a layout block template (whether the price/availability come through a dedicated data provider or need a small PHP block type) vary by Oro version — check the Symfony profiler's Layout tab on a live page to confirm what's already in context before wiring these up, rather than assuming a name. Two OroCommerce-specific gotchas for distributors: - **Guest pricing.** Many B2B storefronts hide price until login (see **Guests** settings above). If an anonymous visitor — which is what Googlebot is — can't see a price, don't emit a placeholder `offers.price`; omit `offers` or the price fields rather than showing a number that won't match what a logged-in buyer sees. - **Availability must track the same inventory flag the "Add to Cart" button uses**, not a separately maintained value, or the two will eventually disagree. ## Keeping it in sync The single biggest risk with JSON-LD blocks is that they get written once and then drift from the page. Concretely: - Never hardcode strings into the Twig block — always pull from `entity.*` or the same price/inventory services the rest of the PDP layout uses. - If the page is behind full-page or CDN caching, the JSON-LD block must invalidate on the same cache tags/events as the rest of the product page — don't give it a separate TTL. - If aggregateRating isn't visibly rendered on the page for a given product, don't emit it for that product either; Google requires the rating to be user-visible. - Add a lightweight scheduled check (or a Behat/functional test) that pulls a sample of PDPs and diffs the JSON-LD `name`/`sku`/`price` against the rendered DOM — cheap insurance against a future template change silently breaking one but not the other. ## How to validate 1. **View-source vs. rendered DOM**: `curl -s https://yourstore.example.com/product/123 | grep -A 30 'application/ld+json'` shows what crawlers that don't execute JS will see; compare it against the browser DevTools Elements panel (which shows the rendered DOM) to confirm they match. 2. **[Rich Results Test](https://search.google.com/test/rich-results)**: paste the live URL (or the raw HTML) and confirm the Product type is detected with no missing-field errors. 3. **[Schema Markup Validator](https://validator.schema.org/)**: a stricter, non-Google check of the raw JSON-LD syntax and vocabulary. 4. Spot-check that the emitted `price` and `availability` match what an anonymous visitor actually sees on that URL — not a logged-in, customer-specific price. Verified as of July 2026 against the current OroCommerce/OroSEOBundle documentation and Google Search Central's Product structured data guidelines; menu paths and layout syntax should be confirmed against your specific Oro version before shipping, since layout internals do shift between minor releases. This is the half of the problem page-side tooling was built to solve — but it only has something worth marking up if the underlying data is actually there. Anglera enriches product attributes, identifiers, and specs continuously in the PIM or platform your team already uses, so the `gtin`, `mpn`, `brand`, and description fields this JSON-LD block references are populated and current rather than blank placeholders you're stitching together by hand. ## Sources - [SEO Meta Fields — OroCommerce Documentation](https://doc.oroinc.com/bundles/commerce/SEOBundle/seo-meta-fields/) - [Configure Global SEO Settings — OroCommerce Documentation](https://doc.oroinc.com/user/back-office/system/configuration/commerce/guests/global-seo/) - [Customize Product View Page — OroCommerce Documentation](https://doc.oroinc.com/bundles/commerce/ProductBundle/customize-products/customize-pdp/) - [Layout — OroCommerce Documentation](https://doc.oroinc.com/frontend/storefront/layouts/) - [Product structured data — Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/product-snippet) --- # Syndicating oilfield & energy data to every channel without the re-keying Source: https://www.anglera.com/blog/oilfield-energy-syndication Published: 2026-05-12 Industries: oilfield-energy ![Syndicating oilfield & energy data to every channel without the re-keying](/og/hero-oilfield-energy-syndication.jpg) Distributors and manufacturers in oilfield and energy are pushing more of their catalog onto marketplaces and partner e-procurement portals every year, and most of them are still syndicating the same thin, inconsistent feed to every channel. A forged steel gate valve deserves better than a title and a price. Here is what channel-ready actually requires, and how to get there without a re-keying project. ## The feed that looks fine until it hits a channel Most supplier feeds are built for one system of record, usually an ERP or a flat file someone exports from a spreadsheet. They carry a part number, a short description, a price, and maybe a PDF cut sheet buried in a "documents" field. That is enough to invoice a customer. It is not enough to win a marketplace search or clear a partner's onboarding gate. Oil and gas buyers are moving procurement online faster than the industry gets credit for. [PIDX](https://pidx.org/standards/), the standards body for petroleum industry e-business, maintains a Petroleum Industry Data Dictionary with more than 4,100 noun-modifier templates (think `Valve, Gate`) mapped to UNSPSC codes specifically because generic B2B data standards do not capture what a well site, refinery, or MRO buyer needs to identify and spec a part with confidence. When a feed does not carry that structure, marketplaces and e-procurement portals do not reject it outright, they just bury it, or a category manager kicks it back for rework. The cost of that is not abstract. Research on product content syndication has found that [70% of consumers have discontinued a purchase due to incomplete or inconsistent product information](https://pimberly.com/glossary/syndication-success-rate/), and that retailers "may penalize you for poor data quality, affecting your search rankings or even leading to product listing removals." Industrial buyers behave the same way. A maintenance planner searching for a replacement valve does not have time to guess whether your `2" 600# RF` listing meets the pressure class they need. ## What marketplaces and partner channels actually enforce Every channel has its own template, but they converge on the same three checks: | Bar | What it means for oilfield/energy parts | What fails | |---|---|---| | Content | Full title, structured description, application notes, image and drawing | One-line description, no image, spec sheet as a dead link | | Attributes | Size, pressure class, end connection, body/trim material, standard compliance | Free-text "specs" field, missing material grade, no standard reference | | Identifiers | GTIN/UPC where applicable, manufacturer part number, UNSPSC or PIDX noun-modifier code, cross-reference to OEM part | Internal SKU only, no crosswalk to how a buyer or procurement system searches | Marketplaces increasingly gate visibility on this, not just presence. A listing missing pressure class or material grade does not get flagged as an error, it just loses the filtered search where a buyer narrows by `Class 600` and `A216 WCB`. You are not delisted. You are invisible. ## Before and after: a forged steel gate valve Here is a typical raw supplier feed entry for a gate valve, next to what a channel actually needs. **Raw feed (what most distributors syndicate today):** > `GATE VALVE 2IN 600# - FORGED STEEL - $412.00` **Channel-ready attribute table:** | Attribute | Value | |---|---| | Product type | Gate valve, bolted bonnet | | Nominal size | 2 in | | Pressure class | Class 600 | | Body material | Forged steel, `ASTM A105` | | Trim | Trim 5 (13Cr hardfaced) | | End connection | RF flanged | | Standard | `API 600` design, `API 598` tested | | Port | Full port | | Temperature rating | Up to 800°F | | Manufacturer part number | (supplier-specific) | | UNSPSC | 40141610 | | Application | Refinery, upstream production, midstream pipeline isolation | The difference is not cosmetic. `API 600` on its own tells a buyer this is a heavy-duty bolted-bonnet valve built for refinery and pipeline service, not a lighter `API 602` forged valve meant for smaller, higher-pressure instrument and utility lines. A feed that only says "forged steel gate valve" forces the buyer to open a PDF to figure out which one they are looking at, or worse, guess and order wrong. **Ask an answer engine:** a buyer today might type "2 inch class 600 forged steel gate valve API 600 full port" into a search engine or an AI shopping assistant rather than browsing a category tree. If your listing does not carry size, class, material standard, and body standard as structured attributes, in text an answer engine or marketplace parser can actually read, it does not surface. It does not matter how good the part is. ## Getting to channel-ready without a re-keying project The instinct is to treat this as a data entry problem: assign someone to open every source PDF, cross-reference the OEM catalog, and manually fill in pressure class, trim, and standard for every SKU across a catalog that might run into the thousands. Manual enrichment at that level of rigor typically runs 30-45 minutes per SKU once you account for finding the source document, extracting the right values, and quality-checking them. For a distributor catalog of oilfield valves, fittings, and instrumentation, that is not a sprint, it is a standing headcount line. The more durable path is treating enrichment as a continuous layer on top of whatever system already holds the data, not a one-time cleanup before a marketplace launch. Values get extracted from supplier documentation and source catalogs, scored for completeness and confidence, and gap-filled against the attribute set each channel actually requires, rather than typed in by hand from scratch. ## Where this connects to Anglera Your PIM, ERP, or flat file stores the record. Anglera does the work of scoring, gap-filling, and continuously enriching it against the attributes, identifiers, and content each marketplace or partner channel enforces, so a forged steel gate valve syndicates as `API 600`, `Class 600`, `A105`, full port, not just "gate valve, forged steel." It plugs into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, or Informatica if you run one, or starts from a flat file if you do not, and it can be live in weeks, not a multi-year systems integration. The result is not a rip-and-replace of your data infrastructure, it is a catalog that finally reads the same way to a category manager, a procurement system, and an AI answer engine. --- # Brands: controlling how your products show up in retail feeds and AI Source: https://www.anglera.com/blog/brands-control-retail-feeds-ai Published: 2026-05-12 ![Brands: controlling how your products show up in retail feeds and AI](/og/hero-brands-control-retail-feeds-ai.jpg) You spend months on packaging, positioning, and a beautiful product page. Then your SKU ships to a distributor, gets loaded into a retailer's feed, and shows up in an AI answer described by attributes you never wrote, next to a competitor you never chose. The story left your hands the moment the data did. That handoff is where brands quietly lose control. Not at the shelf. In the feed. ## The moment your product story stops being yours Here is the uncomfortable part: your own website is no longer the main source AI uses to describe your product. McKinsey's research on AI search found a brand's owned sites make up only a small slice of what AI-powered answers actually reference, with the rest pulled from retailers, marketplaces, reviews, and third-party mentions ([McKinsey](https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/new-front-door-to-the-internet-winning-in-the-age-of-ai-search)). Meanwhile the plumbing has changed. Retailers are moving from "let the bot crawl our site" to pushing structured product data directly into agents through emerging commerce protocols ([Modern Retail](https://www.modernretail.co/technology/ai-forces-retailers-brands-to-rethink-their-product-pages/)). Your feed is no longer a back-office file. It is the storefront the AI reads. So the questions that decide your product story are now: - What attributes did the retailer's feed actually carry for your SKU? - Which fields came in blank, and what did the system mark "unknown"? - What did an answer engine infer when your data went quiet? You didn't answer any of those. Someone, or something, else did. ## Blank fields don't stay blank When a product feed has gaps, the gaps get filled. Not by you. Google's AI shopping systems read structured fields in sequence, and when a field is missing they mark it "unknown" rather than guessing generously ([eFulfillment Service](https://www.efulfillmentservice.com/2026/01/the-complete-product-data-optimization-guide-for-googles-ai-shopping-2026/)). A product with explicit, machine-readable care instructions and attributes can match a shopper's query at high confidence. The same product described vaguely, "easy to clean" instead of a real care field, scores far lower and slips down the recommendation order. Multiply that across a catalog and you get a visibility gap. That same analysis reports stores with near-complete attribute data seeing several times higher visibility in AI recommendations than stores with sparse data. The mechanism is simple: agents recommend what they can confidently understand, and they can only understand what is explicitly there. Here is the control shift in one table. | Where your product shows up | Who writes the story if you don't | | --- | --- | | Retailer product feed | The retailer's onboarding template and mapping rules | | Marketplace listing | Whatever attributes the seller pulled from a stale sheet | | AI answer engine | Inferred fields, competitor comparisons, third-party reviews | | Comparison snippet | The gaps in your feed, filled with a guess | None of those columns say "the brand." That is the problem worth fixing. ## Authoritative structured data is how you take it back The fix is not louder marketing copy. It is authoritative structured data: complete, consistent, machine-readable attributes that travel with your product everywhere it goes, so retailers and agents have nothing left to guess. Think of it as writing the answer before the machine has to invent one. Every spec, every compatibility note, every care instruction, every material and dimension, filled and formatted so a feed ingests it cleanly and an answer engine quotes it directly. Try it yourself. Ask an answer engine "what is the best waterproof work boot with a composite toe under 200 dollars" and watch what it does. It doesn't read your hero image or your brand story. It filters on attributes: waterproof yes/no, toe type, price band, weight. If your feed left "toe type" blank, you were never a candidate. The buyer never saw you, and you never knew the query happened. Authoritative data changes that outcome in three concrete ways: - **Completeness** means fewer "unknown" fields, so you qualify for more queries. - **Consistency** means the retailer feed, the marketplace, and the AI answer all say the same thing, so there is no mismatch for a system to resolve against you. - **Maintenance** means it stays true as SKUs change, because a feed that was accurate last quarter is a liability this quarter. This is not a one-time cleanse. Retailer templates change, you add SKUs, categories evolve, and AI shopping systems now expect frequent syncs to keep a product eligible rather than flagged as unavailable. Control is a maintained state, not a project you finish. ## What this actually takes The honest catch: doing this by hand does not scale. Manually researching, gap-filling, and formatting attributes for a single complex SKU can run 30 to 45 minutes, and brands carry thousands of them across dozens of retailer templates that each want the data shaped differently. That math is why so many feeds ship half-empty. So the work has to be continuous and mostly automated: score every SKU for completeness, find the gaps, enrich the missing attributes against real product evidence, format them per destination, and re-check as things change. Your systems of record shouldn't have to become systems of work to make that happen. This is exactly the layer Anglera runs. Your PIM stores the data; Anglera does the work of scoring, gap-filling, enriching, and maintaining it so your catalog stays complete, consistent, and readable by both buyers and AI answer engines. It plugs into whatever you already use, Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, or a flat file if you have no PIM at all, and it is additive, not a rip-and-replace. Because in a world where the feed writes your product story, the brands that win are simply the ones who filled in every field first. --- # Server-side rendering on Adobe Commerce: making product data visible to Google and AI Source: https://www.anglera.com/blog/adobe-commerce-ssr-rendering Published: 2026-05-12 Platforms: adobe-commerce ![Server-side rendering on Adobe Commerce: making product data visible to Google and AI](/og/hero-adobe-commerce-ssr-rendering.jpg) Enriching a product with complete attributes, specs, and use-cases only pays off if that data actually lands in the HTML a crawler or AI agent receives. On Adobe Commerce, whether that happens depends entirely on which storefront architecture is serving the page — Luma, PWA Studio, or the newer Edge Delivery Services storefront all handle this differently. This guide covers how to check what's really being served, and how to make sure enriched product data is server-rendered rather than trapped behind a client-side render step. ## Three storefront architectures, three rendering behaviors Adobe Commerce doesn't have one rendering model — the storefront you've deployed determines whether product data ships in the initial HTML response. **Luma (default theme).** Luma is a server-rendered PHP theme: layout XML and `.phtml` templates assemble the page on the server, so most of the DOM — including price, name, and description — is present in the raw HTML response before any JavaScript runs. Luma uses RequireJS and Knockout.js for interactive widgets (image gallery, swatches, add-to-cart), but the core product content is not gated behind that JavaScript. The catch: Luma's out-of-the-box structured data is thin. It emits partial schema.org microdata via hardcoded meta tags in a handful of templates, not a complete JSON-LD `Product` object — so even though the *content* is server-rendered, the *machine-readable markup* usually needs a custom module or extension to be complete. **PWA Studio (headless storefront).** PWA Studio's UPWARD server returns a server-rendered HTML shell — the app frame, not the product content — and then a React bundle fetches product data over GraphQL and renders it client-side. Adobe's own PWA Studio documentation is direct about the SEO tradeoff this creates: "When a search engine crawler processes a page, it indexes the initial HTML response from the server," and while "some crawlers, such as Googlebot, have the ability to execute JavaScript to simulate client-side rendering," that isn't guaranteed or immediate for every crawler or AI fetcher. Adobe's guidance is to use UPWARD's server-side rendering for the pages where indexing matters most — home, category, and product detail pages — rather than relying on the client-rendered default. **Edge Delivery Services storefront (Adobe Commerce Optimizer / newer composable storefronts).** This is Adobe's current push for PDP rendering done right by default: product pages are folder-mapped virtual pages built from a single template, and the metadata that matters for indexing — title, description, Open Graph tags, and JSON-LD product schema — is rendered server-side into static HTML, ahead of the client-side JavaScript that handles interactivity. A serverless function watches Catalog Service for product changes and calls the Edge Delivery preview API to regenerate that static HTML, so enriched attributes propagate into the served page without a full rebuild. The practical takeaway: know which of these three you're running (it's common to have Luma on legacy sites, PWA Studio on a 2019–2023 headless build, or EDS on a newer Commerce Optimizer rollout), because the fix is different for each. ## Why client-only rendering is a problem for crawlers and AI agents Google's own JavaScript SEO documentation describes a two-wave process: Googlebot indexes whatever is in the initial HTML immediately, then queues the page for a second pass where JavaScript is executed and rendered — and that second wave can lag by "seconds to days or even weeks" depending on rendering queue load. Two consequences matter for a PDP: 1. **Freshness lag.** If price, availability, or a new attribute only exists after client-side rendering, a re-crawl of an already-indexed page may not pick up the change for days. 2. **AI agents often don't render at all.** Many AI shopping and answer-engine crawlers fetch raw HTML and do not execute JavaScript the way Googlebot's renderer does. If your enriched specs, identifiers, and use-case copy only exist after a GraphQL fetch resolves in the browser, those agents see an empty shell — not the product. Google's guidance is explicit that "critical meta tags like title, meta description, canonical, hreflang, and Open Graph tags must be in the server-rendered HTML rather than injected by JavaScript" — and the same logic applies to the product's core facts and its JSON-LD. ## Making sure product data is in the server-rendered HTML Regardless of storefront, the target is the same: the raw HTML response (before any JS executes) should contain the product name, price, availability, key specs/attributes, and a complete JSON-LD `Product` block. - **On Luma:** confirm your theme or an installed module outputs full JSON-LD, not just partial microdata. A minimal, complete block added via layout XML (referencing a block that reads the product's attributes, including `sku`, `gtin`/`mpn` if populated, `offers.availability`, and `aggregateRating` where reviews exist) looks like: ```xml <referenceContainer name="content"> <block class="Vendor\StructuredData\Block\ProductSchema" name="product.jsonld" template="Vendor_StructuredData::product/jsonld.phtml" /> </referenceContainer> ``` ```html <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "Example Product Name", "sku": "EX-1001", "gtin13": "0012345678905", "description": "Full enriched description text, not a truncated snippet.", "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "129.00", "availability": "https://schema.org/InStock" } } </script> ``` - **On PWA Studio:** move PDP rendering onto UPWARD's server-side path (FileResolver or TemplateResolver) rather than letting product content resolve purely on the client after the shell loads. At minimum, ensure the product's title, meta description, canonical URL, Open Graph tags, and JSON-LD are injected into the server response — not appended by the React bundle after a GraphQL round trip. - **On Edge Delivery Services:** this is largely handled by the platform's template + preview-API model, but confirm your enrichment pipeline's attribute updates are actually reaching Catalog Service in a way that triggers the re-render — an attribute sitting in a PIM or metafield that never syncs to Catalog Service won't make it into the regenerated static HTML. ## How to validate Don't trust the rendered browser tab — check what the server actually sends before JavaScript runs. ```bash # Fetch the raw server response, no JS execution curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \ https://www.example.com/catalog/product/view/id/1234 | less ``` Search that output for the product name, price, and a JSON-LD script block (a `script` tag with `type="application/ld+json"`). If they're missing but visible in the browser, the data is client-rendered only. - **View-source vs. rendered DOM:** open the PDP, use "View Page Source" (Ctrl/Cmd+U) for the raw HTML, then compare it against the browser's Inspector "Elements" tab (the rendered DOM, post-JavaScript). If the price or description appears in Elements but not in View Source, it's arriving via client-side JavaScript. - **Google's Rich Results Test:** run the PDP URL through [Google Rich Results Test](https://search.google.com/test/rich-results) — it renders the page the way Googlebot does and reports whether it found a valid `Product` structured data block, which flags both missing JSON-LD and JSON-LD that only appears after client rendering completes. - **Disable JavaScript:** in Chrome DevTools, use Cmd/Ctrl+Shift+P → "Disable JavaScript," then reload the PDP. Whatever content survives is what most non-Googlebot crawlers and AI agents will see. Verified as of July 2026 against Adobe's PWA Studio content-rendering documentation, the Adobe Commerce Edge Delivery Services announcement, and Google Search Central's JavaScript SEO guidance; Adobe Commerce Optimizer and Edge Delivery Services are under active development, so confirm current behavior against your specific storefront version before shipping. None of this matters, though, if there's nothing rich to put in that server-rendered HTML in the first place. Anglera continuously enriches product attributes, specs, use-cases, and identifiers behind the scenes — it plugs into whatever PIM or commerce platform already holds your data — so the JSON-LD block and server-rendered fields above have complete, current facts to draw from rather than a handful of manually maintained fields. --- # The state of product data in Oilfield & Energy (2026) Source: https://www.anglera.com/blog/oilfield-energy-state Published: 2026-05-11 Industries: oilfield-energy ![The state of product data in Oilfield & Energy (2026)](/og/hero-oilfield-energy-state.jpg) An oilfield equipment catalog is not a normal e-commerce catalog. It's gaskets rated to specific pressure classes, valves specced against API standards, and consumables where the wrong torque rating on a bolt isn't a bad review, it's a wellsite incident report. Most of that data still arrives at distributors and manufacturers as PDFs, cut sheets, and half-populated spreadsheets. In 2025-2026, three forces are converging to make that status quo expensive in ways it wasn't five years ago. ## What's actually broken Talk to anyone running product content for an oilfield or energy distributor and the same story comes up: manufacturer data sheets arrive in a different format from every supplier, technical specs live in a PDF nobody re-keys into the PIM, and the fields that matter most for spec-matching — pressure class, material grade, connection type, temperature rating — are the ones most likely to be missing or inconsistent from one supplier's feed to the next. The industry has actually tried to solve this at the standards level. [PIDX](https://pidx.org/standards/), the Petroleum Industry Data Exchange, maintains the Petroleum Industry Data Dictionary with more than 4,100 noun-and-modifier product templates (like `Valve:Gate`) mapped to UNSPSC codes, specifically so trading partners can describe products consistently. That a standards body has spent years building a shared vocabulary for oilfield products is itself a signal of how badly the raw supplier data needs it — the templates exist because nobody's incoming feed is clean enough on its own. Here's what that gap looks like on an actual product page. A raw supplier feed for a common wellsite item might hand a distributor this: **Raw feed description:** `Gate Valve, 4 inch, API 6A` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Nominal size | 4 in | | Pressure rating | 5,000 psi (5K) | | Standard | `API 6A`, PSL 2 | | Material class | AA (carbon steel body, NACE-compliant trim) | | Temperature class | P-U (-20°F to 250°F) | | End connection | Flanged, RTJ | | Actuation | Manual handwheel | | Product specification level | PSL 2 | One version tells a buyer "it's a valve." The other tells a procurement engineer whether it can even go on the well they're specifying for, without a call to a sales rep or a dig through a PDF. ## What it costs The costs here aren't abstract, and in energy they scale fast: - **Downtime, at oilfield prices.** A single offshore production platform can defer [$500,000 to over $1 million per day](https://www.verdantis.com/oil-and-gas-inventory-management/) when one critical part isn't available on site, and a refinery turnaround that runs four days long because of a missing valve assembly can cost $25-50 million in lost margin. Incomplete product data — the wrong spec captured, or never captured at all — is a direct contributor to ordering the wrong part in the first place. - **Returns and re-work on high-consequence parts.** When a gasket's temperature class or a valve's material grade is missing or wrong on the product page, the buyer either orders the wrong item or calls to confirm it manually — both outcomes cost more than the margin on the part. - **Lost search, on-site and in the field.** Buyers filtering by pressure class or connection type can't find a product whose spec was never populated, so they default to a supplier whose catalog is easier to search, or to the phone. - **Manual enrichment that never catches up.** Re-keying specs from a supplier PDF into a PIM or ERP typically runs in the 30-45 minute per SKU range when done by hand — a real tax when a distributor is onboarding new manufacturer lines or expanding into new basins. ## Why 2025-2026 changes the math Three shifts are stacking on top of each other right now. **AI answer engines are becoming a real research channel, including for technical buyers.** When a procurement engineer asks an assistant something like "find a 4-inch API 6A gate valve rated for 5,000 psi with NACE-compliant trim," the tools pulling that answer favor sources with the spec captured in a clean, structured format. A scanned cut sheet or a bare title doesn't get surfaced. A complete attribute table does. **The buying side is generationally shifting toward self-service.** McKinsey's [B2B Pulse research](https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/five-fundamental-truths-how-b2b-winners-keep-growing) found roughly 80% of B2B buyers now prefer digital self-service for early evaluation, and a growing share of large orders are moving through digital and remote channels rather than a rep relationship. Energy procurement has historically leaned on long-tenured relationships and phone-based ordering; the newer engineers and buyers entering the field expect to filter and spec a part online first. **Digital challengers are moving in on commodity categories.** Broader MRO distribution research points to digital-first entrants using transparent specs and fast fulfillment to win business that used to default to incumbent relationships — a pattern energy distributors are starting to see in consumables and standard parts, even if custom and engineered equipment still moves through traditional channels. Put together: the parts are getting more critical to spec correctly, the buyers checking those specs are more willing to self-serve and use AI to do it, and the catalogs underneath haven't caught up to either shift. ## Where this leaves distributors and manufacturers None of this requires replacing a PIM, an ERP, or the supplier relationships that took years to build. It requires treating spec-level product data — pressure class, material grade, connection type, temperature rating — as something that gets continuously scored, gap-filled from the supplier documents already on hand, and maintained as new lines get added, not re-keyed by hand every time a catalog grows. That's the layer Anglera works on. Your PIM or ERP still stores the data; Anglera continuously scores, gap-fills, and enriches it from the source documents suppliers already send, so a valve entry reads like the table above instead of a five-word title — live in weeks, not a multi-year systems integration, and without touching the systems your team already trusts. --- # A distributor's guide to spec-critical industrial supply data Source: https://www.anglera.com/blog/oilfield-energy-guide Published: 2026-05-11 Industries: oilfield-energy ![A distributor's guide to spec-critical industrial supply data](/og/hero-oilfield-energy-guide.jpg) An oilfield buyer specifying a forged steel gate valve is not browsing. They are checking a valve against a pressure vessel calc, a sour-service requirement, or a piping class someone else already stamped. If your product page cannot answer the question in the order they're asking it, they either call your inside sales team or order the wrong valve. Both cost you money. Here is what the page actually needs, why the gaps show up, and how to close them. ## What the buyer is actually checking against A drilling or production buyer sourcing a gate valve isn't asking "is this a good valve." They're checking it against a spec sheet someone else wrote. The product page has to answer, roughly in this order: 1. **Size and pressure class** — NPS and ANSI/ASME class (150 through 2500), because this determines whether the valve fits the piping class at all. 2. **End connection** — threaded, socket weld, flanged, or butt weld. Get this wrong and the valve simply doesn't mate to the line. 3. **Body and trim material** — forged carbon steel (`A105`) versus low-temp or chrome-moly (`F22`) versus stainless (`F316`), which governs both pressure-temperature rating and corrosion resistance. 4. **Sour-service compliance** — whether the metallurgy and hardness meet `NACE MR0175 / ISO 15156` for H2S-containing production streams. This is frequently a hard gate on the purchase order, not a nice-to-have. 5. **Design standard and bore** — `API 602` (typically 2 inches and under, forged body, compact) versus `API 600` (2 inches and larger, cast body, bolted bonnet), plus full-bore versus reduced-bore. 6. **Fire-safe and fugitive-emissions certification** — `API 607` fire-tested, `API 622` low-emission packing, where the site has an environmental or safety program requiring it. 7. **Test certification and traceability** — `API 598` hydro/seat test documentation, mill certs, heat-number traceability. Miss any one of these and the buyer either escalates to a phone call — the expensive path for you — or guesses and orders wrong. ## Ask an answer engine Increasingly, that buyer isn't typing into a search box on your site at all. A procurement engineer or an AI purchasing assistant is more likely to ask something like: *"2 inch forged steel gate valve, class 800, socket weld ends, NACE MR0175 compliant, for sour gas service."* That query only matches a product if class, end connection, material, and NACE compliance exist as separate, structured, retrievable fields — not buried in a paragraph description or, worse, only in a PDF cut sheet linked off the page. If an answer engine can't parse the attribute, it can't recommend the part, and neither can your own site search. ## A concrete before and after Here's a typical raw feed record for a 2-inch forged steel gate valve versus what a spec-critical buyer actually needs to see: **Raw feed description (as received from the manufacturer or scraped from a legacy catalog):** > "Gate Valve 2 IN 800 Forged Steel Screwed Ends" That's a search-engine dead end and a support-ticket generator. Here's the same valve enriched to answer the checklist above: | Attribute | Value | |---|---| | Product type | Gate valve, forged steel | | Nominal size | `2 in` (NPS 2) | | Pressure class | Class 800 (`ASME B16.34`) | | Design standard | `API 602` | | End connection | Socket weld (`ASME B16.11`) | | Body material | Forged carbon steel, `ASTM A105` | | Trim material | 13% chrome, hardened for sour service | | Bonnet type | Union bonnet (integral, non-bolted) | | Stem type | Rising stem, outside screw and yoke | | Bore type | Full port | | Sour service compliance | `NACE MR0175 / ISO 15156` | | Fire-safe rating | `API 607` tested | | Test certification | `API 598` hydrostatic and seat test, MTR available | | Max operating temp | `800 F` (per material class chart) | | Operator | Handwheel | That table is what lets a buyer self-serve a yes/no decision, and it's what an AI shopping assistant or a distributor's own site search can actually filter on. ## How the gap turns into a return The mechanism repeats across categories: a raw supplier feed arrives with a marketing-style description and two or three loosely structured attributes. A buyer who needs socket weld ends sees "screwed ends" nowhere, or nothing about end connection at all, and orders based on a photo or a guess. The valve arrives, doesn't mate to the line, and comes back. Multiply that across thousands of similar SKUs from dozens of forging shops and valve houses, each with its own naming convention, and you get a return rate problem that looks like fulfillment but is actually data. Industry estimates put the cost of bad product data at [$5 billion annually in electrical distribution alone](https://www.ewweb.com/business-management/e-biz/article/55370077/what-a-broken-coffee-table-taught-me-about-distributions-data-problem), and the mechanism — missing attributes forcing guesswork — is the same one driving [returns and support load across industrial distribution generally](https://www.fastenernewsdesk.com/100917/the-cost-of-poor-product-data-for-industrial-distributors-and-how-to-improve-it/). The valve category is worse than most: a missing spec field isn't cosmetic, it can mean a valve rated for the wrong pressure class going into a live line. Every one of those returns also generates a support ticket or a call to inside sales to re-confirm what should have been on the page in the first place — headcount spent re-answering questions the product page should have handled. ## The checklist For any spec-critical valve, fitting, or flange SKU, before it goes live: - Size, pressure class, and design standard are structured fields, not free text - End connection type is explicit and matches the actual part, not the category default - Body and trim material use the actual ASTM/API material designation, not a generic "steel" - Sour-service and fire-safe certifications are called out as pass/fail attributes, not buried in a linked PDF - Test certification and traceability documentation are referenced on the page, not just available on request - Attribute names are consistent across every supplier feed feeding that category, so "socket weld" isn't also "SW" in one feed and "threaded socket" in another ## Where this fits None of this requires ripping out a PIM or re-platforming a catalog. Your PIM stores the data; the work is scoring what's actually there against a checklist like this one, pulling the missing values from supplier documentation rather than inventing them, and normalizing naming across every vendor feed so "NACE compliant" means the same thing everywhere in the catalog. That's the kind of enrichment work that runs in weeks, not a multi-year integration, and it's exactly the layer Anglera adds on top of whatever system a distributor already runs. --- # Adding Product JSON-LD on BigCommerce — and keeping it in sync Source: https://www.anglera.com/blog/bigcommerce-product-json-ld Published: 2026-05-11 Platforms: bigcommerce ![Adding Product JSON-LD on BigCommerce — and keeping it in sync](/og/hero-bigcommerce-product-json-ld.jpg) BigCommerce's Cornerstone theme ships with a basic Product JSON-LD block, but "basic" is doing a lot of work in that sentence — GTIN, brand, and ratings are frequently missing, and multi-variant products confuse the offer shape. This guide covers where the markup lives on a Stencil storefront, which fields Google and AI crawlers actually weight, and how to make sure the JSON-LD never drifts from what a shopper sees on the page. ## Where the markup actually lives On a Stencil-based storefront (Cornerstone and its derivatives), Product JSON-LD is rendered as a Handlebars partial included on the product detail page — typically `templates/components/products/schema.html`, pulled into `templates/pages/product.html`. Because it's rendered server-side from the same `product` context object that populates price, stock, and variant selectors, it updates automatically whenever the underlying catalog data changes — no separate sync job required, as long as you're editing the theme's data bindings and not hardcoding values. There are two supported ways to touch it: 1. **Edit the theme file directly.** In the control panel, go to Storefront → Themes → Advanced → Edit Theme Files (or edit locally with the Stencil CLI and push). This gives you full access to the Handlebars context — `product.gtin`, `product.mpn`, `product.brand`, `product.reviews`, everything. 2. **Inject via Script Manager**, under Storefront → Script Manager. Its built-in location options are broad — "Storefront pages" (everything except checkout and order confirmation), Checkout, Order confirmation, or All pages — there's no native "product pages only" scope, so a script placed this way has to check at runtime (e.g., testing the URL pattern or a product-page global like `window.BCData`) that it's actually on a PDP before injecting anything. It also only has access to what's already rendered in the DOM, so it's a weaker option if you need identifiers like GTIN that aren't always printed on the visible page. Treat it as a stopgap for stores that can't get theme-file access, not the long-term approach. Either way, first check whether your theme already emits a Product block via an `application/ld+json` script tag — search view-source for that MIME type. If one exists, edit it in place. Shipping a second, competing Product block on the same page is a common way to fail rich-result eligibility. ## The fields that matter | Field | Where it comes from | Notes | |---|---|---| | `name` | `product.title` | Required. Must match the visible page heading. | | `brand` | `product.brand.name` / `product.brand.url` | BigCommerce Brands are a separate catalog object linked by `brand_id`; Google's structured-data guidelines expect `brand` as a nested `Brand` (or `Organization`) node, not a plain string. | | `sku` | `product.sku` | Product-level SKU field in the catalog. | | `gtin` | `product.gtin` (REST/GraphQL: `gtin`, alongside `mpn` and `upc`) | Optional catalog field, set per product (and per variant for MPN/UPC on variant-level products). Schema.org's `gtin` property generalizes the older `gtin8`/`gtin12`/`gtin13`/`gtin14` properties and auto-detects the right length, so a plain `gtin` key validates fine — but Google's own Merchant Center identifier guidance still recommends using "the most specific GTIN that applies," which is why Cornerstone's template picks the length-specific key (`gtin13`, etc.) at render time rather than always emitting `gtin`. Either form is acceptable; don't rewrite Cornerstone's default just to switch keys. | | `offers` | `product.price` (or `product.price.price_range` for variant products) plus `product.condition`, `product.pre_order`, `product.out_of_stock` | Needs `price`, `priceCurrency`, and `availability` at minimum. | | `aggregateRating` | `product.rating`, `product.num_reviews` | Only render this block when `settings.show_product_reviews` is true and review count is above zero — an empty `aggregateRating` is worse than none. | These map directly to the [product identifier fields](https://support.bigcommerce.com/s/article/Product-Identifiers?language=en_US) BigCommerce documents in the catalog (GTIN, UPC, MPN), and to the properties [Google's Product snippet documentation](https://developers.google.com/search/docs/appearance/structured-data/product-snippet) treats as required or strongly recommended: `name` is required, and you need at least one of `offers`, `review`, or `aggregateRating` present for snippet eligibility, with `brand`, `image`, and the identifier trio (`sku`/`mpn`/`gtin`) recommended on top of that. ## A working example Here's a trimmed, annotated version of the pattern BigCommerce's own [Cornerstone theme](https://github.com/bigcommerce/cornerstone/blob/master/templates/components/products/schema.html) uses — Handlebars driving live catalog data into JSON-LD: ```html <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": {{{JSONstringify product.title}}}, {{#if product.sku}}"sku": "{{product.sku}}",{{/if}} {{#if product.mpn}}"mpn": "{{product.mpn}}",{{/if}} {{#if product.gtin}}"gtin{{length product.gtin}}": "{{product.gtin}}",{{/if}} "url": "{{product.url}}", {{#if product.brand}} "brand": { "@type": "Brand", "name": {{{JSONstringify product.brand.name}}} }, {{/if}} "description": {{{json (ellipsis (sanitize product.description) 4000)}}}, "image": "{{getImage product.main_image 'zoom_size' (cdn theme_settings.default_image_product)}}", {{#and settings.show_product_reviews product.reviews.list.length}} "aggregateRating": { "@type": "AggregateRating", "ratingValue": "{{product.rating}}", "reviewCount": "{{product.num_reviews}}" }, {{/and}} "offers": { "@type": "Offer", "priceCurrency": "{{currency_selector.active_currency_code}}", "price": "{{#if product.price.with_tax}}{{product.price.with_tax.value}}{{else}}{{product.price.without_tax.value}}{{/if}}", "availability": "https://schema.org/{{#if product.out_of_stock}}OutOfStock{{else}}InStock{{/if}}", "url": "{{product.url}}" } } </script> ``` Rendered for an actual product, that produces: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "Bosch 18V Cordless Drill Kit", "sku": "BSH-DRL-18V-KIT", "mpn": "GSR18V-28FC", "gtin13": "4059625012345", "url": "https://tools.example.com/bosch-18v-cordless-drill-kit/", "brand": { "@type": "Brand", "name": "Bosch" }, "description": "Brushless 18V drill/driver kit with two 4.0Ah batteries...", "image": "https://cdn.example.com/products/bosch-drill-zoom.jpg", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "128" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "199.00", "availability": "https://schema.org/InStock", "url": "https://tools.example.com/bosch-18v-cordless-drill-kit/" } } ``` ## Two accuracy issues worth fixing **Variant price ranges.** Cornerstone's default template swaps in `product.price.price_range` for multi-variant products and outputs `minPrice`/`maxPrice` inside an `@type: "Offer"` block — but `minPrice`/`maxPrice` aren't valid `Offer` properties in schema.org; they belong to `AggregateOffer` (`lowPrice`, `highPrice`, `offerCount`). If your catalog has variant-priced products, switch the `@type` to `AggregateOffer` and rename the fields, or better, emit one `Offer` per SKU so each GTIN/price pair is unambiguous. **Third-party reviews.** If you run a review app (Yotpo, Okendo, Judge.me, etc.) instead of native BigCommerce reviews, it usually injects its own `aggregateRating`/`review` block. Keep only one source of review structured data per page — two competing `aggregateRating` nodes is a common cause of Rich Results Test warnings. ## How to validate - **View-source vs. rendered DOM**: `curl -s https://yourstore.com/product-name/ | grep -A 40 'application/ld+json'` shows exactly what a non-JS crawler receives — Stencil renders this server-side, so curl and the browser should match. - **Google's Rich Results Test** (search.google.com/test/rich-results): paste the live URL, confirm a single `Product` entity resolves, and check that `Offer`/`AggregateOffer` values match what's on the page. - **Schema Markup Validator** (validator.schema.org) catches property-name errors, like the `minPrice`/`AggregateOffer` mismatch above, that Google's tool may not flag. - Spot-check a few SKUs after any catalog import or price sync — GTIN and MPN are easy fields to leave blank at scale. **Verified as of July 2026**: field names and the Cornerstone template pattern reflect BigCommerce's current Stencil documentation and public theme source; Script Manager placement options were confirmed against current BigCommerce Developer Center docs. Re-check after major theme or Cornerstone version upgrades. Getting this markup right assumes the underlying fields — GTIN, MPN, brand, use-case attributes — are actually populated in your catalog, which is where most retailers stall. Anglera enriches that product data continuously in your PIM or BigCommerce catalog itself, so the JSON-LD above always has a real GTIN and brand to render instead of an empty conditional block. --- # Making your SAP Commerce Cloud catalog agent-readable (AEO) Source: https://www.anglera.com/blog/sap-commerce-agent-readable Published: 2026-05-10 Platforms: sap-commerce ![Making your SAP Commerce Cloud catalog agent-readable (AEO)](/og/hero-sap-commerce-agent-readable.jpg) Distributor and manufacturer catalogs in SAP Commerce Cloud often have the underlying data an AI shopping agent needs — the gap is usually getting it into a form the agent can parse on the page itself. This guide covers the three things that determine whether a SAP Commerce Cloud product detail page (PDP) is machine-readable: complete structured attributes, valid Product JSON-LD, and server-rendered HTML that doesn't require executing JavaScript to see the content. ## Two storefronts, two different starting points SAP Commerce Cloud customers are typically on one of two storefront architectures, and it changes where you start: - **Accelerator (Spring MVC / JSP)** — the legacy storefront. Pages are rendered server-side by default, so crawlers and most AI agents already see the rendered HTML. Your gap is almost always incomplete structured data (no JSON-LD, or partial schema), not renderability. SAP has scheduled Accelerator's UI templates for removal and end of mainstream maintenance in September 2027, so treat fixes here as a stopgap, not a platform to invest in. - **Composable Storefront (Spartacus, Angular)** — the current SAP-recommended front end. It ships as a single-page application, which means the initial HTML payload can be nearly empty unless Server-Side Rendering (SSR) or prerendering is explicitly configured and running. This is the storefront where "is my content actually in the HTML" becomes the first question to answer, not an afterthought. Spartacus includes first-party JSON-LD support (`JsonLdBuilderModule`) and a meta-tag/canonical-URL framework, both covered below — but they only help an agent if the page is served pre-rendered. ## Step 1: Complete the structured attributes before you templatize SAP Commerce Cloud models product attributes two ways, and both matter for AEO: - **Type system attributes** — attributes defined on the product's item type (e.g., `Product`, or a custom subtype), populated via Impex or the Backoffice Product Cockpit. - **Classification system attributes ("features")** — attributes assigned through a classification category and classification system (e.g., an ETIM- or eCl@ss-style hierarchy), which is how most distributors and manufacturers model spec sheets — voltage, thread size, material, certifications, compatible models — since specs vary by category without a schema change per product type. Both surface through Product Content Management (PCM) tooling and are retrievable via the OCC (Omni Commerce Connect) API's product endpoint using `fields=FULL`, which returns base fields plus the `classifications` array of feature/value pairs. If a spec lives only in classification features and your template only reads type-system fields (or vice versa), it silently never reaches the page — the single most common reason a PDP looks complete in Backoffice but reads thin to an agent. ## Step 2: Emit Product JSON-LD Whichever storefront you're on, the target output is the same: a `Product` JSON-LD block with identifiers, offer, and — critically for B2B/industrial catalogs — the classification attributes an agent can't infer from a name and photo. ```json { "@context": "https://schema.org", "@type": "Product", "name": "1/2 in. Brass Ball Valve, 600 WOG", "image": "https://www.example.com/images/BV-1200-050.jpg", "sku": "BV-1200-050", "mpn": "BV-1200-050", "gtin13": "0801234567895", "brand": { "@type": "Brand", "name": "Acme Flow Controls" }, "description": "Full-port brass ball valve rated to 600 WOG for potable water, compressed air, and light industrial fluid lines.", "additionalProperty": [ { "@type": "PropertyValue", "name": "Port Type", "value": "Full Port" }, { "@type": "PropertyValue", "name": "Pressure Rating", "value": "600 WOG" }, { "@type": "PropertyValue", "name": "End Connection", "value": "NPT Threaded" }, { "@type": "PropertyValue", "name": "Material", "value": "Brass (CW617N)" } ], "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "18.42", "availability": "https://schema.org/InStock", "url": "https://www.example.com/p/BV-1200-050" } } ``` The `additionalProperty` array is where your classification-system features belong — map each surfaced feature/value pair from the OCC `classifications` response directly into a `PropertyValue`, rather than only relying on `name`/`description`, so an agent can match on a specific spec (pressure rating, thread size, certification) instead of guessing from free text. `name`, `image`, and `offers` (with `price`/`priceCurrency`) are the fields Google's product structured-data guidelines require; `sku`, `mpn`, `gtin13`, `brand`, and classification-derived `additionalProperty` entries are recommended, not required — but they're what an AI shopping agent actually uses to answer a specific buyer question. **On Spartacus:** import `JsonLdBuilderModule` and let `ProductSchemaBuilder` generate the `Product`, `Offer`, `Review`, and `Rating` blocks from the same product model the PDP renders from; extend it via the `SCHEMA_BUILDER` / `JSONLD_PRODUCT_BUILDER` injection tokens to add classification-derived `additionalProperty` entries — that mapping isn't automatic. Spartacus doesn't validate the JSON-LD it emits, so validation is your responsibility (see "How to validate" below). **On Accelerator (JSP):** there's no built-in JSON-LD builder — add a JSON-LD script block (`application/ld+json`) in the product detail JSP, populated from the same model attributes the visible template already uses, so structured data and visible copy never drift apart. ## Step 3: Confirm it's actually server-rendered Structured data and rich copy are worthless to most agents if they only appear after client-side JavaScript executes. On Accelerator this is rarely an issue. On Spartacus: - SSR must be explicitly enabled and running (the Node Express SSR engine, or a prerendering cache in front of it) — an unconfigured or crashed SSR server serves the empty app shell, invisible to non-JS-executing crawlers. - Configure the meta-tag and canonical-URL framework (`PageMetaResolver`, `CanonicalUrlOptions`) so PDPs emit a stable title, description, og:image, and canonical link server-side rather than relying on the Angular router to write them client-side. - Watch SSR cache TTLs on high-SKU catalogs — a stale cached page can serve outdated stock/price copy even after the underlying data changes. ## Answer buyer questions in plain, extractable prose Complete attributes and valid JSON-LD cover the "what is this" and "what does it cost" questions. AI agents fielding a buyer's actual question ("does this fit a 3/4 in. line," "is this NSF certified," "what's the MOQ") match against visible prose, not just markup. For distributor and manufacturer catalogs specifically: - Put spec tables and compatibility/fitment notes in server-rendered HTML table or definition-list markup, not inside a PDF datasheet link or an image of a spec sheet. - Write a short FAQ block per PDP (or per category template, driven by classification data) answering the 3-5 questions buyers ask most for that product family — certifications, tolerances, lead time, MOQ. - Avoid burying compatible-model or cross-reference lists behind a "view more" control that only populates via an unrendered client-side fetch. ### What an agent can extract vs. can't | Agent can reliably extract | Agent typically cannot extract | |---|---| | Product name, brand, SKU/MPN/GTIN in JSON-LD | Specs that exist only in a linked PDF or spec-sheet image | | `additionalProperty` values mapped from classification features | Classification data present in Backoffice/OCC but never rendered by the template | | Server-rendered spec tables and FAQ prose | Client-rendered PDP content on an unconfigured/failed SSR server | | Price and availability in a server-rendered `Offer` | Real-time stock shown only via a client-side widget, no static fallback text | ## How to validate - **View-source vs. rendered DOM**: on the live PDP, use "View Page Source" (or `curl` the URL) and search for the product name and `application/ld+json`. If it's missing from source but visible in the rendered DOM, SSR/prerendering isn't reaching that page. - **curl check**: `curl -s https://your-domain.com/p/SKU | grep -A2 'application/ld+json'` — confirms the JSON-LD ships in the raw HTML response, not just the client render. - **Google Rich Results Test**: paste the live URL to confirm the `Product` schema parses without required-field errors, particularly a missing `image` or an incomplete `offers` block — the two most common reasons a page fails eligibility. - **Schema.org validator** or a JSON-LD linter on the extracted block, since Spartacus (and most Accelerator custom code) won't validate the JSON-LD it emits for you. *Verified as of July 2026 against SAP's Spartacus/Composable Storefront documentation and SAP Commerce classification system documentation; confirm exact module names and default SSR behavior against your specific SAP Commerce Cloud version, as JSON-LD builder tokens and SSR defaults have changed across Spartacus releases.* None of this replaces the enrichment work upstream — a template can only expose attributes that exist somewhere in SAP Commerce, whether in the type system or the classification system. Anglera plugs into SAP Commerce Cloud to keep those type and classification attributes continuously enriched with accurate specs, identifiers, and use-case detail, so the JSON-LD and spec-table work above has complete data to render rather than gaps to paper over. --- # The state of product data in Pumps & Fluid Power (2026) Source: https://www.anglera.com/blog/pumps-fluid-power-state Published: 2026-05-10 Industries: pumps-fluid-power ![The state of product data in Pumps & Fluid Power (2026)](/og/hero-pumps-fluid-power-state.jpg) Pumps and fluid power distribution is having a good couple of years on paper. Underneath the growth, most catalogs are still running on PDF spec sheets, inconsistent cross-reference numbers, and product pages that were written for a 2015 buyer who called a counter rep before checking out. That gap between market momentum and product-data maturity is now the thing separating distributors who win the click from those who lose it to a competitor with a cleaner PDP. ## Where the data actually breaks Fluid power catalogs are unusually hard to keep clean. A single centrifugal pump SKU can carry a dozen technical attributes that matter to a buyer's decision (flow rate, head, motor HP, inlet/outlet size, impeller material, seal type, mounting configuration), plus manufacturer cross-references, superseded part numbers, and application notes that live in a PDF cut sheet rather than a structured field. Multiply that by thousands of SKUs across hydraulic, pneumatic, and process-pump lines from Parker Hannifin, Bosch Rexroth, Danfoss, Eaton, and dozens of smaller OEMs, and the result is a catalog that's technically online but not really usable. This isn't a fringe problem. Recent industry research on distributor product data found that 60% of distributors report product data inconsistencies as a core challenge, up to 30% of product-information errors trace back to manual entry, and 70% struggle simply to keep catalogs current as suppliers push updates ([Blue Meteor](https://bluemeteor.com/product-data-challenges-that-hurt-industrial-distributors/)). The same research found 40% of procurement and supply-chain professionals report direct financial loss tied to inaccurate supplier information. None of that is pumps-specific, but nothing about fluid power's supply chain — heavier reliance on distributor value-add, more OEM variants per base product, more cross-reference complexity — makes it less true here. If anything, it's worse. ## What it costs on the page A gear pump listing that reads "high-performance hydraulic pump, various sizes" instead of stating displacement, rated pressure, shaft type, and port configuration doesn't just look thin. It fails the buyer's actual search intent, gets skipped in filtered search, and pushes the sale to whichever competitor's PDP actually answers the spec question. It also fails a very specific test: whether the product is even eligible for AI-driven answer engines to recommend it, since those systems need structured, unambiguous attributes to cite a SKU with confidence. Here's the difference in practice, using a typical raw supplier feed versus what a buyer and an AI system both need to act on: | Field | Raw feed (as received) | Enriched attribute | |---|---|---| | Description | "Hydraulic gear pump, cast iron, various displacements" | Cast-iron hydraulic gear pump | | Displacement | Not stated | `2.1 cu in/rev` | | Rated pressure | "high pressure" | `3000 PSI` continuous | | Shaft type | Missing | Keyed, `7/8 in` diameter | | Port configuration | Missing | SAE `12` inlet / SAE `10` outlet | | Rotation | Missing | Clockwise (CW) | | Cross-reference | None listed | Supersedes 3 legacy OEM part numbers | The left column is what most fluid power PDPs still look like. The right column is what a buyer's filtered search, a distributor's fitment logic, and an AI answer engine all need in order to surface and trust that SKU. ## Why 2025-2026 raises the stakes Three things are converging at once, and none of them are hype. **AI search is now part of the buying journey.** Engineers and procurement teams increasingly open ChatGPT, Perplexity, or Google AI Overviews with a query like "best supplier for a stainless gear pump rated to 3,000 PSI" and treat the answer as a shortlist ([Directom](https://www.directom.com/how-industrial-manufacturers-can-optimize-for-chatgpt-and-google/)). Ask an answer engine "cross reference for a 2.1 cu in/rev cast-iron gear pump rated to 3000 PSI" and it will only surface a distributor's SKU if that distributor's data is structured enough to be quoted with confidence. A PDF spec sheet buried behind a "download catalog" button doesn't qualify. **The buyer is generationally different.** Millennials now make up 73% of B2B buyers and hold 44% of final purchase-decision roles, and 68% of them prefer self-service research over talking to a sales rep before they're ready ([Digital Commerce 360](https://www.digitalcommerce360.com/2025/04/28/why-millennials-continue-to-reshape-b2b-ecommerce/)). That buyer isn't calling the counter to ask about port size. They're filtering online, and a distributor whose filters don't work because the underlying attributes aren't populated simply drops out of consideration. **Channel pressure is real.** Fluid power's own trade association just rebranded, with the 46-year-old Fluid Power Distributors Association repositioning itself as the "Motion Control Solutions Network" to reflect how far the channel has moved beyond simple parts distribution ([Fluid Power World](https://www.fluidpowerworld.com/fpda-rebranding-as-motion-control-solutions-network/)). Meanwhile the aftermarket segment of fluid power equipment, where distributors compete hardest on data and service rather than OEM contracts, is projected to grow faster than the OEM channel through 2031 ([Mordor Intelligence](https://www.mordorintelligence.com/industry-reports/global-fluid-power-equipment-market)). That's exactly the segment where product-page quality decides who wins the reorder. ## The fix isn't a rebuild None of this requires ripping out a PIM or building a new catalog platform. Most of the gap between a raw supplier feed and a usable, AI-legible product page is mechanical: extracting the values that are already sitting in a cut sheet, scoring which SKUs are thin, and filling the gaps consistently across thousands of variants without six months of manual cleanup. That's the layer Anglera sits in. Your PIM, or your flat file, still stores the data. Anglera scores it, gap-fills it from source documents, and keeps it current as suppliers push updates, so a gear pump listing reads like an engineer wrote it instead of like nobody did. --- # A distributor's guide to curve, port, and pressure data Source: https://www.anglera.com/blog/pumps-fluid-power-guide Published: 2026-05-10 Industries: pumps-fluid-power ![A distributor's guide to curve, port, and pressure data](/og/hero-pumps-fluid-power-guide.jpg) A buyer looking for a replacement end-suction centrifugal pump does not want a glamour shot and a horsepower number. They want to know if the thing will bolt up to their existing piping, run at their duty point without cavitating, and survive the pressure their system actually sees. When a product page can't answer those questions, the buyer either calls support, guesses, or orders three options and returns two. Every path costs a distributor money, and the guess is the most expensive one. ## Why this category punishes bad data harder than most Pumps and fluid power parts are dimensionally unforgiving. A centrifugal pump isn't like a work glove where "close enough" ships fine. Suction and discharge nozzle size and location, shaft diameter, and baseplate footprint are all governed by interchangeability rules in standards like [ASME B73.1](https://www.asme.org/codes-standards/find-codes-standards/b73-1-specification-horizontal-end-suction-centrifugal-pumps-chemical-process) specifically so that pumps of the same size designation from different manufacturers can drop into the same piping and foundation. That's a gift to buyers, but only if the product page actually states the designation and the nozzle data instead of burying it in a PDF cut sheet nobody opens before checkout. This is not a niche data-hygiene complaint. Across MRO categories broadly, [51% of organizations report data-quality problems](https://www.verdantis.com/mro-master-data-statistics/) in their maintenance and repair supply chains, and 49% cite inconsistencies in supplier master data specifically. Pumps sit right in the middle of that world: multi-source supply, spec-driven selection, and a buyer who often has one shot to get the replacement right before a process line goes down. ## What a Pumps & Fluid Power buyer actually needs on the page Not a feature list. A decision-support table. For an end-suction centrifugal pump, the questions buyers ask, in order, look like this: | Buyer question | Data the page needs | |---|---| | Will it bolt into my existing pipe and baseplate? | ANSI/ISO dimensional designation, suction/discharge nozzle size and location, baseplate footprint | | Will it perform at my duty point? | Full pump curve: head vs. flow, efficiency, BEP, input power | | Will it cavitate in my system? | NPSHR curve at the relevant flow range | | Will it hold up under my system pressure? | Maximum working pressure, casing pressure rating, seal chamber pressure limit | | What's actually wetted? | Casing/impeller materials, seal type and elastomer compatibility | | Will it fit my motor and drive? | Shaft diameter, coupling type, motor frame size, rated speed | The [Hydraulic Institute's guidance on pump curves](https://datatool.pumps.org/pump-fundamentals/pump-curves) is explicit that a curve isn't decoration: head-vs-flow, efficiency, input power, and NPSHR together are what let an engineer confirm a pump matches system requirements at or near its best efficiency point, rather than running oversized, undersized, or in a cavitating condition that shortens seal and bearing life. A spec sheet that has a curve image but no NPSHR line, or a curve with no labeled BEP, is functionally incomplete even though it "has a curve." ## Before and after: a raw feed vs. an enriched listing Here's what a typical raw supplier feed gives a distributor for an end-suction centrifugal pump, versus what the page needs to actually answer the buyer's questions. **Raw feed description:** "Cast iron end suction centrifugal pump, 3 HP, close-coupled, for water transfer applications." **Enriched attribute table:** | Attribute | Value | |---|---| | Dimensional designation | `ANSI B73.1, 2x1.5-8` | | Suction / discharge nozzle | `2 in` suction / `1.5 in` discharge, flanged (`125 lb`) | | Rated flow @ head | `100 gpm @ 100 ft TDH` | | BEP flow | `110 gpm` | | NPSHR @ rated flow | `8 ft` | | Max working pressure | `175 psi` casing | | Wetted materials | Cast iron casing, bronze impeller | | Seal type | Mechanical seal, `Buna-N` elastomer | | Motor frame / speed | `NEMA 145JM`, `3,500 rpm` | Same pump, but now a buyer or a purchasing system can actually confirm fit before ordering, not after unboxing. ## The "ask an answer engine" test Buyers increasingly qualify parts by asking an AI answer engine something like: "What's the NPSHR for a 2x1.5-8 ANSI end suction pump at 100 gpm, and will it cavitate on a suction lift application?" If the underlying product data doesn't have a machine-readable NPSHR value tied to a flow rate, the answer engine has nothing to retrieve, and the distributor's listing gets skipped in favor of a competitor whose data is structured. Readable-by-humans and readable-by-machines are the same requirement now, not two different projects. ## A short checklist for fixing the gap - Confirm every pump listing carries a dimensional designation (ANSI B73.1, ISO 2858, or equivalent), not just a model number. - Require nozzle size, location, and flange rating as structured fields, not text buried in a PDF. - Attach the full curve set: head/flow, efficiency, BEP, NPSHR, and input power, as both an image and structured data points. - Capture max working pressure and seal chamber rating separately from the general "specs" blob. - Flag listings where wetted materials or seal elastomer are missing. That gap is what drives compatibility-related returns and support tickets, not the dimensional stuff alone. - Re-check gap-fill coverage after each new supplier feed lands, since one bad import can silently regress a clean catalog. Wrong-part returns in a category like this are rarely about the buyer being careless. They're about a product page that couldn't answer the three or four questions that actually mattered. Anglera plugs into whatever PIM a distributor already runs, or works from a flat file if there isn't one, and continuously scores, gap-fills, and enriches attributes like nozzle size, curve data, and pressure ratings against supplier source documents so the values on the page are the ones an engineer would actually check against a real spec. It's live in weeks, not a multi-year integration, because the fix here is closing specific gaps, not replacing the system of record. --- # Beyond the hero image: the asset and attribute data AI needs Source: https://www.anglera.com/blog/beyond-hero-image-asset-data Published: 2026-05-10 ![Beyond the hero image: the asset and attribute data AI needs](/og/hero-beyond-hero-image-asset-data.jpg) Most catalog teams still treat the hero shot as the finish line. Get a clean white-background image, maybe a lifestyle photo, ship the listing. But an AI answer engine looking at that image sees a rectangle of pixels: colors, shapes, a rough silhouette. It cannot see the port count on the back of a switch, the thread pitch on a fitting, or the certification stamped in text too small to render at web resolution. The gap between what a photo shows and what a buyer or an AI needs to know is exactly where products go invisible. ## Vision models are good at objects, not specs Multimodal models like GPT-4o and Gemini have gotten genuinely good at recognizing what an image contains, and the visual search market is scaling fast alongside them, projected to more than triple from about [$6.3 billion in 2025 to $23.8 billion by 2034](https://mixpeek.com/curated-lists/best-ai-image-search-tools). But recognition is not comprehension. A vision model can tell you a picture shows a gray metal enclosure with cables coming out of it. It cannot reliably tell you that enclosure delivers 370W of PoE budget across 24 ports, or that the mounting bracket is sold separately. That information either lives in text somewhere near the image, or it does not exist to the model at all. Image quality compounds the problem. Blurry, poorly lit, or low-resolution catalog photos already struggle to match against real-world queries, which is one reason distributors with thin photography budgets lose ground in visual search even before the specs question comes up. ## Alt text stopped being a caption The job of alt text has changed. For years it described what a screen reader should say about an image: "man holding drill." The newer expectation, especially as [AI vision systems read surrounding page context to interpret why an image matters](https://neuronwriter.com/image-seo-ai-vision-models-2026/), is that alt text carries purpose, not just contents. "Man holding drill" tells an answer engine nothing about torque, chuck size, or battery platform. "18V brushless hammer drill, 1/2 in keyless chuck, compatible with `XR` battery platform" gives it something to reason with, and it does so without touching the image file at all. That distinction matters because alt text is one of the only channels where product truth and image context sit in the same place. If it's generic or missing, the image is decorative as far as any language model is concerned. ## The metadata layer Google already expects This isn't just an AI-search theory. Google's own structured data guidance for images asks for [creator, license, and copyright fields on the `ImageObject` type](https://developers.google.com/search/docs/appearance/structured-data/image-license-metadata), plus a way to flag whether an image is a real photograph or AI-generated. That's before you get to product structured data proper, where Merchant Center wants multiple images at [specific resolutions and aspect ratios](https://support.google.com/merchants/answer/6386198?hl=en) tied to accurate price, availability, and identifiers. The image is not a standalone asset. It's one field in a structured record, and it only pays off when the rest of the record is filled in around it. ## Before and after: same photo, different product Here's what an ordinary supplier feed looks like next to an enriched version of the same SKU: **Raw feed description:** "Network switch, 24 port, black, good for office use." | Attribute | Enriched value | |---|---| | Port count | 24 x `10/100/1000` RJ45 | | PoE budget | 370W total, `802.3bt` | | Uplink ports | 4 x `SFP+` 10G | | Mounting | 19 in rack, 1U | | Alt text | 24-port managed PoE++ switch, 1U rack-mount, 370W budget, 4x SFP+ uplinks | | Image set | Front panel, rear panel, dimensional line drawing | | Fan noise | Fanless | Nothing here required a photographer to reshoot anything. It required pulling values out of the supplier's spec sheet, scoring them for completeness, and attaching them to the SKU and its images as text an engine can parse. ## Ask an answer engine Ask an answer engine "which fanless 24-port PoE switch has enough budget for 24 wireless access points" and it needs the PoE-budget number and the fanless attribute in text, matched to a real image of the actual unit. A hero shot alone answers none of that. The structured record next to it answers all of it. ## Structured data helps discovery, not shortcuts around substance It's worth being honest about the limits here. A widely cited [Ahrefs study tracking 1,885 pages](https://ahrefs.com/blog/schema-ai-citations/) that added JSON-LD schema found no meaningful citation lift on pages that were already heavily cited by AI systems, undercutting the idea that markup alone moves the needle. The pages in that study already had 100+ citations before the test. For a typical distributor SKU starting from nothing, the mechanism is different: schema and alt text are how a page gets discovered and correctly parsed in the first place, not a lever you pull on top of already-strong content. Structured data amplifies real product information. It doesn't manufacture it. ## Where this leaves catalog teams Photography budgets and SEO tags both matter less than the plain-text layer connecting them: attributes extracted from real supplier documentation, alt text that names what the product does instead of what it looks like, and image metadata filled in consistently across every SKU rather than the ten hero shots that got extra attention. That's a data operations problem more than a creative one, and it's one most catalogs carry at scale because nobody enriches every SKU by hand. This is the layer Anglera works on. It plugs into whatever PIM a distributor already runs, or works from a flat file if there isn't one, and continuously extracts and quality-scores the attributes and alt text that sit next to every image, so the picture and the product record finally say the same thing. --- # Server-side rendering on Shopify: making product data visible to Google and AI Source: https://www.anglera.com/blog/shopify-ssr-rendering Published: 2026-05-09 Platforms: shopify ![Server-side rendering on Shopify: making product data visible to Google and AI](/og/hero-shopify-ssr-rendering.jpg) Shopify's Storefront Renderer is server-rendered by default, but plenty of the widgets, page builders, and custom PDP sections merchants bolt on top of a theme are not. If your spec table, metafield-driven attributes, or custom description block only appears after a client-side JavaScript call, it can be invisible to search engines and to the growing set of AI agents that read raw HTML without executing scripts. This guide covers how Shopify actually builds a product page's HTML, the common ways product data quietly becomes client-only, and how to check which category your store falls into. ## How Shopify renders a product page today For standard Liquid themes (Dawn and any Online Store 2.0 theme), Shopify's Storefront Renderer processes your theme layout file, the product template, and its sections entirely on Shopify's servers before the response reaches the browser. Shopify's engineering team has described this pipeline in detail, including a full-page cache layer that lets the majority of requests return in well under 100ms at the median, with tail latency (the slowest 10%) still generally under a second — the HTML you get back already contains the rendered product title, price, description, and any Liquid-rendered metafields, images, and variant data. There's no client-side render step required to see that content; a plain HTTP request returns it. App content follows the same model when it's built correctly. Theme app extensions render app blocks through Liquid's `content_for 'blocks'` tag, which means an app block's markup is generated server-side alongside the rest of the section, just like a native theme block. The older `ScriptTag` API, by contrast, injects JavaScript that runs in the browser and writes to the DOM after the page loads — the content it adds was never part of the HTTP response. Shopify has been winding ScriptTag down in favor of theme app extensions: it's already blocked for new use on Order Status and Thank You pages, with full retirement there on a 2025–2026 timeline, and apps that still rely on it for storefront pages risk failing App Store review even where it technically still runs. Headless storefronts built on Shopify's Hydrogen are also SSR by default, though the underlying framework has shifted: Hydrogen ran on Remix conventions through 2024 and has since moved to React Router in framework mode (React Router 7), deployed on Oxygen hosting. In both generations, the pattern is the same — a route's `loader` function runs on the server, and the resulting product data is included in the initial HTML streamed to the client, with React hydrating on top of it. That guarantee holds only for data fetched inside `loader`. If a component instead fetches product data client-side — for example, inside a `useEffect` call to the Storefront API after the component mounts — that data behaves exactly like content from a client-rendered single-page app: absent from the initial response, present only after JavaScript executes. ## Where product data quietly goes client-only The rendering model is server-side by default, but four patterns commonly reintroduce client-only content on otherwise Liquid-rendered pages: - **Metafields wired up via client-side fetch instead of Liquid.** Creating a metafield definition in the admin does not put it on the page — someone has to reference it in a template using Liquid's `product.metafields` object for Shopify to render it server-side (see the fenced example below). Several spec-table and comparison-chart apps instead query the Storefront API from the browser after page load, which is easier to build but means the attribute data isn't in the HTML response at all. - **Page builder apps (drag-and-drop PDP builders) that render sections via client-side JavaScript** rather than as native Liquid sections or theme app extension blocks. Worth checking per app and per section, since implementations vary. - **Reviews, Q&A, and UGC widgets** that inject their content (including any embedded product attributes) through a script tag after load, rather than through server-rendered markup. - **Hydrogen/custom storefronts where product detail is fetched in a client component** instead of the route loader, often to avoid a server round trip for a "load more variants" or "related specs" panel. None of these are wrong choices for interactivity — they're wrong only when they're the sole path for content you want indexed or read by an AI agent, since a request that doesn't execute JavaScript never sees it. ## Making sure product data is in the server-rendered HTML Three practical fixes cover most cases: 1. **Reference metafields directly in Liquid**, not through a client-side API call, whenever the value should be crawlable: ```liquid {% if product.metafields.specs.material %} <p>Material: {{ product.metafields.specs.material.value }}</p> {% endif %} ``` 2. **Emit product structured data with Shopify's `structured_data` filter** (or a manually maintained JSON-LD block) inside the product template, so Google and AI systems parsing JSON-LD get a machine-readable summary in the same response as the visible HTML: ```liquid <script type="application/ld+json"> {{ product | structured_data }} </script> ``` This filter outputs a schema.org `Product` object for products without variants, or a `ProductGroup` for products with variants. If your theme already ships a hardcoded JSON-LD block (common in older Dawn-based themes), check for duplicates — two competing `Product` schemas on one page is a frequent Search Console warning, and Shopify's own filter won't automatically override a hardcoded one. 3. **Use theme app extensions and app blocks instead of ScriptTag/Asset-injected JavaScript** for any app content that should be part of the page's substance rather than a widget layered on top. If you're evaluating a PDP app, ask the vendor directly whether it renders through Liquid/app blocks or through client-side JavaScript — for Hydrogen storefronts, ask whether product data loads in the route's `loader` or in a client component. ## How to validate Compare the raw response to the rendered page, per URL: ```bash curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1)" https://yourstore.com/products/your-handle \ | grep -i "material\|application/ld+json" ``` If the attribute or JSON-LD block you expect doesn't show up in that output, it isn't in the server response — no matter how it looks in the browser. - **View-source vs. rendered DOM**: open `view-source:https://yourstore.com/products/your-handle` and search for a specific attribute value or price. Then open DevTools, inspect the same element in the live DOM, and see whether it's present in both, or only in the DOM after scripts run. - **Google's Rich Results Test**: paste the product URL in and check whether Google's renderer detects your `Product`/`ProductGroup` JSON-LD and pulls the fields you expect (price, availability, brand). - **Shopify's Theme Inspector for Chrome**: useful for confirming which parts of a page came from Liquid render time versus client-side scripts, section by section. ## Verified as of July 2026 Shopify's Storefront Renderer, Liquid theme architecture, theme app extensions, and the `structured_data` filter are current mechanisms per shopify.dev as of this writing; Hydrogen's SSR behavior reflects its current React Router 7/Oxygen-based architecture (having moved on from Remix in 2024–2025). Field names, app APIs, and Hydrogen conventions are subject to Shopify's normal release cadence — recheck shopify.dev before implementing on a specific theme or plan. None of this matters if there's nothing worth rendering. Anglera enriches the underlying product data — attributes, specs, use-cases, identifiers — continuously in the background, so whichever of these rendering paths you choose, the PDP has rich, current content to put there in the first place. Your PIM stores the data; Anglera does the work of keeping it complete. ## Sources - [Sections — Shopify theme architecture](https://shopify.dev/docs/storefronts/themes/architecture/sections) - [structured_data — Liquid filter reference](https://shopify.dev/docs/api/liquid/filters/structured_data) - [App blocks for themes](https://shopify.dev/docs/storefronts/themes/architecture/blocks/app-blocks) - [Understand JavaScript SEO Basics — Google Search Central](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) --- # The lighting attributes buyers filter on — and most catalogs miss Source: https://www.anglera.com/blog/lighting-attributes Published: 2026-05-09 Industries: lighting ![The lighting attributes buyers filter on — and most catalogs miss](/og/hero-lighting-attributes.jpg) A facilities engineer replacing warehouse fixtures doesn't search for "bright, energy-efficient lighting." They search for a specific efficacy, a color temperature, a beam distribution that fits their mounting height, and a DLC listing their utility rebate program requires. If those fields live only in a spec-sheet PDF, the fixture doesn't rank low — it doesn't show up at all. Here's the attribute set that actually drives lighting purchases, why gaps quietly delete SKUs from filtered search and AI answers, and how to structure it using an LED high-bay fixture as the worked example. ## Lighting buyers filter on physics, not adjectives Lighting is one of the more technical categories in distribution because the spec sheet maps directly to a design calculation. A specifier isn't browsing — they're plugging numbers into a photometric layout: ceiling height, target foot-candles, spacing criteria. The fixture that doesn't expose those numbers as structured data can't be compared, and can't be found. The core physical attributes almost every commercial or industrial fixture needs are lumen output, efficacy (lumens per watt), correlated color temperature (CCT), and color rendering index (CRI). Efficacy in particular has become a moving target: the DesignLights Consortium's [Version 6.0 technical requirements](https://designlights.org/qpl/), rolling out for QPL applications starting January 2026, raise the qualifying efficacy bar by roughly 14% over the prior version, and every DLC listing already surfaces manufacturer, model number, efficacy, wattage, CRI, CCT, lumen output, and warranty as discrete fields. If a catalog doesn't carry those same fields, it can't even replicate what the rebate database already publishes. Beyond the core four, the attributes that actually gate a purchase decision include: - **Beam angle / distribution** — narrow optics (60-90°) for high mounting heights, wide optics (110-120°) for low-bay and aisle coverage, per the mounting-height guidance in [LED Lighting Supply's high-bay buyer's guide](https://www.ledlightingsupply.com/blog/buyers-guide-to-high-bay-lights) - **Input voltage range** — universal (120-277V) vs. high-voltage (347-480V) matters for industrial retrofits on three-phase service - **Dimming protocol** — 0-10V, DALI/DALI-2, or none; a mismatch here is a return, not a preference - **IP and IK rating** — ingress protection for wash-down or outdoor exposure, impact rating for high-traffic areas - **Lumen maintenance (L70/L90)** and **warranty term** — the two fields that determine total cost of ownership, not just sticker price - **DLC listing tier** (Standard vs. Premium) — the single field that determines rebate eligibility with almost 700 utility programs, per [DesignLights Consortium's own qualified-products documentation](https://designlights.org/qpl/) - **Mounting type** — pendant, hook-and-cord, surface, or trunnion-mount, which determines fitment before efficacy even matters A [specifier-facing commercial LED guide](https://www.accessfixtures.com/a-specifiers-guide-to-commercial-led-lighting/) adds a second tier that shows up in higher-end filtering: power factor, total harmonic distortion, BUG rating for outdoor glare control, and IES TM-30 fidelity/gamut scores. Most catalogs never get that far because they haven't nailed the first tier. ## Why a missing field is worse than a weak description In most categories, thin copy just hurts conversion. In lighting, a missing attribute removes the SKU from consideration before a human or an AI system ever reads the description. Filtered search works by elimination. A buyer sets CCT to 5000K, beam angle to 90°, and DLC status to "Premium," and every fixture without those fields populated silently drops out of the result set — not because it doesn't qualify, but because the system has nothing to compare. The product isn't ranked poorly. It's absent. The same failure mode hits AI answer engines even harder, because they don't infer values from prose the way a shopper skimming a page might. They need the fixture's efficacy, CCT, and DLC status expressed as retrievable facts, not adjectives buried in a paragraph about "energy savings you can feel." ## Ask an answer engine Try this prompt pattern with a buyer's actual language: "what 150-watt LED high-bay fixtures are DLC Premium listed, 5000K, and rated for 30-foot ceilings?" An answer engine can only surface a SKU here if wattage, CCT, DLC tier, and beam-to-mounting-height guidance all exist as structured values it can cross-reference. A raw feed description with none of those fields, however well-written, is invisible to that query — even if the underlying product matches perfectly. ## Worked example: LED high-bay fixture Here's what a typical raw supplier feed looks like next to what a buyer and an AI answer engine actually need. **Raw feed description:** "150W LED high bay light. Super bright, energy efficient, easy to install. Great for warehouses and gyms. Long lifespan." **Enriched attribute table:** | Attribute | Value | |---|---| | Wattage | 150W | | Lumen output | 22,500 lm | | Efficacy | 150 lm/W | | CCT | 5000K (selectable 4000K/5000K) | | CRI | 80+ | | Beam angle | 90° (narrow), 120° optic available | | Recommended mounting height | 25-35 ft | | Input voltage | 120-277V | | Dimming protocol | 0-10V | | IP rating | IP65 | | Lumen maintenance | L70 at 100,000 hrs | | DLC listing tier | Premium | | Mounting type | Hook, chain, or surface | | Warranty | 5 years | Every row in that table is a filter a buyer or a rebate calculator can query directly. The raw description answers none of them. ## Structuring the schema so it holds The practical move is to treat lumens, efficacy, CCT, CRI, beam angle, voltage, dimming protocol, IP/IK rating, DLC tier, mounting type, and warranty as required fields at the category level, not optional enrichment. Values should be extracted from the manufacturer's spec sheet or DLC listing, not estimated, and flagged when a source document is ambiguous about mounting height or beam angle rather than guessed. A fixture with a blank efficacy field isn't a data-quality footnote. It's a SKU a rebate-driven buyer will never see. This is the same pattern that shows up across every technical category distributors sell into: the catalog data is only as useful as the fields it exposes, and no PIM auto-populates efficacy or DLC tier on its own. Anglera plugs into whatever system already stores the catalog — Akeneo, Salsify, a flat file, or nothing at all — and works the supplier documents to fill in exactly these kinds of gaps, so a high-bay fixture with a real 150 lm/W efficacy doesn't lose to a competitor's SKU that just described itself better. --- # The product-data metrics Grocery & CPG teams should actually track Source: https://www.anglera.com/blog/grocery-cpg-metrics Published: 2026-05-09 Industries: grocery-cpg ![The product-data metrics Grocery & CPG teams should actually track](/og/hero-grocery-cpg-metrics.jpg) Grocery and CPG catalogs carry a metrics problem most teams never diagnose correctly: nutrition panels, allergen flags, and pack-size variants sit incomplete on the PDP while everyone argues about traffic. Before you spend another dollar on acquisition, baseline the data-quality metrics that actually predict conversion, returns, and search performance, then instrument them well enough to prove the ROI when you fix them. ## Start with a baseline, not a dashboard Most teams jump straight to a dashboard full of vanity numbers. Do this instead: pull a snapshot of your current catalog state across the metrics below, broken out by category (frozen, snacks, beverage, private label, national brand), before you touch anything. Without a pre-change baseline, you cannot honestly claim a lift later — you'll just be pattern-matching on a chart that moved for a dozen other reasons (seasonality, a promo, a competitor stockout). ## The core metric set: leading vs. lagging Leading indicators tell you the data is broken before revenue shows it. Lagging indicators confirm the business impact once the fix has had time to propagate through search indexes, ad feeds, and buyer behavior. | Metric | Type | What it shows | How to measure it | |---|---|---|---| | Attribute completeness (%) | Leading | Share of SKUs with all required fields filled — nutrition facts, allergens, ingredients, net weight, pack count, storage/handling | Pull a field-fill-rate report from your PIM or a catalog export; score against a required-fields schema per category | | On-site search zero-results rate | Leading | How often shoppers search and get nothing, or get an obvious mismatch (e.g., "gluten free" surfacing unlabeled items) | Query logs from your site search provider (Algolia, Bloomreach, Constructor, etc.); segment by query intent, not just raw zero-result count | | Organic clicks to PDP | Leading/Lagging | Whether Google and retailer search are actually surfacing your PDPs for category and attribute queries | Google Search Console, filtered to PDP URL patterns; watch clicks and average position by query, not just impressions | | AI referral/citation traffic | Leading | Whether AI answer engines are citing or sending traffic from your PDP content, as one channel among several | GA4 traffic source/medium segmentation for known AI referrers, plus manual spot-checks of how your products appear in AI shopping answers | | PDP conversion rate | Lagging | Whether a shopper who reaches the page actually buys | Sessions-to-purchase on PDP-entry sessions in GA4 or your commerce platform's analytics, isolated from cart-page or homepage entries | | Return rate, by reason code | Lagging | Whether buyers are getting what they expected — split "wrong/incomplete info" from "changed mind" or "damaged" | Returns platform reason codes (Loop, Narvar, or in-house), cross-referenced against SKUs with known data gaps | | AOV and attach rate | Lagging | Whether complete data (recipes, pairing suggestions, sizing) is driving basket-building, not just single-item purchase | Order-level average and basket composition from your commerce platform, segmented by category with strong vs. weak attribute coverage | | Support ticket load by SKU | Lagging | Whether missing data (ingredients, allergens, sourcing) is generating pre- or post-purchase questions | Tag support tickets by SKU/category in your helpdesk tool and correlate against completeness scores | ## A concrete example Take a regional grocer's private-label frozen meals line — 140 SKUs. A completeness audit finds 38% of SKUs are missing at least one required field: allergen call-outs, cook instructions, or net weight in the title. On-site search logs show "dairy free" and "keto" queries returning zero or irrelevant results 22% of the time, even though qualifying SKUs exist — they're just not tagged. Return reason codes show 9% of frozen-line returns are coded "not as described," concentrated in the SKUs with missing allergen data. PDP conversion on the incomplete SKUs runs roughly 1.8 points below the completed SKUs in the same subcategory. That's your baseline. After a gap-fill and enrichment pass — sourced from supplier spec sheets and the manufacturer's own nutrition data, not invented — you re-measure the same eight metrics on the same SKU set, ideally against a holdout group of SKUs you deliberately leave untouched for a few weeks. The holdout is what makes the before/after defensible. ## Attributing change honestly The single biggest mistake in this kind of measurement is claiming full credit for revenue movement. To attribute correctly: - **Isolate a control set.** Enrich one category or SKU range and leave a comparable one untouched for the same period. Compare deltas, not absolutes. - **Match the time lag to the channel.** Organic search and AI citation lifts show up over weeks, not days, as crawlers re-index. PDP conversion and zero-results rate can move within days of a fix. Don't average these into one "before/after" number. - **Net out promotions and seasonality.** If a category ran a promo or hit a seasonal spike during your measurement window, flag it and exclude or adjust. - **Report a range, not a point estimate.** "PDP conversion improved 1.2–2.1 points on enriched SKUs vs. the control group" is more credible, and more useful internally, than a single suspiciously round number. ## Vanity metrics to skip Not everything that moves is worth tracking. Skip or deprioritize: - **Raw pageviews** on the PDP without a conversion or search-entry context — traffic without intent tells you nothing about data quality. - **Total catalog size** or SKU count as a quality proxy — a bigger catalog with the same completeness gaps is just a bigger problem. - **Generic "engagement" time-on-page** for PDPs — a shopper spending longer because they can't find the allergen info is not a win. - **AI mentions in isolation**, divorced from referral traffic or conversion — a citation with no click or purchase behind it isn't a business result yet. Grocery and CPG teams that treat product data as a cost center measure the wrong things and then wonder why the fixes don't show up in revenue. Treat it as a funnel input instead — from discovery to PDP to purchase to return — and the metrics above will tell you exactly where the leak is. This is the operating model behind how Anglera works: your PIM (or your flat file, if you don't have one yet) stores the data, and Anglera continuously scores, gap-fills, and enriches it against supplier-sourced values so the metrics that matter actually move, and you can prove why. Sources: - [Product Page Usability: 49% of Sites Deliver a Decent or Good UX — Baymard Institute](https://baymard.com/research/product-page) - [40% of consumers returned products due to inaccurate product information — Akeneo B2C Survey via 360 Magazine](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/) - [Grocery eCommerce KPIs & Metrics Guide 2025 — LocalExpress](https://www.localexpress.io/post/grocery-ecommerce-metrics-and-kpis-you-should-track) --- # Attribution done right: connecting product-data work to revenue Source: https://www.anglera.com/blog/attributing-revenue-to-product-data Published: 2026-05-09 ![Attribution done right: connecting product-data work to revenue](/og/hero-attributing-revenue-to-product-data.jpg) Ask a merchandising team what better product data is worth and you'll get a shrug, a gut number, or a vague nod to "SEO." That's not a number finance can plan against. The good news is that product data behaves like any other operational lever — it can be tested with the same causal-inference toolkit marketers use to prove incrementality, and it produces cleaner signal than most marketing spend does, because you can gate exactly which SKUs get touched and when. ## Why product-data attribution is genuinely hard The core problem is confounding. If you enrich your top 500 SKUs this quarter and revenue on those SKUs goes up, you don't know how much of that lift came from richer content versus a merchandiser also fixing pricing, a category getting more paid traffic, or plain seasonality. Correlation between "we enriched this" and "sales went up" is not proof — it's the same trap marketers fell into with last-click attribution, where [companies moving from single-touch to multi-touch models typically find 20-30% of perceived impact was misallocated to the wrong cause](https://improvado.io/blog/mmm-vs-multi-touch-attribution). Product data needs the same discipline: a counterfactual, not a before/after. The fix is to borrow directly from incrementality testing, which has become the standard way marketers prove a channel or tactic actually caused a result rather than just correlating with one. As one 2025-2026 industry survey puts it, [incrementality testing has moved from a niche practice to mainstream adoption, driven by pressure to prove that spend generates real business impact rather than just tracked activity](https://www.emarketer.com/content/faq-on-incrementality-how-prove-your-ads-actually-work-2026). Product-data teams should hold themselves to the same bar. ## Method 1: SKU-level holdouts The simplest test: take a category or SKU list slated for enrichment, randomly split it in two, enrich one half now and hold the other half back on a fixed delay (2-4 weeks is usually enough to see a PDP-level effect). Compare conversion rate, organic sessions, and on-site search click-through between the two groups over the same window. Because both groups sit in the same site, same season, same traffic mix, most confounders cancel out. This is the cleanest version of the holdout method used in ad incrementality testing, where the difference between treatment and control isolates the causal effect of the intervention rather than the ambient trend. Requirements for it to hold up: the two groups need to be similar in baseline traffic and price point (don't hold back your best-sellers against your long tail), and the holdout has to be a real holdout — no manual fixes creeping into the control group because a merchandiser "just fixed one thing." ## Method 2: Geo and cohort tests Geo testing is the standard method retailers and marketers use to prove causal lift when you can't cleanly hold out individual products — for instance, when enrichment ships site-wide but you can stagger it by region, store cluster, or customer cohort. You apply the change to one set of matched regions or a matched customer segment and leave a comparable set untouched, then compare outcomes. [The gold-standard version of this requires roughly 10-15 matched markets with 95%+ historical correlation, sized to detect the lift you actually expect (typically 2-5%), run for four to six weeks](https://www.measured.com/faq/how-to-run-geo-testing-for-marketers-a-step-by-step-guide/). For most mid-market retailers, a lighter version — two or three matched DMAs or a randomized customer-cohort split in email/on-site personalization — is enough to get directionally solid numbers without a data-science team. ## Method 3: Staged rollouts When a full holdout isn't practical — you want every SKU enriched eventually and can't justify permanently withholding fixes from some products — stage the rollout instead. Enrich category A in week 1, category B in week 3, category C in week 5, and use the not-yet-enriched categories as a rolling control while they wait their turn. Track the change in each category's own trend line the week it goes live, relative to categories still in queue. This sacrifices some statistical rigor versus a true randomized holdout, but it's far better than a single before/after comparison, and it has the practical benefit of never leaving revenue on the table by design. ## Method 4: Matched pairs For catalogs too small or too heterogeneous for geo tests, matched-pair analysis works well: pair each enriched SKU with a similar un-enriched SKU (same subcategory, similar price band, similar traffic volume before the change) and compare the delta between pairs rather than absolute performance. This controls for the fact that a $40 accessory and a $400 appliance don't move the same way. It's the same logic as matched-market testing in geo experiments, just applied at the product level instead of the regional level. ## The measurement stack, side by side | Method | Best for | What it isolates | Watch-out | |---|---|---|---| | SKU holdout | Enrichment projects on large catalogs | PDP conversion, on-site search CTR | Groups must be balanced on baseline traffic and price | | Geo/cohort test | Site-wide or personalization changes | Organic sessions, revenue per visitor | Needs enough markets/cohorts for statistical power | | Staged rollout | Full-catalog projects with no permanent holdout | Directional lift, time-to-impact | Weaker control than randomized holdout | | Matched pairs | Small or highly varied catalogs | SKU-level lift controlling for category/price | Pair quality determines validity | ## Avoiding the over-claim The fastest way to lose finance's trust is to report a number that can't survive a follow-up question. Three guardrails: report a range, not a point estimate, and say how it was measured. Never attribute 100% of a revenue change to product data when paid spend, pricing, or seasonality moved in the same window — [marketing mix modeling exists precisely because single-method attribution overstates impact when multiple levers move at once, and the current industry consensus is to triangulate rather than rely on one model](https://improvado.io/blog/mmm-vs-multi-touch-attribution). And separate the metrics that are genuinely causal (holdout-tested conversion lift) from the ones that are merely correlated but still useful context (return-rate trend, support-ticket volume, AOV). Finance will accept "enrichment lifted PDP conversion 4-7% in a holdout test, with directional support from a 12% drop in spec-related returns" far more readily than a single blended ROI number with no method behind it. None of this requires a data-science team — it requires discipline about what gets tested, what gets held out, and what gets reported as causal versus correlated. That discipline is only possible when the underlying data changes are trackable at the SKU level in the first place, which is the part most catalogs get wrong before they ever get to measurement. Anglera scores, gap-fills, and enriches product data continuously and keeps a record of what changed and when, so retailers running these tests have a clean, timestamped treatment group instead of a fuzzy "sometime last quarter" — the difference between a real experiment and a guess dressed up as one. --- # Agentic commerce is here: product data is the new shelf Source: https://www.anglera.com/blog/agentic-commerce-product-data-shelf Published: 2026-05-09 ![Agentic commerce is here: product data is the new shelf](/og/hero-agentic-commerce-product-data-shelf.jpg) For thirty years, winning the shelf meant eye-level placement, endcap space, a page-one search ranking. In 2026, a growing share of purchase decisions skip the shelf and the search results page entirely. An AI agent reads a product's data, weighs it against a handful of alternatives, and buys or recommends on a shopper's behalf. The competition isn't for attention anymore. It's for machine-readability. ## The storefront is becoming an API call The pattern moved from theory to shipping product in under a year. OpenAI launched Instant Checkout inside ChatGPT in February 2026, built on the [Agentic Commerce Protocol](https://openai.com/index/buy-it-in-chatgpt/) it co-developed with Stripe — letting US shoppers buy from Etsy sellers and, soon after, over a million Shopify merchants including Glossier, SKIMS, and Vuori. By March, OpenAI had already pivoted again, [shifting toward checkout inside individual retailer apps](https://www.digitalcommerce360.com/2026/03/06/openai-shifts-checkout-plans-agentic-commerce-strategy/) embedded in ChatGPT — Instacart, Target, Expedia — rather than one universal checkout button. Google is chasing something similar with a Universal Commerce Protocol, letting agents query merchant catalogs, carts, and checkout flows through a single open standard. Shopify, meanwhile, has built "agentic storefronts" that syndicate a merchant's catalog into ChatGPT, Microsoft Copilot, and Google's AI Mode automatically. The payoff already shows up in the numbers: [AI-driven traffic to Shopify stores grew roughly 8x year over year in Q1 2026, with orders from AI-powered search up nearly 13x](https://nshift.com/blog/agentic-commerce-ai-shopping-agents-2026). The moves and reversals matter less than what they all point to: [McKinsey estimates agentic AI could influence $3 trillion to $5 trillion in global retail commerce by 2030](https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-agentic-commerce-opportunity-how-ai-agents-are-ushering-in-a-new-era-for-consumers-and-merchants), with as much as $1 trillion of that in US retail alone. Wherever the checkout button ends up living — ChatGPT, a retailer's own app, behind Google's protocol — the agent still has to decide what to buy before anyone checks out. That decision gets made by reading data, not by browsing a page. ## Product data is the new shelf placement An endcap worked because a human walked past it. An agent doesn't walk past anything — it queries a catalog. The products that get returned, compared, and recommended are the ones whose data answers the agent's question completely enough to rank. As one industry breakdown puts it, [AI shopping agents read schema, not homepages](https://www.rewarx.com/blogs/ai-shopping-agents-read-schema-2026). The hero image, the brand story on the PDP, the visual merchandising — none of it factors into the decision the way it does for a human scrolling. Shopify's own guidance to merchants is blunt about what replaces it: agents "read structured data — product titles, descriptions, images, pricing, inventory, shipping speeds — and use it to decide what to recommend." Merchants with rich, structured data get a compounding edge as [AI shopping scales](https://www.shopify.com/blog/how-agentic-commerce-works). That's a mechanism, not a marketing claim. An agent can't recommend an attribute it can't parse. What agents look for is more granular than a basic feed. A minimum feed — name, image, price, availability — gets a product into consideration. It doesn't win. Full `schema.org/Product` markup with a proper `Brand` object, GTIN, MPN, dimensions, and material tends to outrank a thin listing. And offer-level fields — `priceValidUntil`, `itemCondition`, `hasMerchantReturnPolicy`, `shippingDetails` — increasingly decide which of several near-identical SKUs the agent actually picks. Those are the fields that answer real constraint questions, like "can I get this by Thursday." ## What breaks first: the gap between "in the PIM" and "in the feed" Most catalogs already have a PIM or a spreadsheet holding most of this information somewhere. The gap isn't that the data doesn't exist — it's that it's incomplete, inconsistently structured, or stale by the time it reaches the feed an agent actually reads. A supplier's raw feed rarely shows up agent-ready: **Before (raw supplier feed):** | Field | Value | |---|---| | title | 3/4in Ball Valve Brass | | description | Brass ball valve, threaded, for water/gas lines | | price | 14.99 | | gtin | (blank) | | return_policy | (not set) | **After (enriched attribute set):** | Attribute | Value | |---|---| | Brand | Apollo Valves | | GTIN | 00082647123456 | | Port size | 3/4 in NPT | | Body material | Forged brass | | Pressure rating | 600 PSI WOG | | Media compatibility | Potable water, LP gas, compressed air | | Availability | InStock, ships in 1 business day | | Return policy | 30-day returns, free | Ask an answer engine for a "3/4 inch brass ball valve rated for gas lines, ships this week" and the raw feed doesn't have the fields to even enter the comparison. The enriched version answers the query in its own attribute schema — exactly what an agent is scanning for. That gap — between "we have the data somewhere" and "the data is complete, current, and structured in the feed an agent reads" — is the actual battleground now. [Roughly 60% of ecommerce catalogs](https://www.rewarx.com/blogs/product-data-structured-for-ai-shopping-agents) reportedly carry missing GTINs, inconsistent attribute naming, or stale inventory flags, and agents quietly downgrade or drop those products from consideration. None of that is a merchandising failure. It's a data maintenance failure, at a scale manual review can't keep up with — especially with feed-freshness windows on pricing and inventory now measured in minutes, not days. ## Data enrichment is the shelf-stocking work now Retailers spent decades getting good at physical shelf placement, then at search ranking. Agentic commerce asks for the same discipline applied to structured data: complete attributes, correct identifiers, current availability, machine-readable policy terms — kept that way continuously as SKUs, suppliers, and prices change. That's less a marketing problem than an operations one. It's squarely the kind of gap-filling, scoring, and continuous maintenance work Anglera does on top of whatever system already stores the catalog. The shelf changed. The work to earn a spot on it didn't get any smaller. Sources: - [OpenAI: Buy it in ChatGPT — Instant Checkout and the Agentic Commerce Protocol](https://openai.com/index/buy-it-in-chatgpt/) - [Digital Commerce 360: OpenAI shifts checkout plans in its agentic commerce strategy](https://www.digitalcommerce360.com/2026/03/06/openai-shifts-checkout-plans-agentic-commerce-strategy/) - [McKinsey: The agentic commerce opportunity](https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-agentic-commerce-opportunity-how-ai-agents-are-ushering-in-a-new-era-for-consumers-and-merchants) - [Shopify: How agentic commerce works](https://www.shopify.com/blog/how-agentic-commerce-works) --- # Making your Shopify catalog agent-readable (AEO) Source: https://www.anglera.com/blog/shopify-agent-readable Published: 2026-05-08 Platforms: shopify ![Making your Shopify catalog agent-readable (AEO)](/og/hero-shopify-agent-readable.jpg) Getting a Shopify product page in front of a shopping agent isn't a ranking problem — it's a parsing problem. ChatGPT, Perplexity, and Google's AI Mode don't browse a page the way a person does; they fetch HTML, look for schema.org markup, and read whatever text is already in the DOM. If your specs live only in an image, a hand-written paragraph, or a component that renders after a click, the agent either guesses or skips your product. This guide walks through the concrete, Shopify-specific steps to make a PDP something both buyers and agents can actually read. ## Start with the HTML an agent actually sees, not the rendered page Shopify's standard (non-headless) themes run on Liquid, which is processed server-side — the HTML that comes back from the first request already contains the rendered product section markup, prices, and metafield values. That's a real advantage for agent-readability: most AI crawlers and fetch-based agents don't execute JavaScript, so anything present in that initial response is visible to them by default. Two things break this in practice: - **Headless/composable storefronts** (Hydrogen, or a custom React/Next.js front end on the Storefront API) can ship content that only appears after client-side hydration. If you've gone headless, confirm the product route is actually server-rendered (SSR) for the fields you care about — attributes, price, and availability — not populated by a `useEffect` after load. - **Theme-side JS-only widgets.** Accordions, tabs, and "load more specs" components built with client-side JavaScript can hide content from the initial HTML even in a stock Liquid theme, depending on how the theme (or an app block) implements them. The fix isn't to avoid interactive UI — it's to make sure the underlying text is server-rendered into the DOM and merely hidden with CSS (`display: none` / collapsed state), not injected by JS after the fact. See Shopify's own architecture reference for how templates, sections, and snippets compose into the rendered page: [Theme architecture](https://shopify.dev/docs/storefronts/themes/architecture). ## Get the attributes into structured fields, not prose An agent can extract "Material: Recycled aluminum" from a labeled field far more reliably than from a sentence buried in a paragraph. In Shopify this means metafields and metaobjects, not just the product description box. - **Metafields** attach a typed value (text, number, dimension, weight, rating, list, reference) to a namespace and key on a product, e.g. `product.metafields.custom.material`. Definitions are created in the admin under Settings, then Metafields and metaobjects, and in Online Store 2.0 themes they're exposed directly in the theme editor as dynamic sources — no code required to place them on the page. See [Metafield Liquid object](https://shopify.dev/docs/api/liquid/objects/metafield). - **Metaobjects** handle multi-field, repeatable structures — a spec table row, a "compatible with" list, or an FAQ entry with question/answer fields — and can be referenced from multiple products so one edit updates every page that uses it. See [Metaobjects — Shopify Help Center](https://help.shopify.com/en/manual/custom-data/metaobjects). A minimal FAQ metaobject in Liquid looks like this: ```liquid {% for block in product.metafields.custom.faqs.value %} <div class="faq-item"> <h3>{{ block.question.value }}</h3> <div>{{ block.answer.value }}</div> </div> {% endfor %} ``` The point isn't the exact markup — it's that "material," "compatible engines," "return window," and "how to size this" each live in a field an agent can key off of, and that field is rendered as plain HTML text on the page. ## Emit Product JSON-LD — and know what it doesn't cover Shopify ships a `structured_data` Liquid filter that turns a product object into schema.org JSON-LD automatically: a `Product` type when the product has no variants, or `ProductGroup` when it does. It's typically already wired into `main-product.liquid` in Online Store 2.0 themes. Documentation: [Liquid filter: structured_data](https://shopify.dev/docs/api/liquid/filters/structured_data). ```liquid <script type="application/ld+json"> {{ product | structured_data }} </script> ``` This default output covers the basics — name, description, image, brand, price, currency, availability, and URL. It generally does **not** include everything Google (and increasingly AI answer engines) now expect for merchant listings: `hasMerchantReturnPolicy`, `shippingDetails` (`OfferShippingDetails`), `aggregateRating`, and `review`. Google's guidance on these is explicit and has been tightened over the past two update cycles — treat the default filter output as a floor, not a finished implementation, and extend the JSON-LD (via a custom snippet, or by overriding the block in `main-product.liquid`) with return-policy and shipping properties if you rely on them. See [Google: Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product), [Merchant return policy structured data](https://developers.google.com/search/docs/appearance/structured-data/return-policy), and [Merchant shipping policy structured data](https://developers.google.com/search/docs/appearance/structured-data/shipping-policy). For buyer-question content specifically, `FAQPage` schema is still valid schema.org markup and still useful signal for AI systems parsing a page, even though Google narrowed which sites get the visual FAQ rich-snippet in search results back in 2023 — don't expect the SERP treatment, but do expect the structured Q&A to help an agent match a shopper's question to your answer. ## Don't forget bot access None of the above matters if your `robots.txt` blocks the fetcher. Shopify's default `robots.txt` is generally permissive, but themes and apps sometimes add custom rules. Check that you aren't blocking answer-engine fetchers (e.g. `OAI-SearchBot`, `ChatGPT-User`, `PerplexityBot`, `Claude-User`) alongside the traditional `Googlebot` — this is a one-line audit worth doing before assuming a page isn't being read for a content reason. ## What an agent can and cannot extract today **Can reliably extract:** name, price, currency, availability, images, and any attribute exposed via `structured_data` or plain server-rendered HTML (metafields, metaobject-driven spec blocks, FAQ text in the DOM). **Cannot reliably extract:** text baked into an image (a size chart as a JPEG), specs that only render after a client-side fetch or hydration step, values that exist only in an app's own iframe/widget without a server-rendered fallback, and anything omitted from both the visible page and the JSON-LD (e.g., a return window mentioned nowhere but a linked policy page). ## How to validate - **View rendered vs. raw HTML**: load the PDP, then use "View Page Source" (not just DevTools' inspected DOM) to confirm attributes and JSON-LD are present in the actual server response, not only after JS runs. - **`curl` the page** with a plain user agent and grep for your key attributes and the `application/ld+json` block: a missing match there is a missing match for most agent fetchers too. - **Google's Rich Results Test** and the [Schema Markup Validator](https://validator.schema.org/) to confirm your JSON-LD parses and which properties are detected. Verified as of July 2026 against Shopify's `structured_data` filter and metafield/metaobject documentation and Google's current Product structured data guidance; field requirements for merchant listings are Google-side and can shift independently of Shopify's theme defaults, so re-check before a major catalog push. Anglera doesn't touch any of this page-rendering layer — it's focused on the data one level down: keeping product attributes, specs, and use-case language complete and current in your PIM or metafields so there's something accurate to render in the first place. Once that data is in good shape, the structured_data filter, metafields, and metaobjects above are what carry it onto the page for buyers and agents alike. --- # Getting enriched product data onto Salesforce Commerce Cloud product pages Source: https://www.anglera.com/blog/salesforce-commerce-cloud-data-to-page Published: 2026-05-08 Platforms: salesforce-commerce-cloud ![Getting enriched product data onto Salesforce Commerce Cloud product pages](/og/hero-salesforce-commerce-cloud-data-to-page.jpg) Once a product attribute is enriched, it still has to travel from Business Manager's data model through a cartridge template before a shopper or an AI crawler ever sees it. On Salesforce B2C Commerce (SFCC), that path runs through the Product system object, the SFRA product model, and an ISML template — three layers that are easy to get half-right. Here's the concrete, current mechanism for getting one enriched field onto the page, plus how to check that it actually landed. ## Where the data lives: the Product system object Every product in B2C Commerce is backed by the `Product` system object. Standard fields (name, brand, UPC) live there by default; anything else — a fit guide, a care instruction, a compliance callout — has to be added as a custom attribute: 1. In Business Manager, go to **Administration**, then **Site Development**, then **System Object Types**, open **Product**, and use the **Attribute Definitions** tab to add a new attribute (ID, type, and a display name for each locale you support). 2. Add it to an **Attribute Grouping** so merchandisers can find and edit it in the Business Manager product editor. 3. If the value is fed by an outside system (a PIM, an enrichment pipeline, or Anglera), select **Externally Managed** on the Attribute Definition Details page so Business Manager users see it's not meant to be hand-edited there. (A separate, similarly-named "externally defined" flag exists too, but it can only be set by a catalog import — it isn't a checkbox you toggle in the UI — so for a manually-created attribute, Externally Managed is the one that applies.) This step only creates the field. It does nothing to the storefront yet — a custom attribute with no template reference is invisible to shoppers even after it's fully populated. ## Getting a value into the attribute Values reach the `Product` object one of three ways: manual entry in Business Manager, a product import (Business Manager **Administration**, then **Site Development**, then **Import & Export**, or scheduled catalog feeds using the `custom-attribute` element, keyed by an `attribute-id`, in the product XML), or programmatically through the B2C Commerce APIs. For system integrations, that means SCAPI's Product resource — Salesforce marked the older Data API (OCAPI) deprecated in 2026 and now directs all new integration work to SCAPI, though existing OCAPI implementations keep working during the multi-year sunset window. Either way, custom attributes always surface with a `c_` prefix (for example `c_careInstructions`) to distinguish them from standard fields — a convention documented in Salesforce's [Custom Properties guide](https://developer.salesforce.com/docs/commerce/commerce-api/guide/custom-properties.html). ## Binding it to the storefront template Storefront rendering in modern SFCC implementations runs on the Storefront Reference Architecture (SFRA). SFRA's cartridge path determines which template wins when multiple cartridges define a file of the same name — your custom cartridge, placed to the left of `app_storefront_base` on the path, overrides the base version, per Salesforce's [Customize SFRA guide](https://developer.salesforce.com/docs/commerce/sfra/guide/b2c-customizing-sfra.html). A product page request is composed like this: - A controller (`Product-Show`) builds a **product model** — a plain JSON object assembled from a stack of decorator modules (`app_storefront_base/cartridge/models/product/decorators/*`, one of which is literally named `attributes.js`) that each add one slice of data (price, images, availability, attributes) to `viewData`. - The rendered `productDetails.isml` template reads that model via `pdict.product` and, through a chain of `isinclude`d sub-templates under `product/`, renders each visible attribute group — the exact template file name varies slightly by SFRA version, so check your own cartridge's `product/` folder rather than assuming a single canonical path. There are two legitimate ways to get a new enriched attribute onto that page: **No-code path — Product Attribute Groups.** If you just need the value to show inside the existing "Product Specifications" table, assign the attribute to a category-level attribute group under **Merchandising**, then **Products**, then **Product Attributes**, then **Assign Product Attributes**. SFRA's built-in `attributes` decorator already loops over each product's visible attribute groups and renders them, so nothing changes in code. **Code path — a custom decorator and template snippet.** For anything that needs its own placement, label, or styling (a callout above the fold, a spec sheet block, a compatibility note), extend the product model: ```js // cartridges/custom_storefront/cartridge/models/product/decorators/careInstructions.js 'use strict'; module.exports = function (product, apiProduct) { Object.defineProperty(product, 'careInstructions', { enumerable: true, value: apiProduct.custom.careInstructions ? apiProduct.custom.careInstructions.toString() : null, }); }; ``` ```js // cartridges/custom_storefront/cartridge/models/product.js 'use strict'; var base = module.superModule; var careInstructions = require('*/cartridge/models/product/decorators/careInstructions'); module.exports = function (product, apiProduct, options) { base.call(this, product, apiProduct, options); careInstructions(product, apiProduct); return product; }; ``` ```isml <!-- cartridges/custom_storefront/cartridge/templates/default/product/components/careInstructions.isml --> <isif condition="${pdict.product.careInstructions}"> <div class="care-instructions" data-testid="care-instructions"> <h3>${Resource.msg('label.care.instructions', 'product', null)}</h3> <isprint value="${pdict.product.careInstructions}" encoding="html" /> </div> </isif> ``` The include tag below pulls that snippet into an overridden `productDetails.isml`: ```isml <isinclude template="product/components/careInstructions" /> ``` Because ISML renders server-side, the attribute lands as plain text in the HTML response — no client-side hydration required, which is exactly what matters for crawlers (AI agents included) that don't execute JavaScript. ## Making it visible to search and AI crawlers, not just shoppers Meta tags are handled separately from body content. Under **Merchant Tools**, then **SEO**, then **Page Meta Tag Rules**, a "Product Detail Page" scoped rule can reference any custom attribute directly inside a description or Open Graph rule, per Salesforce's [Page Meta Tags documentation](https://help.salesforce.com/s/articleView?id=cc.b2c_page_meta_tags.htm&language=en_US&type=5): ```text ${Product.custom.careInstructions} ``` JSON-LD structured data, by contrast, isn't a built-in Business Manager feature on B2C Commerce SFRA storefronts the way meta tag rules are — teams typically add a small script block to `htmlHead.isml` (or a dedicated include) that serializes `pdict.product` fields, including custom ones, into a `Product` schema with an `additionalProperty`/`PropertyValue` entry for anything that doesn't map to a standard schema.org field: ```html <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Product", "name": "${product.productName}", "additionalProperty": [{ "@type": "PropertyValue", "name": "Care instructions", "value": "${product.careInstructions}" }] } </script> ``` ## How to validate - **View-source vs. rendered DOM**: for a plain ISML-rendered attribute like the example above, `curl -s https://yoursite/on/demandware.store/Sites-.../.../Product-Show?pid=SKU123 | grep -A2 "care-instructions"` should return the same text as the rendered DOM in browser DevTools. If it appears only in DevTools and not in curl output, the content is likely coming from a client-side remote include (an AJAX-loaded ISML fragment) or a Page Designer component that renders asynchronously — worth flagging, since crawlers that don't execute JavaScript will miss it. - **Page cache**: SFRA product pages are usually page-cached. If a newly published attribute doesn't appear, check the Caching tab on the page/controller or clear the cache before re-checking — you may be looking at a stale cached response, not a broken template. - **Structured data**: run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results) or the [Schema Markup Validator](https://validator.schema.org/) to confirm the JSON-LD parses and the `Product` type is recognized. - **Meta tag rules**: preview the rule in Business Manager's Page Meta Tag Rules screen, then confirm the resolved value in the page head section via view-source on the live product URL — the rule editor preview and the actual storefront output can differ if the rule falls back to static text for an empty attribute. ## Verified as of July 2026 Menu paths, decorator patterns, and API prefixes above reflect current SFRA and SCAPI documentation as of this writing; Salesforce ships quarterly platform releases, so confirm exact field names and menu locations against your instance's release version before implementing. This whole exercise assumes the attribute already has a clean, correct value sitting on the Product object — which is the harder problem in practice. Anglera plugs into your existing PIM or commerce platform to keep those fields (specs, use-cases, identifiers) enriched and current, so the template and meta-tag work above has something worth rendering. --- # Getting enriched product data onto Oracle Commerce product pages Source: https://www.anglera.com/blog/oracle-commerce-data-to-page Published: 2026-05-08 Platforms: oracle-commerce ![Getting enriched product data onto Oracle Commerce product pages](/og/hero-oracle-commerce-data-to-page.jpg) Oracle Commerce (Oracle CX Commerce, the platform formerly branded Oracle Commerce Cloud) separates the catalog data model from the storefront rendering layer cleanly, which is good news once your attributes are enriched: getting a new field onto the page is a templating exercise, not a data migration. This guide walks through one enriched attribute — a product spec like "Effective Pixels" or "UPC Code" — from where it's stored, to how it's exposed to the storefront, to the exact template change that puts it in the rendered HTML, plus how to confirm it actually made it there. ## Where the attribute lives in the catalog In Oracle Commerce, product data is governed by **product types** (Catalog page → Manage Catalogs → Product Types), which act as schemas that every product or SKU created from that type inherits. A product type has three property groups: - **Product Properties** — attributes shared by the whole product (e.g., a spec like "Effective Pixels"), split into **Standard** (you set the value) and **Shopper Input** (the buyer supplies it at purchase). - **SKU Properties** — attributes that vary by SKU (e.g., "UPC Code"). - **Variant Properties** — attributes that generate SKU variations (e.g., "Color"). When you add a Standard property, you set a Property ID, a Label, a data type (Short Text, Number, Selection List, Rich Text, Date, Check Box, etc.), and — critically for this guide — a **Display Properties** setting of "Visible in Storefront" versus "Internal Only." Only storefront-visible properties are exposed to the rendering layer at all, so this is the first gate an enriched attribute has to pass through. Product types can also be created and edited programmatically through the Admin API (`createProductTypeSpecification` for product types, `createSkuProperty` for SKU-level properties), which is the path most PIM-to-Commerce integrations use. ## How the attribute reaches the storefront runtime Oracle CX Commerce's default storefront (Storefront Classic) is a client-side rendered Knockout.js single-page application — it is not server-rendered on every request. (Oracle's newer, opt-in Open Storefront Framework, built on Node.js and React, does render every page server-side; don't assume that behavior if your instance is still on Storefront Classic.) Once a property is marked storefront-visible, it's serialized onto the product or SKU JSON object the storefront fetches for that page — reachable in widget code as `widget.product().propertyId` for a product-level property, or, for SKU-level ones, via `widget.product().skuProperties()` (the list of defined SKU property IDs/labels) combined with `widget.selectedSku()` to read the actual value for the shopper's chosen variant. The property exists on that object whether or not any widget renders it; the remaining step is purely template work. Separately, Commerce's SEO snapshot feature regenerates a static, prerendered copy of each storefront page on a schedule (roughly every 24 hours, or when you publish) and can route recognized search-engine crawler user agents to that snapshot instead of the live Knockout page — a detail that matters once you get to validation below. ## Binding the attribute into the Product Details widget For a single product-level property, the fastest path is a direct binding inside the Product Details widget's `display.template` (edited through an extension, not by hand-patching OOTB files): ```html <!-- oc section: effective-pixels --> <div class="spec-row" data-bind="if: product() && product().effective_pixels"> <span class="spec-label">Effective Pixels</span> <span class="spec-value" data-bind="text: product().effective_pixels"></span> </div> <!-- /oc --> ``` The `oc section` comment wrapper (shown above around the div) is what makes the block a manageable fragment on the Design page rather than opaque markup baked into the widget. For a SKU-level property (varies per variant, like a UPC code) or anything you want reusable across widgets and drag-and-drop editable, Oracle's supported pattern is a small **element** — three files packaged in an extension: ```javascript // element.js define(['knockout'], function (ko) { return { elementName: 'sku-properties', onLoad: function (widget) { var self = this; self.mySkuProps = ko.computed(function () { var rows = []; if (widget.selectedSku()) { var sku = widget.selectedSku(); widget.product().skuProperties().forEach(function (prop) { if (sku[prop.id]) { rows.push({ label: prop.label, id: prop.id, value: sku[prop.id] }); } }); } return rows; }); } }; }); ``` ```html <!-- template.txt --> <div> <!-- ko foreach: $data['sku-properties'].mySkuProps() --> <div class="spec-row"> <span class="spec-label" data-bind="text: label"></span> <span class="spec-value" data-bind="text: value"></span> </div> <!-- /ko --> </div> ``` ```json // element.json { "inline": true, "supportedWidgetType": ["productDetails"], "translations": [ { "language": "en_EN", "title": "SKU Properties", "description": "Renders SKU-level catalog properties" } ] } ``` After deploying the extension, add the corresponding oc section block and an `element: 'sku-properties'` data-bind to the Product Details widget's `display.template` and `widget.template`, then place it on the page from **Design → Product Layout**, where a merchandiser can reposition it without another code deploy. ## Making the attribute visible to AI agents and crawlers Rendered HTML gets you human buyers; structured data gets you AI shopping agents and rich results. Oracle Commerce auto-generates JSON-LD for Product, Breadcrumb, ItemList, Review, WebSite, and Organization types on home, product, and collection pages out of the box. You can turn off the default Product markup for a page type and substitute a custom script template driven by the same product context the page already has, which is how you get an enriched attribute (like a spec or identifier) into `additionalProperty` rather than leaving it as page copy only: ```json { "@context": "https://schema.org/", "@type": "Product", "name": "{{product.displayName}}", "sku": "{{product.id}}", "additionalProperty": [ { "@type": "PropertyValue", "name": "Effective Pixels", "value": "{{product.effective_pixels}}" } ] } ``` Treat the interpolation syntax above as illustrative — the exact variable-reference mechanism in the structured-data template editor is release-specific, so confirm current syntax against your instance's admin panel before shipping this in production. ## How to validate - **Plain curl vs. rendered DOM**: on Storefront Classic, a bare `curl -s your-pdp-url` returns the pre-Knockout page shell, not the populated markup — the attribute will only show up in the browser's rendered DOM inspector, not in that curl output. Don't mistake the missing curl result for a bug; it's expected for a client-rendered page. - **curl the crawler-facing snapshot**: to check what search engines actually see, spoof a recognized crawler user agent, e.g. `curl -s -A "Googlebot/2.1 (+http://www.google.com/bot.html)" your-pdp-url | grep -A2 effective_pixels`. If the value is missing there but present in the browser DOM, the SEO snapshot hasn't regenerated yet (it refreshes roughly every 24 hours or on publish) or your instance's crawler-routing settings send that bot to the live page instead. - **curl the JSON-LD block**: run the same crawler-spoofed curl and `grep -A5 application/ld+json` against it to confirm the attribute made it into the structured-data script tag, not just the visible page copy. - **Google's Rich Results Test** (search.google.com/test/rich-results) against the live PDP URL to confirm the JSON-LD parses and the new property doesn't break existing Product markup. - **Search Console's Structured Data report** to watch for warnings across the catalog once the template change is live everywhere, not just on the one PDP you tested. Verified as of July 2026 against Oracle CX Commerce (Storefront Classic) documentation for product types, SKU property elements, and structured-data customization; menu paths and template syntax can shift between releases, so confirm against your instance's admin before shipping. None of this rendering work matters if the attribute isn't clean and populated in the first place, which is the harder problem in practice. Anglera enriches product data continuously — attributes, specs, use-cases, identifiers — and writes it back to the fields your Oracle Commerce catalog already reads, as an addition to your PIM or commerce platform rather than a replacement. Your catalog stores the data; the templates above are how it gets on the page. --- # Making your WooCommerce catalog agent-readable (AEO) Source: https://www.anglera.com/blog/woocommerce-agent-readable Published: 2026-05-07 Platforms: woocommerce ![Making your WooCommerce catalog agent-readable (AEO)](/og/hero-woocommerce-agent-readable.jpg) Once your product data is enriched — attributes filled in, identifiers assigned, use-cases written — the question is whether that data ever reaches the page in a form a shopping agent, or a search crawler, can actually read. WooCommerce gives you most of the plumbing natively: global attributes, a built-in structured data block, and server-rendered templates. This guide covers configuring that plumbing correctly, where the defaults fall short, and how to check your work. ## Step 1: Put attributes where WooCommerce (and agents) expect them WooCommerce distinguishes between two kinds of attributes, and the distinction matters for AI-readability: - **Global attributes** are created once under **Products → Attributes**, then assigned to any product. They support consistent term slugs (e.g., `pa_material`), which lets an agent, or your own search, reliably compare "material" across your whole catalog. - **Custom (local) attributes** are typed directly into a single product's **Attributes** tab and aren't reusable elsewhere. For either type, two checkboxes decide whether an attribute is actually machine-visible: - **"Visible on the product page"** — if unchecked, the attribute exists in your admin and database but never renders into the page's HTML at all. It is invisible to crawlers, agents, and shoppers alike. - **"Used for variations"** — relevant for variable products; variation-level values (e.g., a size/color combination's price and stock) should still resolve to real, non-AJAX-gated data in the page's variation JSON so an agent isn't stuck guessing. Checked, visible attributes populate WooCommerce's **Additional Information** tab automatically — a real, semantic HTML table rendered in the same server response as the rest of the page. WooCommerce's product tabs are CSS-hidden panels, not lazy-loaded content, so this table is present in the raw HTML an agent fetches, not just in what a browser later renders. While you're in the product editor, also fill in the native **GTIN, UPC, EAN, or ISBN** field (added to WooCommerce core in version 9.2, on the **Inventory** tab of Product data). It's the cleanest way to give agents — and Google — a stable product identifier, and, as covered next, WooCommerce pulls it straight into structured data for you. ([WooCommerce: Managing Product Categories, Tags and Attributes](https://woocommerce.com/document/managing-product-taxonomies/); [WooCommerce GTIN field, added in 9.2](https://webappick.com/woocommerce-gtin-guide/)) ## Step 2: Get Product JSON-LD right — including what's missing by default WooCommerce automatically emits `schema.org/Product` JSON-LD on every product page, generated by the `WC_Structured_Data` class and output on the `wp_footer` hook — part of the initial server response, not injected later by JavaScript. Out of the box it includes `name`, `url`, `description`, `image`, `sku`, `gtin` (if you've set the native field above), an `offers` block with `price`, `priceCurrency`, and `availability`, plus `aggregateRating` and up to five recent `review` entries when reviews are enabled and populated. What it does **not** include by default: - **`brand`** — since WooCommerce 9.6 (January 2025), Brands is a native core feature (**Products → Brands**, a built-in `product_brand` taxonomy) rather than a separate extension. Populating it still isn't enough on its own: `brand` isn't one of the properties `WC_Structured_Data` maps by default, so it won't show up in the JSON-LD until you add it via the filter below. - **`mpn`** — no core field; only relevant if you track manufacturer part numbers as custom meta. - Anything from custom fields or a PIM-fed attribute that isn't one of the properties `WC_Structured_Data` already maps. Extend the block with the `woocommerce_structured_data_product` filter rather than replacing WooCommerce's output — this keeps price, availability, and review data in sync with core as WooCommerce updates it: ```php add_filter( 'woocommerce_structured_data_product', function( $markup, $product ) { // Pull brand from WooCommerce's built-in product_brand taxonomy (Products → Brands, core since 9.6). $brand_terms = wc_get_product_terms( $product->get_id(), 'product_brand', array( 'fields' => 'names' ) ); if ( ! empty( $brand_terms ) ) { $markup['brand'] = array( '@type' => 'Brand', 'name' => $brand_terms[0], ); } // Pull an MPN if you're storing one as product meta. $mpn = $product->get_meta( '_mpn', true ); if ( $mpn ) { $markup['mpn'] = $mpn; } return $markup; }, 10, 2 ); ``` For AI shopping agents and Google's merchant listing eligibility, `brand` and a `gtin`/`mpn` pair turn a generic snippet into something an agent can match against its own product knowledge and compare across retailers — treat them as required, not optional, alongside `price`, `priceCurrency`, and `availability`. ([Google: How to add merchant listing structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing); [WooCommerce Structured Data wiki](https://github.com/woocommerce/woocommerce/wiki/Structured-data-for-products); [WooCommerce 9.6: Brands enabled by default in core](https://developer.woocommerce.com/2025/01/17/enabling-brands-update-for-woocommerce-9-6/)) ## Step 3: Confirm the content is actually server-rendered The default WooCommerce theme stack — classic PHP templates or a block theme's Product block templates — renders the product title, description, attributes table, and JSON-LD in the initial HTML response. That's the easy case. Two setups quietly break it: - **Headless/decoupled front ends** built on the WooCommerce Store API or GraphQL with a React/Next.js front end. If that front end is client-side rendered (CSR) only, the HTML an agent or crawler first fetches is a near-empty shell — product content only exists after JavaScript executes, which many AI crawlers and shopping agents don't do reliably. Going headless means you need server-side rendering or static generation for product routes specifically, not just for the shell. - **Custom tabs or specs loaded via AJAX** after page load (common with some page builders). If a fact only appears after an XHR call fires, treat it as invisible to anything that doesn't run a full browser. ## What an AI agent can and cannot extract **Can extract**, when the setup above is in place: - Price, currency, and stock status from the `offers` block in JSON-LD. - SKU/GTIN/brand for identifier matching against other retailers or a manufacturer catalog. - Attribute name/value pairs from the server-rendered Additional Information table. - Plain-language answers to buyer questions when written into the visible description or a real FAQ block, not buried in a downloadable spec sheet. **Cannot extract**, even with a good PIM behind the scenes: - Attributes left unchecked for "Visible on the product page" — correct in the database, absent from the page. - Brand/MPN if your brand taxonomy isn't hooked into `woocommerce_structured_data_product` — visible to a human reading the page, missing from the machine-readable layer. - Any content that only renders after client-side JavaScript runs, on a headless storefront without SSR. - Facts that exist only in a PDF, an image of a spec table, or a chat-widget answer — none of that is parseable text on the page itself. ## How to validate - **View-source vs. rendered DOM**: run `curl -s https://yourstore.com/product/example-widget/ | grep -A 40 'application/ld+json'` and compare it to DevTools' rendered DOM. If JSON-LD or the attribute table shows up in DevTools but not in the `curl` output, it's added by client-side JavaScript and most agents won't see it. - **Rich Results Test** ([search.google.com/test/rich-results](https://search.google.com/test/rich-results)) to confirm the JSON-LD parses and check which rich result types it's eligible for. - **Schema Markup Validator** (validator.schema.org) for a stricter schema.org-spec check independent of Google's eligibility rules. - Spot-check a few product URLs with `curl` for `gtin`, `brand`, and `offers.availability` — the fields most likely to be missing even when the rest of the JSON-LD looks fine. Verified as of July 2026 against WooCommerce core documentation, the WooCommerce Structured Data source, and Google Search Central's merchant listing guidance; menu paths assume a recent WooCommerce core version and may shift with page-builder or block-theme customizations. This exercise only pays off if the attributes and identifiers going into these fields are complete and current — the half of the problem Anglera is built for. Anglera continuously enriches your product data (attributes, specs, identifiers, use-cases) directly in your PIM or product source, so the GTIN field, attribute table, and JSON-LD extension above have accurate, complete data to render in the first place. --- # The state of product data in Waterworks & Utility (2026) Source: https://www.anglera.com/blog/waterworks-state Published: 2026-05-07 Industries: waterworks ![The state of product data in Waterworks & Utility (2026)](/og/hero-waterworks-state.jpg) Water and wastewater infrastructure is aging faster than budgets can keep up, and the [2026 State of the Water Industry report](https://www.awwa.org/state-of-the-water-industry/) puts infrastructure renewal at the top of the list of pressing challenges again this year. Every gate valve, backflow preventer, HDPE fitting, and meter that goes into the ground or a treatment plant has to be specified correctly the first time. Yet the product data behind those parts numbers is often the least modernized part of the supply chain. That gap is starting to cost distributors and manufacturers more than it used to. ## What's actually broken Waterworks product data has a structural problem: it's spec-dense and low-tolerance. A `C900` PVC pipe, a `ductile iron` fitting, or a `AWWA C509` gate valve isn't interchangeable with a close cousin. Engineers and contractors are checking pressure class, gasket material, end connection, and NSF/ANSI 61 certification before they'll put something on a bid sheet. Most of that detail never makes it past the manufacturer's PDF cut sheet. Common failure patterns show up the same way across PVF, meters, and utility infrastructure lines: - **Incomplete attributes.** Pressure rating, working temperature, or certification status missing from the PDP, forcing buyers to open a spec sheet PDF to confirm fit. - **Inconsistent units and naming.** The same fitting listed as `4in`, `4"`, and `DN100` across manufacturer feed, distributor ERP, and website, so search and filtering silently break. - **Manual, batch-driven feeds.** New SKUs and superseded parts sit in a spreadsheet queue until someone has time to key them in, which for many distributors still means a person copying values out of a supplier catalog by hand. - **Thin or duplicated copy.** Category pages built from manufacturer boilerplate that reads identically across ten competing sites, doing nothing to help a buyer choose. None of this is unique to water, but waterworks compounds it: SKU counts are large, catalogs span dozens of manufacturers with wildly different data hygiene, and the buyers checking this data are engineers who won't risk a wrong valve going into a live main. ## What it costs The costs are concrete, even if distributors rarely tie them back to the data itself. | Symptom | Root cause | Business impact | |---|---|---| | Wrong part ordered, returned | Missing or wrong pressure class / connection type on PDP | Return freight, restocking, lost margin on the transaction | | Product doesn't surface in on-site search | Inconsistent naming, missing synonyms (`ball valve` vs `1/4-turn valve`) | Buyer leaves, orders from a competitor's site or a marketplace | | Thin PDP with no real spec table | Data was never extracted past the cut sheet PDF | Buyer can't self-qualify the part, calls a rep (or doesn't) | | Manual updates lag supplier changes | No continuous enrichment pipeline, just periodic manual passes | Stale specs, compliance risk on projects with NSF/ANSI 61 requirements | Manual enrichment is the quiet bottleneck. Distributors keying in attributes SKU-by-SKU run at roughly 30-45 minutes per SKU once you count sourcing the spec sheet, transcribing values, and checking them. Across a catalog with tens of thousands of active SKUs and constant manufacturer churn, that math doesn't close. ## Why 2025-2026 makes this urgent Three things are converging on waterworks distributors right now. **AI answer engines are becoming a real discovery channel.** Engineers and contractors are starting to ask AI tools qualifying questions instead of browsing category pages. Ask an answer engine "`what gate valve meets AWWA C509 with a 6-inch mechanical joint end and NSF/ANSI 61 certification`" and it needs a structured, attribute-complete answer to pull from, not a PDF or a paragraph of marketing copy. If your data doesn't carry that structure, the answer engine finds a competitor's PDP that does — and you don't get the click at all. **The buyer is changing, fast.** [Reporting on LinkedIn's 2025 B2B Buyer Report](https://www.digitalcommerce360.com/2025/04/28/why-millennials-continue-to-reshape-b2b-ecommerce/) found millennials now make up 73% of B2B buyers and 44% of final purchasing decision-makers, and cited separate research showing these buyers complete up to 70% of the purchase process online before ever contacting a sales rep. In a category built on relationship selling and counter-desk expertise, that's a real shift. If the self-serve digital path is where most of the qualifying now happens, an incomplete PDP isn't a minor inconvenience — it's a lost order that never generates a call to lose. **Channel and margin pressure aren't easing.** AWWA's own [2026 State of the Water Industry](https://www.awwa.org/state-of-the-water-industry/) report describes a widening revenue-expense gap for utilities and a five-year outlook at its lowest point in nearly a decade, meaning capital projects get scrutinized harder and specified more conservatively. Distributors and manufacturers competing for that shrinking discretionary spend can't afford to lose deals to a competitor with a cleaner spec table. ## A before/after, on one SKU Here's what a typical manufacturer feed looks like for a resilient-seated gate valve versus what a buyer (or an answer engine) actually needs to act on it. **Raw feed description:** "6 IN RW GATE VALVE MJXMJ EPOXY." **Enriched attribute table:** | Attribute | Value | |---|---| | Nominal size | `6 in (DN150)` | | Valve type | Resilient-wedge gate valve | | End connections | Mechanical joint x mechanical joint | | Pressure class | `250 psi` working pressure | | Coating | Fusion-bonded epoxy, interior and exterior | | Standard compliance | `AWWA C509` / `C515` | | Certification | `NSF/ANSI 61` and `NSF/ANSI 372` | | Non-rising stem | Yes | The raw string might be perfectly fine in an internal ERP. It is useless to a buyer comparing three vendors' gate valves, and it is invisible to an AI answer engine trying to match a spec. ## Where this goes next None of this requires ripping out an ERP or a PIM, and for waterworks distributors running lean data teams against thousands of SKUs from dozens of manufacturers, it shouldn't. The fix is upstream of the feed: extracting what's actually in the supplier documentation, scoring what's missing or inconsistent, and keeping it current as manufacturers change specs — not a one-time cleanup project. That's the layer Anglera operates in. Your PIM or your flat file still stores the data; Anglera continuously scores, gap-fills, and enriches it against real supplier source documents, so a gate valve's pressure class and certifications show up correctly whether a human is reading the PDP or an AI answer engine is parsing it for a match. For a category where the wrong part can mean a failed inspection or a main break, that's not a nice-to-have. It's the difference between winning the spec and losing the click. --- # A distributor's guide to submittal-ready utility product data Source: https://www.anglera.com/blog/waterworks-guide Published: 2026-05-07 Industries: waterworks ![A distributor's guide to submittal-ready utility product data](/og/hero-waterworks-guide.jpg) Waterworks buyers don't browse a product page for inspiration. They land on it holding a spec sheet, a submittal package due to an engineer, and a job that stops if the wrong valve shows up on site. When the page can't answer their question in ten seconds, they either open a PDF, call the counter, or order the wrong thing and send it back. Here's what a submittal-ready page looks like, using a resilient-wedge gate valve as the working example. ## What a waterworks buyer is actually checking A gate valve buyer isn't asking "does this fit." They're asking "will this pass submittal review," which is a narrower and stricter question. Based on how [AWWA C509](https://store.awwa.org/C509-01-AWWA-Standard-for-Resilient-Seated-Gate-Valves-for-Water-Supply-Service-PDF) and [C515](https://store.awwa.org/AWWA-C515-15-Resilient-Seated-Gate-Valves-for-Water-Supply-Service-PDF) submittals are structured across manufacturers, the questions come in a predictable order: - Does it meet `AWWA C509` or `C515`, and which edition? - Non-rising stem (`NRS`) or outside-screw-and-yoke (`OS&Y`)? - End connection: mechanical joint, flanged, or push-on? - Direction of opening: open-left (standard) or open-right (many municipal specs deviate on purpose) - Working pressure and shell test pressure (commonly 250 psi working / 500 psi shell for 3"–12" sizes) - Body, wedge, and stem materials, plus coating (`ductile iron` body, fully encapsulated EPDM or NBR wedge, fusion-bonded epoxy interior/exterior per `AWWA C550`) - Operating nut size and shape (the standard 2-inch square nut, or a specific municipal variant) - NSF/ANSI 61 and 372 certification for potable water contact - Number of turns to open, and whether a gear actuator is required above a size threshold A generic "resilient wedge gate valve, ductile iron, 2"-48"" listing answers none of these. It reads like a category description, not a part the buyer can put in a submittal binder. ## Where the gaps actually bite: returns and support load This isn't a hypothetical data-hygiene problem. NAED research on distributor product data, cited in this [Electrical Wholesaling piece on distribution's data problem](https://www.ewweb.com/business-management/e-biz/article/55370077/what-a-broken-coffee-table-taught-me-about-distributions-data-problem), puts the cost of bad product data at roughly $5 billion a year across electrical distribution and manufacturing, split across lost sales, returns, and manual cleanup labor. Waterworks carries the same structural exposure, arguably worse, since the parts are more spec-dense and the failure mode is a valve already in the ground rather than a fitting on a shelf. In practice, the failure pattern for a gate valve looks like this: | Missing or wrong attribute | What happens | |---|---| | Direction of opening not listed | Contractor assumes open-left, receives open-right, discovers it during install, calls for a return or a rush reorder | | No `C509` vs `C515` distinction | Engineer rejects submittal, distributor resubmits, project timeline slips a week | | Operating nut size unstated | Wrong nut ships, doesn't mate with the existing valve key inventory, generates a support ticket instead of an order | | End connection ambiguous ("MJ or flanged") | Buyer guesses, wrong gasket kit ordered alongside it, two line items come back | Each of these is a wrong-part return plus a support call plus, often, a delayed inspection. None of it is caused by a bad product. It's caused by a product page that made the buyer guess. ## Before and after: a resilient-wedge gate valve listing **Raw feed description (typical manufacturer or distributor ERP export):** "Resilient wedge gate valve, ductile iron body, epoxy coated, 6 inch, mechanical joint." That's technically true and functionally useless for a submittal. Here's the enriched version pulled from the same underlying manufacturer documentation: | Attribute | Value | |---|---| | Standard | `AWWA C509` | | Size | `6 in` (`DN150`) | | End connection | Mechanical joint (MJ), both ends | | Stem type | Non-rising stem (NRS) | | Direction of opening | Open left (counterclockwise) | | Operating nut | `2 in` square, standard | | Body material | Ductile iron, `ASTM A536` | | Wedge | Ductile iron, fully encapsulated EPDM | | Coating | Fusion-bonded epoxy, interior and exterior, per `AWWA C550` | | Working pressure | `250 psi` | | Shell test pressure | `500 psi` | | Certification | `NSF/ANSI 61` and `372` | | Fasteners | `304` stainless steel | That table is the difference between a page a buyer can cite in a submittal and a page they have to route around by opening a PDF anyway. ## Ask an answer engine Increasingly, that first question doesn't start with a Google search or a distributor site at all. One recent analysis found [73% of B2B buyers now use AI tools like ChatGPT or Perplexity](https://finance.yahoo.com/sectors/technology/articles/73-b2b-buyers-ai-tools-231200431.html) somewhere in purchase research, and these systems have no patience for ambiguity: they move to the next listing rather than calling to clarify a missing spec. Picture a project engineer typing into an answer engine: "6 inch AWWA C509 resilient wedge gate valve, mechanical joint, open left, NSF 61 certified, in stock." If a distributor's page has the opening direction, standard, end connection, and certification as structured attributes, it's a candidate answer. If that data lives only in a PDF cut sheet, the engine skips it, and so does the buyer it's speaking for. ## The checklist For any waterworks SKU going onto a product page, run it against this before it publishes: - [ ] Correct AWWA (or ASME/ASTM) standard and edition called out explicitly - [ ] End connection type stated without abbreviation ambiguity - [ ] Direction of opening specified, not assumed - [ ] Operating nut / actuator type and size listed - [ ] Material and coating specs broken into separate attributes, not buried in a paragraph - [ ] Pressure ratings (working and test) both present - [ ] NSF/ANSI certifications listed by number, not "certified" as a vague claim - [ ] Units consistent across the catalog (no `6"` on one SKU and `6 in` on the next breaking search and filters) ## Where this connects to enrichment Most of this data already exists somewhere: a supplier cut sheet, a spec PDF, an old submittal package in a project folder. The values usually aren't missing, they just never made it out of a document and into a structured attribute. Anglera plugs into whatever a distributor already runs, PIM or none, and pulls those values out of supplier documentation, quality-scores them against the source, and gap-fills the catalog so a page like the gate valve above is submittal-ready by default. Your PIM or ERP still stores the data; Anglera does the work of making sure it's complete enough that a buyer, or an answer engine speaking for one, never has to guess. --- # Making your Salesforce Commerce Cloud catalog agent-readable (AEO) Source: https://www.anglera.com/blog/salesforce-commerce-cloud-agent-readable Published: 2026-05-07 Platforms: salesforce-commerce-cloud ![Making your Salesforce Commerce Cloud catalog agent-readable (AEO)](/og/hero-salesforce-commerce-cloud-agent-readable.jpg) Salesforce Commerce Cloud (B2C Commerce) gives you two separate SEO systems out of the box — Page Meta Tag Rules for `<title>`/`<meta>` tags and URL Rules for clean paths — but it does not ship a native Product JSON-LD generator on SFRA or Composable Storefront (PWA Kit). That means the gap between "our PIM has rich, enriched product data" and "an AI shopping agent or answer engine can actually read it off the PDP" is a template-layer job you have to build deliberately. This guide covers what to configure in Business Manager, what to hand-code in ISML or React components, and how to check that a bot sees the same thing a human does. ## What "agent-readable" actually requires AI agents and answer engines (Google's AI Overviews, Perplexity, ChatGPT browsing, shopping-focused crawlers) generally rely on three signals, in rough order of trust: 1. **Structured data** (JSON-LD `Product`, `Offer`, `AggregateRating`, `BreadcrumbList`) — machine-parseable and unambiguous. 2. **Server-rendered HTML** — content present in the initial response body, not injected after JavaScript executes. 3. **Visible on-page copy** that directly answers buyer questions (fit, compatibility, care, what's included). Commerce Cloud can satisfy all three, but each one lives in a different part of the platform: JSON-LD is custom template code, meta tag content comes from Business Manager rules, and rendered HTML depends on whether you're on SFRA (always server-rendered) or Composable Storefront/PWA Kit (server-rendered on first load, then hydrated). ## Step 1: Confirm the underlying attributes exist and are mapped Before touching templates, make sure the catalog actually has what a `Product` schema needs: brand, GTIN/UPC/MPN, a normalized availability status, currency-qualified price, and — critically — the descriptive attributes that answer real buyer questions (material, dimensions, compatibility, use-case). These live as standard and custom attributes on your Product objects in Business Manager's Catalog, or are pushed in via the Product/Catalog import (XML) or the Product API. If those fields are sparse or inconsistent across your assortment, the templates below will just be rendering empty tags. ## Step 2: Set Page Meta Tag Rules (title, description) in Business Manager This is Commerce Cloud's native SEO layer, and it's the easiest win. In Business Manager, go to **Merchant Tools > SEO > Page Meta Tag Rules**, and define rules scoped to Product, Category/Search, or Content. Rules use static text mixed with dynamic expressions, evaluated per page, with inheritance flowing down from the root category so you don't have to author a rule per product: ``` ${dw.system.Site.getCurrent().getName()} — ${Product.name} | ${Product.custom.materialType} ``` Rules support up to roughly 4,000 characters and resolve against objects like `Product`, `Category`, and `Search`. In ISML, use `dw.web.PageMetaData` and the `isPageMetaTagSet()` check as a fallback so a missing rule doesn't render a blank tag: ```isml <isif condition="${!pdict.CurrentPageMetaData.isPageMetaTagSet('description')}"> <meta name="description" content="${Resource.msg('global.default.description','locale',null)}" /> </isif> ``` If you're on a headless/Composable Storefront build, the Shopper Products API supports a `page_meta_tags` expansion on the products and product-search endpoints (added in a recent B2C Commerce API release) that returns this same rule-generated metadata alongside product data, so you don't need a second call to reconstruct it client-side. Confirm the expansion is present in your org's current API version before relying on it, since rollout can lag by instance. ## Step 3: Add Product JSON-LD — this is the part SFCC doesn't give you Neither SFRA nor PWA Kit auto-generates `Product` JSON-LD; you add it in the template layer. In SFRA, the natural place is a template included from `htmlHead.isml` on the Product-Show controller, built from the same `pdict.product` data already available to the page: ```isml <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Product", "name": "${product.productName}", "sku": "${product.id}", "gtin": "${product.custom.gtin}", "brand": { "@type": "Brand", "name": "${product.brand}" }, "description": "${product.shortDescription}", "image": "${product.images.large[0].url}", "offers": { "@type": "Offer", "priceCurrency": "${product.price.currency}", "price": "${product.price.sales.value}", "availability": "${product.available ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock'}", "url": "${product.selectedProductUrl}" } } </script> ``` Two things worth flagging so this stays accurate rather than boilerplate: (1) attribute paths above (`product.custom.gtin`, `product.brand`, etc.) map to whatever your model actually populates — audit against your Product model before copy-pasting; (2) if you sell variants, use `ProductGroup`/variant `Product` markup per Google's variant guidance rather than one flat `Product` node, since a shopper or agent landing on a color/size variant needs its own price and availability. On Composable Storefront, the same JSON object is built server-side in the React component that renders the PDP (e.g., inside the SSR-rendered page shell) and injected via a `<Helmet>`/head-management pattern so it's present in the initial HTML response, not appended after hydration. ## Step 4: Make sure it's actually server-rendered, not client-only SFRA templates are rendered server-side by definition, so this step is mostly a Composable Storefront/PWA Kit concern. PWA Kit's Managed Runtime runs an Express `render` function per request and can cache the rendered output at the CDN edge — crawlers and agent fetchers get the same HTML a browser gets on first paint. The risk is when JSON-LD or key descriptive copy is built from state that only resolves client-side (e.g., a `useEffect` call to a personalization service) — that content simply won't exist in the response body a non-JS-executing agent fetches. Keep the product identity data (name, brand, GTIN, price, availability, core attributes) in server-rendered props; reserve client-only rendering for genuinely personalized or frequently-changing elements. ## What an AI agent can and cannot extract **Can extract reliably:** product name, brand, price/currency, in-stock status, and any attribute you explicitly put into JSON-LD or into server-rendered visible copy (materials, dimensions, compatibility statements, what's-in-the-box). **Cannot extract:** content injected only after client-side hydration or behind a "load more specs" interaction with no server-rendered fallback; attributes that exist in your PIM/catalog but were never mapped into either the JSON-LD block or the visible PDP copy; anything requiring inference (e.g., "works with X" compatibility that's implied by category placement but never stated in text). ## How to validate - **View rendered vs. raw source**: `curl -s https://yoursite.com/product-page | grep -A 40 'application/ld+json'` — if the block is missing from curl output but visible in the browser DOM inspector, it's client-injected and agents relying on raw fetches will miss it. - **Rich Results Test**: run the live PDP URL through [Google's Rich Results Test](https://search.google.com/test/rich-results) to confirm the `Product` type parses and flag missing required fields (price, availability, condition for merchant listing eligibility). - **Schema Markup Validator**: cross-check with [Schema.org's validator](https://validator.schema.org/) for spec compliance independent of Google-specific requirements. - Spot-check a sample across categories, not just one hero product — meta tag rule inheritance and attribute completeness both tend to degrade in long-tail categories. Verified as of July 2026 against Salesforce Help and Salesforce Developers documentation for B2C Commerce Page Meta Tag Rules, SFRA/ISML rendering, PWA Kit rendering, and current Google Search Central structured-data guidance; menu paths and field names are current for standard B2C Commerce Business Manager but can shift slightly by release and by whether you're on SFRA or Composable Storefront. None of this works if the attributes feeding these templates are thin or inconsistent, which is the part Anglera is built for: it continuously enriches your catalog's specs, identifiers, and use-case attributes directly in the PIM or commerce platform you already run, so the JSON-LD and meta-tag work above has genuinely rich, complete data to render. Your PIM stores the data; Anglera does the work of keeping it complete — this page-side implementation is what turns that completeness into something buyers and agents can actually read. ## Sources - [Page Meta Tag Rules for B2C Commerce — Salesforce Help](https://help.salesforce.com/s/articleView?id=cc.b2c_page_meta_tag_rules.htm&language=en_US) - [Meta Tag Syntax for B2C Commerce — Salesforce Help](https://help.salesforce.com/s/articleView?id=cc.b2c_meta_tag_rule_syntax.htm&language=en_US&type=5) - [Rendering — Composable Storefront, B2C Commerce — Salesforce Developers](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/rendering.html) - [Intro to Product Structured Data — Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/product) - [Product Variant Structured Data (ProductGroup) — Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/product-variants) --- # Pool & Spa is being reranked by AI. Is your catalog readable? Source: https://www.anglera.com/blog/pool-spa-aeo Published: 2026-05-07 Industries: pool-spa ![Pool & Spa is being reranked by AI. Is your catalog readable?](/og/hero-pool-spa-aeo.jpg) A pool builder or service tech replacing a burned-out single-speed motor this summer doesn't start on a distributor's website — he asks ChatGPT or Perplexity whether the pump he's about to order meets the DOE's dedicated-purpose pool pump standard, which pushed single-speed motors above 1.15 THP off the market for residential replacements in September 2025. If your product data can't answer that, it moves to whichever distributor's data can, and that distributor gets the order. Pool & Spa is a category where every pump replacement is now also a compliance check, exactly the kind of question AI answer engines are least forgiving of thin data on. ## Buying research has already moved into the chat window This shift isn't specific to pool and spa, but distributors in the category are as exposed to it as anyone selling a considered equipment purchase. Forrester's 2026 Buyers' Journey Survey, covering nearly 18,000 global business buyers, found AI tool usage in the purchase process grew from 89% in 2025 to 94% in 2026, with more buyers naming generative AI as their most meaningful research source than any other channel — ahead of vendor websites, product experts, and sales reps ([Machine Relations, B2B Buyers Now Research Vendors in AI Engines Before Visiting Any Website](https://machinerelations.ai/research/b2b-ai-vendor-research-2026)). The same research ties that shift to website traffic declines of 10 to 40% a year as research moves into chat windows. For a pool builder, retailer, or service company sourcing pumps, heaters, salt chlorinators, or safety covers, that means the shortlist of distributors worth calling is increasingly assembled before anyone lands on a website. An answer engine synthesizes its response from a handful of parseable sources, not a full page of results — so being left out isn't a lower ranking, it's no visibility at all. ## Why a full catalog can still look empty to a model Most pool and spa ERP exports were built to move product through a warehouse, not to answer a spec question. A typical pump listing looks like this: **Raw ERP feed description (as-is):** > `PMP VS 1.5THP 230V UPRT TEFC 2IN` That string is fine if you already speak your own ERP's abbreviations. It tells a model almost nothing reliable — total horsepower, voltage, motor enclosure, and plumbing size are compressed into one token with no labels, and there's no explicit statement of whether the pump actually meets the DOE standard that now determines whether it's even legal to sell as a residential replacement. Enriched, the same SKU looks like this: | Attribute | Value | |---|---| | Product type | Variable-speed pool pump | | Total Horsepower (THP) | `1.5 THP` | | Motor enclosure | TEFC (totally enclosed, fan-cooled) | | Voltage | `230V` | | DOE compliance | Meets DOE dedicated-purpose pool pump standard (effective Sept. 2025) | | Plumbing connection | `2 in` union fittings | | Programmable speeds | 8 | | Recommended pool volume | Up to `20,000 gal` | Once THP, DOE compliance status, and plumbing size are explicit, labeled fields instead of a compressed string, a model can match "variable-speed pump that meets the new DOE pool pump standard for a 20,000-gallon pool with 2-inch plumbing" to the actual SKU instead of guessing at what `UPRT` or `TEFC` mean. ## Ask an answer engine: what this looks like in practice Here's a query a pool owner, builder, or service tech could plausibly run today: > "My single-speed pool pump just failed and I heard single-speed pumps over 1.15 horsepower aren't legal to sell as replacements anymore. What variable-speed pump meets the new DOE standard for a 20,000-gallon pool with 2-inch plumbing, and which distributors have one in stock this week?" The engine is parsing that for THP threshold, DOE compliance, pool volume, plumbing size, and availability. Whether that data lives in `schema.org` `Product` and `additionalProperty` markup, in visible, labeled attributes on the page, or in a feed a retrieval layer can parse, matters less than whether it exists as a discrete fact anywhere at all. Structured markup isn't a guarantee of citation — one widely cited analysis found no consistent correlation between schema coverage and citation rates across a large sample of ChatGPT answers — but it does measurably improve how accurately a model extracts a fact once it's looking at the page, and "is this legal to sell" is exactly the kind of question where that accuracy matters ([Search Engine Land, How schema markup fits into AI search — without the hype](https://searchengineland.com/schema-markup-ai-search-no-hype-472339)). ## What machine-readable actually requires None of this is exotic for pool and spa distributors — it's the data cleanup most already know they're behind on, with a sharper reason it matters now: - Split compressed spec strings into discrete, labeled fields — THP, voltage, motor enclosure, plumbing size, flow rate. - State DOE and energy-compliance status on the product record itself, not buried in a linked spec sheet, since compliance is now a purchasable fact. - Standardize abbreviations and units across manufacturer lines (Pentair, Hayward, Jandy, and others) so THP and flow rate aren't lost in inconsistent shorthand. - Keep values current ahead of the second compliance phase-in for smaller pumps in September 2027, so an engine isn't recommending a model that's about to age out. Done by hand, this runs somewhere in the 30-45 minute per SKU range — pulling the spec sheet, confirming DOE listing status, normalizing units, filling the gap. Across a catalog spanning pumps, heaters, filters, salt systems, covers, and chemicals from a dozen manufacturer lines, that's not a project a data team clears before the next update makes it stale again. The values still have to come from somewhere real — extracted from supplier documentation and quality-scored, not invented — because a wrong THP or compliance claim here isn't just an inconvenience, it's a return or a compliance problem. ## Where this fits for distributors Your ERP or PIM stays the system of record — Anglera doesn't replace it and has nothing to do with your CRM. It plugs into whatever you already run (Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing formal — a flat export is enough to start) and continuously extracts, scores, and gap-fills the attributes that turn a compressed ERP string into something an answer engine can match against a real question. Most distributors can get a meaningful slice of a pool and spa catalog there within 30 days, not a multi-year systems project. Getting there first isn't about chasing a better ranking — it's making sure your SKU is the one an AI answer engine confidently recommends the next time a buyer asks whether a pump is even legal to sell. --- # Incremental organic traffic: measuring the SEO lift from richer product data Source: https://www.anglera.com/blog/organic-traffic-product-data Published: 2026-05-07 ![Incremental organic traffic: measuring the SEO lift from richer product data](/og/hero-organic-traffic-product-data.jpg) Most PDPs rank for one thing: the product name. A page with real structured attributes — material, compatibility, dimensions, use case, certification — ranks for dozens of things, because it now matches dozens of ways buyers actually search. That's not a theory. It's a measurable shift in Search Console query coverage, and this post walks through how to prove it. ## The mechanism: attributes are what make a page indexable for more than its name Google's own guidance on product markup is explicit that structured data doesn't buy rankings directly — it buys eligibility. Supplying "as much rich product information as available" makes a page eligible for richer result types (price, availability, ratings, variants), and it gives Google's crawler unambiguous text to match against long-tail queries instead of forcing it to infer meaning from a thin description ([Google Search Central, Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product)). The practical version: a PDP with "12mm," "IP67," "compatible with M8 connector," and "food-grade 316 stainless" in structured fields is now a candidate to rank for "12mm IP67 M8 connector" and "food-grade 316 stainless fitting" — queries a generic title and a two-sentence description will never surface for. This is why long-tail traffic is disproportionately valuable to distributors and retailers with deep catalogs: you're not chasing one head term per category, you're accumulating hundreds of low-competition, high-intent queries per SKU, and each one is a buyer close to the moment of purchase, not browsing. Anglera's job here is upstream of the SEO work: it pulls attributes from supplier spec sheets, invoices, and source documentation, quality-scores them, and fills gaps so every PDP actually has the structured detail to match against — rather than a title, one photo, and a paragraph of marketing copy. ## What to measure, and where Google Search Console's Performance report is the primary instrument. It breaks down by six dimensions — queries, pages, countries, devices, search appearance, and dates — and every metric you need for this analysis lives there natively ([Search Console Help, Performance report overview](https://support.google.com/webmasters/answer/7576553?hl=en)). | Metric | What it shows | How to measure it | |---|---|---| | Impressions | How often a PDP or query surfaced in Google's results, even without a click | Filter Performance report by Page (URL or URL prefix) or by a query pattern matching your product line; compare impression counts across two date ranges | | Query coverage | How many distinct queries a page or category now ranks for | Export the Queries tab filtered to a page; count unique queries above a position threshold (e.g., top 20) before vs. after | | Clicks to PDP | Incremental organic sessions actually landing on the product page | Filter by Page, track clicks over time; cross-reference with GA4 landing page sessions for the same URL segment to confirm | | Average position | Whether newly-indexable long-tail queries are ranking well enough to be seen | Page or query-level position trend; long-tail terms often rank faster since competition is thinner | | CTR | Whether richer snippets (price, availability, ratings) are pulling more clicks per impression | Compare CTR at a given position band before/after adding merchant listing markup | ## Two ways to isolate the lift **Before/after, same URL set.** Pick a cohort of PDPs you enriched on a known date, pull Performance data for the 90 days before and 90 days after, and compare impressions, clicks, and unique query count for that exact page set. Google added the ability to drop annotations directly on the Performance chart in late 2025 specifically so teams could mark launch dates and read the before/after split without guessing at the timeline ([PPC Land, Google updates Search Console performance analysis guidance](https://ppc.land/google-updates-search-console-performance-analysis-guidance/)) — use it every time you ship an enrichment batch. **Cohort comparison, enriched vs. not-yet-enriched.** If you're rolling out enrichment category by category, this is the stronger method because it controls for seasonality and algorithm updates that hit the whole site at once. Take two comparable categories — one enriched, one still on the old, thin data — over the same date range, and compare the growth rate in impressions and query count. If the enriched cohort pulls ahead while the control cohort is flat, you've isolated the attribute effect from market noise. Either way, don't just watch the topline. Segment queries into head terms (product name, brand) and long-tail terms (spec strings, use-case phrases, compatibility terms). The topline can look flat while long-tail query count triples — that's the signal that structured attributes are doing their job, and it's invisible unless you look at query-level detail. ## Connect it downstream before you report it up Impressions and query count prove the page became discoverable. They don't prove it converted. Pair the Search Console pull with: - GA4 landing page sessions and conversion rate for the same PDP set, to confirm clicks are turning into revenue, not just traffic - On-site search logs, to see whether the same long-tail terms (e.g., "12mm IP67 connector") that are ranking externally are also being searched internally — a strong signal you're now matching real buyer language everywhere, not just on Google - Return rate on the enriched SKUs, since a page that ranks for a precise spec but doesn't actually have that spec right will convert then boomerang back as a return A distributor with a 40,000-SKU catalog isn't going to enrich everything at once. Use the cohort method to prioritize: enrich the highest-impression, lowest-query-coverage categories first, measure the lift over 60-90 days, and let that data make the case for the next batch. None of this requires ripping out your PIM or running a multi-year systems integration. Anglera plugs into whatever you already store product data in — Akeneo, Salsify, inriver, or a flat file — and does the enrichment work of filling in the attributes that make a PDP indexable for more than its own name, typically live within 30 days. The SEO lift is a downstream effect of upstream data quality; Search Console is simply where you go to watch it show up. --- # Server-side rendering on Oracle Commerce: making product data visible to Google and AI Source: https://www.anglera.com/blog/oracle-commerce-ssr-rendering Published: 2026-05-07 Platforms: oracle-commerce ![Server-side rendering on Oracle Commerce: making product data visible to Google and AI](/og/hero-oracle-commerce-ssr-rendering.jpg) Enriching a product record with specs, use-cases, and identifiers only pays off if that content actually lands in the HTML a crawler or AI agent fetches. "Oracle Commerce" covers more than one architecture, and each has a different place where rich product content can quietly get left out of the response. This guide covers the main variants, where the gap tends to open up, and how to verify your own PDPs before assuming the problem is solved. ## Which Oracle Commerce you're actually running matters Retailers and distributors run three architectures under the "Oracle Commerce" name today, and they fail in different ways. **Legacy, on-premise Oracle ATG Web Commerce (JSP-based).** An older, on-premise platform, end-of-life as a standalone product but still running in production at many companies. A request hits ATG's servlet request-handling pipeline, which resolves to a JSP renderer built from modular page fragments and custom tags, and the JSP builds the full page server-side before anything reaches the browser. There's no client-side hydration — what the JSP renders is what ships. The risk isn't the architecture; it's whether specific JSP fragments for spec tables, use-case copy, or secondary identifiers render inline versus deferred to an AJAX call that fires after page load. **Oracle Commerce Cloud / Oracle CX Commerce running Storefront Classic.** The original storefront framework in Oracle's SaaS commerce product, built on Knockout.js and RequireJS. Widgets bind view models to REST responses in the browser, making Storefront Classic a client-side-rendered single-page application by default — the opposite risk profile from JSP. Unless a page is served from a prerendered snapshot (see below), a crawler that doesn't execute JavaScript sees a largely empty shell, not the product data. **Oracle Commerce Cloud / Oracle CX Commerce running Open Storefront Framework (OSF).** Oracle's newer storefront framework, built around a Node.js server and React by default. Oracle's architecture documentation states that "a key part of OSF is the use of a Node.js server to perform server-side rendering of pages, make REST API calls to the storefront server, and communicate with the shopper's browser," and that OSF pages are "SEO-friendly" as a result ([Oracle, Understand the OSF Architecture](https://docs.oracle.com/en/cloud/saas/cx-commerce/21c/dosfa/understand-osf-architecture.html)). The nuance: this only holds if PDP widgets resolve product data during the server render pass rather than deferring it to a client-side fetch that runs after the shell has shipped — easy to introduce in custom widget development, and invisible to a human reviewing the rendered page. ## The mechanism that actually decides what crawlers see: SEO snapshots Regardless of which storefront framework is running, Oracle Commerce Cloud / CX Commerce also maintains a separate system of **SEO snapshots** — static, prerendered HTML copies of storefront pages, regenerated automatically every 24 hours or whenever changes are published ([Oracle, Understand SEO Snapshots](https://docs.oracle.com/en/cloud/saas/cx-commerce/21d/uoccs/understand-seo-snapshots.html)). Oracle's documentation notes that "all search engines have some limitations in terms of processing JavaScript and rendering JavaScript-heavy pages," so Commerce keeps a fallback, pre-baked copy of each page and routes specific user agents to it rather than to the live render. The mechanism predates OSF and exists largely to cover Storefront Classic's client-rendered pages, but applies to both frameworks. Which user agents get the snapshot versus the live page is governed by a **bot-routing** configuration — a list of known search-engine crawlers Commerce maps to the static snapshot, with merchants able to add or reassign other user agents. The exact default has shifted across releases (older release notes describe Googlebot getting the live page with other bots routed to snapshots; more recent documentation describes snapshots served by default to "Googlebot and other search engine bots"). This is version- and configuration-dependent — verify your instance's actual default rather than assuming it. Worth flagging: bot-routing tables were built to solve a Googlebot/Bingbot-era problem. They predate GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Amazonbot, and other AI-agent crawlers now hitting product pages. If those user agents aren't explicitly added, they fall through to the "everyone else" default on your instance — which, depending on version and framework, may or may not be the fully-resolved product content. A page that looks complete to a human in Chrome and passes fine for Googlebot can still be invisible or incomplete to an AI crawler that isn't on the list. Two more things worth planning around: - **Snapshot staleness.** Snapshots regenerate every 24 hours or on publish. A price or availability change pushed outside a publish event can leave crawlers reading day-old data until the next cycle. For attributes that change frequently (price, stock, promotions), make sure your publish workflow actually triggers snapshot regeneration rather than waiting on the clock. - **Mobile/desktop parity.** Oracle generates snapshots separately for mobile and desktop; check both if your traffic (or bot traffic) skews toward one. ## What to actually check - **Confirm which framework is actually running** — Storefront Classic or OSF — since the default risk (empty shell vs. deferred widget fetch) differs for each. - **In Oracle Commerce Cloud admin, review the SEO/bot-routing settings** to see which user agents route to the snapshot versus the live render, and add current AI crawler user agents explicitly rather than assuming they inherit search-engine treatment. - **Audit OSF widgets on the PDP** for any product-attribute fetch in a client-side lifecycle hook rather than the server render pass — anything deferred that way won't appear in the initial HTML regardless of bot routing. - **On legacy Oracle ATG Web Commerce, check for AJAX-loaded PDP fragments** (spec tables, related-use-case panels) rendered after the base JSP response — JSP is SSR by default, but only for what's actually in the JSP. - **Tie snapshot regeneration to publish events** for price- and availability-sensitive attributes instead of relying on the 24-hour refresh alone. ## How to validate Compare what's actually delivered against what a browser shows you, using at least two methods: ```bash # Plain fetch — approximates a generic crawler with no JS execution curl -sL "https://www.example.com/product/widget-1234" -o plain.html # Fetch spoofing a named AI crawler user agent curl -sL -A "GPTBot" "https://www.example.com/product/widget-1234" -o gptbot.html # Fetch spoofing Googlebot for comparison curl -sL -A "Googlebot" "https://www.example.com/product/widget-1234" -o googlebot.html # Diff to see whether product data (price, specs, identifiers) is present in one but not another diff plain.html gptbot.html diff googlebot.html gptbot.html ``` - **View-source vs. rendered DOM.** Use `view-source:` (or `Ctrl+U` / `Cmd+U`) on the PDP and search for the price, SKU, and a spec-table value. Then open DevTools → Elements and search the same values in the live, hydrated DOM. Present in the rendered DOM but absent from view-source means a rendering gap — expected on Storefront Classic unless a snapshot is served, and a bug worth fixing on OSF. - **DevTools user-agent override.** In Chrome DevTools, open Network conditions, uncheck "Use browser default," set a custom user agent (`Googlebot`, or a current AI crawler string like `GPTBot`), then reload. This shows whether bot routing differentiates by user agent, or serves everyone the same response. - **Google's URL Inspection tool / Rich Results Test.** Compare the "rendered HTML" tab in Search Console's URL Inspection against your curl output for the same URL — a gap confirms content arrives via client-side execution rather than the initial server response. - Re-run the curl comparison right after publishing a price or attribute change to confirm the snapshot regenerated rather than waiting out the 24-hour cycle. ## Verified as of July 2026 Oracle Commerce Cloud / CX Commerce's OSF architecture, Storefront Classic framework, and SEO snapshot/bot-routing mechanism are documented at the links below; exact default routing and admin menu paths vary by release, so confirm against your instance's version before changing configuration. Oracle ATG Web Commerce's JSP rendering pipeline is stable, long-standing architecture unlikely to have changed materially. None of this matters if there's nothing worth rendering in the first place. Anglera enriches product data — attributes, specs, use-cases, identifiers — continuously in the background, whether it lives in your PIM, your Oracle Commerce catalog, or a metafield, so that once your rendering and bot-routing setup is verified, there's rich, current content ready to fill it. It plugs into your existing PIM or commerce platform rather than replacing it, so this page-side work and the data-side work can proceed independently. Sources: - [Oracle, Understand the OSF Architecture](https://docs.oracle.com/en/cloud/saas/cx-commerce/21c/dosfa/understand-osf-architecture.html) - [Oracle, Understand SEO Snapshots](https://docs.oracle.com/en/cloud/saas/cx-commerce/21d/uoccs/understand-seo-snapshots.html) - [Oracle, Configure Storefront Classic to Display Content Items](https://docs.oracle.com/en/cloud/saas/cx-commerce/22b/ccint/configure-storefront-classic-display-content-items.html) - [Oracle ATG Web Commerce — JSP Page Architecture](https://docs.oracle.com/cd/E35319_01/CRS.10-2/ATGCRSOverview/html/s0302jsppagearchitecture01.html) --- # Why foodservice equipment feeds lose to marketplaces — and how to close the gap Source: https://www.anglera.com/blog/foodservice-equipment-syndication Published: 2026-05-07 Industries: foodservice-equipment ![Why foodservice equipment feeds lose to marketplaces — and how to close the gap](/og/hero-foodservice-equipment-syndication.jpg) A distributor lists a reach-in refrigerator on three channels, and it performs differently on each one — not because the unit changed, but because the feed did. One channel has the refrigerant type, the door count, and a certified capacity in cubic feet. The other two have a model number and a stock photo. Marketplaces and AI answer engines increasingly reward the first feed and bury the second, and in foodservice equipment, where fitment, compliance, and utility hookups actually matter to the buyer, thin data isn't a cosmetic problem. It's a lost sale. ## The bar moved, and most feeds didn't Foodservice equipment product data has always been messier than consumer packaged goods: model families with dozens of configuration variants, spec sheets buried in manufacturer PDFs, and channel partners each wanting a slightly different attribute set. Marketplaces used to tolerate that. They don't anymore. Amazon Business suppresses listings outright when required attributes are missing — category-specific fields, images, and identifiers all have to be present before a product shows up in search at all, not just ranks lower ([My Amazon Guy, Troubleshooting Suppressed or Yanked Listings](https://myamazonguy.com/suppressed-yanked-listings/)). Distributor marketplaces and buying groups run the same enforcement logic even when they don't publish it as clearly: incomplete records get deprioritized, deduplicated wrong, or dropped from category browse entirely. GS1's own foodservice guidance treats this as structural, not optional. Every trade item published through GDSN is expected to carry a GTIN, and the standard defines explicit attributes for which GTIN represents the base unit, the orderable unit, the despatch unit, and the invoice unit in a packaging hierarchy ([GS1 US, Guidance for Sharing Product Attributes via GDSN in Foodservice](https://documents.gs1us.org/adobe/assets/deliver/urn:aaid:aem:0d48620f-84bd-4ebb-a6df-38d9ab9515a1/GS1-US-Guidance-for-Sharing-Product-Attributes-via-GDSN-in-Foodservice.pdf)). If a distributor's feed collapses those levels into one ambiguous SKU, marketplace matching engines either reject the record or merge it with the wrong variant. Either way, the product becomes unfindable for the exact query a buyer typed. ## What marketplaces actually check for Strip away the channel-specific jargon and three categories repeat across every foodservice equipment marketplace and partner feed spec: | Layer | What it enforces | Typical failure | |---|---|---| | Identifiers | GTIN at every packaging level, manufacturer part number, distributor SKU cross-reference | One GTIN reused across configuration variants | | Attributes | Capacity, dimensions, voltage/amperage, door count and type, refrigerant, NSF/ANSI 2 certification, warranty | Attributes present in a PDF spec sheet but never mapped to structured fields | | Content | Category-correct title, structured bullet features, install/clearance notes, certification callouts | Marketing copy with no measurable spec, or a title copied straight from the manufacturer catalog | Refrigeration is a sharper version of this problem right now because the underlying spec is changing under distributors' feet. The EPA's technology transition rules push commercial refrigeration equipment toward lower-GWP refrigerants, and new units built after key 2025/2026 compliance dates are expected to use A2L refrigerants such as `R-454A`, `R-454C`, or `R-455A` instead of legacy HFCs ([ICC Building Safety Journal, EPA's Technology Transitions Program Related to A2L Refrigerants](https://www.iccsafe.org/building-safety-journal/bsj-technical/q4-2025-update-epas-technology-transitions-program-related-to-a2l-refrigerants/)). Refrigerant type used to be a footnote on a spec sheet. Now it's a compliance attribute a buyer's facilities team and a marketplace's category rules both check before they'll approve a purchase. NSF/ANSI 2 certification is the other one that quietly gates a sale: most local health departments require NSF-certified foodservice equipment, and buyers filter on it before they filter on price. If that field is blank or buried in an unstructured description, the product effectively doesn't exist to a compliance-conscious buyer. ## A reach-in refrigerator, before and after **Raw feed description, as it typically arrives from a distributor's ERP export:** > `RI-2R-HC 2DR SS REACH-IN REFR 54.6CF` That string is technically accurate and completely useless to a marketplace matching engine, a buyer's spec comparison, or an AI answer engine trying to decide whether this unit fits a query. **Enriched attribute table, same SKU:** | Attribute | Value | |---|---| | Product type | Two-section reach-in refrigerator | | Capacity | `54.6 cu ft` | | Doors | `2`, solid, self-closing | | Exterior | Stainless steel front, top, and ends | | Refrigerant | `R-454A` (A2L, low-GWP) | | Temperature range | `33°F to 41°F` | | Electrical | `115V / 60Hz / 1-phase`, `9.7A` | | Certification | NSF/ANSI 2, UL | | GTIN | 14-digit, base-unit level | That table is what a marketplace's category schema expects, what a distributor's spec-comparison filter needs, and what an AI answer engine can actually extract and cite. ## Ask an answer engine A buyer typing "reach-in refrigerator R-454A 2 door under 55 cubic feet NSF certified" into an AI shopping assistant isn't reading ten product pages. The assistant is matching structured claims against structured questions. A feed that only has the marketing string above returns nothing usable. A feed with refrigerant, capacity, door count, and certification as discrete fields gets pulled into the answer, with the source cited. Getting there manually — pulling every variant's spec sheet, mapping it to the right hierarchy level, tagging refrigerant and certification fields, then pushing corrected values back out to every channel — runs distributors somewhere in the 30-45 minutes per SKU range once you count research, mapping, and QA. Multiply that across a catalog with hundreds of refrigeration SKUs alone and the gap between "listed" and "channel-ready" stops being a data problem and starts being a staffing problem. This is the mechanism gap Anglera closes. Your PIM, ERP, or flat file stores whatever fields you already have; Anglera scores what's missing against the identifier, attribute, and content bar each channel actually enforces, pulls the gaps from supplier documentation rather than guessing, and pushes channel-ready records back out. It plugs into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, or Informatica if you have one, or starts from a flat file if you don't, and most catalogs are live in 30 days or less. The refrigerant, the certification, and the packaging hierarchy don't have to live only on a spec-sheet PDF — they have to live in the field a marketplace and an answer engine are both already checking. --- # What messy product data actually costs Electronic Components distributors Source: https://www.anglera.com/blog/electronic-components-state Published: 2026-05-07 Industries: electronic-components ![What messy product data actually costs Electronic Components distributors](/og/hero-electronic-components-state.jpg) Electronic components distribution runs on more data volatility than almost any channel in industrial B2B: millions of part numbers, constant lifecycle changes, and manufacturers who publish specs as PDFs, not structured feeds. That volatility used to be an operations headache. In 2025-2026, with AI search engines and a new generation of engineers doing their own sourcing, it's becoming a revenue problem — parts and even whole product lines go invisible because the data behind them can't answer a spec question. ## What's actually broken Walk into any distributor's PIM or catalog database and the pattern repeats: parametric fields left blank, RoHS and lifecycle status out of date, tolerances and package codes formatted five different ways depending on which manufacturer fed the row, and descriptions that read like marketing copy instead of an answer to "what does this part actually do." Most of this data still arrives as a datasheet PDF or a flat file, and turning that into clean, comparable attributes is manual, slow work that never fully catches up before the next revision lands. The industry has tried to standardize the exchange itself. [ECIA's EIGP 114 specification](https://www.ecianow.org/assets/docs/ECIA_Specifications.pdf) defines common labeling and product-identification data elements specifically so manufacturers and distributors can pass consistent information down the chain. That a formal, decades-refined standard is still necessary tells you the underlying problem is structural: hundreds of manufacturer brands, each publishing on their own schedule and in their own format, feeding into distributor catalogs that were never built to reconcile them automatically. A published standard only closes the gap if every supplier fills it out completely and every distributor maps it correctly — and that's the step that keeps breaking. Traceability failures compound the problem. [ERAI's counterfeit component reporting](https://www.supplychainconnect.com/counterfeit/article/55311316/2024-counterfeit-electronic-parts-report-from-erai) showed reported counterfeit parts up 25% year-over-year in 2024, the highest count since 2015, concentrated in active components sourced through authorized channels. When a distributor's own product record is missing lot traceability, country-of-origin data, or a clean lifecycle status, it's harder to prove a part is genuine and harder to catch a substitution before a buyer does. ## What it costs The costs of thin, inconsistent data show up in three places distributors already track, they just don't usually connect them back to the data itself. | Where it shows up | What's actually happening | |---|---| | Returns and RMAs | Wrong package/footprint, wrong tolerance, or wrong lifecycle status pulled from a stale record; buyer specs against bad data and the part doesn't fit | | Lost search visibility | Missing parametric fields (voltage, package, temp rating, tolerance) mean the part never surfaces in a filtered search or an AI answer engine's results | | Thin PDPs | A page with a title and a price but no attribute table gives an engineer nothing to spec against, so they bounce to a competitor's listing that has one | None of these show up on a P&L line called "data quality." They show up as return rate, as bounce rate, as a design win that went to a distributor whose PDP actually answered the question. Here's what that gap looks like on an actual listing. A raw manufacturer feed for a common MOSFET might hand a distributor this: **Raw feed description:** `N-Channel MOSFET, 30V, TO-220 package` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Channel type | N-channel | | Drain-source voltage (Vds) | 30V | | Package | TO-220 | | Continuous drain current (Id) | 60A | | Rds(on) | 6.5 mΩ @ Vgs=10V | | Gate threshold voltage (Vgs(th)) | 1.0V–2.5V | | RoHS status | Compliant | | Lifecycle status | Active | The raw description tells a buyer almost nothing they can filter or compare on. The enriched version is what a parametric search engine, and increasingly an AI answer engine, actually needs to match the part to a design requirement. ## Why 2025-2026 makes this urgent Three shifts are converging on distributors right now. **AI answer engines are becoming a real sourcing channel.** Engineers are increasingly asking a chatbot or an AI-assisted search tool for a component match instead of paging through a distributor's filter sidebar — a shift visible in the wave of AI-native parametric search tools ([PartGenie](https://www.partgenie.ai/ai-component-finder), [Zenode](https://zenode.ai/)) built specifically to rank parts by "technical fit, datasheet evidence, and application match" because the underlying datasheet data is too unstructured for a human to parse quickly. If a distributor's own product record doesn't carry the structured attributes an answer engine reads, that record can't win the recommendation, no matter how good the price or the stock position is. Ask an answer engine "which 30V N-channel MOSFET in a TO-220 package has Rds(on) under 10 mΩ and is RoHS compliant and in stock" and it will only surface distributors whose data actually contains those fields in a parseable form. **The buyer generation is changing how sourcing starts.** [Forrester's research on generational B2B buying shifts](https://www.forrester.com/press-newsroom/changing-b2b-buying-behaviors/) documents younger buyers doing independent, self-service research across more sources before ever contacting a vendor, and leaning on AI tools nearly twice as often as the average B2B buyer to synthesize that research. For a components distributor, that means the PDP and the parametric feed are doing the selling before a sales rep ever gets the call — there's no human backstop to explain away a missing attribute. **Channel pressure isn't slowing down.** [Supply Chain Connect's 2025 industry outlook](https://www.supplychainconnect.com/supply-chain-technology/article/55291218/2025s-trends-challenges-and-opportunities-in-electronic-component-distribution) notes distributors are absorbing smaller, more frequent orders, tighter turnaround expectations, and growing documentation burden around country-of-origin and traceability — all of it demanding more complete, more current product data with fewer people to maintain it manually. ## The mechanism, not the mystery None of this requires a new system of record. It requires the data that already lives in a distributor's PIM, ERP, or flat file to be scored for completeness, gap-filled from the actual supplier datasheet, and kept current as lifecycle status and specs change, values extracted from real source documents, not invented. Anglera plugs into that layer: your PIM or spreadsheet still stores the data, Anglera does the enrichment work continuously, so the parametric fields, RoHS status, and attribute tables an answer engine or an engineer needs are actually there when the search happens. That's the difference between a catalog that participates in 2026's sourcing behavior and one that quietly stops getting found. --- # Building an attribute schema for Automotive Aftermarket that buyers and AI can actually use Source: https://www.anglera.com/blog/automotive-aftermarket-attributes Published: 2026-05-07 Industries: automotive-aftermarket ![Building an attribute schema for Automotive Aftermarket that buyers and AI can actually use](/og/hero-automotive-aftermarket-attributes.jpg) A brake rotor listing that says "Premium Vented Front Brake Rotor, Fits Many GM Models" will never surface in a filtered search or an AI shopping answer, no matter how good the part is. Automotive aftermarket buying is fitment-first: the buyer already knows the year, make, model, and often the OE part number before they start looking. If your catalog can't answer in structured fields, the SKU gets filtered out, not just ranked lower. Here's what actually belongs in an Automotive Aftermarket attribute schema, why the gaps are so costly, and how to structure the data so it holds up. ## Why aftermarket punishes thin data differently than other categories Most retail categories tolerate some vagueness in a listing because a shopper can eyeball the picture and decide. Aftermarket parts don't work that way. A rotor that looks identical to another one might not bolt onto the same hub, might not clear the same caliper, or might not carry the load rating the vehicle needs. Fitment is binary — a part either fits or it doesn't — and buyers (and the AI systems now shopping on their behalf) filter on that binary before they consider anything else. That's why the industry built dedicated data standards instead of relying on free-text descriptions. The Auto Care Association's ACES (Aftermarket Catalog Exchange Standard) governs vehicle fitment — year, make, model, engine, position on the vehicle — while PIES (Product Information Exchange Standard) governs the product record itself: dimensions, weight, kit contents, digital assets, and attributes like material and performance rating. Underneath those two standards sit shared reference databases: VCdb for vehicle configurations, PCdb for the 20,000+ part-type taxonomy, PAdb for product attributes like material and finish, and Qdb for fitment qualifiers. The Auto Care Association pushed a major refresh of these databases in early 2026 with [ACES 5.0 and PIES 8.0](https://apaengineering.com/technology-article/aces-5-0-pies-8-0-update-automotive-data-standards-2026), adding richer digital-asset support and multi-language labeling — a sign the industry keeps raising the bar on what "complete" data means, not lowering it. The practical effect: a missing VCdb link or an empty PAdb field isn't cosmetic. The [Auto Care Association's own explainer](https://automotiveaftermarket.org/aftermarket-industry-trends/aces-pies-data-explained/) calls a missing fitment record an "application hole" — and an application hole means the part silently disappears from every search that filters by vehicle, which is nearly all of them. ## The attributes that actually matter For a rotor, caliper, pad, or similar part, a usable schema needs to cover four buckets, not just a title and a price. **Dimensional/physical specs** — the numbers a technician or a fitment tool checks first: outside diameter, minimum (discard) thickness, nominal thickness, center bore, and rotor height. A brake rotor is fundamentally selected by diameter, thickness, and stud count, with rim height as the parameter that separates near-identical part numbers. **Mounting/hardware specs** — lug/stud count (4, 5, or 6, which must match the hub), bolt pattern, and thread size on caliper mounting points, which typically runs `M8`, `M10`, or `M12` and has to match the caliper hardware exactly. **Construction/design attributes** — rotor type (solid, vented, drilled, slotted), material and finish (cast iron, coated, zinc-plated), and venting configuration, since solid, vented, and drilled rotors trade off weight, cooling, and wear differently. **Fitment/application data** — the ACES-side fields: year/make/model range, trim, engine, drive position (front/rear), and OE cross-reference or OE part number. This is the layer that determines whether the part even appears as a candidate before the physical specs get compared. | Bucket | Example attributes | Why it's non-negotiable | |---|---|---| | Dimensional | Diameter, thickness (nominal/discard), center bore | Wrong number = won't clear the caliper or fit the hub | | Mounting | Stud count, bolt pattern, thread size | Wrong spec = can't bolt on, safety issue | | Construction | Rotor type, material, venting | Drives performance and price-tier filtering | | Fitment | Year/make/model, engine, position, OE cross-reference | Determines whether the part is even considered | ## Before and after: a brake rotor listing Here's what a typical raw supplier feed looks like, compared to what a structured, enriched record looks like. **Raw feed description:** "Premium vented front brake rotor. High quality construction for smooth, quiet braking. Fits select GM trucks and SUVs. Direct OE replacement." **Enriched attribute table:** | Attribute | Value | |---|---| | Part type | Disc brake rotor | | Position | Front | | Rotor type | Vented | | Outside diameter | `345 mm` | | Nominal thickness | `30 mm` | | Discard thickness | `28.4 mm` | | Center bore | `81.2 mm` | | Stud count | `6` | | Bolt pattern | `6x139.7` | | Material/finish | Cast iron, zinc-coated | | Vehicle fitment | 2019–2024 Chevrolet Silverado 1500, GMC Sierra 1500 (4WD) | | OE cross-reference | `23350632` | The raw version reads fine to a person skimming a product page. It fails completely for a buyer or an AI system trying to confirm a match, because none of the decision-critical values — diameter, bore, stud count, exact vehicle range — exist as filterable data. "Select GM trucks and SUVs" isn't fitment data; it's a disclaimer. ## Ask an answer engine If a buyer types "front brake rotor for 2021 Silverado 1500 4WD, vented, 345mm diameter" into an AI shopping assistant, the engine isn't reading marketing copy — it's matching structured fields against a query. A listing without `outside diameter`, `stud count`, and a vehicle-year range in machine-readable form simply doesn't clear the first filter, regardless of how the copy reads. Retailers are already seeing this play out: AI-referred shopping traffic is converting well when the underlying feed is complete, and [analysts tracking AI shopping optimization](https://almcorp.com/blog/chatgpt-shopping-research-the-complete-guide-to-ai-powered-product-discovery-and-llm-optimization-for-e-commerce-2025/) point to attribute completeness — not description length — as the gating factor for whether a product shows up at all. ## Where this actually breaks down In practice, the gap isn't usually a lack of awareness that ACES/PIES exist. It's that supplier feeds arrive inconsistent — one brand sends center bore in millimeters, another omits it entirely; one distributor's PIM has a `rotor_type` field and another calls it `design`; OE cross-references live in a PDF fitment guide instead of the product record. Manually normalizing that across a catalog of tens of thousands of SKUs, at the roughly 30-45 minutes per SKU that manual enrichment tends to take, isn't a data problem so much as a throughput problem. That's the layer Anglera works on. It doesn't replace a PIM, ACES/PIES compliance software, or a catalog management system — it plugs into whatever a distributor or manufacturer already runs (or starts from a flat file if there isn't one) and continuously scores, gap-fills, and enriches attribute data extracted from supplier and source documentation, so a rotor's diameter, stud count, and vehicle fitment exist as structured, quality-scored fields rather than a paragraph a person has to read to understand. The mechanism is the same whether the category is brakes or bearings: the PIM stores the record, and the work of keeping every attribute complete happens continuously, in the background. --- # The technical SEO checklist for Shopify product pages Source: https://www.anglera.com/blog/shopify-technical-seo-checklist Published: 2026-05-06 Platforms: shopify ![The technical SEO checklist for Shopify product pages](/og/hero-shopify-technical-seo-checklist.jpg) Once product data is enriched with real attributes, specs, and use-cases, the remaining job is mechanical: getting it onto the page in a form both a shopper on a phone and an AI agent parsing HTML can read. Nothing below requires a new platform — it's a checklist for the theme and admin settings most Shopify stores already have. ## Rendering: confirm the content is in the HTML, not bolted on after Shopify server-renders Liquid, so anything looped into a template — `product.title`, `product.description`, metafield values — is present in the initial HTML the moment a crawler or an AI agent's fetcher requests the page. That's the main structural advantage a Shopify PDP has over a client-side-rendered page. It breaks down when enriched attribute data (specs, compatibility, use-cases) is pulled in via a JS widget or app embed that fetches from an API after page load: a plain-text fetch, how most AI crawlers and answer engines read pages, never sees that content, and Googlebot's own rendering queue adds latency even when it eventually does. Loop enriched fields into the template server-side, and confirm with view-source rather than the rendered DOM. ## Structured data: one Product JSON-LD block, correctly bound Shopify's `structured_data` Liquid filter turns a product object directly into schema.org JSON-LD: ```liquid <script type="application/ld+json"> {{ product | structured_data }} </script> ``` This outputs `Product` schema for a variant-free product, or `ProductGroup` for one with variants. Dawn's `main-product.liquid` section already includes this JSON-LD block, and most Online Store 2.0 themes built the same way do too. The failure mode shows up after customization: a rich-snippets or reviews app adds its own `Product` block on top of the theme's, and two competing schemas on one page are what Search Console's structured-data reports flag as duplicate markup. Checklist: - Confirm exactly one JSON-LD block with a `Product` (or `ProductGroup`) type per page, via view-source. - Bind price and availability to live Liquid objects rather than hardcoding values, since a hardcoded JSON-LD block won't update when price or stock changes. - If an app also emits product schema, dedupe rather than stack. - Validate with Google's Rich Results Test on a live URL. ## Titles and meta descriptions: set them, don't rely on the fallback Per-product SEO title and description live in Shopify admin under Products, then the product itself, in the "Search engine listing preview" section under "Edit website SEO." Shopify allows up to 70 characters for the title (closer to 60 avoids truncation) and around 160 for the description. In the theme, these render through the `page_title` and `page_description` Liquid objects: ```liquid <title>{{ page_title }} ``` Left blank, Shopify falls back to the product title and a snippet of body copy — workable for a human scanning a results page, but a generic description gives an AI answer engine less specific language to quote. For catalogs with hundreds of SKUs, export products, fill in the SEO Title and SEO Description columns, and reimport rather than editing one at a time. ## Canonical tags: one URL per product Shopify's theme requirements call for a canonical tag as part of the standard SEO metadata block: ```liquid ``` This matters on Shopify because the same product is reachable through more than one path — directly at `/products/handle` and through collection contexts at `/collections/x/products/handle`. `canonical_url` resolves all of those to one primary URL, so link equity, crawl budget, and any AI citation consolidate on one address instead of splitting across near-duplicate variants. ## Images and alt text: treat alt as data, not boilerplate The `image_url` and `image_tag` filters accept an `alt` parameter; if omitted, Shopify falls back to the media's own alt text, then to the resource's title: ```liquid {{ product.featured_image | image_url: width: 800 | image_tag: alt: product.featured_image.alt, loading: 'lazy', width: 800, height: 800 }} ``` Since enriched attribute data typically includes material, color, and use-case detail, write alt text that reflects it rather than repeating the bare product name across every image in the gallery. Identical alt text on every image adds no new signal for a crawler or a screen reader; a stitching-detail or size-comparison image should say so. ## Internal linking: give the page somewhere to point, and be pointed to from A product page reachable from exactly one collection link is a dead end for crawl paths and topical context. Practical minimum: breadcrumbs (collection, then product, marked up with `BreadcrumbList` schema), a related-products or "customers also viewed" block, and inbound links from relevant collection or guide pages using descriptive anchor text rather than "click here" or "shop now." Descriptive anchors help an AI agent understand a linked page's topic before it opens it. ## Performance: Core Web Vitals are visible directly in Shopify admin Shopify reports Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) natively, based on real user data: a summary appears on the Online Store, then Themes page in admin, with fuller time-series reports under Analytics, then Reports (data covers roughly the last 90 days, delayed by up to 36 hours). Good thresholds: LCP under 2.5 seconds, INP under 200 milliseconds, CLS kept low. For product pages: keep the primary image (usually the LCP element) loading eagerly, lazy-load everything below the fold, and limit how many review, upsell, and chat-widget app embeds run at once — each adds its own JS bundle. ## Crawlability: sitemap.xml and robots.txt Shopify auto-generates and auto-updates `sitemap.xml` at the store root, covering products, collections, pages, and blog posts, splitting each section into additional numbered files once it passes roughly 5,000 URLs; it can't be replaced with a custom upload. `robots.txt` is similarly managed by default, and themes ship without a `robots.txt.liquid` file. Add one to the `templates/` folder only for a specific need — blocking or allowing a crawler, adding an extra sitemap link, or, on Shopify Markets with multiple domains, setting different crawl rules per market via the `request.host` object. Build on the default `robots` object rather than replacing it: Shopify updates those defaults for SEO best practice, and a careless custom rule can cut off crawling entirely. ## How to validate - View-source (not the rendered DOM) on a live product page, and confirm the product title, description, and enriched attributes are present in the raw HTML. - `curl -s https://yourstore.com/products/handle | grep 'application/ld+json'` to confirm exactly one Product JSON-LD block is present server-side. - Run the live product URL through Google's Rich Results Test to confirm structured data is valid and eligible for rich results. - Check Search Console's structured data reports for duplicate or unparsable Product markup across the catalog, not just one page. - Check the Online Store, then Themes page, and Analytics, then Reports, in Shopify admin for the three Core Web Vitals scores. - Load `yourstore.com/sitemap.xml` and `yourstore.com/robots.txt` directly to confirm both resolve and reflect the current catalog. Verified as of July 2026 against Shopify's official documentation. Menu paths and Liquid objects are current for Online Store 2.0 themes such as Dawn; confirm equivalents before applying this to a legacy theme or a Hydrogen storefront. None of this rendering work matters if the underlying product data is thin to begin with. Anglera enriches product data — attributes, specs, use-cases, identifiers — continuously, so there's substantive, specific content to loop into `page_description`, JSON-LD, alt text, and metafields in the first place. It plugs into whatever PIM or commerce platform is already in place, Shopify's own product and metafield model included, so the page-side work above has something rich to render. Sources: [Add SEO metadata to your theme](https://shopify.dev/docs/storefronts/themes/seo/metadata), [Liquid filters: structured_data](https://shopify.dev/docs/api/liquid/filters/structured_data), [Adding keywords for SEO to your Shopify store](https://help.shopify.com/en/manual/promoting-marketing/seo/adding-keywords), [Editing robots.txt.liquid](https://help.shopify.com/en/manual/promoting-marketing/seo/editing-robots-txt), [Finding and submitting your sitemap](https://help.shopify.com/en/manual/promoting-marketing/seo/find-site-map), [Overview of web performance](https://help.shopify.com/en/manual/online-store/web-performance/overview), [Theme store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements) --- # Building an attribute schema for Oilfield & Energy that buyers and AI can actually use Source: https://www.anglera.com/blog/oilfield-energy-attributes Published: 2026-05-06 Industries: oilfield-energy ![Building an attribute schema for Oilfield & Energy that buyers and AI can actually use](/og/hero-oilfield-energy-attributes.jpg) A buyer searching for a `1-inch`, `Class 800`, `socket weld` gate valve for sour service doesn't scroll past a well-written product story to find the spec. They filter on four or five hard fields, and a part that's missing even one drops out of the result set before anyone reads the description. Oilfield and energy catalogs are some of the most attribute-dependent in distribution, because the standards bodies (API, ASME, NACE) already did the work of defining what matters. The problem is almost never a lack of definition. It's that supplier feeds don't carry the values through. ## Why a thin schema costs you the SKU, not just the sale Most retail categories degrade gracefully when an attribute is missing. A shirt without a listed fabric weight still sells. Oilfield equipment doesn't work that way, because procurement teams are buying against a spec sheet or a piping class, not a vibe. If a distributor's e-commerce filter asks for pressure class and end connection and your feed only has a title and a price, the part is functionally invisible, not just harder to find. The same logic now applies to AI answer engines: a model summarizing options for "sour-service gate valve, NPS 1, class 800" pulls from whichever listings actually carry `NACE MR0175` and `pressure class` as structured fields, not prose. This is also where classification standards already point the way. [eCl@ss](https://en.wikipedia.org/wiki/ECLASS), the attribute-based classification system widely used in process industries, defines tens of thousands of standardized product features precisely so that valves, fittings, and instrumentation can be filtered the same way across manufacturers. The taxonomy exists. What's usually missing is the discipline to populate it consistently, SKU by SKU, from real supplier documentation. ## The attributes that actually matter For valves, fittings, and pressure-retaining components, the fields that determine whether a part shows up in a filtered search or an AI answer are largely dictated by the governing standard itself: - **Design/manufacturing standard** — `API 600`, `API 602`, `API 6A`, `ASME B16.34`, etc. This single field determines which other fields even apply. - **Body/bonnet material** — forged steel (`A105`), cast steel (`WCB`), or an alloy grade, since it drives both pressure rating and service compatibility. - **Nominal pipe size** — in inches or `DN`, expressed consistently, not buried in a part number. - **Pressure class** — `150` through `2500`, per ASME B16.5/16.34 ratings. - **End connection** — flanged (`RF`/`FF`/`RTJ`), butt weld, socket weld, or threaded. - **Trim material** — stem, seat, and wedge/disc material, since trim is what actually fails in service. - **Bonnet/stem design** — bolted bonnet, pressure-seal bonnet, rising or non-rising stem. - **Service rating** — sour service compliance (`NACE MR0175`/`ISO 15156`), fire-safe design (`API 607`), or standard service. - **Testing/certification** — `API 598` shell and seat test, material traceability level. - **Product Specification Level (PSL)** — for wellhead and tree equipment under [API 6A](https://goldenman.com/blog-api-6a-valves/), which defines PSL 1 through PSL 4 to match documentation and testing rigor to how critical the application is (a PSL 4 valve for an HPHT sour well is not interchangeable with a PSL 1 general-purpose part, even if the dimensions match). Miss the standard and everything downstream is ambiguous. Miss the pressure class or end connection and the part fails the first filter a buyer applies. Miss the service rating and you risk something worse than lost visibility: a part showing up for an application it was never rated for. ## Before and after: a forged steel gate valve Here's a typical raw supplier feed line for a small-bore gate valve, and what it looks like once it's actually enriched against the governing standard. **Raw feed description:** `GATE VLV FS 1IN 800 SW BB - HIGH QUALITY VALVE FOR INDUSTRIAL USE` **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Gate valve | | Design standard | `API 602` (forged steel, compact) | | Body material | Forged steel, `ASTM A105` | | Nominal size | `1 in` (`DN25`) | | Pressure class | `Class 800` | | End connection | Socket weld (both ends) | | Bonnet type | Bolted bonnet (`BB`) | | Stem type | Rising stem, outside screw and yoke | | Trim material | `13% Cr` stainless (stem, wedge, seat) | | Service rating | Sour service, `NACE MR0175`/`ISO 15156` compliant | | Shell/seat test | `API 598` | | Application | Compact skid piping, wellsite, sour gas service | Note that `API 602`, not `API 600`, is the correct governing standard here: [API 600 covers cast-steel, bolted-bonnet gate valves 2 inches and larger](https://qrcvalves.com/api-600-vs-api-602/), while API 602 covers the forged-steel, compact-body valves at 2 inches and below that this SKU actually is. That distinction alone determines which downstream attributes (pressure class range, end connection options) are even valid, and it's the kind of thing a generic "gate valve" template gets wrong if nobody checks it against the source doc. ## Ask an answer engine Try this: ask an answer engine "1-inch forged steel gate valve, class 800, socket weld, sour service." A model that can only see "GATE VLV FS 1IN 800 SW BB" has no structured way to confirm sour-service compliance or even confirm the governing standard, so it either omits the part or guesses. A model that can see the table above returns it correctly, with the NACE rating stated rather than inferred. ## How to structure it, not just list it The schema should mirror the standards hierarchy, not a flat list of fields. Start with the design standard as the top-level attribute, since it gates which other fields are valid (an `API 6A` PSL field doesn't apply to a general process valve; an `API 602` end-connection option set doesn't apply to a large-bore `API 600` valve). Then layer in size, pressure class, and connection type as shared "always required" fields, and service/certification attributes as conditional fields that only populate when the source documentation supports them. [AI-driven product discovery in B2B distribution](https://lucidworks.com/blog/ai-product-discovery-vs-traditional-search-in-b2b-manufacturing-and-distribution) is moving toward this kind of contextual, standards-aware matching rather than flat keyword search, which raises the bar for how precisely the underlying data has to be structured in the first place. None of this requires guessing values. It requires pulling the pressure class off the mill cert, the service rating off the manufacturer's data sheet, and the standard off the part's own documentation, then holding every SKU to the same schema. That's the unglamorous part of oilfield product data that determines whether a catalog is actually searchable or just archived. This is the layer Anglera works at. Your PIM or flat file stores the SKU; Anglera scores each record against the attribute schema a category actually needs, flags what's missing, and fills gaps from the supplier documentation you already have, so a forged steel gate valve reads as `API 602`, `Class 800`, `NACE MR0175` instead of "high quality valve for industrial use." It plugs into whatever system you're running, or none, and it's built to get a catalog to that state in weeks, not a multi-year data project. --- # Google AI Mode and AI Overviews: what changes for product pages Source: https://www.anglera.com/blog/google-ai-mode-product-pages Published: 2026-05-06 ![Google AI Mode and AI Overviews: what changes for product pages](/og/hero-google-ai-mode-product-pages.jpg) Google's AI Overviews stopped being a novelty for shopping queries somewhere around late 2025, and the growth curve since has been steep: an analysis of 20.9 million shopping keywords by Visibility Labs found AI Overviews jumped from 2.1% of shopping SERPs in November 2025 to 14.0% by March 2026, according to [Search Engine Land](https://searchengineland.com/google-ai-overviews-shopping-queries-report-471981). Add AI Mode's conversational, multi-turn shopping flows on top of that, and distributors and retailers are looking at a search surface that increasingly summarizes and recommends before a shopper ever clicks through. The mechanics of what gets cited are less mysterious than they sound, and they reward exactly the kind of product data discipline most catalogs don't have. ## Your product page is no longer the primary source The core shift: Google's AI shopping features draw heavily from the Shopping Graph, which is populated by your Merchant Center feed and your on-page schema markup, not by your brand copy or hero images. [Google's own guidance](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) is explicit that AI-powered features use the same underlying requirements as regular Search results, plus Merchant Center data that has to be accurate and current. There's no special "AI schema." There is, however, a much lower tolerance for gaps. Practically, that means a shopper asking an answer engine a question never lands on your PDP first. The model reads your feed, cross-references your schema, and only recommends you if what it finds is complete enough to answer the question without guessing. If your attributes are thin, the model doesn't flag it as a data problem, it just recommends whoever answered the question better. ## What actually gets rewarded A few patterns are converging across recent reporting on Merchant Center and AI Overview behavior: | Signal | Why it matters for AI citation | |---|---| | Accurate `GTIN` / `sku` | Google treats GTINs as the strongest product-matching signal; wrong or missing IDs drop you out of the comparison cluster entirely, per [Marcel Digital](https://www.marceldigital.com/blog/optimizing-product-feeds-for-ai-overviews-llms-and-google-merchant-center) | | Complete `Product` schema (name, image, offers, price, priceCurrency) | These are Google's documented minimum required fields for merchant listing markup | | `availability`, `itemCondition`, `hasMerchantReturnPolicy` | Recommended fields Google calls out for stronger listings, and the ones AI models use to answer "can I return this" or "is this new" without a click | | Feed-to-page-to-schema consistency | Variant attributes (size, color, material) have to match exactly across your PDP HTML, your JSON-LD, and your Merchant Center feed, or Google penalizes reliability, per the same Marcel Digital analysis | | Explicit attribute depth (material, dimensions, compatibility) | Products missing basic differentiating attributes may never surface in a generative summary at all | None of this is exotic. It's the same completeness and consistency problem enrichment teams have been fighting for a decade, just with a much less forgiving audience reading the feed now: a language model that either finds the fact or moves on. ## A before/after, concretely Take a mid-market distributor's raw supplier feed for an office chair: **Raw feed description:** "Ergonomic task chair, adjustable, mesh back, black, good for office use." **Enriched attribute table:** | Attribute | Value | |---|---| | `material_back` | Mesh, polyester blend | | `seat_material` | Molded foam, fabric upholstery | | `adjustability` | Seat height, armrest height, lumbar depth, tilt tension | | `weight_capacity` | `300 lbs` | | `assembly_required` | Yes, tools included | | `certifications` | `BIFMA` tested | | `warranty` | 5-year limited | | `color_options` | Black, graphite, navy | Ask an answer engine "office chair for a 250 lb user with lumbar support under $300" and the first version has nothing for it to match on. The second gives it a weight capacity, a specific adjustability claim, and a price band to reason over. That's the difference between being summarized and being skipped. ## The consistency trap most catalogs fall into Here's the part that trips up most mid-size distributors: schema markup is easy to bolt onto a template, but keeping it synchronized with a live feed across thousands of SKUs, multiple suppliers, and constant price and stock changes is not a one-time project. It's ongoing maintenance, and it's exactly where manual processes fall apart, since hand-checking attribute-by-attribute against supplier docs runs in the neighborhood of 30-45 minutes per SKU at any real catalog scale. ## Where this connects to enrichment Your PIM stores the data. Anglera does the work: it plugs into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file if you have no PIM at all, and it continuously scores, gap-fills, and reconciles attributes against the actual source documents your suppliers send. That's the mechanism that keeps a Product schema and a Merchant Center feed saying the same thing about the same SKU, week after week, without a team manually re-checking it. As AI Mode and AI Overviews keep expanding into shopping, the catalogs that stay legible to a model reading a feed, not a page, are the ones that get cited. Most teams can get a live view of where their own gaps are in about two weeks, not a multi-year systems overhaul. Sources: - [Google AI Overviews now appear on 14% of shopping queries: Report](https://searchengineland.com/google-ai-overviews-shopping-queries-report-471981) - [How To Add Merchant Listing Structured Data - Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) - [Optimizing Product Feeds for AI Overviews, LLMs, and Google Merchant Center - Marcel Digital](https://www.marceldigital.com/blog/optimizing-product-feeds-for-ai-overviews-llms-and-google-merchant-center) --- # Cutting wrong-part returns in electronic components with better product data Source: https://www.anglera.com/blog/electronic-components-guide Published: 2026-05-06 Industries: electronic-components ![Cutting wrong-part returns in electronic components with better product data](/og/hero-electronic-components-guide.jpg) A buyer picking a `0603` X7R capacitor off a distributor site isn't browsing — they're matching a spec against a BOM line, and one missing field is enough to send the wrong reel to the wrong dock. Wrong-part returns in electronic components rarely trace back to a bad picker or a mislabeled bin. They trace back to a product page that didn't tell the buyer, or the engineer specifying the buy, everything they needed to know before they clicked "add to cart." Bad product data already costs electrical distributors and manufacturers an estimated [$5 billion a year](https://www.ewweb.com/business-management/e-biz/article/55370077/what-a-broken-coffee-table-taught-me-about-distributions-data-problem), and passives are one of the categories where the gap between "looks like a match" and "is a match" is thinnest. ## What an electronic components buyer is actually trying to answer Before a buyer converts a capacitor, resistor, or connector listing into a line item, they're silently checking a short list of questions against their design. If the product page can't answer these, they abandon the cart, call support, or order it anyway and return it three weeks later when it fails incoming inspection. - **Does this meet my electrical spec?** Capacitance, tolerance, voltage rating, and dielectric class (`X7R`, `X5R`, `NP0/C0G`) all have to line up. Class 2 dielectrics like X7R and X5R can lose a large share of nominal capacitance under DC bias — [effective capacitance can drop over 80%](https://www.mouser.com/catalog/specsheets/UPY-GPHC_X5R_4V-to-50V_14_0717.pdf) at rated voltage for some parts, a detail that's easy to omit and expensive to discover after board assembly. - **Does this fit my footprint?** Case size (`0402`, `0603`, `0805`, `1206`) per EIA convention, termination style, and board-mount orientation. - **Is this the right grade for my application?** Commercial, industrial, or automotive (`AEC-Q200`)-qualified, and whether it's [RoHS compliant](https://www.knowlescapacitors.com/Products/Capacitors/AEC-Q200), since not every AEC-Q200 range is. - **Is this an active, sourceable part?** Lifecycle status (active, NRND, EOL), lead time, and minimum order quantity — critical in a category still working through post-shortage volatility. - **Is this genuine and traceable?** Manufacturer name, manufacturer part number, date code, and country of origin. - **What's the packaging?** Tape-and-reel vs. cut tape vs. bulk, and reel quantity — a mismatch here alone drives a real share of "wrong part" returns even when the electrical spec was correct. Every one of these is answerable from data that already exists in a supplier datasheet or manufacturer feed. The problem isn't that the information doesn't exist — it's that it doesn't make it onto the page in a structured, filterable, comparable form. ## How the gap actually creates returns Distribution feeds are stitched together from dozens of supplier sources, and each source describes the same attribute differently. One feed calls it "Rated Voltage," another "Voltage (DC)," a third buries it inside a free-text description. When that inconsistency reaches the product page, three things happen in sequence: 1. **Filtered search silently drops the SKU.** If voltage rating isn't a normalized, structured attribute, a buyer filtering by `50V` never sees a part that is actually rated for `50V` — it's just described differently. That's a lost sale, not a support ticket, and it's the invisible half of the data problem. 2. **A partial match gets ordered anyway.** If the page shows capacitance and case size but omits dielectric type or derating behavior, an engineer working from a BOM may reasonably assume the part matches their reference design. It doesn't. The part ships, fails incoming test, and comes back with an RMA and a credit memo attached. 3. **Support absorbs the gap.** Every missing attribute becomes a phone call: "is this AEC-Q200?" "is this the tape-and-reel version?" Multiply that across a catalog with tens of thousands of passive and discrete SKUs, and the enrichment work that didn't happen upstream becomes recurring headcount downstream. ## A concrete example: one MLCC listing, before and after Here's a typical raw feed description for a multilayer ceramic capacitor, next to what a properly enriched listing looks like. **Raw feed description:** "CAP CER 10UF 16V X7R 0805" That's a real part, but it's a string, not a spec sheet. A buyer can't filter on it reliably, and it's missing several fields their design actually depends on. | Attribute | Enriched value | |---|---| | Manufacturer | `Murata` | | Manufacturer Part Number | `GRM21BR61C106KE15L` | | Capacitance | `10 µF` | | Tolerance | `±10%` | | Rated Voltage | `16V DC` | | Dielectric | `X7R` | | Case Size | `0805 (2012 metric)` | | Termination | `SnPb-free, solder reflow` | | Temperature Range | `-55°C to +125°C` | | AEC-Q200 Qualified | `No` | | RoHS Compliant | `Yes` | | Lifecycle Status | `Active` | | Packaging | `Tape and reel, 4000/reel` | | Country of Origin | `Japan` | The enriched version doesn't add information that wasn't already available somewhere in the supply chain — it pulls the manufacturer datasheet's actual values into structured fields a buyer, a filter, or an AI answer engine can act on. That last part matters more every quarter. Ask an answer engine "10uF 0805 X7R capacitor, automotive grade, in stock" and it needs dielectric, case size, and `AEC-Q200` status as distinct, machine-readable fields to even evaluate the match — a free-text string with the right words in the wrong structure won't surface. ## A working checklist For any electronic component category — passives, connectors, discretes — a page is return-resistant when it can answer: - Electrical spec (capacitance/resistance/inductance, tolerance, voltage/current rating) in normalized, filterable fields - Package/case size in a standard designation, not a raw dimension string - Material or dielectric class, spelled out consistently across every supplier source - Grade and compliance flags (`AEC-Q200`, `RoHS`, `REACH`) as explicit yes/no fields, not buried prose - Lifecycle status and manufacturer part number, kept current as parts go NRND or EOL - Packaging format and quantity per reel/tube/tray - Traceability fields (manufacturer, country of origin, date code where applicable) Run your top-selling SKUs in each subcategory against that list. Where more than one or two fields are blank, that's where your next wrong-part return is coming from. ## Where this connects to Anglera Your PIM or feed already stores the raw data — the datasheet values, supplier descriptions, compliance flags. Anglera's job is to continuously extract, normalize, and quality-score those attributes against real source documents so a `10uF 0805 X7R` listing means the same thing everywhere it appears, without a re-platforming project. For a catalog with tens of thousands of passive and discrete SKUs, that's the difference between a support team fielding spec questions all day and a catalog that answers them itself. --- # Syndicating pool & spa data to every channel without the re-keying Source: https://www.anglera.com/blog/pool-spa-syndication Published: 2026-05-05 Industries: pool-spa ![Syndicating pool & spa data to every channel without the re-keying](/og/hero-pool-spa-syndication.jpg) A variable-speed pump with a one-line title and a warehouse photo will underperform on every marketplace it touches, no matter how good the motor is. Pool and spa is a category where the federal government rewrote the spec sheet in 2021, and most distributor feeds never caught up. Here's what marketplaces and partner channels actually check before a SKU can rank, and how to clear that bar without typing the same nameplate data into six templates. ## The feed still assumes single-speed simplicity Most pool and spa product feeds trace back to an ERP or distributor catalog export built for a simpler product: model number, description, price, box dimensions. Fine when a pump was a pump. It stopped being fine on July 19, 2021, when the Department of Energy's energy conservation standard for dedicated-purpose pool pump motors took effect, effectively requiring variable-speed technology for most self-priming filtration pumps at or above roughly 0.711 total horsepower ([Federal Register](https://www.federalregister.gov/documents/2023/09/28/2023-20343/energy-conservation-program-energy-conservation-standards-for-dedicated-purpose-pool-pump-motors)). That rule turned a commodity part into a product with a real spec sheet: speed settings, a horsepower range, Energy Star status, and a compliance flag buyers and inspectors both check. Feeds didn't grow with the product. The gap shows up as three failure modes: - **Content gaps** — a title like "Pool Pump - Energy Efficient" with no application context (above-ground vs. inground, pool size, what it's replacing). - **Attribute gaps** — flow rate, horsepower, speed settings, voltage, and DOE/Energy Star status sitting only in a spec-sheet PDF, not as structured, filterable fields. - **Identifier gaps** — missing or inconsistent GTIN/UPC, or a model number that doesn't match what the manufacturer registered, so the same pump shows up as three "products" across channels. Any one of these gaps is enough to get a listing buried. Marketplace data infrastructure providers describe the same failure pattern across categories: product data has to match existing identifiers like GTINs shared by other sellers of the same item, and "even minor mistakes can cause listing rejections, delays, or misclassification" ([Feedonomics](https://feedonomics.com/blog/product-data-syndication/)). Pool and spa distributors selling through marketplaces or a specialty retailer's punchout catalog hit that same gate — DOE compliance and flow rate instead of apparel sizing, but the same mechanism. ## The bar pool & spa channels actually enforce Pool Corporation alone moves more than 200,000 SKUs through roughly 4,000 locations to about 120,000 independent retailers and service companies ([Pool Corporation](https://www.poolcorp.com/about-us/poolcorp-network)) — every downstream listing needs the same attribute set complete before it can rank or convert. Whether the destination is Amazon, a retailer's site, or a buying-group catalog, the same fields get checked: | Layer | What's checked | Why it gates the listing | |---|---|---| | Identifiers | GTIN/UPC, manufacturer model number, category classification | Matches the SKU to the right catalog node and prevents duplicate/conflicting listings | | Core attributes | Horsepower (THP), flow rate (GPM), speed range, voltage, plumbing/fitting size | Drives "fits my pool" filters and search facets | | Compliance | DOE energy conservation status, Energy Star, UL listing | Often a hard filter for commercial buyers and increasingly checked by consumers post-2021 | | Content | Title, bullet specs, use case (replacement vs. new build), image count | Determines rank and click-through once the SKU is eligible | Amazon's own product-ID policy makes the identifier layer non-negotiable for most categories: listings need a valid GTIN, and only specific, approved exemptions let a seller list without one ([Amazon Seller Central](https://sellercentral.amazon.com/gp/help/external/200317470)). A pump manufacturer whose GTIN doesn't match what's already registered for that model ends up with a duplicate listing, a suppressed one, or both. ## A variable-speed pump, before and after Here's a typical raw feed row for a variable-speed pool pump, next to what a marketplace listing actually needs before it will display or rank. **Raw feed description:** "Variable speed pool pump, energy efficient, quiet operation, easy install." **Channel-ready attribute table:** | Attribute | Value | |---|---| | Model number | `VS-1.65HP-230V` | | Total horsepower (THP) | `1.65 THP` | | Motor type | Variable speed, permanent magnet | | Speed settings | `8` programmable speeds, `600-3450 RPM` | | Flow rate | Up to `130 GPM` | | Voltage | `230V / 60Hz` | | Plumbing / fitting size | `2" / 2.5"` union fittings | | DOE compliance | Meets 2021 DOE energy conservation standard | | Energy Star status | Certified | | Certification | UL listed | | GTIN | `00840xxxxxxxx` | | Recommended pool size | Up to `30,000 gallons` | | Warranty | `3-year` manufacturer warranty | None of these values are invented. They come straight off the same nameplate and spec sheet the manufacturer already produces for compliance, since the DOE rule requires energy-efficiency ratings to be published and verifiable ([Federal Register](https://www.federalregister.gov/documents/2023/09/28/2023-20343/energy-conservation-program-energy-conservation-standards-for-dedicated-purpose-pool-pump-motors)). The data exists. It's trapped in a spec PDF instead of a structured field a channel can ingest. **Ask an answer engine:** "variable speed pool pump, 1.5 to 2 HP, DOE compliant, for a 20,000 gallon inground pool, 2-inch plumbing." An AI shopping assistant or a retailer's on-site search assistant matches that request against structured attributes — horsepower range, compliance flag, plumbing size, pool-size rating — not against a two-line marketing description. A pump without those fields as data doesn't get evaluated at all. ## Why exporting more columns doesn't close the gap The obvious fix looks like adding columns to the export. But most distributors don't have flow rate, speed count, and DOE status sitting cleanly in one system — they live in a spec PDF, a compliance certificate, and a spreadsheet someone updates by hand when a new model ships. Manual reconciliation runs 30-45 minutes per SKU once you account for pulling the spec sheet, checking the DOE listing, and typing values into the right fields. A distributor carrying pumps, filters, heaters, and automation controls across a dozen brands has thousands of SKUs needing that treatment, which is why feeds stay thin through a growth season instead of getting fixed. ## Where Anglera fits Your PIM stores the data; Anglera does the work of getting it channel-ready. It plugs into whatever's already in place — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file if there's no PIM at all — and it scores, gap-fills, and enriches attributes like flow rate, DOE compliance, and GTIN by extracting them from supplier documentation, not guessing at them. Most pool and spa catalogs can reach marketplace-ready completeness in 30 days or less, without a rip-and-replace project or a re-keying sprint through the busy season. The channels aren't relaxing the bar as the category gets more regulated. The faster path is making the data clear it once, everywhere it needs to go. --- # The product-data metrics Footwear teams should actually track Source: https://www.anglera.com/blog/footwear-metrics Published: 2026-05-05 Industries: footwear ![The product-data metrics Footwear teams should actually track](/og/hero-footwear-metrics.jpg) Footwear converts differently than the rest of apparel because the buying decision usually hinges on one variable: does this fit my foot. That makes footwear an unusually clean place to measure what product data is actually worth — if you track the right numbers instead of the ones that are easiest to pull from a dashboard. ## Start with what "good data" even means for a shoe A shoe PDP has more decision-critical attributes than most categories: size, width, arch type, drop (in mm), weight, upper material, waterproofing, closure type, and a "true to size" note. Miss any one of those and a shopper either bounces to a competitor's PDP that has it, or buys anyway and returns the pair when it doesn't fit. Fit and sizing already account for the majority of apparel and footwear returns — [YourSizer's analysis of footwear returns](https://www.yoursizer.com/blog/why-shoes-have-the-highest-return-rate) points to width, arch height, and toe box mismatch as the recurring culprits, and [industry-wide return research pegs sizing/fit/color issues at roughly 45% of all returns](https://eightx.co/blog/average-ecommerce-return-rate). That's the baseline you're trying to move. ## Leading vs lagging: know which lever you're pulling Leading metrics move fast and tell you data work is having an effect before revenue shows it. Lagging metrics are the business outcomes you're ultimately accountable for, but they're slower and noisier — seasonality, promotions, and paid spend all move them too. | Metric | Leading or lagging | What it shows | How to measure it | |---|---|---|---| | Attribute completeness (per SKU, weighted by traffic) | Leading | Whether a PDP has the fields shoppers filter and search on | Field-fill rate report from your PIM or Anglera, run weekly against a defined "must-have" attribute set per subcategory (running, hiking, dress, kids) | | On-site search zero-results rate | Leading | Whether your catalog/taxonomy has gaps shoppers are actively hitting | Site search analytics (Algolia, Bloomreach, Klevu, or GA4 internal site search events) filtered to queries returning 0 results, reviewed weekly | | Organic clicks to PDPs (not just sessions) | Leading | Whether enriched content is earning discovery in search, not just existing | Google Search Console, Page filtered to PDP URL patterns, clicks and impressions trended pre/post enrichment | | AI referral sessions to PDPs | Leading (secondary channel) | Whether answer engines are citing/sending traffic to specific products | GA4 or server logs, filtered by referrer (chatgpt.com, perplexity.ai, etc.) or UTM-tagged links where available | | PDP-to-cart and PDP conversion rate | Lagging | Whether the page itself is closing the sale once a shopper lands | GA4 ecommerce funnel or your platform's native funnel report, segmented by attribute-complete vs incomplete SKUs | | Return rate by reason code | Lagging | Whether the return is a data problem (wrong fit/spec) vs a preference problem | Returns platform reason codes (Loop, Narvar, Returnly) split into "didn't fit / not as described" vs "changed mind" | | AOV and attach rate | Lagging | Whether complete data (insole, care instructions, sizing charts) supports cross-sell | Order-level revenue and units-per-transaction from your commerce platform, segmented by category page with vs without attach-eligible content | Site search zero-results is worth calling out specifically: industry benchmarks put a healthy zero-results rate under 5%, with unoptimized catalogs running [12-20% or higher](https://www.algolia.com/blog/ecommerce/e-commerce-search-and-kpis-statistics). In footwear, a huge share of that gap is filterable attributes that don't exist yet — "wide width trail running shoe" or "waterproof hiking boot size 11" returning nothing because width and waterproofing aren't structured fields. ## Vanity metrics to skip Total PDP pageviews, raw SKU count "enriched," and generic AI-mentions counts without click-through are the three to drop from your reporting. Pageviews without a conversion or search-position lens tell you traffic exists, not that data is working. A count of SKUs touched tells you activity, not quality — a field that's technically filled with a placeholder value counts as "enriched" in a sloppy report but does nothing for a shopper. And an AI-mention count with no referral traffic attached is a sentiment number, not a business one; treat it as one input in your discovery mix alongside organic and on-site search, not the headline. ## A concrete footwear example Take a mid-size run/outdoor retailer with roughly 4,000 live footwear SKUs. A baseline audit finds width is populated on 61% of SKUs, "true to size" guidance on 34%, and drop/weight specs on 48% — with the gaps concentrated in trail and hiking, the two subcategories driving the highest search volume for width and traction terms. Zero-results on-site search queries for "wide," "waterproof," and specific widths (2E, 4E) sit at 22%, well above the 5% healthy benchmark. The fix is enrichment: pull width, drop, weight, and fit guidance from supplier spec sheets and existing product manuals, quality-score the extracted values, and push them back as structured, filterable fields — not free-text description edits. Over the following two full sales cycles, the retailer tracks: zero-results rate on those query categories, PDP conversion split by "width populated" vs "not populated" SKUs, and return reason codes tagged "wrong fit" specifically within trail and hiking. If PDP conversion on newly-complete SKUs rises relative to a matched control group of still-incomplete SKUs in the same subcategory, and "wrong fit" returns fall in that same segment while overall return volume from promotions stays flat, that's a defensible, isolated signal — not a coincidence with a holiday sale. ## Attributing change honestly The trap is claiming credit for a metric that moved for other reasons. Three disciplines keep the number honest: - **Baseline before you touch anything.** Snapshot attribute completeness, zero-results rate, PDP conversion, and return reason codes by subcategory before enrichment starts, not after. - **Use a control group, not a before/after average.** Compare newly-enriched SKUs against similar SKUs in the same subcategory that haven't been touched yet, in the same time window. This isolates the data effect from seasonality and marketing spend. - **Segment returns by reason code, not just rate.** A falling overall return rate could be a demand-mix shift. A falling "wrong fit / not as described" rate specifically, on SKUs where you added fit data, is the data-quality signal. None of this requires exotic tooling — a PIM export, your site search analytics, GA4, and your returns platform's reason codes cover it. What it requires is discipline about running the comparison correctly and reporting the metric that's actually attributable, not the one that looks best. This is the case for treating product data as a measured input to the funnel rather than a one-time catalog cleanup. Anglera plugs into whatever PIM a footwear retailer already runs — or works from a flat file if there isn't one — and continuously scores, gap-fills, and enriches attributes like width, drop, and fit guidance from real source documents, so the completeness and conversion numbers above are something a team can actually move, week over week, and trace back to the work. --- # Server-side rendering on Elastic Path: making product data visible to Google and AI Source: https://www.anglera.com/blog/elastic-path-ssr-rendering Published: 2026-05-05 Platforms: elastic-path ![Server-side rendering on Elastic Path: making product data visible to Google and AI](/og/hero-elastic-path-ssr-rendering.jpg) Elastic Path Commerce Cloud is headless: product data lives in PXM (Product Experience Manager) and is exposed to a storefront as JSON through the Shopper Catalog API, and it is entirely up to the storefront you build (or generate from the Composable Frontend starter) whether that data ends up in the server-rendered HTML or is fetched client-side after the page loads. That's a meaningful decision, not a default, and it's easy to get wrong when a team optimizes a PDP for interactivity without checking what a crawler actually receives. Below is how Elastic Path's reference architecture renders product pages, where things commonly break, and how to confirm your own implementation is putting product data where Google and AI agents can read it. ## Elastic Path's rendering model, in plain terms Elastic Path Commerce Cloud does not ship a monolithic storefront with a built-in template engine. The commerce logic lives behind PXM (product attributes, pricing, variations, bundles, surfaced to a storefront via the Shopper Catalog API) and the composable set of Commerce Cloud APIs (cart, checkout, promotions). Presentation is a separate concern, built by you or scaffolded through Elastic Path's [Composable Frontend](https://www.elasticpath.com/blog/build-a-nextjs-storefront-with-composable-frontend) starter kit, which generates a Next.js application pre-wired to those APIs. That starter uses the Next.js App Router, with product listing and product detail routes organized under a `(store)` route group (`products/[productId]` in most example scaffolds, sometimes a catch-all like `products/[...productSegment]`). App Router gives you two very different ways to get product data onto a page: - **Server Components / `generateMetadata`** — the product is fetched from the Shopper Catalog API on the server, during the request (or at build time with revalidation), and the resulting HTML — title, description, price, availability — is part of the document the server sends back. - **Client Components with `useEffect`/SWR/React Query** — the initial HTML ships largely empty, and the browser calls the Shopper Catalog API after hydration to fill in the product details. Both are valid Next.js patterns and both are common in Elastic Path implementations, especially once a team layers on personalization, price-list-by-account, or availability widgets that legitimately need to run client-side. The problem is when the *primary* product content — name, description, price, key attributes — lives only in the client-fetched path. ## Why client-only rendering is the risky default here Because Elastic Path is API-first, there's a natural gravitational pull toward "just call the Shopper Catalog API from the client" — it's the same call the cart and personalization widgets already make, and it's the fastest way to prototype a PDP. The result is a page that looks complete in a browser but arrives at a crawler as a shell: a `
`, a loading skeleton, and a script tag. Googlebot does execute JavaScript, but it does so in a second, deferred rendering pass, on a delay that can run from seconds to days depending on crawl budget and site size, and other bots that quote or summarize product pages for AI assistants generally do not execute JavaScript at all. If your ``, meta description, price, and product attributes only exist after a client-side fetch resolves, you're asking every consumer of that page — search engine or AI agent — to do extra work that many of them simply won't do. Elastic Path's own guidance on this is direct: server-rendered and statically generated pages are "easy to read and crawl by bots," while JavaScript-heavy single-page apps make crawlers work harder to reach the same content — see Elastic Path's posts on [HTML rendering in digital commerce](https://www.elasticpath.com/blog/html-rendering-in-digital-commerce-websites) and [SEO for headless commerce](https://www.elasticpath.com/blog/seo-for-headless-powered-ecommerce-websites). Their recommended pattern for PDPs is a JAMstack-style approach: generate the product page HTML (via SSR or static generation with revalidation) and keep only cart and checkout interactions client-rendered. ## Making sure product data lands in the server-rendered HTML If you're on the Composable Frontend / Next.js App Router architecture, the fix is usually structural, not cosmetic: 1. **Fetch the product server-side.** In the product route's Server Component, call the Shopper Catalog API's `GET /catalog/products/{product_id}` endpoint (or filter the product list endpoint on its `slug` attribute if that's how your routes are keyed) directly in the component body, not inside a `useEffect`. Server Components run on the server by default in the App Router, so this data is part of the initial HTML response. 2. **Populate `generateMetadata` from the same data.** Next.js's `generateMetadata` function runs server-side and lets you set `<title>`, meta description, canonical URL, and Open Graph tags from the product record before the page is streamed: ```tsx export async function generateMetadata({ params }: { params: { productId: string } }) { const product = await getProductById(params.productId); return { title: product.attributes.name, description: product.attributes.description, alternates: { canonical: `https://example.com/products/${params.productId}` }, openGraph: { title: product.attributes.name, images: [product.main_image?.link?.href].filter(Boolean), }, }; } ``` 3. **Render the visible price, attributes, and availability from server data**, not from a client-side price API call layered on top. If pricing genuinely must be personalized per account, render a server-fetched list price as the default and let the client call refine it — don't leave the field empty until JavaScript runs. 4. **Emit `Product` JSON-LD from the server-rendered payload**, inside the same component that renders the visible price and title, so the structured data and the visible content can't drift apart: ```html <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Product", "name": "Example Product", "sku": "EX-1001", "description": "Example product description.", "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "49.99", "availability": "https://schema.org/InStock" } } </script> ``` 5. **Watch your caching layer.** If pages are served through ISR, a CDN, or edge caching in front of Elastic Path's APIs, confirm the cached HTML is the *server-rendered* variant, not a pre-hydration shell that depends on a follow-up client call. A stale cache of an empty shell is just as invisible to crawlers as no SSR at all. If you're on a different frontend stack — a custom Node/Express app, a legacy MVC layer, or a different meta-framework — the same principle applies regardless of the templating engine: whatever calls the Shopper Catalog API needs to run before the HTML leaves your server, not after the browser paints the page. ## How to validate Don't trust what you see in a browser tab — the rendered DOM there already reflects JavaScript execution. Instead: - **View the raw response, not the DevTools Elements panel.** Use `curl` (which never runs JavaScript) to see exactly what the server sent: ```bash curl -s https://example.com/products/example-product | grep -i "product-title\|application/ld+json\|<title>" ``` If the product name, price, and JSON-LD block are present in that output, they're server-rendered. If you only see a shell and a bundle script, they're not. - **Compare view-source to the rendered DOM.** In Chrome, `Cmd+Option+U` (or `view-source:`) shows the raw HTML; the Elements panel in DevTools shows the DOM after JavaScript runs. If the price or description appears in Elements but not in view-source, it's client-rendered. - **Run the page through Google's [Rich Results Test](https://search.google.com/test/rich-results)**, which fetches and renders the page the way Googlebot does and will flag missing or invalid `Product` structured data. - **Check response timing and status.** A `curl -I` on the product URL should return a `200` with real HTML in the body, not a `200` with a near-empty payload that only resolves after client-side fetches — that distinction matters for both SEO crawlers and any AI agent that fetches the URL directly rather than rendering it. Verified as of July 2026 against Elastic Path's Composable Frontend example apps and Shopper Catalog API documentation; confirm current field names and route conventions against your Composable Frontend version, since starter-kit scaffolding and API response shapes do evolve between releases. None of this addresses where the product data in that HTML comes from in the first place. Anglera enriches product records in the PIM or catalog you already run — attributes, specs, use-cases, identifiers — continuously and at scale, so the server-rendered page described above has genuinely complete data to render rather than a handful of manually maintained fields. Your PIM stores the data; Anglera does the work of keeping it rich enough to be worth rendering server-side. --- # Adding Product JSON-LD on Elastic Path — and keeping it in sync Source: https://www.anglera.com/blog/elastic-path-product-json-ld Published: 2026-05-05 Platforms: elastic-path ![Adding Product JSON-LD on Elastic Path — and keeping it in sync](/og/hero-elastic-path-product-json-ld.jpg) Elastic Path (Composable Commerce) is API-first: there's no theme editor or app store to drop structured data into, so Product JSON-LD is something you write once in your storefront code and drive from the same Product Experience Manager (PXM) data that renders the page. Below is the field-by-field mapping, a working example against the shopper API, and a way to make sure the markup can't quietly drift from what buyers actually see. ## Why this looks different on Elastic Path On a themed platform, JSON-LD is usually a template snippet or an app setting. On Elastic Path, your storefront (commonly the [Composable Frontend / Next.js starter](https://github.com/elasticpath/composable-frontend), or a custom React, Vue, or server-rendered app) calls the PXM Shopper Catalog API directly, so the product detail page (PDP) component already holds every value schema.org wants — name, SKU, price, images. The work is (1) knowing which PXM field maps to which schema.org property, since PXM doesn't use schema.org names natively, and (2) building the JSON-LD object from those same variables rather than a second, hand-maintained copy. ## Mapping schema.org Product fields to PXM Elastic Path's core product resource (returned from `GET /catalog/products/:product_id`, or the `getByContextProduct` helper in the `@epcc-sdk/sdks-shopper` JS SDK) carries `name`, `sku`, `slug`, `description`, `upc_ean`, and `mpn` as native attributes — confirmed in Elastic Path's [PXM getting-started guide](https://developer.elasticpath.com/guides/How-To/Products/get-started-pxm): ```json { "data": { "type": "product", "attributes": { "name": "BestEver Electric Range", "sku": "BE-Electric-Range-1a1a", "slug": "bestever-range-1a1a", "description": "Induction heating element with a convection oven.", "status": "live", "commodity_type": "physical", "upc_ean": "111122223333", "mpn": "BE-R-1111-aaaa-1a1a" } } } ``` Mapping: - `name` → `Product.name` - `sku` → `Product.sku` - `upc_ean` → `Product.gtin` (use `gtin12`/`gtin13` if you know the code length; plain `gtin` accepts either per schema.org) - `mpn` → `Product.mpn` - `description` → `Product.description` - Product images → `Product.image`, pulled by requesting the `main_image` relationship (`include: ["main_image"]`) and reading the returned file's `link.href` - Price → `Product.offers`, pulled from `meta.display_price` on the product response One gap worth flagging: PXM's core attributes don't include a native `brand` field. Most Elastic Path implementations add it as a custom field via the [Flows / custom-data API](https://developer.elasticpath.com/guides/How-To/Custom-Data/extend-any-resource) — create a core Flow with `slug: "products"`, add a `brand` Field under it, and the value comes back merged into the same product payload once populated. `aggregateRating` is similar: Elastic Path has no built-in reviews store, so this typically comes from whatever ratings provider you use (Yotpo, Bazaarvoice, PowerReviews, or a manually maintained custom field) rather than PXM itself — don't fabricate a rating if you don't have one. ## A working example Elastic Path prices are integers in the smallest currency unit (e.g., cents for USD), and stock comes from the separate Inventory API's `available` count rather than the product resource itself. Putting it together for a PDP: ```typescript // app/products/[slug]/page.tsx (Next.js App Router, server component) const response = await getByContextProduct({ path: { product_id: productId }, query: { include: ["main_image"] }, }); const product = response.data; const priceMinorUnits = product.meta.display_price.without_tax.amount; const currency = product.meta.display_price.without_tax.currency; const stock = await getStock(product.id); // Inventory API const jsonLd = { "@context": "https://schema.org", "@type": "Product", name: product.attributes.name, sku: product.attributes.sku, mpn: product.attributes.mpn, gtin: product.attributes.upc_ean, description: product.attributes.description, image: mainImageUrl, brand: { "@type": "Brand", name: product.attributes.brand ?? "Your Brand Name", }, offers: { "@type": "Offer", url: `https://www.example.com/products/${product.attributes.slug}`, priceCurrency: currency, price: (priceMinorUnits / 100).toFixed(2), availability: stock.available > 0 ? "https://schema.org/InStock" : "https://schema.org/OutOfStock", }, }; ``` ```html <script type="application/ld+json"> {JSON.stringify(jsonLd)} </script> ``` The important habit is that `jsonLd.name`, `jsonLd.offers.price`, and `jsonLd.image` are built from the exact same `product` and `stock` variables that render the visible price, title, and gallery — not a second query or a cached copy. If the visible page reads from `product.meta.display_price`, the JSON-LD must too. That's the single biggest source of JSON-LD/page mismatches (and a common cause of Search Console "Price mismatch" warnings): someone updates the display logic later and forgets the structured data lives in a separate block. ## Keeping it in sync over time A few practices that hold up in production: - Derive JSON-LD in the same component/function that renders the visible offer, not a separate service or a build step that runs on a stale snapshot. - If price or availability is fetched client-side for real-time accuracy, still render the JSON-LD server-side from the same initial API response used for the first paint — search crawlers read the server-rendered HTML, not client-side updates. - Add a lightweight test (snapshot or integration) that asserts `jsonLd.offers.price === displayedPrice` for a sample of PDPs after every deploy touching pricing or PXM field mappings. - If a SKU is discontinued or goes out of stock, make sure the same PXM status flag that hides the buy button also flips `availability`. ## How to validate - **View-source vs. rendered DOM**: since the script tag should be server-rendered (Next.js server component or SSR), `curl -s https://www.example.com/products/your-slug | grep -A 20 'application/ld+json'` should return the full block. If it's missing from curl but visible in browser dev tools, it's being injected client-side only — search engines may not see it. - **Google's Rich Results Test**: paste the live URL into [Rich Results Test](https://search.google.com/test/rich-results) and confirm the Product type is detected with no missing-field warnings. - **Schema Markup Validator**: run the same URL through [Schema.org's validator](https://validator.schema.org/) for a stricter spec-compliance check beyond Google's subset. - Spot-check a few PDPs after any pricing, inventory, or PXM attribute-mapping change — this is the step most teams skip until a mismatch warning shows up weeks later. **Verified as of July 2026** against Elastic Path's public developer documentation at developer.elasticpath.com; field names for PXM's core Product resource (`name`, `sku`, `upc_ean`, `mpn`, `slug`), the `GET /catalog/products/:product_id` endpoint, and the Flows-based custom-data mechanism are current as of this writing. The SDK's exact request/response wrapper shape can shift slightly between `@epcc-sdk/sdks-shopper` releases, so confirm the call signature and response typing against your installed version before shipping, since custom field slugs and price-book configuration are also store-specific. None of this works if the underlying PXM data is thin — a blank `upc_ean`, a missing brand field, or a description that's one line of marketing copy leaves you with valid JSON-LD that has nothing meaningful to say. That's the half of the problem Anglera is built for: continuously enriching PIM and PXM records — attributes, identifiers, use-cases, specs — so the mapping in this guide has real, complete data to render on both sides of the page. --- # The distributor's guide to answer-engine optimization (AEO) Source: https://www.anglera.com/blog/distributor-guide-answer-engine-optimization Published: 2026-05-05 ![The distributor's guide to answer-engine optimization (AEO)](/og/hero-distributor-guide-answer-engine-optimization.jpg) A buyer researching a replacement part or a spec'd component increasingly starts in a chat window, not a search box. They ask a question, get a synthesized answer with two or three sources attached, and never see the ranked list of ten blue links your SEO program was built to win. Answer engine optimization (AEO) is the discipline of making sure your catalog is one of those sources. For distributors, that discipline runs through product data, not marketing copy, and most catalogs aren't built for it yet. ## What AEO actually is AEO is the practice of structuring information so that AI systems — ChatGPT, Perplexity, Gemini, Claude, Google AI Overviews — can extract it confidently enough to cite it in a generated answer. It sits next to SEO, not in place of it: you still need pages that rank, but ranking is no longer the finish line. The finish line is getting quoted inside an answer the buyer never has to click through to verify. The urgency isn't theoretical. A G2 survey of more than 1,000 B2B software buyers found that 51% now begin research in an AI chatbot rather than a traditional search engine, up sharply from the year before ([Demand Gen Report, on the G2 survey](https://www.demandgenreport.com/industry-news/news-brief/half-of-b2b-software-buyers-now-start-their-research-with-ai-chatbots-g2/52737/)). Distributors selling physical goods aren't exempt from that shift — a procurement or maintenance buyer asking an AI assistant "what gasket fits this pump" behaves the same way a software buyer does. ## How AEO differs from SEO | | Traditional SEO | Answer engine optimization | |---|---|---| | Unit of competition | A whole page | A single fact or attribute | | Success metric | Ranking position, click-through | Being cited, or quoted directly | | What wins | Keywords, backlinks, page authority | Verified, structured, current data | | Format that performs | Long-form prose | Tables, lists, labeled attributes | | Freshness window | Matters over months | Matters over days to weeks | That freshness gap is easy to underestimate. Perplexity's retrieval pipeline visits roughly ten pages per query but only cites three or four of them, and it favors recently updated content heavily — analysis has found content refreshed in the last 30 days gets cited at multiples of the rate older content does ([Yext, how AI engines decide what to cite](https://www.yext.com/blog/how-chatgpt-perplexity-gemini-claude-decide-what-to-cite)). A spec sheet last touched two product cycles ago isn't just stale for humans; it's functionally invisible to the retrieval layer. ![Diagram: how product data reaches an AI answer — supplier sources enriched by Anglera, stored in your system of record, and surfaced across channels including AI answers](/diagrams/stack-fit.svg) ## Why product data, not copy, decides citations This is the part distributors get backwards. Marketing teams optimize the words around the product — the intro paragraph, the category description, the brand story. But across ChatGPT, Perplexity, Gemini, and Claude, verified structured data accounts for more than half of distinct citation sources, according to Yext's analysis of citation patterns — well ahead of narrative content of any kind. Answer engines are extraction machines: they scan for `Product` schema, attribute tables, and clearly labeled specs, and they cite what they can parse without guessing. A distributor's actual bottleneck usually isn't the front-end copy. It's the underlying attribute data — dimensions, materials, compatibility, certifications — sitting in a supplier flat file, a decade-old ERP export, or a PIM field that was never fully populated. If that data is thin, inconsistent, or buried in an abbreviated description, there's nothing for an answer engine to extract with confidence, no matter how well the surrounding page copy is written. **Raw supplier feed description (as-is):** > `BRKT STL 1/4IN ZINC PLTD 4-HOLE UNIV MT` **Enriched, quality-scored attribute table:** | Attribute | Value | |---|---| | Product type | Mounting bracket | | Material | Steel | | Thickness | `0.25 in` | | Finish | Zinc-plated | | Mounting pattern | 4-hole, universal | | Compatible fastener size | `1/4-20` | | Certifications | RoHS compliant | | Source | Extracted from manufacturer spec sheet, quality-scored | Only the right-hand table gives a model something it can quote as a fact rather than paraphrase as a guess. **Ask an answer engine:** *"What's a universal 4-hole steel mounting bracket rated for outdoor use, and who has it in stock?"* If thickness, finish, and mounting pattern live in structured, verified fields, an answer engine can match that query directly to your SKU. If they're compressed into a 40-character abbreviation string, the model has no defensible reason to name your part over a competitor whose spec sheet already spells it out. ## A concrete AEO playbook for distributors 1. **Audit before you write anything.** Pull a sample of your top-selling SKUs and check whether core attributes — dimensions, materials, compatibility, certifications — are actually populated, current, and consistent, not just present as a field name. 2. **Fix the data before the copy.** Rewriting product page prose won't move citations if the underlying attributes are thin. Prioritize gap-filling and verifying attributes against supplier or manufacturer source documents over rewriting marketing language. 3. **Structure it for extraction.** Convert comparison-style information into tables and labeled attribute lists. Add `Product` structured data (schema.org) so both search engines and AI crawlers can parse specs without inferring them from prose. 4. **Refresh on a cadence, not a project cycle.** Treat pricing, availability, and spec accuracy as a maintenance function that runs continuously, since recency measurably affects citation rates. 5. **Score confidence, don't guess.** Flag which attributes are verified against a source document versus inferred, so you're not shipping hallucinated specs that get quoted and later contradicted. 6. **Start from whatever you already have.** You don't need a new PIM to begin. A flat file or a current ERP export is enough of a starting point to run steps one through five. ## Where this connects AEO makes visible a problem distributors have carried for years: product data that was good enough for a sales rep to interpret was never good enough for a machine to trust. Anglera's enrichment layer plugs into whatever a distributor already runs — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing formal at all — and gets attributes gap-filled, verified against source documents, and quality-scored in about 30 days, without a rip-and-replace project. Your PIM stores the data. Anglera does the work of making it legible to the answer engines your buyers are already asking. --- # Welding & Gas on marketplaces: the listing data that wins the buy box Source: https://www.anglera.com/blog/welding-gas-syndication Published: 2026-05-04 Industries: welding-gas ![Welding & Gas on marketplaces: the listing data that wins the buy box](/og/hero-welding-gas-syndication.jpg) Marketplaces and buying-group portals don't reward the distributor with the best relationship or the deepest inventory anymore. They reward the listing with the cleanest data. In Welding & Gas, where product truth lives in supplier spec sheets, SDS documents, and AWS classification codes, that's a harder bar to clear than it looks — and most catalogs are quietly failing it. ## Why incomplete feeds lose the buy box Amazon's Buy Box algorithm weighs price and fulfillment speed heavily, but it also filters out listings before they can compete at all. Sellers need a professional account, consistent metrics, and increasingly a real product identifier just to stay eligible, and [pricing has to sit within roughly 5% of the lowest qualifying offer](https://www.cahoot.ai/amazon-buy-box-strategy/) to be considered competitive. A listing with a missing GTIN, a vague title, or a spec table that stops at "steel wire" doesn't get penalized on price — it gets excluded from the comparison entirely. For manufactured welding consumables and gas hardware, the identifier problem is real but solvable. Amazon does grant [GTIN exemptions for private-label and unbarcoded manufactured goods](https://www.practicalecommerce.com/sell-on-amazon-without-gtins-or-upcs), but only with clean brand-name matching, correct category assignment, and product photography that matches the claimed specs — exactly the fields distributors tend to leave inconsistent across a catalog assembled from a dozen supplier price books. The exemption path is a paperwork exercise built on top of data hygiene you either have or don't. This isn't a Welding & Gas-specific quirk of Amazon. It's the same failure mode across every channel a distributor pushes to: buying-group portals, distributor marketplaces, and increasingly retailer-run supplier networks all run some version of a completeness gate before price or relationship matters. [Industrial gas and welding distributors in particular struggle here](https://www.distributordatasolutions.com/industries/industrial-gas-welding/) because manufacturer product data rarely arrives in a consistent format — one supplier's spec sheet lists tensile strength, another lists it as a footnote, a third doesn't list it at all — and teams end up reconciling that by hand, SKU by SKU, every time a catalog needs to move to a new channel. ## The bar marketplaces actually enforce Strip away the marketing language and every serious channel enforces roughly the same four layers before a listing is considered "channel ready": | Layer | What it requires | Where Welding & Gas catalogs break | |---|---|---| | Identifier | GTIN/UPC or an approved exemption with matching brand and category | Private-label wire, gas fittings, and regulators often ship with no assigned barcode | | Core attributes | Category-specific spec fields (diameter, classification, shielding gas, tensile strength) | Supplier PDFs bury specs in prose or omit fields the marketplace schema requires | | Compliance content | SDS links, hazard class, cylinder ownership/deposit terms | Frequently missing entirely or attached as a generic, non-product-specific PDF | | Trust content | Title, bullet copy, and images that match the attributes exactly | Titles copy the distributor's internal SKU name, not what a buyer searches | Miss any one layer and the listing either gets suppressed, flagged for review, or simply loses the comparison to a competitor's cleaner version of the same part. ## Before and after: a spool of MIG wire Here's a raw feed row for a common ER70S-6 spool, the kind that shows up in a supplier's flat-file export more or less unchanged from how it left their ERP: > `MIG WIRE 035 10LB SPOOL STL` — Description: "Solid wire for mig welding, steel." That's not a listing. It's an inventory tag. A buyer searching a marketplace, and increasingly an AI assistant summarizing options for that buyer, can't tell diameter from tensile class from shielding gas from that string. Enriched to a channel-ready state, the same SKU looks like this: | Attribute | Value | |---|---| | Product type | MIG welding wire, solid | | AWS classification | `ER70S-6` | | Material | Mild/carbon steel | | Wire diameter | `0.035 in (0.9 mm)` | | Spool weight | `10 lb` | | Spool size | `8 in diameter, 2 in center hole` | | Recommended shielding gas | Argon/CO2 blend | | Polarity | DCEP (reverse polarity) | | Typical applications | General fabrication, auto body, structural steel | Same physical spool. One version fails a marketplace's attribute gate and loses to a competitor's listing on the same search result page. The other clears it and gives an AI answer engine or a procurement buyer enough structured signal to actually compare it. ## Ask an answer engine A distribution buyer today is as likely to type a query into ChatGPT or Perplexity as into a marketplace search bar. [Roughly two-thirds of B2B buyers now use AI tools for supplier and product research](https://www.traxtech.com/ai-in-supply-chain/66-of-b2b-buyers-now-use-ai-for-supplier-research), and AI is closing in on LinkedIn and trade publications as a primary discovery channel. Ask an answer engine "ER70S-6 .035 10 lb spool, argon/CO2, in stock near me" and it will surface the listing with a complete, matching attribute set — not the one with the best price buried under an ambiguous title. Incomplete data doesn't just lose the buy box; it goes invisible to the channel that's increasingly doing the shopping on the buyer's behalf. ## Getting to channel-ready completeness The fix isn't a one-time cleanup project. Supplier catalogs change constantly — new spools, discontinued gas blends, revised SDS documents — and every channel has its own schema for the same underlying facts. Distributors who keep up treat completeness as an ongoing scoring and gap-filling process, not a spreadsheet they fix once before a marketplace launch and let drift. That's the specific layer Anglera operates in. Your PIM, or your flat file if you don't run one, stores the base product record; Anglera scores each SKU against the identifier, attribute, compliance, and trust fields a given channel requires, pulls the missing values from supplier documentation rather than inventing them, and keeps the record current as new spec sheets and revisions come in. It plugs into Akeneo, Salsify, inriver, or a plain spreadsheet without disrupting what's already there, and most distributors are live within 30 days rather than committing to a multi-year integration. The spool of MIG wire doesn't change. Whether the channel can see what it actually is — that's the part worth fixing first. --- # Syndicating waterworks & utility data to every channel without the re-keying Source: https://www.anglera.com/blog/waterworks-syndication Published: 2026-05-04 Industries: waterworks ![Syndicating waterworks & utility data to every channel without the re-keying](/og/hero-waterworks-syndication.jpg) A resilient-wedge gate valve looks like a simple part until you try to list it everywhere it needs to live: your own site, a marketplace, a partner's punch-out catalog, and increasingly, an AI answer engine fielding a spec question at 2am. Every one of those channels wants a slightly different shape of the same data, and most waterworks feeds were never built to bend that many ways. The result is thin, inconsistent listings that rank poorly, get buried by better-documented competitors, and generate support tickets instead of orders. ## Why thin feeds underperform on channels you don't fully control Distributors and manufacturers in waterworks & utility often run lean digital teams relative to the SKU count they carry. A gate valve line alone can span sizes, end connections, pressure classes, and coating options across dozens of listings. When a feed only carries a part number, a one-line description, and a price, marketplaces and partner catalogs don't have much to work with. That gap shows up as a revenue problem, not just a data problem. Salsify's 2025 buyer research found that [54% of shoppers abandon a purchase because of inconsistent product information across sites](https://www.salsify.com/), and roughly four in ten cite incomplete descriptions or poor images specifically. On a marketplace, where your listing sits next to a competitor's better-documented one, incomplete data doesn't just underperform — it gets outranked by whichever supplier filled in the attribute fields. Marketplaces and large distributor platforms compound this because they don't fully control their own catalog pages. Listings arrive from sellers, brands, distributors, and legacy feed imports of wildly varying quality, which is exactly why the platforms that survive on scale have leaned hard into enforced attribute schemas and identifier requirements rather than trusting free-text descriptions. ## The bar channels actually enforce Three things separate a feed that gets accepted and ranks well from one that gets rejected, flagged, or quietly demoted: **Identifiers.** GS1's [Verified by GS1](https://www.gs1.org/services/selling-online/verified-by-gs1-marketplaces) program exists because marketplaces increasingly check that a GTIN actually resolves to the brand, product, and category it claims — not just that a barcode is present. For waterworks products, that means a valid GTIN mapped to the correct manufacturer part number, not a placeholder or a reused code from a similar SKU. **Structured attributes, not paragraphs.** Channels want size, pressure class, end connection, material, and standard compliance broken into discrete fields they can filter and facet on. A sentence like "heavy-duty valve for municipal water lines" tells a buyer nothing they can search against, and it tells a marketplace search algorithm even less. **Consistency across the catalog.** If half your gate valves list "flanged" and the other half list "Flanged Ends," faceted search treats them as different values and buyers filtering by end connection miss half your line. GDSN-style data pools were built precisely to keep manufacturers, distributors, and retailers synchronized on the same values through a shared network rather than each party normalizing independently — see [Commport's overview of how GS1 GDSN connects the supply chain](https://www.commport.com/gs1-gdsn-network/). ## What channel-ready looks like: a resilient-wedge gate valve Here's the difference between a typical raw feed line and what a marketplace or partner channel actually needs. **Raw feed description:** "6 in resilient wedge gate valve, MJ, epoxy coated, for waterworks." **Enriched, channel-ready attributes:** | Attribute | Value | |---|---| | Product type | Resilient-wedge gate valve | | Nominal size | `6 in` | | Standard compliance | `AWWA C509` / `AWWA C515` | | End connections | Mechanical joint (MJ) | | Operating mechanism | Non-rising stem (NRS) | | Pressure rating | `200 psi` working | | Body material | Ductile iron | | Coating | Fusion-bonded epoxy, interior and exterior | | Waterway | Full port, unobstructed | | Certifications | UL Listed / FM Approved (where applicable) | | GTIN | Valid, brand-mapped 14-digit identifier | That table is what lets a marketplace facet by pressure class, what lets a spec engineer confirm C509 vs. C515 compliance before they'll even open your PDF, and what stops a buyer from bouncing to a competitor's listing that happened to fill in the pressure rating field. **Ask an answer engine:** a specifier searching "6 inch AWWA C515 gate valve MJ ductile iron 200 psi" is describing exactly the attribute set above. If your feed only has "resilient wedge gate valve for waterworks," you're invisible to that query — not because your product doesn't match, but because your data never said so in a form the engine could parse. ## Getting to channel-ready completeness without re-keying everything The instinct is to assign someone to manually rebuild these attribute sets SKU by SKU. That's roughly 30-45 minutes of skilled labor per SKU for a full spec pass — multiply that by a few thousand valves, fittings, hydrants, and meters, and it's a project that never gets prioritized, which is why so many waterworks feeds stay thin for years. This is where Anglera fits. Your PIM (or your flat file, if you don't run one) stores the data — Anglera does the work of extracting values from supplier spec sheets and cut sheets, quality-scoring what's already there, gap-filling what's missing, and mapping it to the attribute schema each channel expects. It's additive to whatever system you already run, plugs in without a rip-and-replace project, and a first pass across a catalog can be live in a matter of weeks, not a multi-year systems-integration engagement. The channels aren't going to loosen their bar — if anything, GDSN-style syndication and AI-driven search make structured, identifier-complete data more of a prerequisite, not less. The distributors who treat attribute completeness as ongoing infrastructure, rather than a one-time cleanup, are the ones whose listings keep showing up when it counts. --- # The safety & ppe attributes buyers filter on — and most catalogs miss Source: https://www.anglera.com/blog/safety-ppe-attributes Published: 2026-05-04 Industries: safety-ppe ![The safety & ppe attributes buyers filter on — and most catalogs miss](/og/hero-safety-ppe-attributes.jpg) Safety & PPE buyers rarely browse. A safety manager specifying gloves for a glass-handling line already knows the spec before opening a catalog. They filter for it, or ask an AI assistant for it. If the attribute isn't in a structured field, the product doesn't exist to them - even if it's the right glove sitting three rows down in the raw feed description. ## Why PPE is an attribute-first category PPE selection is regulated and litigated. OSHA compliance and ANSI/ISEA ratings mean a safety buyer isn't shopping on vibes - they're matching a hazard profile to a certified spec. A cut level A2 glove rated for light cardboard is a liability on a line cutting sheet metal. That makes the attribute the product, in a way that's less true for apparel or office supplies. The PPE distribution market is also growing fast, with e-commerce increasingly the primary procurement channel rather than counter conversations with a rep who can translate a vague ask into the right SKU, per [market research on PPE distribution](https://www.datainsightsmarket.com/reports/personal-protective-equipment-ppe-distribution-1424364). More of this buying is happening through filters and search than ever. ## The attributes that actually drive filtered search Here's the core schema for hand protection, the largest PPE category by revenue share and the one with the most standardized, and most often missing, rating data: | Attribute | Typical values | Standard | |---|---|---| | ANSI cut level | A1 through A9 | ANSI/ISEA 105 | | EN 388 cut level | A through F (ISO 13997) or legacy 0-5 blade score | EN 388 | | Abrasion resistance | 0-6 (ANSI) / 1-4 (EN 388) | ANSI/ISEA 105, EN 388 | | Puncture resistance | 1-5 (ANSI) / 1-4 (EN 388), newtons | ANSI/ISEA 105, EN 388 | | Shell material and gauge | Nylon, HPPE, steel-core, 13g/15g/18g | Manufacturer spec | | Coating material and coverage | Nitrile, polyurethane, latex; palm, 3/4, full dip | Manufacturer spec | | Cuff style | Knit wrist, gauntlet, safety cuff | Manufacturer spec | | Dexterity/touchscreen compatible | Yes/no, tactile grade | Manufacturer spec | | Chemical resistance | By chemical class (per EN 374 or supplier chart) | EN 374 | | Size range | XS-3XL | Manufacturer spec | Every category downstream of gloves follows the same pattern. Hi-vis apparel needs ANSI/ISEA 107 class (1, 2, or 3) and reflective material type. Respirators need NIOSH approval number and assigned protection factor. Fall protection needs ANSI Z359 category and maximum arrest force. Eye protection needs impact rating (Z87+) and lens tint. A certification code plus a handful of physical attributes determines whether a SKU is even legal to recommend for a given hazard. ## Where the data actually breaks Most PPE catalogs carry this information - just not in a field a filter can read. It's buried in a spec sheet PDF, folded into a product title as shorthand, or dropped when a supplier flat file gets mapped into a PIM with a generic template built for a different category. The failure mode is consistent. Faceted search on a distributor site can only offer a "Cut Level" filter if every SKU in that category has a value in that field. One gap and the buyer either sees an incomplete result set or sees a competitor's product instead, because theirs was mapped correctly. Industrial buyers already say they'd switch suppliers over search that can't get them to the right part fast, a frustration [Hum Commerce documents in its industrial supply research](https://humcommerce.com/industries/industrial-supply/). AI answer engines compound the problem rather than solve it. Ask one "what glove should I use for handling sheet metal with moderate cut risk" and it has to reason over cut level, coating, and dexterity at once - fields it can only surface if they're clean, extractable attributes rather than prose buried in a PDF. A page that says "durable industrial-grade protection" gives the model nothing to match against. A page with `ANSI Cut Level: A4`, `Coating: Sandy nitrile palm`, `Touchscreen compatible: No` gives it exactly what it needs to recommend your SKU by name. ## Before and after: a cut-resistant glove Here's a raw supplier feed description, the kind that shows up untouched in a lot of PIMs: > "13g nylon/HPPE blend shell blk sandy nitrile palm coat cut lvl 4 touch compat sz S-2XL good for glass/metal handling" Everything a buyer needs is technically in there. None of it is filterable. Here's the same SKU enriched into structured attributes: | Attribute | Value | |---|---| | Shell material | Nylon/HPPE blend, 13-gauge | | Color | Black | | ANSI cut level | A4 | | EN 388 rating | 4X42D | | Coating material | Sandy nitrile | | Coating coverage | Palm and fingertips | | Touchscreen compatible | Yes | | Size range | S, M, L, XL, 2XL | | Recommended applications | Glass handling, sheet metal handling, parts assembly | Now the SKU shows up when a buyer filters by "A4" and "touchscreen compatible," and when someone asks an answer engine for a touchscreen-friendly A4 glove for glass handling. Same product, same feed - the only difference is whether the data was pulled out and scored into fields. ## Structuring it so it holds up Three things make a PPE attribute schema durable rather than a one-time cleanup: - **Pull values from the source, not the copywriter.** Cut level, EN 388 code, and NIOSH numbers should come from the supplier's actual spec sheet or safety data sheet, not marketing text. Anything unverifiable gets flagged, not guessed. - **Score completeness by category, not by SKU count.** A catalog is only as good as its worst-covered segment. Track what percentage of gloves have a populated cut level field, not just how many gloves exist. - **Keep certification fields as controlled values, not free text.** "Cut Level A4," "cut level 4," and "A-4" are the same fact written three ways - a filter or an AI model treats them as three different things unless they're normalized. This is the layer Anglera works on. Your PIM - Akeneo, Salsify, inriver, or a flat file with no PIM at all - stores the catalog. Anglera reads supplier documentation, extracts and quality-scores attributes like cut level, coating, and certification codes, and gap-fills what's missing, so a SKU that's invisible in a filter today shows up correctly tomorrow. It's additive to whatever you already run, and most catalogs are live with real enrichment inside 30 days. Sources: - [Ergodyne: ANSI/ISEA 105 & EN 388 cut-resistant glove standards](https://www.ergodyne.com/blog/ansi-105-en-388-what-you-need-to-know) - [The ANSI Blog: ANSI/ISEA 105-2024 hand protection classification](https://blog.ansi.org/ansi/ansi-isea-105-2024-hand-protection-classification/) - [Hum Commerce: B2B ecommerce for industrial supply](https://humcommerce.com/industries/industrial-supply/) --- # Automotive Aftermarket is being reranked by AI. Is your catalog readable? Source: https://www.anglera.com/blog/automotive-aftermarket-aeo Published: 2026-05-04 Industries: automotive-aftermarket ![Automotive Aftermarket is being reranked by AI. Is your catalog readable?](/og/hero-automotive-aftermarket-aeo.jpg) A shop manager sourcing a fuel injector set for a Ford Powerstroke doesn't start by typing a part number into a search box anymore. He asks ChatGPT or an AI Overview what fits the engine, the model year, and the application, and expects a straight answer with a source attached. If your catalog can't hand a language model that answer in a format it can extract without guessing, your SKU doesn't make the list. A competitor's does. That's the new filter distributors are running through, and most fitment feeds were built for a catalog application, not a model deciding what to cite. ## The research step has moved off your site This isn't a marketing theory. A six-month AI-search case study on an aftermarket auto parts retailer showed AI referral revenue growing 344% between September 2025 and March 2026, with AI-driven visibility reaching more than a fifth of tracked prompts by the end of that window ([PR Newswire, Visibility Labs case study](https://www.prnewswire.com/news-releases/aftermarket-auto-parts-retailer-grows-ai-search-revenue-344-in-six-months-new-visibility-labs-case-study-shows-302774448.html)). Google's own AI Overviews now generate synthesized answers instead of a ranked list of links for common parts queries, pulling from multiple sources at once and often keeping the shopper from ever clicking through — what the industry calls zero-click search ([Hedges Company, AI Search for Auto Parts](https://hedgescompany.com/blog/2025/06/google-ai-search-for-auto-parts/)). The mechanism behind that shift matters more than the headline number. Google's AI reportedly runs "query fan-out," expanding a search like "brake rotors for a 2019 F-150" into related sub-questions on installation, torque specs, and OEM cross-references, then compares competing explanations paragraph by paragraph rather than ranking whole pages. Your content is competing at the level of a single, well-labeled fact, not a page title. ## Fitment complexity is exactly where thin data breaks Automotive aftermarket product data was already harder than most verticals because of fitment: year, make, model, trim, engine, drivetrain, and position all have to line up before a part is even a candidate. The industry's own standards body has been racing to keep pace — the Auto Care Association released ACES 5.0 and PIES 8.0 in 2026, describing them as machine-readable XML formats for exchanging fitment and product data across the Americas ([Auto Care Association, ACES and PIES Data Explained](https://automotiveaftermarket.org/aftermarket-industry-trends/aces-pies-data-explained/)). Major aftermarket distributors like Keystone, LKQ, and Turn 14 already operate ACES/PIES-compliant pipelines, and retailers who can't receive or transmit that structure face manual data handling and get excluded from automated catalog updates. Having ACES/PIES fields somewhere in a database isn't the same as having them clean, current, and readable in a product page or feed. A typical raw description still looks like this: **Raw ERP/catalog feed description (as-is):** > `INJ ASSY 6.7L PWRSTRK 11-16 F250/350 4X4 RH` A parts counter veteran can decode that in a glance. A language model deciding whether to cite this SKU against three competing listings has to guess at engine designation, confirm year range, confirm drivetrain applicability, and figure out what "RH" means in context — with no verified source to check its guess against. As fitment data ages across supplier updates, superseded part numbers, and regional catalog variants, that guesswork only compounds. An answer engine faced with that ambiguity does the safe thing: it either skips the part or hedges hard enough that the citation isn't really a recommendation. ## What machine-readable fitment actually looks like Enriched, the same listing reads like this: | Attribute | Value | |---|---| | Product type | Fuel injector assembly | | Engine | `6.7L Power Stroke` diesel | | Fits | `2011-2016` Ford `F-250`, `F-350` | | Drivetrain | `4x4` | | Position | Right-hand (passenger side) | | OEM cross-reference | Verified against manufacturer part number | | Superseded part numbers | Mapped and flagged current | | Source | Extracted from manufacturer documentation, quality-scored | That table is what feeds structured `Product` and vehicle-fitment schema, and it's the layer Google explicitly points to for helping search and AI systems understand attribute-level product detail beyond price and availability ([Google Search Central, Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product)). Answer engines lean on that same structured layer to decide what they can extract and quote with confidence rather than paraphrase around. **Ask an answer engine:** *"What fuel injector fits a 2013 Ford F-250 4x4 with the 6.7L Power Stroke, and who has verified fitment in stock?"* If year, engine, drivetrain, and position are sitting in verified, structured fields, an answer engine can match the query and name your part number directly. If that same information is compressed into an abbreviated string only a counter veteran can parse, the model has no defensible basis to recommend you over whichever competitor's page already spells it out. ## The gap is a data problem, not a catalog problem Distributors in this space don't lack fitment data — ACES/PIES has forced most of them to have some version of it somewhere. What they lack is confidence that the fitment attached to a given SKU is current, correctly mapped after a supersession, and readable outside a proprietary catalog application. A full PIM or DMS overhaul is a real option for some, but it's a multi-year systems project most distributors can't justify just to fix search visibility. The faster path is treating enrichment as its own layer: pull the ACES/PIES feed or flat file as it exists today, verify fitment and specs against manufacturer source documentation, score each attribute for confidence, and push the result back out as structured data that your site, your feeds, and your AI visibility all draw from — without replacing the ERP or catalog system already running the business. ## Where this is heading The distributors that show up in AI-generated answers over the next few years won't be the ones with the deepest fitment tables buried in a legacy system. They'll be the ones whose fitment data is legible enough for a model to trust in a single pass, with year, engine, and position sitting in fields it can quote instead of guess at. Anglera's enrichment layer plugs into whatever a distributor already runs — an ACES/PIES pipeline, a DMS, a flat file, or nothing formal at all — and turns thin, abbreviation-heavy fitment strings into verified, structured, quality-scored product data in weeks rather than a multi-year systems migration, so legibility to answer engines becomes a byproduct of how the catalog is maintained, not a project bolted on after the fact. --- # The product-data metrics Apparel teams should actually track Source: https://www.anglera.com/blog/apparel-metrics Published: 2026-05-03 Industries: apparel ![The product-data metrics Apparel teams should actually track](/og/hero-apparel-metrics.jpg) Apparel converts worse than almost any other ecommerce category, and the reason is rarely traffic quality. It's fit uncertainty, thin size charts, missing fabric and care detail, and product pages that make a buyer do research off-site before they'll click "add to cart." If you sell apparel, decorated apparel, or private-label lines, product data isn't a content task — it's a funnel input with a measurable P&L. Here's what to actually track, in what order, and how to prove the lift came from the data work and not from something else you shipped the same quarter. ## Start with the leading indicator: attribute completeness Completeness is the metric that predicts everything downstream, which is why it belongs at the top of any apparel measurement stack. Score each SKU against a required-field list specific to apparel — fabric composition, care instructions, fit type, size chart reference, color name plus swatch, and for decorated goods, print/embroidery method and placement. A [PIM completeness score](https://wisepim.com/guides/data-quality/data-completeness) moving from roughly 60% to 90% has been associated with meaningful conversion uplift, and vendors report brands losing double-digit percentages of clicks and conversions to incomplete or inaccurate listings. Pull this weekly from your PIM or catalog export, segmented by category and by supplier, since apparel completeness gaps cluster by vendor far more than by season. ## The metrics that matter, and what they tell you | Metric | Leading or lagging | How to measure it | |---|---|---| | Attribute completeness rate | Leading | Weekly export scored against a required-field template per category; track % SKUs at "publish-ready" threshold | | PDP conversion rate | Lagging | GA4 or platform analytics, PDP-view-to-purchase, segmented by category and by completeness tier | | On-site search zero-results rate | Leading | Search platform (Algolia, Klevu, native) query logs; % of searches returning no results | | Organic clicks to PDPs | Lagging | Search Console, filtered to product-page URLs, compared pre/post enrichment by cohort | | AI referral/citation traffic | Lagging, directional | GA4 referral source segmentation for known AI crawlers/referrers; treat as one channel among several | | Return rate (by reason code) | Lagging | Order management system return reason codes, split "wrong size/fit" vs "not as described" vs other | | AOV and attach rate | Lagging | Order data, segmented by whether the anchor SKU had complete cross-sell/size/fit attributes | | Support tickets per 1,000 orders | Lagging | Helpdesk tags for "sizing question," "fabric question," "wrong item received" | The split matters. Completeness and zero-results rate are things you can move this week and see react within days. Conversion, returns, AOV, and support load are the outcomes you're actually paid to move, and they lag the input by anywhere from a few days (search behavior) to a full return-window cycle (returns, typically 30-90 days for apparel). ## A concrete apparel example Take a mid-size activewear brand selling through its own DTC site plus a wholesale catalog feed to a marketplace. Its size chart exists as a static image on 40% of PDPs and is missing entirely on the rest; fabric composition is present but inconsistent ("poly/spandex blend" vs. `88% polyester / 12% elastane`); and decorated variants (embroidered team logos, printed graphics) have no placement or method field, so buyers can't tell a screen-print tee from an embroidered one until they open a zoomed image. Baseline before touching anything: attribute completeness at 58%, PDP conversion at 1.6%, zero-results rate on-site search at 12%, and returns at 24% of units, with "didn't fit as expected" as the top reason code — consistent with industry data showing [fit and sizing drive roughly half of apparel returns](https://www.prime-ai.com/en/media/clothing-return-rates-by-category-and-country-csf-a/). After enrichment work that standardizes fabric composition fields, adds a structured size chart per fit type, and adds decoration-method attributes extracted from supplier spec sheets: completeness moves to 91% within the first enrichment pass, zero-results search drops as size- and fabric-based queries start resolving, and — measured over the next full return-window cycle, not the next week — the "didn't fit" reason code share declines. The brand doesn't claim returns are "solved"; it reports the reason-code mix shift and ties it to the SKUs that were actually touched, not the whole catalog. ## Attributing change honestly Don't run this as one number before, one number after. Run it as a cohort comparison: - Tag every enriched SKU with an enrichment date and version. - Compare enriched SKUs against a matched control group of not-yet-enriched SKUs in the same category, same price band, same season, over the same time window. - Hold promotions, pricing changes, and paid traffic spend flat (or control for them) during the measurement window — a conversion lift that lines up with a 20%-off email blast isn't a data-quality win. - For returns specifically, measure at the reason-code level, not the aggregate rate, since aggregate return rate moves with weather, sizing trends, and holiday gifting regardless of data quality. ## Vanity metrics to skip Total SKU count enriched is an output, not an outcome — skip it in reporting to leadership. Raw pageviews without a PDP-to-purchase pairing tell you traffic changed, not that buyers found what they needed. And AI-citation counts in isolation are the wrong headline metric here: with [fashion ecommerce conversion averaging under 2% industry-wide](https://www.truefit.com/post/fashion-ecommerce-conversion-rate-benchmarks), the traffic source matters far less than whether the page that traffic lands on actually answers the fit, fabric, and care questions that stop apparel buyers from converting. ## Where this connects to the data layer None of these metrics move because a PIM exists — they move because the values in it are complete, correct, and structured consistently across every supplier feed. Anglera plugs into whatever catalog system an apparel team already runs, scores each SKU against category-specific completeness rules, and fills gaps from supplier spec sheets rather than guessing. The measurement discipline above is what turns that enrichment work from a project into a number a merchandising team can defend in a quarterly review. --- # Why electronic components SKUs go invisible: the attribute gaps that filter you out Source: https://www.anglera.com/blog/electronic-components-attributes Published: 2026-05-02 Industries: electronic-components ![Why electronic components SKUs go invisible: the attribute gaps that filter you out](/og/hero-electronic-components-attributes.jpg) An engineer filtering for a `0402`, `X7R`, `16V`, `10%` capacitor never sees your part if any one of those four fields is blank, mistyped, or buried in a PDF. Electronic components are the most attribute-dense category in distribution, and parametric search treats every attribute as a gate, not a suggestion. This is why so many otherwise-sellable SKUs sit invisible in a catalog that "looks fine" to a human but returns zero results to a machine. ## Parametric search doesn't degrade gracefully, it fails silently Most product categories tolerate a thin attribute set. A missing color or material on a furniture SKU costs a filter click, not a sale. Electronic components don't work that way. Engineers and buyers search by spec, not by brand or description, because a `100nF` capacitor from one supplier is functionally interchangeable with the same part from another, and the only thing that matters is whether it meets the circuit's requirements. Distributor and marketplace search tools (Digi-Key, Mouser, Octopart, Z2Data, Findchips) apply every selected attribute as an AND filter across the catalog. A [Z2Data breakdown of parametric search](https://www.z2data.com/insights/why-parametric-search-in-electronic-parts-is-only-as-good-as-your-filter) makes the point directly: "the effectiveness of parametric search is directly tied to the quality of its filters," and when the data is incomplete or unverified, "those shortcomings cascade through the entire search tool." A blank tolerance field isn't treated as "unknown, show it anyway." It's treated as "does not match," and the SKU drops out before a human ever sees it. The same failure mode now shows up in AI answer engines. A buyer asking an LLM sourcing assistant to find parts is having the model reason over structured attributes the same way a filter does, and [generative engine optimization coverage for ecommerce](https://blog.miva.com/generative-engine-optimization-ecommerce) points to AI-driven organic traffic to retail and B2B sites growing well over 100% in a matter of months, as AI shopping agents increasingly mediate the first touch with a buyer. Gapped component data doesn't get "mostly understood" by these systems. It gets skipped in favor of a competitor's SKU with a complete, structured spec sheet. ## The attributes that actually gate a component search Every component family has its own gating attribute set, but they share a shape: package, primary electrical rating, tolerance/stability class, and compliance/lifecycle status. For passives, the attributes buyers filter on, roughly in the order applied, are: | Attribute | Why it gates search | |---|---| | Package / case size (EIA code, e.g. `0402`, `0603`) | Determines physical fit on the board; usually the first filter applied | | Primary rating (capacitance, resistance, inductance) | The core electrical spec the design calls for | | Tolerance (e.g. `±10%`, `±5%`) | Determines whether the part meets circuit accuracy requirements | | Dielectric / temperature coefficient (`X7R`, `C0G`/`NP0`, `X5R`) | Governs stability across temperature and DC bias, critical for timing and RF circuits | | Voltage / current rating | A hard pass/fail cutoff, not a "nice to have" | | Termination / mounting style (SMD, through-hole, reflow-compatible finish) | Determines manufacturability on the buyer's line | | Operating temperature range | Filters for automotive, industrial, or extended-range use cases | | Compliance (RoHS, `AEC-Q200` automotive-grade) | A binary gate for regulated or automotive supply chains | | Packaging (tape and reel quantity, reel size) | Determines whether the part fits the buyer's assembly line, not just the design | Miss two or three of these and a part isn't "harder to find." It's mathematically excluded from most searches that would have converted, because the buyer's filter combination simply never intersects with a null field. ## Worked example: a 100nF MLCC Here's what this looks like on an actual SKU. Raw supplier feeds routinely compress an entire datasheet into one free-text description, and the structured fields a buyer or an AI agent would filter on never make it into the catalog. **Raw feed description (as received):** > `CAP CER 0.1UF 50V X7R 0402` — Ceramic Capacitor, general purpose, RoHS compliant. That string has real information buried in it, but it isn't queryable. A parametric filter or an answer engine can't reliably parse "0.1UF 50V X7R 0402" out of a free-text blob, especially once feeds mix formats across manufacturers. **Enriched attribute table:** | Attribute | Value | |---|---| | Component type | Multilayer ceramic capacitor (MLCC) | | Capacitance | `100 nF` (`0.1 µF`) | | Tolerance | `±10%` (code `K`) | | Rated voltage (DC) | `50V` | | Dielectric / temp. coefficient | `X7R` (±15% cap. change, `-55°C` to `+125°C`) | | Case size (EIA / metric) | `0402` (`1005` metric) | | Termination style | SMD, matte tin (Sn) over Ni barrier | | Mounting | Surface mount, reflow solderable | | Compliance | RoHS compliant; `AEC-Q200` not qualified | | Packaging | Tape and reel, 4mm pitch, 10,000/reel | Once the part looks like the table, it survives every filter combination a buyer might run: capacitance range, voltage minimum, dielectric class, case size, compliance. It also becomes legible to an answer engine, because the values are extracted from the datasheet and quality-scored, not guessed from a title. **Ask an answer engine:** "Find a 0402, X7R, 50V, ±10% MLCC in tape and reel, RoHS compliant, from an in-stock distributor." A model answering that is pattern-matching against structured fields. A SKU with those nine attributes present and correctly typed is retrievable. One compressed into a single description string is not, no matter how good the part is. ## Where the gaps actually come from This is usually a translation problem, not a data entry one. Manufacturer datasheets carry all of this information, but distributors and resellers ingest it from PDFs, scanned spec sheets, and inconsistent supplier feeds where the same attribute shows up under different labels ("Cap.," "Capacitance," "C," `nF` vs `uF`), or doesn't show up as a discrete field at all. Standardizing tens of thousands of SKUs against one attribute schema by hand is exactly the kind of work that gets deprioritized, since manual enrichment at the SKU level typically runs 30-45 minutes per part when a human is cross-referencing a datasheet. ## What this means for your catalog Anglera doesn't replace your PIM or the distributor feeds you already push to; it plugs into whatever you're running today, including a flat file, and does the extraction and quality-scoring work of turning a compressed description into a structured, gate-ready attribute set like the table above. Values are pulled from supplier documentation and scored for confidence, not fabricated. That's the difference between a SKU a buyer's filter or an AI sourcing agent can actually find, and one that's technically in the feed but invisible. Most teams get a meaningful slice of a catalog enriched and live in about 30 days, not a multi-year systems overhaul. --- # The product-data root cause behind most wrong-part returns Source: https://www.anglera.com/blog/product-data-behind-returns Published: 2026-05-01 ![The product-data root cause behind most wrong-part returns](/og/hero-product-data-behind-returns.jpg) Blame fraud. Blame sizing. Blame "shoppers being shoppers." That's the industry's go-to explanation for rising return rates, and it's mostly a dodge. The real driver is quieter: the product record the customer bought from didn't match the product that showed up. When a distributor's or retailer's feed is thin, stale, or inconsistent across channels, buyers order the wrong part, the wrong size, the wrong configuration. It comes right back. This is a data problem with a data fix, not a logistics problem. ## The cost math is bigger than the refund Wrong-item returns are the most expensive returns to process, because nothing about the transaction was actually broken except the information. The product worked. The payment cleared. The warehouse shipped correctly against what was listed. The listing was the defect. Recent research puts a number on how often that happens. Akeneo's 2025 consumer returns research found 43% of shoppers had returned a product in the past year because the pre-purchase information turned out to be wrong — averaging two such returns annually per shopper — and that two-thirds had abandoned a purchase outright over missing or inaccurate data ([Retail Times](https://retailtimes.co.uk/returns-are-rising-and-poor-product-information-is-to-blame/)). Salsify's 2025 consumer research found something similar from a different angle: 71% of shoppers have returned a product because it didn't match the online listing, and 54% had abandoned a cart because content was inconsistent across channels ([360 Magazine](https://360magazine.com/2025/09/02/product-returns-wrong-information-research/)). In parts categories specifically, industry estimates put incorrect fitment data behind close to 20% of returns ([PCFitment](https://pcfitment.com/blog/fitment-data-validation-reduce-returns/)). Then layer in the general cost structure. The National Retail Federation's return-rate research puts average retail returns near 17% of sales, and processing costs — reverse logistics, inspection, restocking, markdown, write-off — commonly run 20-65% of the item's value once a return is triggered. Do the math on a $40 SKU: ship it out, ship it back, inspect it for resale, and a single wrong-part return can cost more than the part is worth. None of that shows up on the "product data" line of a P&L. It shows up as freight and margin bleed, several steps removed from the cause. ## Which attributes actually prevent returns Not all attributes carry equal weight. The data that prevents a purchase-time mismatch is narrow — six categories, not sixty: | Attribute type | What goes wrong without it | Why it drives returns | |---|---|---| | Dimensions (L/W/H, weight) | Buyer assumes standard size, item doesn't fit the space/vehicle/opening | Largest single driver in furniture, appliances, auto parts | | Fitment / compatibility (make, model, year, thread size, voltage) | Part looks identical to the one needed but isn't compatible | Root cause of near-20% fitment-driven return rate | | Material / finish | Color or texture reads differently than expected | Drives "not as described" returns and disputes | | Variant-specific images | One hero image used across a color/size range | Buyer orders variant A, expects what they saw for variant B | | Included-in-box / kit contents | Buyer assumes parts, cables, or mounts are included | Common in electronics and DIY-assembly categories | | Certifications / compliance ratings | Buyer needs UL/CE/ADA/DOT compliance and can't tell from the listing | Drives returns in regulated categories and B2B procurement | Notice what's missing: marketing copy, long-form brand story, SEO keyword stuffing. None of it stops a wrong-part return. The attributes that matter are the ones a buyer, or an algorithm, uses to make a fit-or-no-fit decision before checkout. ## A short before/after Take a mid-tier cordless impact driver sold through a distributor's flat file. **Raw feed description:** "Impact driver, cordless, powerful motor, LED light, ergonomic grip. Great for professionals and DIY." **Enriched attribute table:** | Attribute | Value | |---|---| | Voltage | `20V` | | Battery included | `No — bare tool only` | | Max torque | `1,600 in-lbs` | | Chuck type | `1/4 in hex quick-release` | | Weight (with battery) | `2.8 lbs` | | Compatible battery platform | `Brand X 20V MAX series` | | Warranty | `3-year limited` | The raw description leaves out the single fact most likely to trigger a return: this is a bare tool, no battery. That one gap is a plausible reason buyers order it expecting a ready-to-use kit, then send it back the moment they open the box. Ask an answer engine "does this impact driver come with a battery," and if that answer isn't structured into the product data as a discrete attribute, the AI either guesses, declines to answer, or points the shopper to a competitor's listing that actually states it. Structured, gap-filled attributes aren't just a returns lever anymore. They're what determines whether a product surfaces correctly in AI-mediated shopping at all. ## A remediation plan that doesn't require a re-platform Most distributors already know their feed is thin. The stall point is usually the assumption that fixing it means a PIM migration or a multi-quarter systems integration. It doesn't. 1. **Score the catalog first.** Identify which SKUs are missing the six attribute types above, ranked by return volume or return cost — not alphabetical SKU order. 2. **Gap-fill from source documents.** Pull dimensions, fitment, and compliance data from supplier spec sheets, safety data sheets, and manufacturer catalogs rather than guessing or copying a competitor's listing. Values get extracted and quality-scored, not invented. 3. **Normalize across channels.** The same SKU should report the same weight and voltage on the retailer's own site, the marketplace listing, and any syndicated feed. 4. **Re-check before it goes live.** Flag attribute combinations that are physically inconsistent — a "cordless" listing with no battery attribute at all — before publishing, not after the return arrives. 5. **Monitor on a cadence.** Supplier catalogs change quarterly. A one-time cleanup decays within a year without ongoing scoring. None of this requires ripping out an existing PIM or CRM. It requires a layer that continuously scores and enriches the records already sitting in whatever system stores them today, starting from a flat file if that's what exists, and staying current as supplier data changes. ## Where this fits into the bigger picture Wrong-item returns are a symptom. Thin product data is the disease, and it's treatable without a systems overhaul. Anglera plugs into whatever a distributor or retailer already runs — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing at all — and continuously scores, gap-fills, and enriches the attributes that actually prevent a wrong-part return, keeping the catalog live in weeks rather than a multi-year integration. Your PIM stores the data. Anglera does the work of keeping it accurate enough that the box that arrives matches the one the buyer thought they ordered. --- # How plumbing & pvf buyers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/plumbing-aeo Published: 2026-05-01 Industries: plumbing ![How plumbing & pvf buyers search now — and why your catalog isn't the answer](/og/hero-plumbing-aeo.jpg) A pro buying a `2-inch` `Schedule 80` `CPVC` ball valve for a chemical plant retrofit doesn't start on your website anymore. He opens ChatGPT or Perplexity, describes the job, and asks for a spec-matched option with a lead time. If your product data can't answer that question directly, the engine skips you and cites someone whose data can. That shift is already showing up in distributor traffic and pipeline, and it rewards a different kind of product content than the PDF-and-ERP-export approach most PVF catalogs still run on. ## Buyers moved to answer engines faster than distributors moved their data This isn't a plumbing-specific trend, but plumbing and PVF are squarely inside it. Recent research puts AI usage in B2B purchase research at 73% of buyers, with 94% touching an AI tool somewhere in the process, and over half using it to compare vendors before a single sales call happens ([Yahoo Finance / multi-source B2B AI research](https://finance.yahoo.com/sectors/technology/articles/73-b2b-buyers-ai-tools-231200431.html), [Machine Relations, B2B AI Vendor Research 2026](https://machinerelations.ai/research/b2b-ai-vendor-research-2026)). Procurement teams are running prompts closer to "find me a supplier for `Schedule 40` galvanized fittings with next-day shipping in the Midwest" than typing a part number into a search box ([Traxtech, 66% of B2B buyers now use AI for supplier research](https://www.traxtech.com/ai-in-supply-chain/66-of-b2b-buyers-now-use-ai-for-supplier-research)). Some distributors are already seeing the traffic-side effect: website visits from organic search declining even as deal volume holds, because the research step that used to generate a site visit now happens inside a chat window. The buyer only clicks through once they've already narrowed the field. For PVF specifically, the stakes are higher than for a lot of retail categories. A pipe, valve, or fitting is only correct if the pressure class, material grade, end connection, and compliance rating all match the application — get one of those wrong and it's a change order, a failed inspection, or a callback. That makes PVF one of the categories where an AI answer engine has the most incentive to demand precise structured attributes before it will recommend a product at all. ## Why the catalog looks empty to an LLM even when it's full of parts Most PVF ERP and legacy catalog exports were built for a counter clerk with a paper catalog, not for a language model. A typical feed row looks like this: **Raw ERP feed description (as-is):** > `SS BALL VLV 2IN FNPT 1000WOG CF8M` That string is perfectly usable if you already know the abbreviation conventions of your ERP. It's close to meaningless to a model — or a buyer — trying to confirm the part fits a `1000 psi WOG` service line, because the pressure rating, material spec, and end connection are jammed into a single unstructured token with no schema around them. Enriched, the same SKU looks like this: | Attribute | Value | |---|---| | Product type | Ball valve | | Size | `2 in` | | End connection | `FNPT` (female threaded, both ends) | | Body material | `CF8M` (cast `316` stainless steel) | | Pressure rating | `1000 psi WOG` (cold working water/oil/gas) | | Port | Full port | | Standard compliance | `ASME B16.34` | | Typical application | Chemical, marine, corrosive service lines | That's the difference between a string an ERP can print on a pick ticket and a set of attributes an answer engine can reason over. When every value is labeled and typed, a model can match "chemical-service ball valve rated for 1000 psi in 316 stainless" to the SKU without guessing at what "CF8M" or "WOG" mean. ## Ask an answer engine: what this looks like in practice Here's a query a facilities or industrial buyer would plausibly run today: > "I need a 2-inch stainless ball valve rated for 1000 psi WOG for a corrosive chemical line, full port, threaded ends. Which distributors carry it and can ship this week?" An answer engine parsing that query is matching on: size, material grade, pressure rating, port style, end connection, availability. If your product page or feed encodes those as clean attributes — in the page content, in `schema.org` `Product`/`additionalProperty` markup, in a feed the model or its retrieval layer can actually parse — you're a candidate answer. If that same information only exists as a scanned spec sheet PDF or a jammed abbreviation string, the model has no reliable way to confirm the match, and it will cite a competitor whose data made the decision easy. This is consistent with what's being reported across AEO/GEO research generally: structured, explicitly labeled data is measurably more likely to get cited than unstructured pages, and pages with clear structured markup outperform equivalent unstructured content in AI citation studies ([Schema Markup for AI Search, ailabsaudit.com](https://ailabsaudit.com/blog/en/schema-markup-ai-visibility-guide)). ## What machine-readable actually requires None of this is exotic. It's the same enrichment work PVF distributors already know they're behind on, just with a new reason it matters: - Split compound spec strings into discrete, labeled attributes (material, pressure class, size, connection type, standard/compliance). - Standardize units and abbreviations so `WOG`, `CWP`, and `SWP` ratings aren't ambiguous or missing. - Fill the gaps supplier feeds leave blank — pressure ratings and compliance standards are the fields most often dropped in raw distributor data. - Keep it current as suppliers update specs, so the answer engine isn't citing a discontinued or re-rated part. Manually, that enrichment work runs somewhere in the range of 30-45 minutes per SKU when done by hand — checking supplier docs, normalizing units, filling gaps, re-verifying. For a distributor with tens of thousands of active PVF SKUs across multiple manufacturer lines, that's not a project a data team finishes before the next catalog refresh makes it stale again. ## Where this fits for distributors Your PIM or ERP is still the system of record — Anglera doesn't replace it and isn't a CRM add-on. What Anglera does is sit on top of whatever you already run (Akeneo, Salsify, inriver, Stibo, Pimcore, or nothing at all — a flat file is enough to start) and continuously extract, score, and gap-fill exactly the attributes that turn a jammed spec string into something an answer engine can match against a real-world query. Distributors who get their PVF data to that level aren't chasing a traffic number — they're making sure the right part shows up when a buyer asks the question that used to start with a phone call to your counter. --- # What your on-site search logs reveal about catalog gaps Source: https://www.anglera.com/blog/on-site-search-conversion-metrics Published: 2026-05-01 ![What your on-site search logs reveal about catalog gaps](/og/hero-on-site-search-conversion-metrics.jpg) Most retailers treat on-site search as a UX widget to tune, not a data-quality dashboard to read. That's a mistake. Every zero-result query, every filter a shopper tries and can't use, every search-result page someone abandons is a shopper telling you, in their own words, what your catalog is missing. Search users convert at roughly 2-3x the rate of browsers — [industry benchmarks put search conversion around 4-6%](https://www.opensend.com/post/on-site-search-conversion-rate-statistics-ecommerce) against a 1-3% site average — which means these logs aren't a minor UX report. They're your highest-intent traffic telling you exactly where the catalog fails them. ## The three signals that matter Site search platforms already expose these numbers. The problem is almost nobody routes them to the merchandising or content team as a to-do list. | Signal | What it shows | Where to find it | |---|---|---| | Zero-results rate | Queries with no matching products — vocabulary gaps, missing synonyms, or products that genuinely lack the attribute a shopper searched for | Search analytics platform (Algolia, Bloomreach, Klevu) or GA4 event `view_search_results` filtered to zero results | | Searches with no filter coverage | Shoppers who search, then try to filter by an attribute (size, material, voltage, compatibility) that isn't populated on enough SKUs to be a usable facet | Faceted nav analytics or a query against your PIM/catalog export: attribute fill rate per category | | Search-exit rate | Shoppers who search, land on a results page, and leave without clicking a product | Search analytics session flow, or GA4 exploration comparing `view_search_results` to next-page or `select_item` events | Industry data on zero-results is consistent enough to plan against: a typical catalog runs [10-15% zero-result queries](https://helloretail.com/en/blog/2026-02-24-ecommerce-search-statistics/), well-run search engines get that under 5%, and top performers push toward 2%. Every point above that floor is either a synonym problem your search vendor can patch, or a coverage problem only enrichment can fix — and you need to know which is which before you spend engineering time on the wrong one. ## Reading zero-results as a coverage audit, not a search-tuning task Pull your top 100-200 zero-result queries for the last 30-90 days and split them into two buckets: **Vocabulary gaps** — the product exists, but the query used different words than your title, description, or attribute values ("15mm socket" vs. "15 millimeter socket," "waterproof" vs. `IP67`). These are synonym-dictionary fixes on the search platform side. **Coverage gaps** — no product in the catalog carries the attribute value being searched, or the value exists in a supplier spec sheet but was never extracted into a structured, searchable field. This is the larger bucket in most catalogs, and it's an enrichment problem, not a search-relevance problem. A shopper searching "food-safe stainless" or "5-year warranty" is describing an attribute your PIM may have room for but doesn't actually have populated at scale. The split matters because [Baymard Institute's research on no-results pages](https://baymard.com/learn/ecommerce-filter-ui) found roughly a third of sites still treat a zero-result page as a dead end, with no recovery path — and a static suggestion box on the results page can't fix a query that's asking for an attribute value that genuinely doesn't exist anywhere in the catalog. You can't merchandise your way out of a data gap. ## Filter usage tells you which attributes to prioritize Faceted filters are a second, quieter signal. If shoppers repeatedly select a filter and it collapses their result set to near-zero, or if a facet you'd expect to be well-used (like "compatible with" or "certification") barely gets clicked because it's greyed out or sparsely populated, that's a direct read on attribute fill rate by category — ranked by actual buyer demand, not by whichever fields happen to be easiest to fill first. This is a better prioritization signal than guessing which attributes "should" matter, because it's built from real search behavior instead of assumption. Cross-reference filter engagement against your attribute completeness report (most PIMs, from Akeneo to Salsify to Pimcore, can export fill rate by attribute and category). Where filter demand is high and fill rate is low, that's the enrichment queue, ranked by revenue opportunity rather than gut feel. ## Search-exit rate closes the loop Zero-results and filter gaps tell you what's missing before the click. Search-exit rate tells you what's missing after it — a shopper found something, clicked in, and still didn't buy. Compare PDP-level bounce and exit rates for traffic arriving from on-site search against traffic arriving from category browse. A meaningfully higher exit rate from search traffic usually means the result matched the query on title alone but the PDP itself doesn't answer the question the search implied — missing spec, no compatibility info, no size chart, an incomplete image set. Search sent a high-intent shopper to the right page; the page itself didn't close the sale. ## Turning this into a measurement loop 1. Pull top zero-result and low-CTR queries monthly, tag each as vocabulary or coverage. 2. Cross-reference filter usage with attribute fill rate by category to rank enrichment priority. 3. After each enrichment pass, re-measure zero-results rate, search-driven conversion, and PDP exit rate on the affected categories, not just sitewide averages — sitewide numbers dilute the signal from the SKUs you actually touched. 4. Track the downstream metrics too: fewer zero-result and support-ticket-driving queries usually shows up as lower return rates and lower support load, since the same missing attributes that block a search often show up later as a "why doesn't this fit" ticket or a return reason code. On-site search logs are a live, high-intent feedback channel on catalog completeness — arguably a better one than organic search or AI-referral traffic, because it's your own buyers, on your own site, describing exactly what they can't find. Anglera reads that gap the same way: it scores attribute completeness against your live catalog, extracts and fills the missing values from supplier and source documentation, and pushes them back into whatever PIM you run — so the fixes show up where your search logs said they needed to be, without a rebuild. --- # Launching thousands of SKUs: the catalog cold-start problem Source: https://www.anglera.com/blog/catalog-cold-start-thousands-skus Published: 2026-05-01 ![Launching thousands of SKUs: the catalog cold-start problem](/og/hero-catalog-cold-start-thousands-skus.jpg) A new supplier line lands. You win a distribution agreement. A category buyer signs off on 6,000 SKUs for a spring reset. Whatever the trigger, the result is the same: a flat file, a deadline, and a catalog that isn't ready to sell. This is the catalog cold-start problem, and it's the least glamorous, most expensive moment in retail and distribution operations. ## Why cold-start breaks the usual playbook Most product-data processes are built for steady-state maintenance: a trickle of new items, a content team that reviews a few hundred SKUs a week, a PIM that holds everything neatly once it's in. Cold-start is the opposite. It's a batch shock. Thousands of SKUs, from one or many suppliers, all at once, all needing titles, attributes, categorization, and images before they can go live anywhere. Two forces collide: - **Supplier data is inconsistent by default.** One [industry analysis](https://archive.distributionstrategy.com/turning-product-data-from-a-million-dollar-drain-to-a-strategic-advantage/) notes that a single SKU can carry more than 700 potential attributes, arriving in as many as 500 different supplier formats, spreadsheet layouts, and naming conventions. Nothing about that maps cleanly to your taxonomy. - **Manual enrichment doesn't scale linearly.** It scales at roughly the same per-SKU rate whether you have 50 items or 50,000. If a person needs 30-45 minutes to research, gap-fill, and quality-check a single SKU's attributes, 5,000 new SKUs is 2,500-3,750 hours of work — more than a full year of one analyst's time, before a single item is live. That math is why cold-start batches routinely blow through launch dates. A global industrial manufacturer studied by [Blue Meteor](https://bluemeteor.com/manufacturers-guide-to-multi-sku-product-onboarding/) was taking 45 days to onboard new SKUs before centralizing the process — and manufacturers running catalogs above 10,000 SKUs see roughly 25% higher processing costs from manual inefficiency alone. ## What "not ready" actually looks like Cold-start catalogs don't fail because data is missing outright. They fail because it's thin, inconsistent, and unstructured. A typical raw supplier feed row: ``` SKU: WP-2240-BLK Name: Widget Pro 2240 Black Desc: Heavy duty widget for industrial use. Good quality. Black finish. ``` That's enough to import. It's not enough to sell, filter, or answer a buyer's question. Compare it to what a buyer actually needs to make a decision: | Attribute | Raw feed | Enriched | |---|---|---| | Title | Widget Pro 2240 Black | Widget Pro 2240 Heavy-Duty Industrial Widget, Black, 3/8 in | | Material | (missing) | Cold-rolled steel, powder-coated | | Dimensions | (missing) | 3.75 in L x 1.2 in W x 0.85 in H | | Load rating | (missing) | 2,240 lb static | | Compliance | (missing) | ANSI B18.2.1 | | Compatible with | (missing) | Widget Pro mounting bracket series 2200-2299 | The left column is what gets dumped into the PIM on day one of a cold-start launch. The right column is what site search, faceted filters, and comparison shopping actually run on — and it's the version that survives being asked a real question. ## The AI-search wrinkle nobody planned for Cold-start data doesn't just need to satisfy a category page anymore. Google's Merchant Center now spans roughly 50 billion product listings, refreshed at up to 2 billion updates per hour, and the company has added dozens of new attributes specifically for conversational shopping — compatible accessories, substitute products, answers to common product questions — as part of the shift toward AI-driven and agentic shopping surfaces, according to [reporting on Google's agentic commerce strategy](https://stellagent.ai/insights/google-ads-product-data-agentic-commerce). Queries inside AI Mode also run 2-3x longer than a typical keyword search, which means the data has to answer a fuller question, not just match a term. Ask an answer engine "which black industrial widget rated for 2,240 lb fits a 2200-series mounting bracket" and the raw feed row above returns nothing useful. The enriched row is the only one that can be matched, cited, and recommended. A cold-start batch that ships thin is invisible to that traffic on day one — and stays invisible until someone circles back to fix it, which, at 30-45 minutes a SKU, is exactly the work nobody has time to do during a launch crunch. ## Why the fix isn't "hire more analysts" or "wait longer" The two default responses to a cold-start batch are throwing headcount at it or pushing the launch date. Both have real ceilings. Headcount is linear cost against a fixed per-SKU time budget — it doesn't change the 30-45 minute rate, it just buys more parallel copies of it, and quality still varies by whoever's working that day. Pushing the date delays revenue and cedes shelf space, physical or algorithmic, to whoever launched first. The operational fix is to change what "enrichment" means at the moment of intake: extract and normalize attributes from supplier docs automatically, score every SKU for completeness and consistency against your taxonomy, and route only the genuine judgment calls to a person. That's a fundamentally different throughput curve than a person reading a spec sheet and retyping it into a spreadsheet 5,000 times. ## What this means for how you plan a launch A few practical implications for anyone staring at a cold-start batch: 1. **Score before you build.** Know which SKUs are missing which attributes before assigning work, so effort goes to actual gaps. 2. **Treat the supplier flat file as the starting line, not the finish line.** A spreadsheet from a new vendor is rarely launch-ready; budget the gap-fill step into onboarding, not as a post-launch fire drill. 3. **Plan for AI-visible data, not just page-visible data.** The attributes that make a product filterable are the same ones that make it answerable by AI shopping tools. 4. **Decouple the timeline from headcount.** If your launch date depends on how many analysts you can staff, the plan runs on the wrong unit economics. None of this requires ripping out your PIM or standardizing every supplier before they'll work with you — both are multi-year fantasies for most distributors and retailers. Anglera exists for exactly this moment. It plugs into whatever PIM you already run — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or none at all — and can start straight from a flat file. It scores every incoming SKU for completeness, extracts and quality-checks attribute values from the supplier's own documentation rather than guessing, and gap-fills at a pace no manual team can match, going live in about 30 days rather than a multi-quarter implementation. Your PIM still stores the data. Anglera is what turns a cold-start batch into a catalog that's actually ready to sell — and ready to be asked a question. --- # How building materials buyers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/building-materials-aeo Published: 2026-05-01 Industries: building-materials ![How building materials buyers search now — and why your catalog isn't the answer](/og/hero-building-materials-aeo.jpg) A GC's estimator used to start a materials search with a phone call or a distributor's catalog PDF. Increasingly, they start with a prompt. Machine Relations' 2026 buyer research puts 94% of B2B buyers using generative AI somewhere in their purchase process, with more of them naming AI tools as their most meaningful research source than vendor websites, product experts, or reps combined ([Machine Relations, 2026](https://machinerelations.ai/research/b2b-ai-vendor-research-2026)). A separate survey of over 350 B2B buyers found one in four now prefer AI chatbots to conventional search when researching suppliers, and two-thirds rely on them as much as Google ([Digital Commerce 360, 2025](https://www.digitalcommerce360.com/2025/10/15/generative-ai-traditional-search-b2b-vendor-discovery/)). For a building materials distributor, that shift lands on a specific weak point: the product data itself. ## The shortlist forms before your rep gets the call When a buyer asks an answer engine to compare `R-13 vs R-15 fiberglass batt insulation for a 2x4 wall in climate zone 4`, or find `a distributor stocking Type X fire-rated drywall in 5/8 inch thickness with same-day will-call`, the model isn't browsing your site live. It's reasoning over whatever structured, citable text it can already parse, and it moves on quickly when a product page doesn't answer the question. There's no estimator on the other end to say "let me check the spec sheet." An AI agent comparing suppliers just drops the row that doesn't parse and keeps the one that does. That's a rough fit for an industry whose catalogs were built for ERPs, not readers. Building materials data has always been notoriously inconsistent across manufacturers and distributors: one supplier lists a `2x6x8 PT lumber`, another lists `TREATED 2X6-8FT`, and R-value, fire rating, or coverage-per-unit show up in a linked spec-sheet PDF instead of on the page. A contractor might dig through that. A model comparing ten distributors' attributes side by side just skips the one it can't read. ## Why ERP-style feeds go invisible to LLMs | ERP-style feed | Machine-readable product content | |---|---| | `SKU: 88213`, `Desc: INSUL BATT R13 15x93` | Full name, R-value, thickness, width, length, coverage area, fire/smoke rating | | Inconsistent units and abbreviations per supplier | Normalized dimensions and attribute names across the whole catalog | | Spec buried in a linked PDF datasheet | Specs as structured, queryable attributes on the page itself | | No application or compatibility context | Use-case, code compliance, and comparison context an answer engine can quote | A part number and a linked datasheet might satisfy a yard's inventory system. It gives an AI answer engine nothing to cite back to a buyer. ### Before and after: a fire-rated drywall SKU **Raw feed description:** `GYP BD 5/8 TYPE X 4X8` with a PDF spec sheet link and no other page attributes. **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Type X fire-rated gypsum board | | Thickness | `5/8 in` | | Panel size | `4 ft x 8 ft` | | Fire rating | 1-hour rated assembly (UL-listed core) | | Edge type | Tapered | | Typical application | Fire-rated wall and ceiling assemblies, commercial and multifamily | | Compliance | Meets ASTM C1396 | The second version is what a model can actually answer a code-compliance question with. The first is a warehouse label. ## Ask an answer engine: try it yourself Type this into ChatGPT or Perplexity: `Which distributor stocks 5/8 inch Type X drywall rated for a 1-hour wall assembly with same-day pickup?` Watch which names come back, and which don't. Structured data isn't a nice-to-have here, it's the difference between showing up and not: pages with clear headings and rich structured markup see roughly 2.8x higher citation rates from AI answer engines than unstructured pages, according to AirOps' analysis of the current AI search landscape ([AirOps, 2026 State of AI Search](https://www.airops.com/report/the-2026-state-of-ai-search)). If your product page only exposes a part number and a PDF link, you're not in that answer, regardless of how much inventory is actually sitting in your yard. ## What changes, and what doesn't This isn't an argument for ripping out your ERP or PIM. Distributors run on those systems for inventory, pricing, and order flow, and none of that needs to move. The gap is between what those systems store and what a buyer, human or AI, needs to read: complete, normalized, quality-scored attributes, in the vocabulary contractors and models actually search in, kept current as manufacturers update specs and SKUs turn over. Manual enrichment at that level typically runs 30-45 minutes per SKU when a team does it by hand, which is why most catalogs never get past the ERP description in the first place. Anglera is built for that specific gap. Your PIM or ERP keeps storing the data; Anglera scores, gap-fills, and enriches it on top, plugging into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file if that's what a distributor is running today. Values are pulled from real supplier documentation and quality-scored, not invented, and a distributor can have a working, machine-readable feed live in 30 days or less rather than a multi-year systems project. The buyers asking answer engines about R-value and fire ratings aren't waiting for that project to finish. The channel is being reranked right now, one prompt at a time. Catalogs that read clearly, to people and to models, get cited. The rest get skipped without anyone noticing until the quotes stop coming in. --- # Syndicating mro & industrial data to every channel without the re-keying Source: https://www.anglera.com/blog/mro-industrial-syndication Published: 2026-04-29 Industries: mro-industrial ![Syndicating mro & industrial data to every channel without the re-keying](/og/hero-mro-industrial-syndication.jpg) A flange-mount bearing unit with a two-line title, no bore diameter, and a stock photo doesn't rank low on Amazon Business or a Grainger-style marketplace — it often doesn't get indexed into the right search facet at all. MRO and industrial distributors push the same SKU across a dozen channels — marketplaces, punchout catalogs, EDI feeds to national accounts, their own site — and most feeds were built for the ERP, not for any of them. Here's what the channel bar actually looks like, and how to clear it without re-keying every SKU by hand for every destination. ## The feed works for the warehouse, not for the channel Most MRO and industrial feeds started as an ERP export: part number, short description, price, UOM, maybe a linked spec-sheet PDF. That's enough to pick, pack, and invoice. It's not enough for a marketplace listing algorithm or an AI system trying to match "1 inch bore flange bearing, stainless, eccentric locking" to a specific SKU. Those systems don't read PDFs — they read structured fields, and anything missing gets suppressed, buried, or excluded entirely. The gap breaks down into three failure modes, fixed in different ways: - **Content gaps** — thin titles, no bullet-level specs, no use-case language a buyer or a search engine can match against. - **Attribute gaps** — the values that actually drive fit and filtering (bore, housing style, load rating, seal type) sitting only in a manufacturer's cut sheet PDF instead of structured, filterable fields. - **Identifier gaps** — missing or inconsistent GTIN, no UNSPSC or eCl@ss classification, or a manufacturer part number that doesn't match what's registered upstream. Amazon's own seller guidance draws the line clearly: universal fields get a listing into the catalog, and category-specific attributes determine whether it stays visible, with more than 274 attributes now defined across roughly 200 product types ([Inriver](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). Amazon Business applies that gate to bearings and fasteners like anything else, with a GS1-sourced GTIN required in most categories ([GS1](https://www.gs1.org/industries/selling-online)). ## The bar MRO channels actually enforce Whether the destination is a marketplace, a national-account punchout catalog, or a distributor's own site search, the same underlying data gets checked before a SKU can compete: | Layer | What's checked | Why it gates the listing | |---|---|---| | Identifiers | GTIN/UPC, manufacturer part number, UNSPSC or eCl@ss classification | Places the SKU in the right taxonomy node and search facet | | Core attributes | Bore/shaft diameter, housing style, locking method, seal type, load rating | Drives filtered search and "does this fit" matching | | Compliance | ABMA/ISO standard reference, material spec, agency marks | Required for procurement sign-off, often a hard filter | | Content | Title, bullet specs, application context, image count | Determines rank and click-through once the SKU is eligible | Bearings carry hundreds of ANSI, ISO, and ASTM standards governing size, tolerance, and material — an ISO dimension reference tells a buyer precisely what size they're getting, and an ASTM steel spec tells them what the part is made of ([Alpine Bearing](https://alpinebearing.com/alpine-bearing/technical-standards-for-bearings/)). That data exists; it's just trapped in an engineering PDF instead of a field a marketplace or punchout feed can ingest. ## A mounted ball bearing, before and after Here's the same physical part as it typically arrives from a manufacturer, next to what a marketplace listing or EDI/punchout feed needs before it will display, filter correctly, or clear a national account's catalog validation. **Raw feed description:** "4-bolt flange bearing unit, stainless steel, for washdown and corrosive environments, relubricatable." **Channel-ready attribute table:** | Attribute | Value | |---|---| | Bore diameter | `1 in` (`25.4 mm`) | | Housing style | 4-bolt flange | | Housing material | Stainless steel, `AISI 304` | | Locking method | Eccentric locking collar | | Insert bearing type | Ball, wide inner ring | | Seal type | Triple-lip contact, washdown-rated | | Dynamic load rating (C) | `10.8 kN` | | Static load rating (C0) | `6.2 kN` | | Max speed | `5,000 RPM` | | Standard reference | `ABMA 9` | | GTIN | `00614xxxxxxxx` | | UNSPSC | `31171505` (Bearings) | One version is a sentence built for a spec sheet. The other is the field set a marketplace's category schema, a punchout catalog's cXML product record, and a buyer's filter panel all need populated to treat the SKU as real. ## Ask an answer engine Type "1 inch bore stainless flange bearing, eccentric locking, washdown rated" into an AI shopping assistant or a procurement copilot, and it can only surface a SKU where those values exist as parseable data — a structured attribute, a spec table, or schema markup on the page — not a sentence it has to interpret and risk getting wrong. Distributors selling the identical part with only a marketing description are, functionally, invisible to that query, no matter how good the physical bearing is. ## Why exporting more fields doesn't fix it The instinct is to add columns to the feed template and move on. The problem is most distributors don't have bore diameter, load rating, and GTIN sitting cleanly in one place — one lives in a cut sheet, another in a spreadsheet a category manager maintains by hand, and the GTIN may not exist at all for a private-label part. Reconciling that by hand runs 30-45 minutes per SKU once someone pulls the datasheet, checks the standard reference, and types values into the right fields — and MRO catalogs run into the tens or hundreds of thousands of SKUs across bearings, fasteners, and power transmission alone. Poor product data is already a documented driver of abandoned carts and lost conversion in ecommerce broadly ([GoDataFeed](https://www.godatafeed.com/blog/poor-product-data-and-campaign-performance)); a marketplace or punchout channel just enforces that cost earlier, at the listing gate, instead of at checkout. ## Where Anglera fits Your PIM stores the data; Anglera does the work of making it channel-ready everywhere it needs to go. It plugs into whatever's already in place — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file if there's no PIM at all — and scores, gap-fills, and enriches attributes like bore diameter, load rating, and GTIN from the supplier documentation that already exists, not by guessing. Most MRO and industrial catalogs can move from raw feed to marketplace-ready completeness in 30 days or less, without a rip-and-replace project or a re-keying sprint per channel. The channels aren't going to relax the bar. The faster path is clearing it once, in the data itself, so every marketplace and partner feed simply inherits the result. --- # What messy product data actually costs Fasteners distributors Source: https://www.anglera.com/blog/fasteners-state Published: 2026-04-29 Industries: fasteners ![What messy product data actually costs Fasteners distributors](/og/hero-fasteners-state.jpg) Fastener distribution is a specs business before it's anything else. A single wrong character in a thread callout — coarse instead of fine, metric instead of SAE — turns a routine order into a returned box, a stalled production line, or worse. In 2026, with the channel growing again and buyers doing more of their own research through search engines and AI tools, the cost of a thin or wrong product page is higher than it's ever been. ## The industry is growing, but the data underneath it hasn't caught up The [Fastener Distributor Index](https://www.nfda-fastener.org/fastener-distributor-index), a monthly survey of North American fastener distributors run by the FCH Sourcing Network and Baird, has posted more than a year of expansionary readings heading into mid-2026, with the index and its forward-looking component both signaling steady growth alongside a healthy industrial PMI. That's good news for volume. It says nothing about whether the catalogs behind that volume are usable. Most fastener distributors still run on a patchwork: manufacturer spec sheets in PDF, flat files from mills and importers, ERP fields never designed to hold thread pitch or grade markings, and PIM records that were populated once and rarely revisited. Industry-wide research on distributor product data backs this up: [60% of distributors report product data inconsistencies as a key challenge](https://bluemeteor.com/product-data-challenges-that-hurt-industrial-distributors/), manual data entry contributes to roughly 30% of the errors in product information, and 70% of distributors say keeping catalogs accurate and current across thousands of SKUs is a persistent struggle. Fasteners compound the problem because the attribute set is unusually unforgiving — diameter, pitch, length, head style, drive type, material, coating, grade, and the standard it's certified to (SAE J429, ASTM A325, ISO 898-1, and so on) all have to be right, individually, on every SKU. ## What gets missed, and why it's expensive The failure modes in fasteners are specific: - **Grade and standard confusion.** [SAE Grade 5 and metric class 8.8 look similar on a spec sheet](https://www.americanfastener.com/astm-sae-and-iso-grade-markings-for-steel-fasteners/) but use different thread systems entirely; mixing them causes cross-threading and fit failures, not just a wrong SKU. - **Vague or missing thread pitch.** When a supplier's data leaves pitch or pitch diameter blank, the gap gets filled by assumption — the classic source of geometry mismatches that show up as returns or, on load-bearing applications, as failures in the field. - **Coarse vs. fine thread mislabeling.** A one-word error in a title or attribute field is enough to ship the wrong part to a buyer who specified by catalog number, not by drawing. - **Thin PDPs with no searchable attributes.** A page that only has a manufacturer's marketing description, with no structured diameter, grade, or standard field, is invisible to both a distributor's own site search and to any AI tool trying to match a buyer's query. None of this is hypothetical to a distributor's P&L. Returns tied to wrong-part shipments carry restocking, freight, and account-credit costs. Support tickets for "which fastener do I need" pull technical staff off higher-value work. And every SKU with a thin or wrong PDP is a SKU that doesn't convert — whether the buyer is a purchasing agent searching a distributor's site or an engineer asking a chatbot for a cross-reference. ## Before and after: the same bolt, two different data states **Raw feed description:** `Hex Head Cap Screw, 3/8-16 x 1, Zinc` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Product type | Hex head cap screw | | Thread size | `3/8"-16` (UNC, coarse) | | Length | `1 in` | | Grade / standard | SAE J429 Grade 5 | | Material | Medium carbon steel | | Finish/coating | Zinc plated (clear) | | Head style | Hex, indented | | Drive type | External hex | | Tensile strength | 120,000 psi min | | Thread system | Inch (UNC) — not interchangeable with M10 x 1.5 metric | The first line tells a search engine or a buyer almost nothing about whether this part fits their application. The second lets a buyer confirm fit, compare against a competing SKU, and gives an AI answer engine enough structure to actually recommend it. **Ask an answer engine:** "grade 5 hex bolt 3/8-16 by 1 inch, zinc plated, in stock" — a query like this only resolves to the right product when thread size, grade, and coating are separate, correctly labeled fields, not buried in a free-text title. ## Why 2025-2026 makes this urgent Three things are converging on fastener distributors right now: 1. **AI-mediated research is now the default first stop.** Forrester's 2026 global buyer survey found that 94% of B2B buyers now use AI during a purchase process, with AI tools ranking as the top vendor-research source ahead of company websites and sales reps. A distributor whose PDPs lack structured, correct attributes simply doesn't surface in that research. 2. **Buyers increasingly prefer to skip the sales rep.** Gartner's B2B buying research found [67% of B2B buyers now prefer to complete purchases without interacting with a sales rep](https://www.digitalcommerce360.com/2026/03/17/gartner-b2b-buyers-rep-free-purchasing-ai-reshapes-sales/), and Gartner analyst Alyssa Cruz notes buyers are "progressing through critical buying tasks in more autonomous ways." In fasteners, that means the technical knowledge a counter rep used to supply on a phone call now has to live on the page itself. 3. **Channel pressure and tariffs are squeezing margins.** With the FDI's own commentary pointing to tariff-driven cost pressure and freight uncertainty even as volume grows, distributors have less room to absorb the cost of returns and mis-shipments caused by data that was wrong from the start. Put together, a fastener distributor with incomplete or inconsistent product data isn't just losing a few sales to a competitor's cleaner catalog. It's losing visibility in the channel where more buyers are starting their search, and it's paying for that gap twice — once in the sale it never gets, and once in the return or support call for the sale it gets wrong. ## Where this leaves distributors None of this requires ripping out an ERP or a PIM and starting over. Your PIM stores the data; the problem in fasteners has never been storage, it's been getting every SKU's thread pitch, grade, standard, and finish extracted correctly from supplier documentation, scored for completeness, and kept current as specs change. That's the work Anglera does — plugging into whatever system a distributor already runs, gap-filling and quality-scoring the attributes that make a fastener page usable to a buyer or an answer engine, without waiting on a multi-year systems overhaul to get there. --- # Cutting wrong-part returns in fasteners with better product data Source: https://www.anglera.com/blog/fasteners-guide Published: 2026-04-29 Industries: fasteners ![Cutting wrong-part returns in fasteners with better product data](/og/hero-fasteners-guide.jpg) A counter tech orders a `1/2-13 x 2` hex bolt off a spec sheet, and what arrives is the right diameter, the wrong grade, and definitely not rated for the application it's going into. Nobody typed a wrong number — the product page just never said what grade it was. Multiply that gap across a catalog of 50,000 fastener SKUs and you get a returns line that looks like a shipping problem but is actually a data problem. ## Why fasteners break product pages Most industrial and B2B distribution categories can get away with a name, a price, and a photo. Fasteners can't. A single hex bolt is defined by diameter, thread pitch, length, grade, material, head style, drive type, and finish — and a customer needs most of those fields correct simultaneously, not approximately. [Distributor Data Solutions' fastener content guide](https://www.distributordatasolutions.com/wholesale-fastener-product-data-comparison-guide/) puts a number on how thin that data usually is: a typical mid-sized distributor carries around 40,000 SKUs but has usable e-commerce content on only about 5% of them — roughly 2,000 parts — because most fastener manufacturers "historically haven't invested in distributor-ready digital content." Everything else is a part number and whatever the ERP happened to inherit from a decades-old catalog import. That same analysis estimates returns running near 4% of online fastener revenue for a distributor with thin content, with better product data cutting that by 15-25%. That's not a rounding error on a fastener business running on thin margins and high order volume — it's the difference between a counter team fielding "is this the right bolt" calls all day and one that isn't. ## What a fasteners buyer actually needs answered Before a purchasing agent, maintenance tech, or engineer will trust an "add to cart" button on a bolt, they're scanning for a specific, short list of answers. For a grade 8 hex bolt, that list is: - What grade is it, and how is that verified — head marking, mill cert, or both? - What's the exact thread callout (`1/2-13 UNC` vs `1/2-20 UNF`) — not just "1/2 inch"? - What material and heat treatment produced the strength rating (medium carbon alloy steel, quenched and tempered)? - What's the tensile strength, yield strength, and proof load — and does it meet [SAE J429](https://www.engineersedge.com/hex_bolt_identification.htm) or an equivalent standard? - What finish or coating is it — plain, zinc plated, or hot-dip galvanized to [ASTM F2329](https://www.portlandbolt.com/technical/specifications/astm-f2329/)? - Is it compatible with the nut, washer, or coating system it's going to be torqued against? Miss any one of those and the buyer is guessing — or worse, assuming the bolt in front of them behaves like the last one they ordered. ## The grade 8 hex bolt, before and after Here's what a typical ERP-sourced product description looks like next to what the buyer actually needed to see. **Raw feed description:** `HXBLT 1/2 X 2 GR8 ZN` **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Hex bolt (hex cap screw) | | Nominal size | `1/2 in` | | Thread | `1/2-13 UNC` | | Length | `2 in` | | Grade | SAE Grade 8 (6 radial head lines) | | Material | Medium carbon alloy steel, quenched and tempered | | Tensile strength | `150,000 psi` minimum | | Yield strength | `130,000 psi` | | Proof load | `120,000 psi` | | Finish | Zinc plated (not hot-dip galvanized) | | Standard | SAE J429 Grade 8 | | Typical use | High-load fastening — machinery, suspension, structural steel | That single row of grade and finish detail is the difference between a bolt that clears an inspection and one that comes back with a rejection tag. [Grade 8 and Grade 5 bolts can carry visually similar markings in poor lighting or with worn heads](https://www.engineersedge.com/hex_bolt_identification.htm) — engineersedge's own identification chart warns that markings alone aren't always reliable, which is exactly why the spec needs to live on the page, not just on the bolt head. Finish matters just as much as grade. A zinc-plated Grade 8 bolt and one hot-dip galvanized to ASTM F2329 are not interchangeable in every application — galvanizing requirements explicitly exclude fasteners heat-treated above a certain hardness, which rules it out for some high-strength grades entirely. A page that just says "ZN" doesn't tell a buyer which one they're getting, or whether it's even the right process for that grade. ## Ask an answer engine This is also how buyers are starting to search. Someone typing "what's the proof load on a grade 8 half inch bolt" into an AI answer engine isn't going to get your product surfaced if that number lives only in a PDF spec sheet a sales rep emails on request. The answer engine needs the tensile strength, proof load, and standard sitting in structured, machine-readable text on the page itself — the same fields a human buyer is scanning for. ## The distributor checklist For any fastener SKU, a product page should be able to answer: - Diameter, thread pitch, and thread series (UNC/UNF/metric) - Length, measured the way the industry measures it for that head style - Grade or class, with the governing standard cited (SAE J429, ASTM A325, ISO 898-1, etc.) - Material and heat treatment - Tensile strength, yield strength, and proof load - Finish/coating, with the applicable coating spec - Head style and drive type - Compatible mating hardware (nut class, washer type) where relevant If a SKU is missing more than one or two of those, it's a candidate for the return queue before it's even a candidate for the cart. ## Where this actually gets fixed None of this requires re-platforming the catalog. Anglera reads the same supplier documents and mill certs your team already has — spec sheets, ERP exports, even a flat file — and fills in the grade, thread callout, tensile and proof load, and finish fields that are currently blank, scoring each SKU so you can see exactly how complete it is before a customer finds the gap. Your PIM or ERP still stores the record; Anglera does the extraction and gap-filling work, live in weeks rather than a multi-year integration. For a category where the difference between two SKUs is a single digit in a thread callout, that's the layer that keeps the right bolt going out the door. --- # Your PIM stores the data. Something still has to do the work. Source: https://www.anglera.com/blog/pim-stores-data-work-remains Published: 2026-04-28 ![Your PIM stores the data. Something still has to do the work.](/og/hero-pim-stores-data-work-remains.jpg) Every PIM vendor now ships an AI button. Generate a description, auto-tag an image, translate a title. Useful features, all of them. None of them answer the actual question a distributor with 40,000 SKUs across six supplier feeds is asking: who is going to sit down and make this data correct, complete, and current — not once, but every week, forever. A system of record was never built to be a system of labor. That distinction is where most catalog-ops budgets quietly go to die. ## Storage and work are different jobs A PIM is, at its core, a very good database with a very good UI. Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica — they all do the same foundational thing well: give every SKU one governed home, enforce a schema, push clean feeds to channels. That's storage. It's not nothing. Before a PIM, a mid-size distributor's product truth lived across a dozen spreadsheets and an ERP field nobody trusted. But storage assumes the data going in is already good. Real supplier feeds aren't. A commodity supplier ships a flat file with `SS 1/4-20 X 1 HEX HD CAP SCR` in the description field and nothing in a third of the attribute columns. That's not a PIM problem — the PIM will store that string faithfully forever. It's a data problem, and it existed before the PIM and survives after it, because nothing in the platform's job description says "go figure out what this abbreviation means, split it into structured attributes, and flag the missing thread pitch." ![Diagram: where Anglera fits — sources flow through Anglera's enrichment layer into your PIM, ERP, or MDM, then out to every channel](/diagrams/stack-fit.svg) ## Why the AI button doesn't close the gap Every major PIM now markets generative AI enrichment. Akeneo's AI Configurations can generate descriptions and auto-tag assets from existing product data and images; inriver has built AI-driven data quality checks and auto-mapping into its onboarding flow; Salsify focuses its AI on reshaping content per retailer syndication spec ([Akeneo AI-enhanced enrichment docs](https://help.akeneo.com/serenity-boost-your-productivity/ai-enhanced-enrichment-in-the-pim)). These are genuinely helpful for polishing copy on records that are already mostly complete. They were not built to run as an unattended operating layer against a raw, gap-riddled supplier feed. The tooling assumes attributes exist to be rewritten, not invented from a scanned spec sheet. It assumes a human is previewing and approving output on a record-by-record basis, not that ten thousand SKUs need scoring, prioritizing, and continuous re-checking as suppliers push updates. A "generate description" button is a feature. A pipeline that ingests a flat file, scores every SKU for completeness, extracts missing values from the source documents that actually contain them, and re-runs itself when the feed changes is an operating model. Those are not the same category of thing, and treating the first as a substitute for the second is how catalogs stay half-enriched two years into a PIM rollout. The stakes for getting this wrong are no longer abstract. Gartner has said that through 2026, a majority of organizations will abandon AI initiatives because the underlying data isn't ready to support them ([Gartner: Lack of AI-Ready Data Puts AI Projects at Risk](https://www.gartner.com/en/newsroom/press-releases/2025-02-26-lack-of-ai-ready-data-puts-ai-projects-at-risk)). A PIM full of governed-but-incomplete records is exactly that trap — well-organized emptiness. ## What the gap costs, concretely **Raw feed, as received:** > `SS 1/4-20 X 1 HEX HD CAP SCR` **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Hex head cap screw | | Material | Stainless steel | | Thread size | `1/4-20` | | Length | `1 in` | | Head style | Hex | | Drive type | External hex | | Finish | Passivated | | Country of origin | Extracted from supplier cert | The left side is what most flat files and legacy ERP exports actually contain. The right side is what a buyer's filter, a retailer's syndication template, and an AI answer engine all need to do anything useful with the part. Nothing about moving that row into a PIM converts the left side into the right side. Somebody, or something, has to do that conversion, attribute by attribute, sourced from the manufacturer spec sheet or cert rather than guessed. Ask an answer engine "1/4-20 stainless hex cap screw, passivated, 1 inch length" and it needs those discrete fields to match confidently — not a nine-word abbreviation it has to parse and hope. Structured, complete attribute data is measurably more likely to surface in AI-generated answers and shopping surfaces than sparse records, which is the practical reason this stopped being a nice-to-have ([Google's 2026 structured product data guidance](https://www.stackmatix.com/blog/structured-data-ai-search)). ## The operating model, not another platform Manually doing that extraction — reading a spec PDF, cross-referencing a supplier's naming convention, typing values into eight attribute fields — runs in the neighborhood of 30 to 45 minutes per SKU when a merchandising team does it by hand. At 5,000 or 50,000 SKUs, that math is the real reason catalogs stay incomplete; it's not that teams don't know what "done" looks like, it's that nobody has the labor hours. This is the specific gap Anglera works in. Your PIM stores the data. Anglera does the work: it plugs into whatever's already running — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing more than a flat file export — and continuously scores every SKU for completeness, pulls missing values out of the actual supplier documentation, and re-checks records as source data changes. It's additive, not a PIM replacement, and it's live against a real catalog in weeks rather than a multi-year systems-integration project. The values come from the source, quality-scored against it, not invented. The PIM question every distributor should be asking in 2026 isn't which platform has the shinier AI button. It's who, or what, is actually doing the recurring work of making the data in that platform trustworthy enough for a buyer, and increasingly an answer engine, to act on without hesitation. --- # Scoring product-data quality so it improves instead of decaying Source: https://www.anglera.com/blog/scoring-product-data-quality Published: 2026-04-27 ![Scoring product-data quality so it improves instead of decaying](/og/hero-scoring-product-data-quality.jpg) Most catalog cleanups follow the same arc: a big enrichment push, a temporary spike in quality, then a slow slide back toward chaos as new SKUs, supplier updates, and marketplace exports pile back on. The problem isn't that teams don't care about data quality. It's that they measure it once, as a project, instead of scoring it continuously, as a metric. Here's how to build a scoring system that actually holds the line. ## Why catalogs decay by default Product data isn't static, even when nobody touches it. Suppliers revise spec sheets, categories get restructured, new attributes become mandatory for a channel, and last quarter's "complete" record quietly falls behind. This mirrors the broader pattern of data decay across business systems, where records erode continuously unless something actively maintains them ([Object Edge](https://www.objectedge.com/blog/understanding-the-phenomenon-also-known-as-data-decay/)). A PIM doesn't stop this. A PIM stores whatever was true (or good enough) on the day someone entered it. It has no opinion about whether that record still meets the bar six months later, or whether the bar itself has moved because a retailer or an AI answer engine now expects more. That's the core distinction worth internalizing: your PIM is a system of record, not a system of quality. Scoring has to sit on top of it. ## The four dimensions worth scoring Data quality literature converges on a consistent set of dimensions, and for product data specifically, four map cleanly to buyer and channel needs ([Atlan](https://atlan.com/data-quality-metrics/), [GS1](https://www.gs1.org/standards/gs1-global-data-model/everyone-needs-better-product-data)): | Dimension | What it measures | Example failure | |---|---|---| | Completeness | Are required and channel-specific fields populated? | Marketplace requires 8 bullet points; record has 3 | | Consistency | Does the same attribute match across SKUs, categories, and systems? | "Voltage" stored as `24V`, `24 volts`, and `24-Volt` in the same category | | Accuracy | Do values match the true spec, not just something plausible? | Weight copied from a similar SKU during a rushed import | | Richness | Is there enough structured, buyer-relevant detail to answer real questions? | Dimensions listed, but no material, load rating, or compatibility data | Retail data-quality programs, including GS1's, treat physical attributes and net content as high-stakes fields precisely because errors there cascade into returns, compliance issues, and even GTIN reassignment requirements ([GS1 US](https://www.gs1us.org/services/data-quality)). Distributors should treat their highest-return, highest-search categories the same way: score them harder than the long tail. ## What a score actually looks like A useful score is not a single number pulled from a vibe. It's a weighted composite per SKU, rolled up by category, brand, and supplier, so you can see where the catalog is actually weak instead of guessing. For example, a mid-tier scoring model might weight completeness and accuracy higher for categories with high return rates or high search volume, and weight richness higher for categories where buyers compare technical specs before purchase (industrial components, electronics, safety equipment). The output isn't "94% complete" as a vanity metric. It's a ranked list: these 400 SKUs are below the bar, here's why, here's the fastest fix. ## Before and after: a torque wrench listing Raw supplier feed description: "Torque wrench 1/2 drive adjustable" Enriched attribute table: | Attribute | Value | |---|---| | Drive size | `1/2 in` | | Torque range | `10-150 ft-lb` | | Accuracy rating | `±4%` | | Handle type | Ergonomic, non-slip grip | | Calibration | Factory-calibrated, ISO 6789 compliant | | Case included | Yes, molded storage case | | Use case | Automotive, HVAC, general maintenance | The raw feed has four words of information. The enriched version answers the questions a buyer, a distributor's search filter, and an AI answer engine all ask independently. Ask an answer engine "what torque wrench works for automotive lug nuts and is ISO calibrated," and only the enriched record has the structured attributes to surface as a confident match. The raw description doesn't contain the words "calibration," "ISO," or "torque range" at all, so it's invisible to that query even if the product is the right one. ## Setting a real bar, then holding it A bar only works if it's specific and enforced at the point of ingestion, not discovered in a quarterly audit. Practical thresholds worth adopting: - Completeness: 95%+ on required fields for products actively selling ([Atlan](https://atlan.com/data-quality-metrics/) cites similar thresholds as standard practice across product data programs). - Consistency: zero tolerance on unit-of-measure and naming variance within a category, since this is the cheapest defect to catch and the most damaging to search and filtering. - Accuracy: values traceable to a source document, not inferred by analogy to a similar SKU. - Richness: a defined minimum attribute count per category, set by what buyers and retail requirements actually ask for, not by what's easy to fill in. Below the bar should trigger action automatically, not sit in a dashboard. Above the bar should be revalidated on a cadence, because "passed once" and "still true" are different claims. ![Diagram: Anglera's continuous enrichment loop — extract, normalize, gap-fill, score, maintain — re-running as data changes](/diagrams/enrichment-loop.svg) ## Continuous scoring instead of periodic cleanup The reason cleanups don't stick is that they treat quality as a project with an end date. A scoring system that runs continuously catches drift as new SKUs land, suppliers push updates, or a category's requirements change, and it flags what actually fell below the bar instead of forcing a full re-audit. That's the difference between a catalog that improves and one that just gets cleaned periodically while decaying in between. This is the problem Anglera is built to sit on top of. Your PIM stores the data; Anglera scores it against completeness, consistency, accuracy, and richness continuously, gap-fills from real supplier and source documents rather than guessing, and keeps flagging what drifts below the bar as the catalog changes. It's additive to whatever PIM you already run, or to a flat file if you don't have one, and most teams see it working inside 30 days rather than committing to a multi-year systems overhaul. --- # Building an attribute schema for Pumps & Fluid Power that buyers and AI can actually use Source: https://www.anglera.com/blog/pumps-fluid-power-attributes Published: 2026-04-27 Industries: pumps-fluid-power ![Building an attribute schema for Pumps & Fluid Power that buyers and AI can actually use](/og/hero-pumps-fluid-power-attributes.jpg) A pump listing that says "centrifugal pump, cast iron, 5 HP" reads fine to a human skimming a page. It is close to useless to a filtered search facet or an AI answer engine trying to match a duty point. In Pumps & Fluid Power, the attributes that matter are the ones tied to an engineering spec sheet, not the ones that read well in a paragraph. Get the schema right and a SKU shows up in every relevant filter and every relevant AI query. Get it wrong and the part is technically in the catalog and functionally invisible. ## Why "pump" is not an attribute Most supplier feeds for pumps arrive as a title, a category, a price, and a block of marketing prose. That works for a homepage banner. It does not work for a buyer or a bot trying to answer "what pump handles 250 GPM at 120 ft of head in 316 stainless." Filtered search on a distributor site runs on discrete, comparable fields: flow rate, head, materials, connection size, seal type. If those fields are blank or buried in a PDF, the facet has nothing to filter on, and the product drops out of every query that uses that facet — even though the pump would have been a correct match. The same failure shows up one layer up, at the feed level. Google's own [product data specification](https://support.google.com/merchants/answer/7052112?hl=en) is explicit that incomplete or inconsistent attribute values (wrong category, missing variant attributes, conflicting data between feed and site) cause disapprovals or limited eligibility — not just a slightly worse ranking. Missing attributes are not a cosmetic gap. They are a removal mechanism. ## The attribute set that actually matters For Pumps & Fluid Power, the attributes that drive both filtered search and AI matching map closely to what a mechanical engineer would pull off a real datasheet, not a marketing description: | Attribute | Example value | Why it matters | |---|---|---| | Pump type / configuration | End suction, horizontal, single stage, centerline discharge | Determines mounting and application fit | | Flow rate (duty point) | 250 GPM (57 m³/h) | Primary filter facet; buyers search by flow first | | Total dynamic head | 120 ft (36.6 m) | Paired with flow rate to define the duty point | | NPSHr | 8 ft | Prevents cavitation misapplication | | Casing / wetted materials | 316 stainless steel | Chemical compatibility filter | | Impeller type | Closed, semi-open | Solids handling / efficiency filter | | Seal type | Mechanical seal, single, John Crane-style | Maintenance and fluid compatibility | | Suction / discharge size | 3 in x 2 in, ANSI 150 flange | Pipe fit-up, non-negotiable filter | | Motor power | 10 HP (7.5 kW) | Electrical sizing | | Speed | 3,550 RPM | Duty and NPSH relationship | | Efficiency at duty point | 78% | Energy cost comparison | | Max operating temp / pressure | 250°F / 150 psi | Application safety limit | | Standard / certification | ASME [B73.1](https://www.asme.org/codes-standards/find-codes-standards/b73-1-specification-horizontal-end-suction-centrifugal-pumps-chemical-process), API 610 | Dimensional interchangeability, spec compliance | Note that this list is close to the ASME B73.1 dimensional-interchangeability standard for horizontal end-suction pumps — that standard exists precisely so a pump from one manufacturer can be swapped for another at the same duty point. If your attribute schema doesn't capture the fields the standard governs, you can't make that swap claim searchable, even when it's true. ## Before / after: an end-suction centrifugal pump Here's a typical raw supplier feed description for a mid-size end-suction centrifugal pump: **Raw feed description:** "Heavy-duty centrifugal pump for industrial applications. Reliable performance, durable construction, easy maintenance. 5HP motor. Cast iron." That's a real string pulled from a real class of supplier feed — and it fails almost every filter on a distributor site. No flow rate, no head, no connection size, no seal type, no NPSHr. A buyer filtering for "250 GPM, 316SS, mechanical seal" never sees it, even if the physical pump qualifies. Enriched, the same SKU looks like this: | Attribute | Value | |---|---| | Type | End suction, horizontal, single stage, centerline discharge | | Flow rate | 250 GPM at duty point | | Total head | 120 ft | | NPSHr | 8 ft | | Casing material | Cast iron (316SS option) | | Impeller | Closed, bronze | | Seal | Mechanical seal, single | | Suction x Discharge | 3 in x 2 in, ANSI 150 | | Motor | 5 HP, 3,550 RPM, TEFC | | Max temp / pressure | 250°F / 150 psi | | Standard | ASME B73.1 dimensional class | Same physical pump. One version is invisible to a facet search. The other is matchable on eleven independent filters, and it's the version that shows up when someone asks an answer engine "recommend an ASME B73.1 end-suction pump rated for 250 GPM at 120 ft head in cast iron with a mechanical seal." That phrasing — flow, head, material, seal type, standard — is exactly how a distributor's own sales engineers already talk. Structured data just makes it legible to a machine. ## Structuring it so it holds up The fix isn't a bigger free-text field. It's a schema where every attribute above is its own discrete field with a controlled unit (GPM vs m³/h, ft vs m, both if you serve mixed markets), pulled from the actual supplier datasheet or spec PDF rather than typed from memory. Values need a source and a confidence score, because a flow rate guessed from a title is a liability the moment a buyer specs against it. This is the part that's tedious at scale and easy to get wrong manually — mapping a hundred-line PDF spec sheet into eleven clean fields per SKU, repeated across thousands of pumps, valves, actuators, and fittings, typically runs 30-45 minutes of manual work per SKU. Anglera plugs into whatever PIM a distributor already runs — Akeneo, Salsify, inriver, or none at all — and does that extraction and gap-filling continuously, scoring each attribute against the source document rather than inventing a number. Your PIM still stores the data; Anglera does the work of making sure every pump has the eleven fields a buyer, a facet, and an AI answer engine all need to find it. --- # Feed completeness: why an 80%-filled catalog loses to a 100% one Source: https://www.anglera.com/blog/feed-completeness-100-percent Published: 2026-04-27 ![Feed completeness: why an 80%-filled catalog loses to a 100% one](/og/hero-feed-completeness-100-percent.jpg) Eighty percent complete feels like done. It isn't. The last 20% of attributes — the ones buyers filter on, marketplaces gate on, AI answer engines cite — is where most of the lost revenue hides. Here's why "mostly filled in" quietly loses to "fully filled in," and what it takes to close that gap without re-keying every SKU by hand. ## 80% complete feels done. It isn't. Picture two feeds for the same SKU category. Feed A has title, price, a stock photo, and a short description pulled from the supplier catalog — call it 80% filled against the channel's schema. Feed B has all of that plus verified dimensions, material, compliance certs, compatible accessories, and a spec table structured as real fields instead of a PDF attachment. Feed A looks fine in a spreadsheet. It fails in the three places that actually decide whether the product sells: - **Search and filter.** A buyer filtering by voltage, thread size, or NSF rating never sees a SKU whose value for that attribute is blank. - **Marketplace gating.** Google, Amazon, and most B2B marketplaces auto-suppress or downrank listings missing required or category-specific attributes. Incomplete data is one of the most common causes of feed disapprovals and de-indexing, and it takes almost nothing to trigger ([Productsup](https://www.productsup.com/blog/top-5-reasons-for-google-merchant-center-disapprovals-and-how-to-fix-them-in-2026/)). - **AI answer engines.** A model asked to recommend a product can't cite an attribute that isn't there. It doesn't guess on your behalf — it skips you and answers with whatever SKU has the field filled in. The 20% gap isn't evenly distributed noise. It's concentrated in exactly the fields buyers filter on and channels enforce, which is why it costs more than its size suggests. ## Why the shopper cares more than the spreadsheet suggests Consumer research backs this up directly, and B2B buying behavior tracks the same pattern even though the surveys skew retail. Salsify's consumer research has repeatedly found that a large share of shoppers won't buy without adequate information: in earlier waves, 46% said they won't buy a product if they can't find detailed information online, and incomplete or poorly written descriptions are consistently named among the top reasons shoppers abandon a cart ([Salsify](https://www.salsify.com/research-consumers-demand-product-content)). Separate research on ecommerce behavior puts the number even higher — a majority of shoppers say they'll abandon a site outright if product information is missing or insufficient, and a meaningful share of returns trace back to the product not matching its listing. Distribution buyers are less impulsive than retail shoppers. They're not more patient, though. A procurement engineer who can't confirm a torque spec or a compliance cert from your feed doesn't call to ask. They move to the next line item — on a competitor's catalog, where the field is populated. ## The gap compounds, it doesn't just sit there An 80%-complete feed isn't a static 20% loss. It compounds across every channel that ingests it: | Where it shows up | What an 80% feed does | What a complete feed does | |---|---|---| | Marketplace search | Buried below fully-attributed competitors | Ranks on filtered, spec-level queries | | Feed compliance | Flagged, suppressed, or de-indexed for missing required fields | Passes validation, stays listed | | Distributor/reseller re-syndication | Downstream partners inherit the gap and add their own | Downstream partners publish clean, faster | | AI answer engines | Not cited — the model has nothing to cite | Cited by attribute, with the value attached | | Returns | Higher, because the buyer guessed at missing specs | Lower, because the listing matched the product | Every additional channel your data feeds doesn't just repeat the problem. It multiplies the number of places a gap can silently cost you a sale, a listing, or a citation. ### Before and after: same SKU, two feeds Raw supplier feed, typical of what arrives from an ERP export: > "Industrial ball valve, 2 inch, stainless steel, standard duty." Enriched, channel-ready attribute table: | Attribute | Value | |---|---| | Port size | `2 in NPT` | | Body material | `316 stainless steel` | | Pressure rating | `1000 PSI WOG` | | Seat material | `PTFE` | | Connection type | `Threaded` | | Certifications | `NSF/ANSI 61` | | Compatible actuators | `Pneumatic quarter-turn, 90-degree` | Ask an answer engine "2 inch stainless ball valve rated for potable water with pneumatic actuator compatibility" and only the second version has the fields for a model to match against. The first version is a plausible-sounding sentence with nothing structured underneath it. ## Closing the last 20% without re-keying everything by hand The last 20% is disproportionately expensive to fix manually because it's the least standardized part of the catalog: obscure attributes, inconsistent supplier naming, specs buried in PDF datasheets instead of structured fields. Manual enrichment at that level of detail typically runs somewhere in the 30-45 minute per SKU range once you include research, verification, and data entry. That's exactly why most catalogs stall at "mostly done." The fix isn't a rip-and-replace of whatever system already holds your data. Your PIM — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or none at all — stores the data. The work that closes the gap is continuous: scoring every SKU against what each channel actually requires, extracting missing values from supplier and source documents rather than inventing them, quality-scoring what comes back, and pushing verified attributes into the fields that are currently blank. That's additive to whatever's already in place, and it can start from a flat file if that's all you have — live in weeks, not a multi-year systems-integration project. ## The completeness gap is a discovery problem before it's a data problem Treating an 80%-filled catalog as "basically done" assumes buyers and answer engines will fill in the blanks themselves. They won't. They'll move to the listing that already has the answer. Anglera exists for exactly this gap: it scores, gap-fills, and continuously maintains the attributes that sit between "the data exists somewhere" and "the data is where a buyer, a marketplace, or an AI answer engine can actually use it." --- # The state of product data in MRO & Industrial (2026) Source: https://www.anglera.com/blog/mro-industrial-state Published: 2026-04-25 Industries: mro-industrial ![The state of product data in MRO & Industrial (2026)](/og/hero-mro-industrial-state.jpg) An MRO catalog is a moving target: hundreds of thousands of SKUs, sourced from thousands of manufacturers, each shipping specs in its own format on its own schedule. Most distributors have been patching that problem with spreadsheets and tribal knowledge for twenty years. In 2026, three things are converging to make that patchwork untenable: buyers who no longer tolerate it, AI systems that can't parse it, and a channel structure that's shifting faster than the data underneath it. ## What's actually broken Walk into any MRO distributor's product data operation and the pattern repeats: manufacturer content arrives as PDFs, cut sheets, and half-populated flat files, and someone on staff is manually retyping specs into the PIM or ERP because there's no other way to get a bearing's bore diameter or a fastener's thread pitch into a structured field. [Industrial Supply's product data management overview](https://www.distributordatasolutions.com/industries/industrial-supply/) puts the scale problem plainly: as SKU counts expand and manufacturer relationships multiply, internal teams get buried under inconsistent data and constant updates, forcing the same cleanup work over and over instead of once. The result shows up on the product page. A raw manufacturer feed for a common industrial item might hand a distributor this: **Raw feed description:** `Ball Bearing, Sealed, 25mm Bore` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Bore diameter | 25 mm | | Outside diameter | 52 mm | | Width | 15 mm | | Seal type | Double-sealed (2RS) | | Dynamic load rating | 14.0 kN | | Max speed (grease) | 12,000 RPM | | Housing compatibility | Pillow block, flange mount | | Lubrication | Pre-lubricated, standard grease | One version tells a buyer this is "a bearing." The other tells a maintenance engineer whether it fits the pillow block already bolted to their conveyor, at 2 a.m., without a call to the counter. That gap is why so many distributors still run a phone-and-counter business behind a thin website. Search on the site can't filter by a spec that was never captured, so the buyer either calls or leaves. Neither outcome shows up as a "data quality problem" in a quarterly review, but both are exactly that. ## What it costs The costs are boring and compounding, which is why they get ignored: - **Returns.** Incomplete or inconsistent product data is a well-documented driver of B2B returns — the wrong thread pitch, the wrong voltage rating, the missing compatibility note — and every one of those returns costs more to process than the margin on the part itself. - **Lost search, on-site and off.** Distributors managing tens or hundreds of thousands of SKUs across dozens of categories routinely lose buyers to competitors with better product discovery simply because a filter or spec was never populated in the first place. - **Thin PDPs that undersell the SKU.** A product page with a title, one photo, and a price is a page an engineer can't spec against. It doesn't just lose the sale on that page — it teaches the buyer to stop trusting the site's data at all, which pushes them back to a phone call or a competitor's catalog. - **Manual rework that never ends.** Every supplier onboarding, every catalog refresh, every new manufacturer line means someone re-keying specs by hand — a process that typically runs in the 30-45 minute per SKU range when done manually, which is a real number when a distributor is onboarding thousands of new parts a year. None of this is new. What's new is that the cost of ignoring it just went up. ## Why 2025-2026 changes the math Three things are compounding at once. **AI answer engines are now where B2B research starts.** [Forrester's 2026 Buyers' Journey Survey](https://machinerelations.ai/research/b2b-ai-vendor-research-2026) of roughly 18,000 global business buyers found that 94% used AI somewhere in their most recent purchase process, up from 89% just a year earlier, with 54% using AI tools specifically for product research and 55% using them to compare vendors. When a buyer asks an assistant "find a sealed 25mm bearing rated for 12,000 RPM with pillow block compatibility," the answer engine pulls from whichever source has that spec in a clean, structured format. A PDF cut sheet or a bare product title doesn't get cited. A complete attribute table does. **Digital-native buyers expect a self-service spec search, not a counter conversation.** The generational handoff on the buying side is real: procurement is increasingly done by people who grew up filtering products online before they ever picked up a phone, and they treat a distributor's search bar the way they'd treat any e-commerce site. Distributors that can't support that expectation are ceding ground to newer, tech-forward competitors who compete on speed and transparency rather than relationship history. **Channel leaders are moving first, and moving on data.** Grainger's own 2026 commentary is instructive here — [Digital Commerce 360 reported](https://www.digitalcommerce360.com/2026/02/04/grainger-ai-sales-marketing-keepstock-tools/) that CEO D.G. Macpherson pointed to years spent building "core product and customer information assets" as the foundation now enabling its AI-driven sales and search tools, with e-procurement and EDI already accounting for roughly 40% of Grainger's order origination. When the largest player in the category is explicit that clean product data is the prerequisite for its AI push, smaller and mid-size distributors don't get to treat their own data as an afterthought — the baseline buyers expect has moved. Put together: the buyer has changed, the channel has changed, and the interface they're both using to find a part has changed. The one thing that hasn't caught up, at most distributors, is the data underneath the catalog. ## Where this leaves distributors and manufacturers None of this requires ripping out an ERP or a PIM system. It requires treating product data as a discipline that gets maintained continuously, gap-filled from real supplier documentation, and scored for completeness the way inventory is scored for accuracy — because a spec table an AI engine can parse and a buyer can trust is now table stakes, not a nice-to-have. This is precisely the layer Anglera works on. Your PIM or ERP still stores the data; Anglera continuously scores, gap-fills, and enriches it from the source documents you already have, so a bearing entry reads like the table above instead of a five-word title — without a rip-and-replace project or a multi-year systems integration. --- # A distributor's guide to long-tail MRO attributes Source: https://www.anglera.com/blog/mro-industrial-guide Published: 2026-04-25 Industries: mro-industrial ![A distributor's guide to long-tail MRO attributes](/og/hero-mro-industrial-guide.jpg) Mounted bearings, motors, fasteners, and hydraulic fittings all share a problem: the part number tells an engineer everything and a first-time buyer almost nothing. When your product page can't close that gap, the buyer guesses, orders the wrong thing, and calls support to sort it out. Here's what actually needs to be on the page, using a mounted ball bearing as the working example. ## The buyer isn't browsing, they're troubleshooting Most MRO purchases start with a broken part in hand or a maintenance ticket open. The buyer already knows roughly what they need; they're on your site to confirm fit before they check out. That means the product page has one job: answer the fit and compatibility questions fast enough that they don't have to call anyone. Poor data quality is already a measurable cost center in industrial supply chains. Research cited across nearly 1,900 senior manufacturing executives found that [duplicate purchases tied to poor data accuracy account for 5 to 7% of total MRO spend](https://www.ibtimes.co.uk/hidden-costs-manufacturing-poor-mro-data-1791776), and weak data quality broadly costs organizations an average of $12.9 million a year, per Gartner figures cited in the same analysis. Every one of those duplicate or wrong-part orders traces back to a spec that wasn't clear enough on the page where the buyer made the decision. ## What buyers actually need to know: mounted ball bearing example Take a pillow block mounted ball bearing, a top MRO SKU by volume across distributors. A typical supplier feed gives you something like this: **Raw feed description:** "Pillow block bearing, cast iron housing, 1 inch bore, set screw." That's not wrong. It's also not enough. A maintenance buyer replacing a failed unit on a conveyor needs to match shaft diameter, locking method, housing style, and seal type exactly, or the replacement either won't seat or will fail again in weeks. Here's what the page should show instead: | Attribute | Value | |---|---| | Bearing type | Pillow block, mounted ball bearing | | Bore / shaft size | `1.000 in` | | Housing material | Cast iron | | Locking mechanism | Set screw (2x, extended inner ring) | | Insert type | Wide inner ring, `UC` series | | Seal type | Triple lip contact seal | | Relubrication | Zerk fitting, grease | | Static load rating | Per manufacturer spec, `lbf` | | Dynamic load rating | Per manufacturer spec, `lbf` | | Temperature range | `-20°F to 250°F` | | Mounting hole spacing | Center-to-center, `in` | | Cross-reference / interchange | Competitor part equivalents | The distinction between set-screw and eccentric locking collar designs alone determines whether a bearing holds under vibration or works loose, and [both styles are common in mounted bearing lines](https://www.lily-bearing.com/resources/blog/mounted-bearings-guide-flange-pillow-block-types) with genuinely different installation procedures and failure modes. If your page doesn't say which one it is, the buyer either has to open the box to check the old part or call in. Shaft and housing fit tolerances matter just as much: an interference fit and a clearance fit look similar on paper but behave very differently under load, which is [well documented in bearing engineering references](https://www.nhbb.com/knowledge-center/engineering-reference/ball-roller-bearings/shaft-housing-fits) and worth surfacing in plain language, not just a tolerance code. ## Ask an answer engine This is also how buyers now shortcut the search. Someone typing "1 inch bore pillow block bearing with eccentric locking collar, cast iron housing" into an AI shopping assistant expects a direct match, not a category page. If your enriched attributes aren't structured cleanly (bore size, locking type, housing material all as distinct, queryable fields), the answer engine can't confidently recommend your SKU, and it will surface a competitor's listing that says these things explicitly. ## Where the gaps actually cause returns and tickets | Gap | What happens | |---|---| | Missing or ambiguous shaft/bore size | Buyer orders based on part number alone, unit doesn't fit, return + rush reorder | | No locking mechanism specified | Wrong style ships for a vibration-heavy application, early failure, warranty claim | | No cross-reference/interchange data | Buyer can't confirm equivalence to the OEM part, calls support before ordering | | No load rating or temperature range | Wrong duty-cycle unit selected, premature failure, blamed on "bad part" | | Inconsistent units (in vs mm) mixed in description | Buyer misreads spec, orders wrong size | Each of these gaps has the same downstream shape: a call to support, a return authorization, or a second order placed "just in case." All three cost more than getting the attribute right the first time, and all three are avoidable at the data layer, not the fulfillment layer. ## A distributor's checklist - **Bore/shaft size stated in both inches and mm**, not buried in the part number - **Locking mechanism named explicitly** (set screw, eccentric collar, adapter sleeve), not just implied by SKU family - **Housing material and mounting style** (pillow block, flange, take-up) as separate filterable fields - **Load ratings and temperature range** pulled from the manufacturer's technical data sheet, not omitted because they're "in the PDF" - **Cross-reference/interchange numbers** for at least the top competitor brands buyers are likely to be replacing - **Consistent units** across the entire catalog, not per-supplier-feed formatting - **A quality score per SKU** so your team knows which pages are actually buyer-ready versus which are still running on a thin supplier feed Most of these attributes already exist somewhere: a manufacturer spec sheet, a supplier's flat file, a PDF cut sheet nobody parsed. The work isn't inventing data, it's extracting what's already documented and putting it on the page in a structured, consistent form. That's the layer Anglera operates on. Your PIM stores the data; Anglera continuously scores each SKU for completeness, gap-fills missing attributes like locking mechanism or load rating from supplier and manufacturer source documents, and keeps units and formatting consistent across your whole catalog, without replacing whatever system you already run. For a distributor with tens of thousands of MRO SKUs, that's the difference between a buyer completing checkout and a buyer picking up the phone. --- # Marketplace content compliance: passing every listing gate Source: https://www.anglera.com/blog/marketplace-content-compliance Published: 2026-04-25 ![Marketplace content compliance: passing every listing gate](/og/hero-marketplace-content-compliance.jpg) A supplier feed that's 80% complete looks fine in a spreadsheet. On Amazon or Walmart Marketplace, that same feed gets a chunk of SKUs suppressed, unpublished, or stuck in "processing" the moment it hits the platform's content gate. Marketplace compliance isn't a one-time onboarding task. It's a standing quality bar that every SKU has to clear, every time a category taxonomy shifts or a supplier changes a spec sheet. ## Why listings actually get suppressed Marketplaces don't suppress listings because they're being difficult. They suppress them because incomplete or inconsistent data breaks search, breaks buy-box logic, or creates legal exposure (safety claims, restricted materials, counterfeit risk). The mechanisms are consistent across platforms even though the specific fields differ: - **Missing mandatory attributes.** Every category has required fields — material, dimensions, safety warnings, country of origin — and mandatory fields vary by product type and category mapping, so the same "complete" template can fail in one subcategory and pass in another. On Amazon specifically, [missing category attributes are one of the most common suppression triggers alongside image and title errors](https://keywords.am/blog/amazon-listing-suppression/), and 2025-2026 enforcement has shifted from periodic audits to continuous automated scanning, so gaps surface faster and more often. - **Bad or duplicate identifiers.** GTIN/UPC problems are their own category of failure. [Duplicate barcodes are especially common when codes are recycled from discontinued products or bought from third-party resellers instead of GS1 directly](https://www.gs1-us.info/why-your-barcodes-are-being-rejected-by-amazon/), and since GS1 prohibits reusing barcodes even after a product is discontinued, any supplier who recycles a UPC internally creates a rejection waiting to happen. - **Image non-compliance.** This is stricter than most catalog teams assume. Walmart requires a seamless white background at minimum 1,500x1,500px (2,200x2,200px recommended), prohibits watermarks, seller logos, and promotional text, and states plainly that [noncompliance may result in products being unpublished](https://marketplacelearn.walmart.com/guides/Item%20setup/Item%20content,%20imagery,%20and%20media/Product-detail-page:-Image-guidelines-&-requirements). Amazon's rules are similarly specific and similarly enforced by automated scanning rather than manual review. - **Inconsistent values across channels.** A GTIN that resolves to different weights, materials, or descriptions on your own site versus a marketplace listing reads as a data quality flag to the platform's systems and, increasingly, to AI shopping assistants pulling from multiple sources. ## The scale problem no one budgets for None of this is hard to fix for one SKU. It's hard to fix for 40,000 SKUs across six marketplaces, each with its own taxonomy, mandatory-field list, and image spec. Manual review of a single SKU's compliance — checking attributes against category rules, verifying the GTIN, confirming image specs — runs in the same 30-45 minute range as manual enrichment generally, because it's the same task: read the source data, check it against a rule set, fix what's wrong. At catalog scale, that math doesn't work. Teams either under-review (and eat the suppressions) or throw headcount at it (and still fall behind every taxonomy update). ## What a compliant record actually looks like Here's a raw supplier feed line for a cordless drill, next to what a marketplace-ready record needs: **Raw feed description:** "18V cordless drill kit with battery and charger, variable speed, LED light." **Marketplace-ready attribute table:** | Attribute | Value | |---|---| | Voltage | `18V` | | Chuck size | `1/2 in (13mm)` | | Speed settings | `2-speed, 0-450 / 0-1,800 RPM` | | Battery included | Yes — `1x 18V 2.0Ah Li-ion` | | Charger included | Yes | | Max torque | `50 Nm` | | Country of origin | `Vietnam` | | GTIN | `00812345678901` (GS1-verified, single assignment) | | Primary image | `2200x2200px`, white background, no watermark | The raw description is fine for a human skimming a product page. It has none of the discrete, checkable fields a marketplace content gate actually validates against its category schema. **Ask an answer engine:** "What's the max torque and chuck size on the 18V cordless drill kit from [brand]?" A shopper — or an AI assistant pulling structured data across your marketplace and DTC listings — needs the attribute table, not the paragraph, to answer that correctly and consistently everywhere the SKU is listed. ## Reaching compliance at scale without rebuilding your stack This is where enrichment has to be a standing, always-on layer rather than a pre-launch checklist. Your PIM stores the record. Anglera continuously scores each SKU against the mandatory-field and identifier rules for the marketplaces you sell on, flags what's missing or inconsistent, and gap-fills from supplier source documents — not invented values — so the attribute table above exists for every SKU, not just the ones someone had time to review by hand. Anglera plugs into whatever you already run — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file with none of the above — and it doesn't touch your CRM. Most teams see a working, scored catalog inside 30 days, which matters because marketplace rules change faster than most re-platforming cycles. Compliance at scale isn't about writing better copy once. It's about having a mechanism that keeps checking, every time the rules or the source data move. Sources: - [Amazon Listing Suppression: The Ultimate Guide (2026)](https://keywords.am/blog/amazon-listing-suppression/) - [Why Your Barcodes Are Being Rejected By Amazon - GS1 US](https://www.gs1-us.info/why-your-barcodes-are-being-rejected-by-amazon/) - [Walmart Marketplace Image Guidelines & Requirements](https://marketplacelearn.walmart.com/guides/Item%20setup/Item%20content,%20imagery,%20and%20media/Product-detail-page:-Image-guidelines-&-requirements) --- # How foodservice equipment buyers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/foodservice-equipment-aeo Published: 2026-04-25 Industries: foodservice-equipment ![How foodservice equipment buyers search now — and why your catalog isn't the answer](/og/hero-foodservice-equipment-aeo.jpg) A kitchen manager replacing a combi oven doesn't start with a distributor's catalog anymore. He asks ChatGPT or Perplexity which combi ovens hold up in a high-volume kitchen, what capacity he needs for his covers count, and which brands have a reliable service network in his region. If your product pages can't hand a language model a clean answer with specs attached, you don't get cited. A competitor with better structured data does. ## The research step has already moved [Forrester's 2026 buyer survey](https://machinerelations.ai/research/b2b-ai-vendor-research-2026) of 18,000 global business buyers found 94% used AI during their most recent purchase process, up from 89% in 2025, and buyers named generative AI as their single most meaningful research source, ahead of vendor websites, sales reps, and product experts combined. Foodservice is following the same curve: operators are turning to ChatGPT, Perplexity, and Google's AI Mode to [compare equipment, vet ingredient suppliers, and identify solutions to operational challenges](https://www.nrn.com/restaurant-technology/how-ai-search-is-reshaping-foodservice-marketing) before a rep ever gets a call. This isn't a future-state problem for foodservice equipment distributors. It's already happened to the software and industrial categories that got AI-search religion two years ago, and equipment buyers use the same tools to shortlist combi ovens, walk-in coolers, and warewashers that a restaurant tech buyer uses to shortlist a POS system. The uncomfortable part: the AI doesn't answer from your homepage. It answers from whatever text it can parse, extract, and trust enough to cite. If your product data is a PDF spec sheet and a one-line ERP description, there's nothing there to extract. ## Why the catalog is invisible to the answer engine Most foodservice equipment distributor catalogs are downstream of an ERP or a manufacturer feed built for order processing, not for being read. A typical product record looks like this: **Raw feed description (typical):** > `COMBI OVEN ELEC 208-240V 10 PAN FULL SIZE SS` That string is fine for a warehouse pick ticket. It is close to useless to a language model trying to answer "what combi oven works for a 150-seat restaurant with a 2-line staff." There's no capacity context, no venting requirement, no control type, no certification, nothing that maps to how a buyer actually phrases a question. Compare that to an enriched, machine-readable attribute set built for the same SKU: | Attribute | Value | |---|---| | Equipment type | Combi oven, boilerless | | Capacity | 10 full-size pans (6 GN 1/1 equivalent per load) | | Power | Electric, 208-240V, 3-phase | | Control type | Programmable touchscreen, 20 saved recipes | | Venting requirement | Type II hood not required (condensate hood compatible) | | Certifications | `NSF`, `UL`, `Energy Star` | | Recommended volume | 80-200 covers/service | | Service network | Factory-authorized techs in 40 states | The second version answers the buyer's actual question, "will this work for my kitchen and can I get it serviced," in language a retrieval system can lift verbatim into a cited answer. The [FCSI-NAFEM spec sheet guidelines](https://fcsita.org/wp-content/uploads/2025/03/2025-UPDATED-FCSI-NAFEM-Spec-Sheet-Guidelines.pdf) that the industry already uses for consultant-facing spec sheets are a good model for the kind of structured, comparable detail this requires. Most distributor sites never translate that structure onto the actual product page. ## Ask an answer engine Here's the kind of query a buyer runs today, and it's worth testing your own SKUs against it: > "What's a reliable boilerless combi oven for a 150-seat restaurant with limited kitchen staff, and which distributors stock it with local service support?" An answer engine parsing that question is matching on capacity, control simplicity (fewer trained staff needed), and service network, three attributes that live in a spec table, not a marketing paragraph. If your product page only says "commercial combi oven, various sizes," there's nothing to match against. The model moves to the next source that has the number. ## What actually needs to change | Gap | Effect on AI visibility | |---|---| | Attributes trapped in a PDF spec sheet | Not indexable as page text; nothing to cite | | ERP-generated one-line descriptions | No capacity, venting, or service detail to match buyer intent | | Inconsistent units/values across SKUs | Model can't confidently compare products in-category | | No structured markup on product pages | Answer engines default to a competitor's cleaner feed | None of this requires replacing your ERP or your PIM if you have one (Akeneo, Salsify, inriver, Stibo, whatever runs the catalog today). The data still needs to live somewhere that's the system of record for pricing and inventory. What's missing is a layer that reads the supplier spec sheets, extracts the values, quality-scores what's found versus assumed, and writes structured, comparable attributes back to every product page, without a multi-year systems project. ## Where this is heading Foodservice equipment buying is following B2B software and industrial distribution into an AI-mediated research phase, and the distributors who show up in those answers will be the ones whose product pages already read like a spec sheet an engine can parse, not a part number a warehouse worker can pick. Anglera exists for exactly this gap: it plugs into whatever system already holds your catalog, extracts and quality-scores attributes from the supplier documentation you already have, and gets a distributor's product data into an AI-legible state in weeks, starting from a flat file if that's all there is, not a rip-and-replace of the systems already running the business. --- # Voice of customer: the enrichment signal your spec sheet can't provide Source: https://www.anglera.com/blog/voice-of-customer-enrichment Published: 2026-04-24 ![Voice of customer: the enrichment signal your spec sheet can't provide](/og/hero-voice-of-customer-enrichment.jpg) A spec sheet tells you what a product is. It rarely tells you what a product is *for*. That gap — dimension in inches vs. "finally fits my studio apartment," material composition vs. "held up through two winters of salt on the driveway" — is exactly the terrain reviews and Q&A cover, and it's becoming the terrain AI shopping agents weight most heavily when they decide what to recommend. ## Specs answer "what." Buyers answer "what for." Manufacturer data sheets are built to be defensible, not useful. Tolerances, materials, dimensions, certifications — accurate, but written for an engineer or a compliance file, not a shopper trying to figure out if the thing solves their problem. Voice-of-customer content — reviews, Q&A threads, return notes, chat transcripts — carries the use-case language specs never will: what it's compatible with in practice, who it's good for, what breaks it, what surprised people. Here's the difference on a real category: | Field | Raw manufacturer feed | Enriched with voice-of-customer signal | |---|---|---| | Description | "Cordless drill, `20V`, `1/2 in` chuck, variable speed" | "Cordless drill, `20V`, `1/2 in` chuck — reviewers consistently cite it for deck-building and cabinet install; frequently paired with impact driver kits; several buyers note battery lasts a full workday of moderate use" | | Use case | Not populated | Deck/fence building, cabinet install, light framing | | Fit/compatibility note | Not populated | Compatible with `[brand]` battery ecosystem — repeatedly confirmed in Q&A across three product generations | | Known limitation | Not populated | A minority of reviews flag chuck slip under heavy torque; worth a caveat, not a dealbreaker | None of that second column exists in the manufacturer's PDF. It exists in the sentences buyers already wrote, sitting on the PDP, in support tickets, in marketplace Q&A — unused because nobody's job is to read three thousand reviews and turn them into structured attributes. ## Why AI shopping agents weight this so heavily This isn't a nice-to-have anymore. The current wave of AI shopping tools is explicit about what it rewards. Research on how ChatGPT ranks shopping results points to "descriptive, usage-based customer reviews" and embedded "FAQs, videos, Q&As, and images" as a real differentiator between products that get surfaced and ones that don't ([Profound](https://www.tryprofound.com/blog/chatgpt-shopping-deep-dive)). A separate breakdown of ChatGPT's shopping ranking signals makes the same point more bluntly: the model prioritizes "clean, factual, use-case-rich descriptions" over generic manufacturer marketing copy, and weights third-party sources — reviews, roundups, forum threads — far more than brand-authored content, with one estimate putting 91% of AI shopping citations as coming from third-party sources rather than the brand's own site ([Alhena](https://alhena.ai/blog/chatgpt-shopping-product-recommendations/)). There's a mechanical reason for this, not just a stylistic preference. Generative answer engines are doing semantic matching against a shopper's intent, not keyword matching against a title. "Quiet vacuum for a small apartment" only connects to a listing if something on or around that listing actually contains apartment-scale, noise-level, or small-space language — attributes a spec sheet was never written to include, and attributes reviews supply constantly, in the buyer's own words. Ask an answer engine "best cordless drill for building a deck" and watch what it actually cites: it's pulling from review sentiment and forum answers about torque-under-load and battery life in real use, not the amp-hour rating on page 3 of a datasheet. The products that show up are the ones whose data — somewhere, in some field — already speaks that language. ## Structured data still has to carry it Having the language isn't enough if it's trapped in unstructured review text nobody's attributing back to the product record. Schema.org's `Review` and `AggregateRating` types exist so this content is machine-readable, and current guidance is unambiguous that Product rich results essentially require review or rating markup alongside price and availability ([Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)). Structured data is also increasingly framed as the mechanism behind AI Overview and answer-engine citations generally, not just search snippets ([Search Engine Land](https://searchengineland.com/structured-data-seo-what-you-need-to-know-447304)). So the pipeline that matters looks like this: 1. Reviews, Q&A, and support interactions get mined for recurring use-case, compatibility, and limitation language. 2. That language gets converted into structured attributes — use case, compatible-with, fit note, common concern — attached to the actual product record, not left as freeform review copy. 3. The structured version gets scored for confidence: a use-case mentioned by dozens of reviewers is a stronger signal than one throwaway comment, and the system should say so rather than treating every review sentence as equally reliable. 4. It ships through the feed and PDP in a form both a shopper and an answer engine can parse. Skip step 2 and you have a wall of reviews that humans might skim and machines mostly can't use. Skip step 3 and you risk turning one outlier's complaint into an authoritative-sounding attribute. ## The enrichment problem, not a moderation problem Most teams already collect reviews and Q&A. Almost none of them turn that content into structured product attributes at catalog scale, because doing it by hand — reading review threads SKU by SKU and hand-coding use-case tags — doesn't scale past a few hundred products, let alone tens of thousands. It's the same math as manual spec-sheet enrichment, which typically runs 30-45 minutes per SKU when someone has to read a source document and populate fields by hand; voice-of-customer mining at that pace across a real catalog simply doesn't happen, so the signal sits there unused. This is squarely enrichment work, not a new system to buy. Your PIM stores the data — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or nothing at all if you're still working from a flat file. Anglera does the work: pulling structured, quality-scored use-case and compatibility attributes out of review and Q&A content and attaching them to the product record your channels already read from, live in a few weeks rather than a multi-year integration. It's additive to whatever you already run, and it extracts and scores what buyers actually said rather than inventing language that sounds plausible. The spec sheet still tells you what the product is. The voice-of-customer layer is what tells a buyer, and increasingly an AI agent doing the shopping for them, what it's actually for. --- # How medical & dental buyers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/medical-dental-aeo Published: 2026-04-23 Industries: medical-dental ![How medical & dental buyers search now — and why your catalog isn't the answer](/og/hero-medical-dental-aeo.jpg) A dental office manager restocking exam gloves before a busy week doesn't start with a SKU lookup anymore. She opens ChatGPT or Perplexity and asks for a powder-free, chemo-rated nitrile glove in small, latex-free, that passes AQL 1.5 for a clinic that also handles minor procedures. If your product page can't answer that question in a format a model can parse and trust, it doesn't get named. A competitor's SKU does, even if your catalog carries the better-fit product. That's the filter medical and dental distributors are now being run through, and most catalogs were built for a different era of buying. ## The research step moved into a chat window This isn't a fringe behavior anymore. Forrester's 2026 buyers' journey research found the share of B2B buyers using generative AI in their purchase process grew from 89% in 2025 to 94% in 2026, and GenAI or conversational search was named the single most meaningful research source by roughly twice as many buyers as any other channel ([Creatuity, AI in B2B Commerce Statistics 2026](https://www.creatuity.com/insights/ai-in-b2b-commerce-statistics-2026/)). Separate tracking from 6sense shows GenAI chatbots have become the most influential source for building vendor shortlists, ahead of review sites, vendor websites, and peer recommendations ([6sense, How GenAI and LLMs Are Changing B2B Buyer Research](https://6sense.com/guides/how-genai-and-llms-are-changing-b2b-buyer-research-and-how-to-respond/)). Medical and dental buying has extra reasons to move this way. Purchasing in this category is compliance-heavy and detail-sensitive, latex sensitivity, sterilization method, biocompatibility, shade match, gauge, and AQL thresholds all matter, and a chat interface that can filter on all of them at once is genuinely faster than paging through a distributor's category tree. The buyer isn't being lazy. They're using the tool that answers a multi-variable clinical question in one pass. The problem for distributors is that the model can only surface a product it can parse with confidence, and it will not guess on a clinical spec. ## Why a fully stocked catalog reads as empty to a model Most medical and dental product data still lives in ERP-style rows built for a purchasing clerk, not a language model. A typical feed line looks like this: **Raw feed description (as-is):** > `GLV EXAM NITRILE PF SM BX100 CHEMO` That string is fine for an internal SKU match. It tells an LLM almost nothing it can act on with confidence. There's no structured way to know the glove is textured, what its AQL rating is, whether it's rated for chemotherapy drug handling under `ASTM D6978`, or whether it's actually latex-free versus simply "not made with latex" (a distinction that matters for allergy documentation). The model either skips the product or, worse, guesses and gets it wrong, which is a liability problem in a clinical category. Here's the same product enriched into attributes a model can quote directly: | Attribute | Value | |---|---| | Material | Nitrile, powder-free | | Size | Small | | Texture | Textured fingertips | | Latex-free | Yes (no natural rubber latex proteins) | | Chemo-rated | Yes, tested to `ASTM D6978` | | Barrier standard | `ASTM D6319` | | AQL | 1.5 | | Sterility | Non-sterile, single use | | Packaging | 100 per box, 10 boxes per case | | GTIN | Populated at each packaging level | This is the same physical product. One version is invisible to an answer engine. The other is quotable. Healthcare supply chain already has the plumbing for this level of structure, most distributors just aren't using it consistently. GS1's healthcare data quality guideline calls out valid item codes, unit of measure, latex content, and full GTIN hierarchy as baseline attributes trading partners need to synchronize accurately ([GS1 US, Best Practices for Healthcare Data Quality](https://www.gs1us.org/industries-and-insights/media-center/press-releases/new-gs1-us-guideline-provides-healthcare-industry-with-best-practices-for-managing-and-measuring-data-quality)), and GHX's GDSN data pool exists specifically so manufacturers and distributors can publish that structured item data once and have it propagate cleanly ([GHX, GDSN Data Pool for Healthcare](https://www.ghx.com/en/gdsn-data-pool-healthcare/)). The standard for machine-readable product data in this industry already exists. What's usually missing is the discipline to fill every field, for every SKU, and keep it current as suppliers update specs. ## Ask an answer engine Try this from a distributor's own product page: "ask an answer engine which powder-free nitrile exam gloves are chemo-rated and latex-free in size small for a dental office that also does minor oral surgery." A model answering that question is matching on AQL rating, ASTM certifications, latex status, and size in the same pass, then citing whichever source stated those facts in a structured, unambiguous way. A page with a part number and a marketing paragraph doesn't compete here. A page with a clean attribute table does. ## Structured data is the new front door Dental composite shade guides, surgical instrument autoclave ratings, PPE certifications, wound care absorbency specs, these are all facts a model can cite confidently once they exist as discrete, correctly labeled attributes instead of buried in a product name string or a PDF spec sheet. None of this requires replacing how a distributor already manages its catalog. It requires treating attribute completeness and accuracy as the actual product, not an afterthought to the SKU and price. That's the layer Anglera focuses on: pulling values out of supplier documentation, scoring how complete and trustworthy each attribute is, and gap-filling the ones a buyer, or an answer engine, needs to make a confident match. Your PIM or ERP still stores the data. Anglera does the work of making it legible to the systems your buyers are actually using to shop. --- # Localization is not translation: taking a catalog into new markets Source: https://www.anglera.com/blog/localization-is-not-translation Published: 2026-04-23 ![Localization is not translation: taking a catalog into new markets](/og/hero-localization-is-not-translation.jpg) A team expands into a new country, runs the catalog through a translation vendor, and ships it. Three months later, conversion is flat, the wrong products are ranking, and the local team is filing tickets about "wrong" specs that were never actually wrong — they were just never adapted. Translation changed the language. Nothing else moved. That gap is where market expansion quietly fails. ## Translation is one line item in a much bigger job Swapping words is real work, but it is the shallowest layer of taking a catalog into a new market. Underneath the copy sit four things that actually determine whether a listing sells, ranks, or even displays correctly: - **Units and measurements.** Voltage, plug type, torque, weight, and dimensions don't translate — they convert, and the conversion has to be correct at the attribute level, not just in a paragraph of prose. - **Regulatory and quality standards.** A product certified under one region's standard often needs a different mark, disclosure, or test standard to be legally listed in another (UL versus CE/UKCA is the classic case in electrical and tools). - **Taxonomy.** Global classification systems like GS1's [Global Product Classification](https://www.gs1.org/standards/gpc/how-gpc-works) exist precisely because category structures diverge by retailer and region — a brick code stays constant, but the category path a shopper browses does not. - **Search vocabulary.** The word that ranks in one market often isn't the word used in another, even when the language is nominally the same. Each of these is a data problem, not a copywriting problem. Translating the description while leaving these four untouched produces a listing that reads fluently and still fails the market it's supposed to serve. ## Same language, different search terms The most underestimated piece is search vocabulary. Multiple SEO practitioners point to the same UK/US pattern: "trainers" in the UK is "sneakers" in the US, and "jumper" is "sweater" — same product, same language family, different query. That pattern repeats across categories and dialects far beyond fashion, and it also holds inside a single language across countries: Spanish search behavior in Spain and Mexico reflects [distinct terminology, seasonal patterns, and product preferences](https://sitebulb.com/resources/guides/multilingual-seo-and-keyword-research-explained/) even though the language tag is identical. A translated title captures none of this — it captures grammar, not demand. **Ask an answer engine** "what's a good cordless impact driver for UK tradesmen" and "best impact driver for a contractor" in the US, and you'll surface different competing products, different attribute expectations (Nm versus in-lbs torque, BS versus NEMA plug), and different phrasing entirely. If your catalog only carries US-market vocabulary and units, it's invisible to the first query no matter how well the description was translated. ## A before/after, not a before/after-in-words Here's what a translation-only pass produces versus what an enriched, market-adapted record looks like for the same SKU sold in two markets. **Raw feed description (translated only):** "18V cordless impact driver. Compact, lightweight design ideal for tradesmen. Includes battery and charger." **Enriched, market-specific attributes:** | Attribute | US listing | UK listing | |---|---|---| | Charger input / plug | 120V, NEMA 1-15 | 230V, BS 1363 | | Torque unit | in-lbs | Nm | | Battery certification | UL 2054 | UKCA / CE | | Category path | Tools & Home Improvement > Power Tools > Drills & Drivers | DIY & Tools > Power Tools > Drills & Drivers | | Search term coverage | "impact driver," "impact driver kit" | "impact driver," "combi driver" | Same product. Same brick-level classification underneath. Two structurally different, market-correct listings — because the attributes carry the market difference, not a translated adjective. ## Why this is also where rankings get lost Localizing badly doesn't just cost conversion — it costs visibility, and the failure mode is almost always structural rather than linguistic. Google's own guidance on [multi-regional and multilingual sites](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) is explicit: use distinct URLs per market rather than cookies or geo-redirects, make the local language visible in the actual page content rather than relying on markup, and use `hreflang` so each regional version points to the correct sibling — every page self-referencing, every annotation bidirectional. Get the reciprocity wrong (a common failure when localization is bolted onto an existing catalog late) and search engines can end up ignoring the entire cluster of regional pages, collapsing your carefully localized catalog back into duplicate-content noise. The pages can be technically flawless and still rank for the wrong things if the underlying product data — units, standard, category, term — was never adapted. Technical SEO gets you crawled and indexed correctly. Attribute-level localization gets you matched to the right query once you're there. ## Localize the record, not the listing The pattern that scales is to treat market variants as structured fields on the product record — market-specific unit, standard, category mapping, and term set — rather than a separate marketing pass per country. Do it as a translation project and every new market means re-touching every SKU by hand, forever, with no consistent source of truth to audit against. This is the same discipline Anglera applies to any catalog: pulling from your PIM or a flat file, enriching each SKU with the units, standards, category paths, and search terms a given market actually needs, and writing structured, source-grounded values back to your existing system — no rip-and-replace, no re-platforming. A catalog that's ready for a new market isn't one that's been translated. It's one whose data was built to be read correctly wherever it lands. --- # Building an attribute schema for MRO & Industrial that buyers and AI can actually use Source: https://www.anglera.com/blog/mro-industrial-attributes Published: 2026-04-22 Industries: mro-industrial ![Building an attribute schema for MRO & Industrial that buyers and AI can actually use](/og/hero-mro-industrial-attributes.jpg) A maintenance planner shopping for a replacement pillow block bearing doesn't type "heavy-duty bearing for tough conditions." They type a bore diameter, a housing style, and a locking method, because that's what has to match the failed part on the line. If those three fields aren't structured data on the product page, the SKU doesn't rank low — it doesn't show up at all. Here's what an MRO & Industrial attribute schema needs, why gaps quietly delete SKUs from search and AI answers, and how to structure it so it holds up at scale. ## Why MRO buyers filter first and never read Industrial and MRO buyers are usually maintenance techs or procurement staff working from a failed part number or a bill of materials, not a product description. They already know the spec before they land on a page. The catalog's job is to confirm a match fast, not to persuade. That means the buying motion is filter-first, and it breaks hard when specs live only in a PDF or a sentence. A distributor's own classification system compounds the problem: MRO catalogs typically run on broad schemes like UNSPSC or NAICS for category assignment, but those taxonomies were built to answer "what kind of thing is this," not "what bore size, what housing, what seal," as [Verdantis notes in its breakdown of MRO data taxonomy](https://www.verdantis.com/mro-data-taxonomy/). A part can be filed in exactly the right category and still be functionally invisible, because the category node has no opinion on the feature-level fields a buyer filters by. Electrical distribution solved a version of this with ETIM, which forces every SKU in a class into the same fixed set of features. General industrial hardware — bearings, fasteners, hydraulics, power transmission — mostly hasn't gotten that standardization; ETIM's coverage is concentrated in electrical, HVAC, and building materials, not mechanical power transmission, [per WISEPIM's overview of the ETIM classification model](https://wisepim.com/guides/product-taxonomy/etim). So the discipline has to come from the distributor's own schema, applied consistently across suppliers who all describe the same part differently. ## The attribute set that actually matters For mounted bearings, insert bearings, pillow blocks, and flange units, the fields that drive filtered search and correct part selection fall into five groups: | Category | Attributes | |---|---| | Dimensional | Bore diameter, shaft diameter, housing style (pillow block, flange, take-up, cartridge), bolt hole spacing, base-to-center height, overall length/width | | Housing & materials | Housing material (cast iron, pressed steel, thermoplastic, stainless steel), insert bearing material, corrosion protection/coating | | Locking & mounting | Locking method (set screw, eccentric collar, adapter sleeve), mounting orientation, expansion vs. non-expansion type | | Sealing & lubrication | Seal type (labyrinth, triple-lip contact, felt), relube interval, grease fitting location/type, ambient temperature range | | Performance & compliance | Dynamic load rating (C), static load rating (C0), max speed (RPM), ABMA/ISO standard reference | Manufacturer engineering data pages consistently structure bearing specs this way — dimension, material, load rating, and speed limit as discrete numeric or coded fields, not prose — which is the format search filters and AI extraction need, [as Schaeffler's bearing data reference shows](https://medias.schaeffler.us/en/knowledge-center/rolling-bearings/bearing-data). When a distributor's catalog collapses that same information into a marketing sentence, the structure the manufacturer already built gets thrown away on the way to the storefront. ## Worked example: a mounted ball bearing Here's what a typical raw supplier feed looks like next to what a filterable, AI-legible listing needs. **Raw feed description (as received from a manufacturer):** > "2-bolt pillow block bearing unit, cast iron housing, set screw locking, for general industrial use, relubricatable." That sentence is accurate and nearly useless for selection. It has no bore size, no load rating, no seal type. A buyer filtering for "1-3/16 inch bore, cast iron, set screw" will never see this SKU, and an AI answer engine summarizing options has nothing structured to cite. **Enriched attribute table:** | Attribute | Value | |---|---| | Bore diameter | `1-3/16 in` (`30.163 mm`) | | Housing style | 2-bolt pillow block | | Housing material | Cast iron | | Locking method | Set screw | | Insert bearing type | Ball, wide inner ring | | Seal type | Triple-lip contact seal | | Dynamic load rating (C) | `15.9 kN` | | Static load rating (C0) | `9.6 kN` | | Max speed | `4,500 RPM` | | Relube interval | Grease fitting, standard `NLGI 2` grease | | Standard reference | `ABMA 9` | Same physical part. One is a sentence a human might skim; the other is a set of fields a filter, a comparison table, or a language model can actually use. ## Ask an answer engine Type "1 3/16 inch bore pillow block bearing cast iron set screw locking" into an AI shopping assistant today, and it can only surface SKUs where those five values exist as parseable data it can find — structured fields, a spec table, or schema markup on the page. A generative engine needs values it can lift with confidence, not a paragraph it has to interpret, which is a large part of why most B2B brands remain effectively absent from early-stage AI-driven product discovery, according to [a 2025 industry survey on B2B AI visibility](https://www.demandgenreport.com/industry-news/news-brief/2x-survey-finds-96-of-b2b-companies-are-invisible-in-ai-discovery/52536/). Bore diameter, housing material, and load rating aren't just filter fields anymore — they're the vocabulary an answer engine needs to recommend a specific SKU by name instead of a category. ## How to structure it Two design decisions matter more than which taxonomy you pick. First, separate global attributes (brand, price, weight, country of origin) from category-specific sets, and let the mounted-bearing set inherit from a broader power-transmission group so bore diameter and load rating stay consistent across pillow blocks, flange units, and take-up frames. Second, treat every field as something to be scored, not just populated — a bore diameter of `0` or a housing material of "steel" when the supplier doc says cast iron is worse than a blank field, because it fails silently in a filter instead of flagging for review. That gap between designing an attribute set and actually filling it correctly, SKU by SKU, across every supplier who feeds a catalog, is where most MRO distributors run out of internal capacity. Anglera plugs into whatever PIM a distributor already runs, or works from a flat file if there isn't one, and does the enrichment work of extracting bore, housing, load, and seal values from supplier documentation, quality-scoring each field, and flagging what's missing — so the schema a team designs on a whiteboard actually gets filled in at catalog scale, instead of staying half-populated. --- # The jan/san & packaging attributes buyers filter on — and most catalogs miss Source: https://www.anglera.com/blog/jan-san-attributes Published: 2026-04-22 Industries: jan-san ![The jan/san & packaging attributes buyers filter on — and most catalogs miss](/og/hero-jan-san-attributes.jpg) A distributor selling floor care chemicals, disinfectants, and packaging supplies is really selling a spec sheet with a barcode. Buyers on procurement portals, and increasingly AI answer engines fielding "what's a Green Seal certified neutral cleaner that dilutes 1:256," don't filter on adjectives. They filter on structured values. Most Jan/San catalogs still bury those values inside a paragraph of marketing copy, which means the SKU never shows up in a filtered search even when it's the right product. ## Why this category is unusually attribute-dependent Jan/San and packaging sit at an intersection few other categories share: regulatory data (EPA registration, kill claims), chemistry data (dilution ratio, pH, active ingredient percentage), sustainability certification (Green Seal, EcoLogo, Safer Choice), and physical packaging data (case pack, ply, core size) all have to live on the same product record. Miss one axis and the SKU drops out of an entire filter path, even if the product itself is right for the job. This isn't hypothetical. GS1's own guidance on packaging hierarchies notes that a change to case pack quantity or pallet configuration requires a distinct GTIN, because downstream systems key ordering, receiving, and pricing off that exact packaging level — see [GS1's explanation of GTIN packaging hierarchy](https://www.lspedia.com/blog/gtin-packaging-hierarchy-explained-each-case-pallet-and-why-data-accuracy-matters). If a distributor's feed collapses "each" and "case" into one ambiguous field, the buyer's ERP either orders the wrong quantity or can't place the order at all. ## The attributes that actually drive filters **Chemical / performance attributes** | Attribute | Why it matters | Typical source | |---|---|---| | Dilution ratio | Determines cost-per-use and whether it fits an existing dispensing system | Product label, TDS | | pH range | Facilities teams filter by pH for floor type and surface compatibility | SDS | | Active ingredient % | Compliance and reorder matching | SDS, label | | Form (concentrate, RTU, wipe) | Filter buyers narrow by immediately | Label | | Flash point / VOC content | Required for shipping class and green building filters | SDS | **Regulatory attributes (disinfectants specifically)** | Attribute | Why it matters | Typical source | |---|---|---| | EPA registration number | Confirms the product is a legally registered pesticide, not just a cleaner | EPA label, [EPA's registered disinfectants list](https://www.epa.gov/pesticide-registration/selected-epa-registered-disinfectants) | | Pathogen kill claims | Facilities and healthcare buyers filter on specific organisms (e.g., *C. diff*, norovirus) | EPA master label | | Contact / dwell time | Shorter dwell time is a real differentiator buyers filter on directly | EPA master label — see [explainer on master labels and contact time](https://www.randrmagonline.com/articles/91132-understanding-epa-master-labels-and-registration-numbers) | | Surface compatibility | Excludes SKUs that would damage a listed surface | Label | **Certification / sustainability attributes** | Attribute | Why it matters | Typical source | |---|---|---| | Green Seal / EcoLogo / Safer Choice status | Institutional and government RFPs often mandate a certified SKU | [Green Seal certified product listings](https://greenseal.org/featured-categories/certify-cleaning-products/) | | Fragrance-free flag | Hospitals, schools, sensitive environments filter this as a hard requirement | Label, cert docs | **Packaging / logistics attributes** | Attribute | Why it matters | Typical source | |---|---|---| | Case pack quantity (each/case/pallet) | Drives order quantity math and GTIN assignment | Supplier pack spec | | Ply count / sheet count / core diameter | Paper products are functionally different SKUs at each spec | Supplier spec sheet | | Unit of measure and pack level | Ambiguity here causes ordering errors downstream | GTIN hierarchy data | ## Before / after: a floor cleaner concentrate Here's a description pulled straight from a typical distributor feed, next to what an enriched record looks like once the same source documents (label, SDS, pack spec) are actually read and structured. **Raw feed description:** "Powerful concentrated floor cleaner, cleans grease and grime, great value, dilutes easily, case of 4." **Enriched attribute record:** | Attribute | Value | |---|---| | Product form | Concentrate | | Dilution ratio | 1:256 (general cleaning), 1:64 (heavy soil) | | pH (concentrate) | 10.5–11.5 | | Certification | Green Seal GS-37 | | Fragrance | Fragrance-free | | VOC content | Below applicable state VOC limits (per SDS) | | Container size | 1 gallon | | Case pack | 4 x 1 gal | | Case GTIN | Distinct from each-level GTIN | | Compatible surfaces | Sealed VCT, terrazzo, sealed concrete | | Not recommended for | Unsealed wood, marble | Ask an answer engine "what floor cleaner concentrate is Green Seal certified and dilutes at 1:256 for daily cleaning" and the raw description never surfaces — none of those tokens exist in it. The enriched record answers the question directly, in the buyer's own filtering language. ## Where this data actually comes from None of this is invented. Dilution ratios and pH come from the technical data sheet and SDS; EPA registration numbers and kill claims come from the registered master label; certification status comes from the certifying body's own published list; case pack and GTIN data come from the supplier's pack spec. The work is extraction and structuring, not guessing — pull the value from the document, score confidence, and flag anything that can't be verified rather than filling it in. ## Structuring it so it survives both filters and AI answers The practical fix is treating each of these as its own attribute field, not a phrase inside a description. That means: separate fields for dilution ratio by use case (not one blended number), a structured EPA reg number field distinct from free-text compliance notes, explicit each/case/pallet levels with their own identifiers, and certification as a controlled value tied to the certifying body rather than a marketing claim. A retailer's or GPO's filter logic, and an AI answer engine's retrieval logic, both depend on the value existing in a field they can query — not on a human reading the paragraph and inferring it. ## Where Anglera fits Your PIM stores the record; Anglera does the work of getting it there. Anglera plugs into Akeneo, Salsify, inriver, or whatever system a distributor already runs (or none, starting from a flat file), pulls the dilution ratios, EPA numbers, certifications, and pack specs out of supplier source documents, quality-scores each value, and gap-fills what's missing — live in weeks, not a multi-year integration. For a category where a missing pH field or an ambiguous case pack can silently remove a SKU from the exact search where it should win, that's the difference between a catalog that ranks and one that doesn't. --- # Why electronic components feeds lose to marketplaces — and how to close the gap Source: https://www.anglera.com/blog/electronic-components-syndication Published: 2026-04-22 Industries: electronic-components ![Why electronic components feeds lose to marketplaces — and how to close the gap](/og/hero-electronic-components-syndication.jpg) A distributor lists a `10uF 0805 X7R capacitor` from a scanned datasheet PDF. Digi-Key lists the same part with 19 searchable attributes, a lifecycle status, and a datasheet link that resolves on the first click. Same component, two different odds of ever being found. In electronic components, the gap between a feed that syndicates cleanly and one that gets bounced, buried, or ignored isn't about better photography. It's about whether the data underneath the part number can survive a parametric filter. ## Why marketplaces bounce feeds that "look" complete Electronic components distribution is a scale business built on same-day shipping and enormous SKU counts, and the market keeps growing, already worth roughly $199 billion as of 2025 with growth into the $300 billion range projected by the early 2030s ([Research and Markets](https://www.researchandmarkets.com/reports/5977757/electronic-component-distribution-market)). At that volume, no marketplace reviews listings by hand. Everything is ingested programmatically, matched against a parametric schema, and either passes or gets flagged. That schema is unforgiving in ways a general retail category isn't. A capacitor, resistor, or connector is defined almost entirely by its electrical and mechanical parameters, not by descriptive copy. A supplier feed that says "high-quality ceramic capacitor, reliable performance" carries zero information a design engineer or a filter can act on. The industry's own standards bodies have spent years formalizing this. ECIA (Electronic Components Industry Association) publishes labeling and data guidelines specifically because manufacturers, distributors, and reps kept sending incompatible versions of the same fields, like traceability codes, country of origin, RoHS/REACH status, in inconsistent formats across trading partners ([ECIA, EIGP 114](https://www.ecianow.org/assets/docs/ECIA_Specifications.pdf)). When a feed doesn't map cleanly to that shared structure, it doesn't get a soft landing. It gets rejected or demoted below competitors whose data does map. ## The bar marketplaces actually enforce Strip it down and every major distributor storefront and channel partner is checking a feed against the same three layers: | Layer | What it checks | What fails it | |---|---|---| | Identifiers | Manufacturer part number, distributor part number, RoHS/REACH flags, ECCN/HTS codes, lifecycle status (active, NRND, EOL) | Missing MPN cross-reference, no compliance flag, stale lifecycle status | | Attributes | Full parametric set for the category: electrical, mechanical, environmental | Values buried in a description string instead of structured fields; inconsistent units | | Content | Datasheet link, package/footprint drawing, RoHS certificate, sometimes a compliance PDF | Broken or generic datasheet link, no footprint reference, no substitute/alternate part mapping | Miss any one layer and the part doesn't fail loudly. It just underperforms. It ranks lower in parametric search, gets excluded from comparison tables, and never surfaces when an engineer filters by voltage rating and case size. Distributors don't reject bad data with an error message; they just show the competitor's row instead. ## The MLCC test case Take a common part: a `0.1uF, 50V, X7R, 0805` multilayer ceramic capacitor. A typical raw supplier feed looks like this: **Before (raw feed):** > Description: "MLCC CAP CER 0.1UF 50V X7R 0805 SMD" That single string might be technically accurate, but it's not queryable. A buyer or an AI answer engine can't filter on it, compare it, or trust it against a competing line item. **After (channel-ready attributes):** | Attribute | Value | |---|---| | Capacitance | 0.1 µF | | Tolerance | ±10% | | Voltage – Rated | 50V | | Temperature Coefficient | X7R | | Package / Case | 0805 (2012 metric) | | Mounting Type | Surface Mount | | Operating Temperature | -55°C to +125°C | | Failure Rate | Not applicable / per datasheet | | RoHS Status | RoHS compliant | | Lifecycle Status | Active | That's close to the actual parametric set Digi-Key exposes for ceramic capacitors, spanning capacitance, tolerance, rated voltage, temperature coefficient, operating temperature, package/case, mounting type, and more. It's also close to what a large distributor's ingestion pipeline will check for before a listing is treated as complete rather than provisional. The difference shows up the moment someone, human or machine, tries to use the data. Ask an answer engine `find an 0805 X7R MLCC rated for 50V with a Y5V alternative in stock` and it needs every one of those fields present, structured, and consistent across the part and its substitutes to even attempt an answer. A feed with the string description has nothing for the model to reason over. A feed with the attribute table gives it exactly what it needs to compare, and to cite the part with confidence. ## Where this actually breaks in practice The failure mode is rarely one missing field, it's inconsistency at scale. One supplier's tolerance shows up as `10%`, another's as `±10 pct`, a third leaves it blank in a free-text description. Multiply that across MLCCs, resistors, and connectors from a dozen manufacturer lines, and a catalog ends up internally inconsistent before it ever reaches a marketplace schema. Sourcing analysts covering the sector describe 2025 as a year where distributors and manufacturers are actively investing in digital supply chain tooling specifically to close this kind of gap ahead of channel pressure ([Supply Chain Connect](https://www.supplychainconnect.com/supply-chain-technology/article/55291218/2025s-trends-challenges-and-opportunities-in-electronic-component-distribution)). Manual cleanup is what makes the problem persist. Reconciling parametric fields, standardizing units, and re-linking datasheets by hand runs in the range of 30-45 minutes per SKU when someone actually sits down with a source datasheet to fix it. Across thousands of active parts and dozens of manufacturers, that's a standing tax on every new part number, every EOL update, every substitute mapping. ## Closing the gap without ripping anything out None of this requires replacing the PIM a distributor already runs, whether that's Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file exported from an ERP. Your PIM stores the data; the work is scoring what's already there against the channel's actual schema, extracting missing attributes from supplier datasheets rather than guessing at them, and gap-filling the identifiers and content a marketplace expects before the feed goes out. That's additive work on top of the system of record, not a migration, and getting a first cluster of SKUs to channel-ready completeness is realistic in weeks rather than a multi-year integration. This is the quieter half of the AI-search story in electronic components. Buyers and design engineers are already asking answer engines to compare parts by spec, and the marketplaces syndicating those parts are already enforcing a structured bar to match. Anglera's role isn't to add another catalog to manage. It's to make sure the one you already have can pass that bar, attribute by attribute, without waiting on a resync cycle to find out it didn't. --- # Getting lighting products cited by ChatGPT, Perplexity, and AI Overviews Source: https://www.anglera.com/blog/lighting-aeo Published: 2026-04-21 Industries: lighting ![Getting lighting products cited by ChatGPT, Perplexity, and AI Overviews](/og/hero-lighting-aeo.jpg) A specifier asks ChatGPT for a `4000K, 90+ CRI, DLC Premium` troffer with 0-10V dimming, and your SKU never comes up - not because you don't stock it, but because your product page never told the model those four facts in a way it could use. That's the new failure mode in lighting distribution: not being out of stock, but being unreadable to the systems buyers now ask first. ## Buying already moved to the chat box Commercial lighting has always been a spec-driven category - CCT, CRI, lumens, wattage, beam angle, IP rating, DLC status - which makes it exactly the kind of product a specifier or contractor now types into an AI tool instead of a search bar. Gartner's own B2B research puts a number on the shift: a 2026 sales survey found [67% of B2B buyers now say they'd prefer a rep-free buying experience](https://www.gartner.com/en/newsroom/press-releases/2026-03-09-gartner-sales-survey-finds-67-percent-of-b2b-buyers-prefer-a-rep-free-experience), continuing a run of Gartner findings that most of the B2B journey happens before a rep is ever contacted. Layer AI chat interfaces on top of that self-service instinct and you get buyers who ask an answer engine for a spec match, get three candidate SKUs back, and only then call a distributor to confirm price and lead time - if the distributor even made the list. That's the part lighting distributors need to sit with. The AI didn't remove you from consideration. Your data did, before the buyer ever typed a word. ## Why ERP-style lighting data disappears from AI answers Most distributor catalogs still run on ERP-exported feeds built for order processing, not for being read by a language model. A typical row looks like `LED TROFFER 2X4 40W 120-277V` - a string a warehouse system can pick against, and a string an LLM has almost nothing to extract from. There's no CCT, no CRI, no delivered lumens, no DLC or Energy Star status, no dimming protocol. The part number is the whole product. Answer engines aren't reasoning their way around that gap - they're pattern-matching on structured signal, and the data on this is fairly direct. An analysis of AI citation patterns found [pages with structured data are cited roughly 3.1x more often in AI Overviews](https://alhena.ai/blog/schema-markup-ai-search-ecommerce/), and that 71% of pages ChatGPT cites carry some form of schema markup, while only a minority of e-commerce product pages implement it completely. Lighting distribution sits squarely in that gap: the specs a contractor cares about exist somewhere in a spec sheet PDF, but rarely as the discrete, labeled fields an AI system can lift into an answer. Schema markup alone doesn't fix this. It's a delivery mechanism - it exposes fields, it doesn't manufacture values that were never captured. If your source data has no real CRI value, wrapping a blank field in JSON-LD gets you nothing. The fix starts upstream, with the values themselves. ## What "ask an answer engine" actually looks like Here's the kind of prompt a lighting buyer runs today - worth typing against your own catalog: **"Find a 2x4 LED troffer, 4000K, 90+ CRI, DLC Premium listed, with 0-10V dimming, from a distributor that has it in stock."** That sentence contains six filterable attributes. If your product data doesn't carry all six as discrete, correctly-valued fields, an answer engine has no basis to surface your SKU - it will cite whichever competitor's page states delivered lumens, CRI, and DLC status in a form it can parse. ## Before and after: what enrichment changes Raw ERP feed description, still powering most lighting distributor catalogs: > `LED TROFFER 2X4 40W 120-277V 4000K` Enriched, quality-scored attribute table - what an answer engine can actually reason over: | Attribute | Value | |---|---| | Product type | 2x4 LED troffer | | Wattage | `40W` | | Input voltage | `120-277V` | | CCT | `4000K` | | CRI | `90+` | | Delivered lumens | `4,800 lm` | | Efficacy | `120 lm/W` | | Dimming | `0-10V, 10%-100%` | | DLC status | `DLC Premium` | | Energy Star | Not applicable (commercial troffer) | | Mounting | Recessed grid, T-bar | | Warranty | 5 years | The raw string carries wattage, voltage, and CCT if you squint. The enriched version carries every field a spec sheet or a contractor's RFQ would check - and each one is a candidate match point for an AI answer engine deciding whether to cite your SKU. ## The DLC and Energy Star wrinkle Lighting has a structured-data advantage most categories don't: DLC's Qualified Products List and Energy Star's certified list are themselves machine-readable, third-party-verified sources. A DLC ID or Energy Star certification can be extracted from those public lists, matched to your SKU, and pushed into your structured data - giving an answer engine two independent signals instead of one. Distributors who treat that status as a first-class, always-current attribute, not a PDF buried three clicks deep, are handing answer engines exactly the kind of verifiable fact they favor when choosing what to cite. ## Where this gets fixed None of this requires ripping out the ERP or the PIM, if there is one - plenty of lighting distributors run on spreadsheets and a website CMS, and that's a fine starting point. The gap is between what's stored and what's readable. Anglera sits on top of whatever you already run - Akeneo, Salsify, a flat file export, it doesn't matter - and does the work of gap-filling CCT, CRI, lumens, DLC status, and dimming compatibility from supplier documentation and spec sheets, scoring each value for confidence rather than guessing, then pushing the result out as clean, structured attributes. Most lighting catalogs can be running enriched within a few weeks, not through a multi-year systems overhaul, because the mechanism is enrichment on top of existing data, not replacement of it. ## The category is getting quieter for the unprepared This shift isn't lighting-specific, but lighting is an unusually good test case: the specs are standardized, and third-party verification sources already exist. The distributors who make their data machine-readable first will be the ones an AI Overview or a Perplexity answer actually names - and the ones who don't will simply stop coming up, without ever knowing why the quote requests slowed down. That's the practical version of the AI-search shift for distribution: it's not about better marketing copy, it's about whether the facts a buyer needs are sitting in your data at all, in a form something other than a human can read. Anglera's job is making sure they are, continuously, at catalog scale, without asking a distributor to rebuild their systems to get there. --- # Syndicating electrical data to every channel without the re-keying Source: https://www.anglera.com/blog/electrical-syndication Published: 2026-04-21 Industries: electrical ![Syndicating electrical data to every channel without the re-keying](/og/hero-electrical-syndication.jpg) A 250-amp molded-case breaker with a two-line title and a stock photo will sit on page four of every marketplace and partner site it touches, no matter how good the part is. Electrical has more channels demanding structured, verified data than almost any other distribution category, and most feeds still aren't built for that bar. This is about what that bar actually looks like, and how to clear it without re-keying the same spec sheet six times. ## The feed is fine for the warehouse, not for the channel Most electrical distributor and manufacturer feeds started as ERP exports: part number, description, price, UOM, maybe a datasheet PDF. That's enough to pick, pack, and invoice. It is not enough for a marketplace, a punchout catalog, or a search engine deciding which SKU answers "125A 3-pole molded case breaker 480V." Those channels don't read PDFs. They read structured attributes, and they reject or bury anything that's missing them. The gap shows up as three separate failure modes, and it's worth naming them separately because they get fixed differently: - **Content gaps** — thin titles, no bullet-level specs, no application context ("panelboard replacement," "motor circuit protection"). - **Attribute gaps** — the values a buyer or filter actually needs (frame size, trip rating, AIC, poles, voltage) living only in a spec-sheet PDF, not as searchable, filterable fields. - **Identifier gaps** — missing or inconsistent GTIN/UPC, ETIM or UNSPSC classification, or a catalog number that doesn't match what the manufacturer registered upstream. Any one of these is enough to get a listing suppressed or ranked below a competitor's cleaner one. Amazon's own seller guidance is blunt about it: incomplete attribute data gets listings flagged as incomplete or suppressed, and "universal required attributes get your listing into the catalog, while category-specific attributes determine whether it stays there and performs" ([Inriver](https://www.inriver.com/resources/product-data-requirements-amazon-seller-reference/)). Distributors selling on Amazon Business, Grainger, or through a national account punchout hit the same category-specific gate — it's just breaker specs and NEMA ratings instead of apparel sizing. ## The bar electrical channels actually enforce Electrical is unusual among distribution categories because the industry itself built shared data infrastructure for this problem. IDEA — the joint data venture of NAED, NEMA, and NEMRA — runs the IDEA Connector that most electrical manufacturers and distributors already syndicate through, and it's now consolidating ETIM and UNSPSC-based formats into a single Harmonized Data Model (HDM) so a manufacturer can load data once and have it adapt to whatever taxonomy a given channel wants ([Canadian Electrical Wholesaler](https://www.canadianelectricalwholesaler.ca/what-is-the-harmonized-data-model-and-why-does-the-industry-need-it/)). That's a tacit admission of how bad the reformatting tax has been — and the HDM's own rationale cites research that 97% of online B2B buyers hit some kind of pain point during the purchase process, much of it traceable to inconsistent product data. The practical implication: whether the destination is IDEA Connector, a marketplace, or a distributor's own e-commerce search, the same underlying attribute set gets checked. For electrical products broadly, and circuit protection specifically, that set includes: | Layer | What's checked | Why it gates the listing | |---|---|---| | Identifiers | GTIN/UPC, manufacturer catalog number, ETIM/UNSPSC class | Matches the SKU to the right taxonomy node and search facet | | Core attributes | Voltage, poles, amperage, frame/trip rating, interrupting rating | Drives filters and eligibility for "fits my panel" searches | | Compliance | UL/CSA listing status, agency marks, certification type | Required for procurement and safety sign-off, often a hard filter | | Content | Title, bullet specs, application use case, image count | Determines rank and click-through once the SKU is eligible | ## A molded-case breaker, before and after Here's what a typical raw feed row looks like for a molded-case circuit breaker (MCCB), versus what a channel like an IDEA Connector feed, Amazon Business, or a distributor's own site actually needs before it will rank or even display. **Raw feed description:** "Molded case circuit breaker, 3 pole, 250A, thermal magnetic, UL listed." **Channel-ready attribute table:** | Attribute | Value | |---|---| | Catalog number | `HDL36250` | | Frame size / trip rating | `250 AF / 250 AT` | | Poles | `3` | | Voltage rating | `600V AC` | | Interrupting rating (AIC) | `65 kAIC @ 480V` | | Trip type | Thermal-magnetic, fixed | | Termination | Cu/Al, 4/0–500 kcmil | | Certification | UL 489 Listed | | GTIN | `00785xxxxxxxx` | | ETIM class | `EC000078` (Circuit breaker) | | Application | Panelboard/switchboard branch and feeder protection | The values on the right aren't invented — they're the same data already sitting in the manufacturer's spec sheet and UL listing card. UL's own marking guidance requires the catalog number, ampere rating, interrupting rating, poles, and certification status to appear on the physical device label ([UL Solutions](https://www.ul.com/thecodeauthority/knowledge/circuit-breaker-guide)) — the data exists, it's just trapped in a PDF instead of structured fields a channel can ingest. **Ask an answer engine:** "250 amp 3-pole molded case breaker rated for 480V panelboard feeder, 65kA interrupting." An AI shopping assistant or a procurement copilot parses that request against structured attributes — frame, poles, voltage, AIC — not against a two-sentence description. A SKU without those fields as data, not prose, doesn't get a chance to match. ## Why "just export more fields" doesn't fix it The instinct is to add columns to the export and call it done. But most distributors and manufacturers don't have these values sitting cleanly in one system — trip ratings live in a PDF, AIC ratings live in a different spec table, GTINs live in a spreadsheet someone maintains by hand. Manual reconciliation runs around 30-45 minutes per SKU once you account for pulling the datasheet, checking the UL card, and typing values into the right fields — and electrical catalogs run into the tens of thousands of SKUs across breaker families, disconnects, panelboards, and accessories. Re-keying at that scale is why so many feeds stay thin. ## Where Anglera fits Your PIM stores the data; Anglera does the work of getting it channel-ready. It plugs into whatever's already in place — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file if there's no PIM at all — and it scores, gap-fills, and enriches attributes like frame size, AIC, and GTIN by extracting them from supplier documentation, not guessing at them. Most electrical catalogs can get from raw feed to marketplace-ready completeness in 30 days or less, without a rip-and-replace project or a re-keying sprint. The channels aren't going to lower the bar. The faster path is making the data clear it once, everywhere it needs to go. --- # Why building materials feeds lose to marketplaces — and how to close the gap Source: https://www.anglera.com/blog/building-materials-syndication Published: 2026-04-21 Industries: building-materials ![Why building materials feeds lose to marketplaces — and how to close the gap](/og/hero-building-materials-syndication.jpg) A distributor can have the right SKU, the right price, and still lose the buy box — or never make it live at all — because the feed behind the listing is thin. In building materials, where a single product like an LVL beam carries a dozen structural attributes a buyer needs before they'll click "add to cart," incomplete data isn't a cosmetic problem. It's the reason good products underperform next to a competitor's listing that simply says more, correctly, in the fields marketplaces actually check. ## Why incomplete feeds lose, even when the product is right Marketplaces and distributor portals don't grade on a curve. Lowe's Marketplace runs every upload through Mirakl validation, and sellers are told plainly that placeholder images will cause rejection and that final imagery must clear a [1000 x 1000 pixel minimum, 72 DPI, and 5KB file size floor](https://support.channelengine.com/hc/en-us/articles/27898226498589-Lowe-s-marketplace-guide) before anything publishes. Home Depot's syndication layer works the same way in spirit: attributes, variations, and digital assets get [validated against category-specific requirements before they go live](https://bluemeteor.com/home-depot/), and gaps in that validation are exactly what produces suppressed listings and rejected uploads — not a manual reviewer having a bad day. The commercial cost compounds from there. On Lowe's own guidance, sellers who fill in the optional enrichment fields — not just the required minimum — see meaningfully higher conversion, with vendor training material citing a [45%+ lift in conversion rate](https://support.channelengine.com/hc/en-us/articles/27898226498589-Lowe-s-marketplace-guide) tied to enrichment completeness. So there are two bars in play: a hard bar that decides whether a listing publishes at all, and a soft bar that decides whether it sells once it's live. Distributors chasing marketplace and partner-channel growth usually have a data team fighting the first bar and no bandwidth left for the second. ## The bar marketplaces actually enforce Strip away the platform-specific jargon and the requirements cluster into three layers: | Layer | What it covers | Failure mode if missing | |---|---|---| | Identifiers | GTIN/UPC, manufacturer part number, category classification (UNSPSC for procurement systems, GS1 GPC for GDSN retail sync, ETIM/eCl@ss for technical trades data) | Product can't be matched, deduped, or routed to the right category — [distributors typically juggle several classification standards at once](https://catsy.com/blog/product-classification-for-manufacturers-2026/) depending on the downstream channel | | Attributes | Dimensions, material, grade, structural/technical values, compliance certifications, compatibility notes | Listing gets suppressed pre-publish, or publishes but ranks poorly in on-site and AI search | | Content | Titles, structured descriptions, imagery meeting size/format/DPI minimums | Rejected at upload, or buried below competitors with fuller pages | Building materials feeds tend to fail at the attribute layer first. A fastener, a beam, or a panel arrives from the mill or plant with a supplier spec sheet PDF and a thin ERP description — "LVL Beam, 1.75x11.875, 20FT" — and none of the structural detail that a contractor, an estimator, or a marketplace's own validation rules are looking for. ## The LVL beam, before and after Here's what that gap looks like on one real product line, using published grade data from an [engineered-wood specifier guide](https://www.redbuilt.com/wp-content/uploads/2020/03/RedLam-LVL-Specifiers-Guide.pdf): **Raw feed description:** "LVL Beam 1.75x11.875x20 — engineered wood, straight, no warp." **Channel-ready attribute table:** | Attribute | Value | |---|---| | Product type | Laminated veneer lumber (LVL) beam | | Nominal dimensions | `1.75" x 11.875"`, `20 ft` length | | Grade | `2.0E` | | Modulus of elasticity (E) | `2.0 x 10^6 psi` | | Flexural stress (Fb) | `2,900 psi` | | Horizontal shear (Fv) | `285 psi` | | Application | Header, beam, or rim board — floor and roof framing | | Compatible connectors | Hangers rated for engineered wood, per manufacturer span tables | | Compliance | ICC-ESR / code evaluation report reference | That's the difference between a line item and a spec sheet a buyer — or an estimator's software — can actually act on. ## Ask an answer engine This is also how the buying motion is shifting. A distributor's customer, or their procurement software, increasingly phrases the search as a question rather than a keyword: "which 2.0E LVL beam handles a 20-foot clear span for a residential floor header, and who has it in stock." An answer engine assembling that response needs the grade, the E-value, the length, and the application spelled out in structured fields — not inferred from a PDF attached three clicks away. Feeds that only carry a title and a price are invisible to that query, no matter how good the actual product is. ## Closing the gap without a rebuild None of this requires replacing the systems already in place. Your PIM — Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or none at all — stores the record; the gap is almost always in what's populated inside it. Getting from a thin ERP export to a channel-ready feed means scoring every SKU against the identifier, attribute, and content layers above, pulling the missing values from supplier spec sheets and mill certs rather than guessing, and quality-scoring what gets written back so a beam's Fb rating comes from a real document, not a hallucination. That's the kind of gap-filling work that used to run 30-45 minutes of manual lookup per SKU, multiplied across thousands of line items and a dozen retailer and distributor portals with different attribute schemas. It's also the kind of problem worth automating rather than staffing up for indefinitely — which is the argument for treating feed completeness as an ongoing enrichment layer rather than a one-time cleanup project before the next big syndication push. Anglera sits on top of whatever PIM or spreadsheet a distributor already runs, scores catalogs against the specific bar each marketplace enforces, and fills the gaps from real source documents — live in weeks, not another multi-year systems project. The building materials feeds that win on marketplaces aren't the ones with the best product; they're the ones with the most complete, most current data behind it. --- # Building an attribute schema for Pool & Spa that buyers and AI can actually use Source: https://www.anglera.com/blog/pool-spa-attributes Published: 2026-04-20 Industries: pool-spa ![Building an attribute schema for Pool & Spa that buyers and AI can actually use](/og/hero-pool-spa-attributes.jpg) A pool and spa buyer rarely searches for "energy-efficient pump." They search for a 1.5 HP variable-speed pump rated for 60-80 GPM at a specific total head, with a permanent magnet motor and a WEF that clears the current DOE floor. If those fields live only in a spec-sheet paragraph, the SKU doesn't rank lower — it disappears from the filter entirely. Here's the attribute set that actually matters in Pool & Spa, why gaps quietly delete SKUs, and how to structure the schema so it holds up. ## Why Pool & Spa punishes vague data Pool equipment sits at an unusual intersection: it's regulated like an appliance, sized like HVAC equipment, and shopped for like a durable good. The U.S. Department of Energy's Dedicated Purpose Pool Pump rule, in effect since mid-2021, requires most inground pump motors above roughly 1.15 total horsepower to meet efficiency levels that only variable-speed or two-speed designs can hit — which is why the market has shifted hard away from single-speed pumps for anything but small aboveground applications, as [Pool & Spa News covers in its breakdown of the DOE rule](https://www.poolspanews.com/products/what-to-know-about-the-department-of-energy-pool-pump-rule_o). That regulatory layer created a new mandatory attribute almost overnight: Weighted Energy Factor (WEF), the DOE's efficiency metric expressed in thousands of gallons moved per kilowatt-hour. [AQUA Magazine's explainer](https://www.aquamagazine.com/retail/article/15122994/weighted-energy-factor-wef-for-pool-pumps-what-you-need-to-know) notes WEF is now the number pros and rebate programs actually compare, not nameplate horsepower — a catalog that still leads with HP alone is answering the wrong question, and a listing without a WEF field can be invisible to rebate-driven buyers as well as search filters. Layer on the physical realities every installer filters on — flow rate, total dynamic head, pipe size, voltage — and it's clear why a marketing phrase like "quiet, energy-saving pump" satisfies nobody: not the pro sizing a pad, not the platform's facet logic, not an answer engine looking for a comparable spec. ## The attribute set that actually matters For pumps, filters, heaters, and sanitizers, the fields that drive real filtered search and installer decisions cluster into a few buckets: | Category | Attributes | |---|---| | Hydraulic performance | Flow rate (GPM), total dynamic head (TDH) at rated flow, max flow, port/pipe size | | Motor & drive | Motor type (single-speed, two-speed, variable-speed), motor technology (induction vs. permanent magnet), horsepower (nameplate and rated/service factor), RPM range | | Efficiency & compliance | WEF, Energy Star certification, DOE Dedicated Purpose Pool Pump compliance, UL/CSA listing | | Electrical | Voltage (`115V`/`230V`, dual-voltage), amperage, phase | | Control & automation | Onboard programmable speeds, RS-485/automation compatibility, app/Wi-Fi control, compatible automation systems | | Physical | Dimensions, weight, strainer basket capacity, mounting/plumbing configuration | The same buckets carry over, with different specifics, to filters (media type, square footage, max flow, backwash requirement), heaters (BTU input, fuel type, ignition type, efficiency rating), and sanitizers (production capacity in lbs/day, cell type, compatible pool volume). The mechanism is identical: a buyer's filter maps to a real physical spec, and a spec that isn't a structured field silently excludes the product. ## Worked example: a variable-speed pool pump Here's the gap between what most manufacturer feeds contain and what's needed to be filterable and machine-readable. **Raw feed description (as received from a distributor's supplier import):** > "High-efficiency variable speed pool pump, quiet operation, easy programming, energy-saving design, suitable for residential in-ground pools." That description is accurate and completely unusable for search. No GPM, no head, no WEF, no voltage, no pipe size — a buyer filtering for "1.5 HP, WEF above 7.0, 2-inch plumbing" will never see this SKU, and an AI answer engine summarizing pump options has nothing to cite. **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Variable-speed pool pump | | Motor type | Permanent magnet, variable-speed | | Horsepower (nameplate) | `1.65 HP` | | Horsepower (rated/service) | `1.5 HP` | | Flow rate | `Up to 130 GPM` | | Total dynamic head at rated flow | `60 ft` | | Voltage | `115V/230V, dual voltage` | | WEF | `8.1` | | Certification | Energy Star certified, DOE DPPP compliant | | Pipe/port size | `2 in` | | Programmable speeds | 8 | | Automation compatibility | RS-485, compatible with third-party automation controllers | | Sound level | `≤ 66 dBA at 3 ft` | | Warranty | 3-year limited | Same physical pump, same manufacturer documentation — now every field a rebate program, an installer's pad-sizing sheet, or a filter facet would ask for is broken out and quality-scored against the source spec sheet. ## Ask an answer engine A buyer or their AI assistant might ask: "what's a WEF 8+ variable-speed pool pump rated for 60-80 GPM with 2-inch plumbing that qualifies for a utility rebate?" An answer engine can only surface and compare pumps whose `WEF`, `flow_rate`, `pipe_size`, and `certification` fields are explicit and structured — a paragraph about "energy-saving design" doesn't answer that question at all. Distributors leaving those fields as prose aren't underperforming in AI search; they're opted out of it entirely. ## Structuring the schema so it holds up A few rules keep a Pool & Spa schema durable rather than a one-time fix: - **Report WEF, not just horsepower.** Since the DOE rule, HP alone tells a buyer almost nothing about running cost or rebate eligibility — WEF needs its own controlled field, sourced from the manufacturer's Energy Star or DOE documentation, not estimated. - **Pair flow with head.** GPM without total dynamic head is not a real spec — pumps perform differently at different heads, so the two belong together, ideally as a small performance table or matched pair of fields. - **Separate nameplate HP from rated/service HP.** Manufacturers use both and buyers, especially pros, filter on the one that matches their sizing method. - **Keep certification and compliance as controlled values.** `Energy Star`, `DOE DPPP compliant`, and specific UL/CSA listings are pass/fail gates for some buyers and rebate programs, not descriptive flourishes. None of this requires replacing an existing PIM or building a new taxonomy from scratch. Your PIM stores the data — the work is extracting these values from supplier spec sheets, quality-scoring them, and gap-filling what's missing so a catalog stays filterable and legible to shoppers and answer engines alike as new SKUs and revisions arrive. Anglera plugs into Akeneo, Salsify, inriver, or a flat file and does exactly that, typically standing up a first working schema in weeks rather than a multi-year integration — the same discipline this pump example shows, applied across a full Pool & Spa catalog. --- # Manufacturers: ship distributor-ready product data, not Excel Source: https://www.anglera.com/blog/manufacturers-distributor-ready-data Published: 2026-04-20 ![Manufacturers: ship distributor-ready product data, not Excel](/og/hero-manufacturers-distributor-ready-data.jpg) Every distributor onboarding meeting ends the same way: "just send us your spreadsheet, we'll take it from there." That sentence is where a lot of manufacturer revenue quietly leaks out. The file gets re-typed into someone else's taxonomy, half the attributes don't survive the trip, and the product goes live looking worse than it is. This isn't a formatting nitpick. It's a sales problem wearing a data costume. ## The handoff is the bottleneck, not the product Most distributors still take supplier product data by email, spreadsheet, or FTP upload, and that intake method fails to scale against the volume and SKU velocity modern catalogs require ([Mirakl](https://www.mirakl.com/distributors/product-data-ingestion)). With hundreds of suppliers and sometimes millions of SKUs on the other end, a single new product launch can take 10-15 back-and-forth interactions and 2-5 hours of manual work before it's live ([Bluemeteor](https://bluemeteor.com/supplier-product-data-onboarding-checklist-step-by-step-guide/)). Every one of those interactions is a place your product can get corrupted or delayed. The most common failure mode isn't malicious, it's structural: "Excel files with freely named columns, incomplete mandatory fields, format inconsistencies, or media links leading nowhere" ([Bluemeteor](https://bluemeteor.com/navigating-supplier-product-data-onboarding-approaches/)). Distributor teams either chase you for corrections or, more often, they publish what they got and move to the next file in the queue. Your dimensions, your compliance flags, your differentiators — whatever didn't survive the spreadsheet trip is gone from the listing. The downstream cost is measurable. Industry estimates put losses from inconsistent product data at an average of $12.9 million a year for organizations dealing with it, and 87% of shoppers abandon a purchase when they hit inaccurate or incomplete product information ([Commport](https://www.commport.com/what-is-product-data-syndication/)). A distributor's buyer doesn't blame the distributor for a thin listing. They blame the product, or they just buy something else in the results. ## Every distributor wants something slightly different, and that's the actual job Manufacturers often treat "send data to distributors" as one task. It's not. Every distributor runs its own template, its own attribute names, its own taxonomy, and its own required fields — and that mismatch is exactly what produces "constant mismatches, missing specs, and rejected feeds that drain internal resources" on both sides ([Commport](https://www.commport.com/what-is-product-data-syndication/)). If you sell through 20 distributors, you don't have one data problem. You have 20 versions of the same product that all need to be internally consistent and individually correctly formatted. Layer on top of that the retailers your distributors ultimately sell into. If your channel includes Walmart, Target, Kroger, Costco, or most large grocery, DIY, and healthcare chains, GDSN-certified data exchange through GS1's network is effectively mandatory for most categories ([Commport](https://www.commport.com/what-is-product-data-syndication/)). A distributor that has to manually patch your file to meet a GDSN requirement is a distributor quietly deprioritizing your line. ## What "distributor-ready" actually looks like Distributor-ready doesn't mean prettier copy. It means every attribute a distributor's system and their downstream retailers expect is present, correctly typed, and consistent across every SKU in the file — before it ever reaches a human for re-keying. Here's the difference in practice, using a mid-range cordless drill as the example: **Raw manufacturer feed (typical Excel export):** > "18V drill, brushless, LED light, kit includes battery and charger, good for pros and DIYers" **Distributor-ready attribute record:** | Attribute | Value | |---|---| | `voltage` | `18V` | | `motor_type` | `Brushless` | | `chuck_size` | `1/2 in (13mm), keyless` | | `max_torque` | `650 in-lbs` | | `battery_included` | `Yes — 2.0Ah Li-Ion` | | `charger_included` | `Yes — standard, 60 min` | | `weight` | `3.7 lbs (bare tool)` | | `warranty` | `3-year limited` | | `gtin` | `00885911XXXXXX` | | `hazmat_flag` | `No` | | `country_of_origin` | `Mexico` | That table is what lets a distributor push the product straight into their catalog and their retail partners' feeds without a human filling gaps from a spec sheet or, worse, guessing. It's also what makes the product answerable. Ask an answer engine "what's the max torque on an 18V brushless drill with a keyless chuck" and a listing built from a description field alone simply won't surface — there's no structured value for it to match against. The enriched record does. ## Why the spreadsheet habit persists anyway None of this is a secret to manufacturers. It persists because fixing it looks like a PIM migration project, and most manufacturers don't have the bandwidth for a multi-year systems integration just to make their distributor handoffs cleaner. That reasoning is understandable and also the wrong tradeoff — the fix doesn't require replacing anything. The mechanism that actually works is upstream enrichment: take the flat file or spec sheet you already have, extract and quality-score every attribute a distributor or GDSN feed will require, gap-fill what's missing from source documentation rather than guessing, and hand off a structured, complete record instead of a description paragraph. Manual enrichment done by hand runs roughly 30-45 minutes per SKU when a team does it attribute-by-attribute — the constraint isn't that structured data is hard to produce, it's that producing it by hand doesn't scale to a full catalog. ## Where Anglera fits This is the exact seam Anglera is built for. Your PIM, spreadsheet, or flat file stays exactly where it is — Anglera doesn't replace it, it plugs into it (or works with none at all) and continuously scores, gap-fills, and enriches the attributes your distributors and their retail partners actually require, values sourced and quality-scored from your own documentation, not invented. A manufacturer can be live with a syndication-ready feed in about 30 days, starting from the same flat file they were already emailing around — the difference is what's in it by the time it leaves the building. Sources: - [Mirakl — Automate Supplier Catalog Onboarding](https://www.mirakl.com/distributors/product-data-ingestion) - [Bluemeteor — Supplier Product Data Onboarding Checklist](https://bluemeteor.com/supplier-product-data-onboarding-checklist-step-by-step-guide/) - [Bluemeteor — Template-Based vs. Flexible Transformation Approaches](https://bluemeteor.com/navigating-supplier-product-data-onboarding-approaches/) - [Commport — What is Product Data Syndication?](https://www.commport.com/what-is-product-data-syndication/) --- # Datacom & Networking on marketplaces: the listing data that wins the buy box Source: https://www.anglera.com/blog/datacom-networking-syndication Published: 2026-04-20 Industries: datacom-networking ![Datacom & Networking on marketplaces: the listing data that wins the buy box](/og/hero-datacom-networking-syndication.jpg) A 48-port PoE switch is not a commodity item on paper, but on a marketplace it behaves like one the moment its listing looks like every other switch on the page. Buyers filter on PoE budget, switching capacity, and uplink type before they ever read a description, and if those fields are blank or buried in a PDF, the listing drops out of the comparison entirely. For distributors and manufacturers pushing datacom and networking gear through Amazon Business, CDW Marketplace, Insight, or a reseller's own storefront, incomplete feeds are not a cosmetic problem. They are a demand problem. ## The gear is technical, but the bar is structural Networking hardware carries more decision-relevant attributes than almost any other B2B category: port count, PoE standard (`802.3af`/`802.3at`/`802.3bt`), total PoE power budget, switching capacity in Gbps, forwarding rate in Mpps, uplink type (`SFP+`, `RJ45`), management tier (unmanaged, smart-managed, fully managed), rack unit height, and power draw. A buyer sizing a switch for 40 PoE cameras needs the PoE budget number, not just "supports PoE+." A buyer standardizing on 10G uplinks needs to know if the four SFP+ ports are shared or dedicated. None of that lives in a glossy hero image. Marketplaces have built their eligibility and ranking logic around exactly this kind of structured data. On Amazon, [Buy Box eligibility runs through listing health](https://amzprep.com/amazon-buy-box-eligibility/) — accurate titling, complete bullets, and correct categorization are baseline requirements before price, fulfillment, and defect rate even come into play. A switch listed with a generic title and a missing attribute set does not just rank lower; in many categories it does not show up in the faceted search buyers use to filter switches by PoE budget or port count in the first place. The identifier layer matters just as much as the attribute layer. Global distribution still runs on GS1's [Global Data Synchronization Network](https://www.gs1.org/services/gdsn), which lets trading partners exchange a single trusted GTIN-linked record instead of each reseller re-keying specs from a datasheet. When a manufacturer's GTIN, MPN, and attribute set do not match across a distributor's feed and the marketplace listing, the platform treats it as a data conflict, and conflicting data is a common reason listings get suppressed or merged into the wrong parent, splitting reviews and Buy Box eligibility across duplicate ASINs. ## What "channel-ready" actually means for a switch Take a real 48-port PoE switch, the kind that ships from distribution every day: 48 gigabit ports (40 at 802.3at PoE+, 8 at 802.3bt PoE++), four 10G SFP+ uplinks, 600W total PoE budget, 176 Gbps switching capacity, 131 Mpps forwarding rate, 1U rackmount. Compare what typically arrives from a supplier feed against what a marketplace listing actually needs to be competitive. **Raw feed description (as-received):** "48 Port POE Gigabit Switch with SFP uplinks, managed, rackmount, high power budget for cameras and APs." **Channel-ready attribute table (enriched):** | Attribute | Value | |---|---| | Port count | 48x `1G/100M/10M` RJ45 | | PoE ports | 40x `802.3at` PoE+, 8x `802.3bt` PoE++ | | Total PoE power budget | `600W` | | Uplink ports | 4x `SFP+` (10G/1G) | | Switching capacity | `176 Gbps` | | Forwarding rate | `131 Mpps` | | Management tier | Fully managed (cloud/controller) | | Form factor | `1U` rackmount, 442 x 400 x 44mm | | Max power draw | `660W` (incl. PoE output) | | GTIN / MPN | Matched and validated against manufacturer record | That second version is what clears a marketplace's category-specific required-attribute check, what populates the comparison filters buyers actually use, and what an AI answer engine can extract with confidence. Ask an answer engine "which 48-port PoE switch has enough budget for 40 PoE++ cameras and 10G uplinks" and it needs the wattage, the standard, and the uplink spec sitting in structured fields, not implied by a marketing adjective like "high power." ## Where feeds actually break down The failure pattern is consistent across datacom and networking suppliers: - **PoE budget gets rounded or omitted.** A supplier lists "PoE+" without the wattage, so a buyer comparing three switches for a camera deployment can't tell which one actually has headroom, and the [PoE budget number is what buyers plan against, not the per-port standard](https://www.cablesandkits.com/learning-center/how-to-calculate-poe-budgets/). - **Switching capacity and forwarding rate are dropped entirely.** These fields rarely exist in a distributor's base feed because they come from a datasheet PDF, not the ERP record. - **GTIN/MPN mismatches across channels.** The same switch shows up with three slightly different model strings across a distributor's price file, the manufacturer's spec sheet, and the marketplace catalog, fragmenting reviews and search rank. - **Management tier is ambiguous.** "Managed" alone doesn't tell a buyer if it's smart-managed with a basic web GUI or fully managed with CLI and API access — a material difference for IT procurement. Every one of these is a gap-fill problem, not a re-platforming problem. The data exists somewhere in a datasheet, a supplier spec sheet, or a prior listing. It just isn't sitting in the structured field the marketplace's category template expects. ## Getting to channel-ready without a re-platform Your PIM stores the data; Anglera does the work of getting it to channel-ready completeness. Anglera plugs into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica, or a flat file with no PIM at all — it's additive, not a replacement for whatever system already holds your product records. It extracts PoE budget, switching capacity, port configuration, and other category-required attributes from supplier datasheets and existing feeds, quality-scores each field against what the marketplace's template requires, and gap-fills what's missing rather than inventing specs that were never in the source. Manual attribute mapping for a category this dense typically runs 30-45 minutes per SKU when a team does it by hand, and a datacom catalog with hundreds of switch, router, and access point SKUs makes that math painful fast. Anglera compresses that into a workflow that can go live in a few weeks, not a multi-quarter systems-integration project — useful for distributors who need this quarter's catalog channel-ready, not next year's. ## The throughline Datacom and networking buyers, human or AI-mediated, are filtering on hard numbers: watts, ports, gigabits per second. A feed that's missing those numbers doesn't lose on price or brand, it loses on visibility before the comparison even starts. Getting a catalog to the completeness bar marketplaces enforce is a data-enrichment problem with a defined shape, and that's the layer Anglera exists to close. --- # The state of product data in Automotive Aftermarket (2026) Source: https://www.anglera.com/blog/automotive-aftermarket-state Published: 2026-04-20 Industries: automotive-aftermarket ![The state of product data in Automotive Aftermarket (2026)](/og/hero-automotive-aftermarket-state.jpg) Automotive aftermarket is one of the only industries with its own product-data standards body, and it still can't keep a catalog clean. ACES and PIES have existed for decades to make fitment and product information portable between manufacturers, distributors, and retailers. Yet in 2025-2026, with e-commerce growing, AI search reshaping discovery, and the Auto Care Association pushing out the biggest standards update in years, the gap between having a schema and having a complete catalog is more expensive than it's ever been. ## What's actually broken The industry has the infrastructure right. ACES (fitment) and PIES (product attributes, pricing, packaging) are machine-readable formats maintained by the [Auto Care Association](https://www.autocare.org/data-standards), backed by shared reference databases for vehicles, part categories, and attributes. In April 2026 the association released ACES 5.0 and PIES 8.0 after a yearlong industry review, adding support for digital assets, multilingual content, and Extended Producer Responsibility packaging data, explicitly to help the industry "deliver richer content, improve data accuracy and adapt to evolving global and regulatory needs" ([Auto Care Association](https://www.autocare.org/news/latest-news/details/2026/04/02/auto-care-association-releases-aces--5.0-and-pies--8.0)). That's real progress on the schema. It doesn't fill in a single field. The same announcement points at the ongoing gap: the association's self-serve Catalog Assessment Tool, which lets a brand upload an ACES or PIES file and get an automated error report back in minutes, has already run hundreds of brands through it and surfaced logic and data-validation problems before those files ever reached a trading partner. A standard that hundreds of brands are still failing basic validation against isn't a data-quality solution — it's a diagnostic. The actual data — dimensions, materials, fitment notes, part numbers correctly mapped to the right vehicle configuration — is still built manually, supplier by supplier, spreadsheet by spreadsheet, in most manufacturer and distributor back offices. Here's what that looks like on an actual product page, for something as common as a brake pad set: **Raw feed description:** `Brake Pad Set - Front` **What an enriched attribute table looks like:** | Attribute | Value | |---|---| | Position | Front axle | | Friction material | Ceramic | | Base vehicle fitment | 2015-2020 Ford F-150, 2WD/4WD | | Sub-model exclusions | Raptor; Police Interceptor package | | Tow/HD brake package | Compatible, standard and Max Tow | | Includes hardware kit | Yes | | Wear sensor | Electronic, included | | Rotor diameter compatibility | 13.8 in. | | Warranty | Limited lifetime | The first line is a SKU with a price tag. The second is what actually resolves whether the part fits a specific customer's truck. Most manufacturer feeds still ship closer to the first line, with fitment notes buried in a PDF cut sheet if they exist at all. ## What it actually costs Thin, inconsistent aftermarket data shows up as real, measurable damage in three places: - **Returns.** Fitment mismatches are consistently cited as the single largest driver of auto parts returns, with return rates on some online storefronts running as high as 20% and industry accounts putting fitment errors behind close to half of those ([X-Cart](https://www.x-cart.com/blog/how-to-minimize-online-car-parts-returns-and-keep-customers-happy.html)). Every one of those is a part shipped, a part shipped back, and a customer who now questions the next order too. - **Lost search and filter visibility.** A brake pad listing with a blank tow-package field doesn't rank lower when a buyer filters by that spec — it disappears from the results entirely, on the retailer's own site and in Google's AI Overviews alike. - **Thin PDPs that don't convert.** A page with a part number and a stock photo gives a DIY buyer no way to self-confirm fitment, which either kills the sale or pushes it back onto a phone call a counter rep now has to handle manually. Manual enrichment doesn't scale against catalogs built from hundreds of manufacturer brands and constantly shifting vehicle configuration data. Properly researching a spec sheet, mapping it to the right VCdb vehicle record, and writing a clean attribute set runs in the 30-45 minute range per SKU — against catalogs with hundreds of thousands of line items, that math never closes. ## Why 2025-2026 raises the stakes Three things are converging at once. **AI search is replacing the click.** Google's AI Overviews have shifted auto parts discovery from deterministic, rule-based rankings to a probabilistic model where an AI system is making a judgment call about which part to recommend, often without sending the buyer to a product page at all ([Hedges Company](https://hedgescompany.com/blog/2025/06/google-ai-search-for-auto-parts/)). Ask an answer engine "what brake pads fit a 2016 F-150 with the Max Tow package" and it can only recommend a specific SKU if the underlying fitment data distinguishes tow-package trims from base trucks. A listing that just says "Front, various F-150" gets skipped in favor of a competitor's line item with that distinction spelled out. **The buyer and the channel are both shifting.** The Auto Care Association and MEMA Aftermarket Suppliers' 2025 Joint E-Commerce Trends and Outlook Forecast puts U.S. aftermarket e-commerce at roughly $23 billion excluding third-party marketplaces and $44.6 billion including them in 2025, growing 4.6% that year with a 5.4% compound annual rate through 2030 ([aftermarketNews](https://www.aftermarketnews.com/joint-e-commerce-trends/)). Consumers are now splitting spend roughly equally between online and offline channels and routinely researching a part number online before ever walking into a counter — which means the catalog data has to do the selling work a counter rep used to do in person, for a buyer generation that's used to Amazon-level product content everywhere else it shops. **The standard just got harder to keep up with.** ACES 5.0 and PIES 8.0 add new fields for digital assets, multilingual content, and packaging data on top of an already sprawling attribute set. Every version bump widens the gap between what the schema now supports and what's actually populated in a manufacturer's live feed. ## Where this goes None of this gets fixed by adopting the next version of a standard, because the standard was never the bottleneck — the labor to populate it, consistently, at catalog scale, always was. Anglera plugs into whatever PIM, ERP, or flat file a manufacturer or distributor already runs — no rip-and-replace, no multi-year integration — and continuously scores, gap-fills, and enriches product attributes straight from supplier documentation, values extracted and quality-scored rather than guessed at. The PIM still stores the data. Making sure that data is complete, current, and legible to a buyer or an AI assistant is the work Anglera does on top of it. --- # A distributor's guide to ACES/PIES fitment data Source: https://www.anglera.com/blog/automotive-aftermarket-guide Published: 2026-04-20 Industries: automotive-aftermarket ![A distributor's guide to ACES/PIES fitment data](/og/hero-automotive-aftermarket-guide.jpg) A buyer shopping for a brake rotor on a distributor's site is running a silent compatibility check before they ever look at price: year, make, model, engine, trim, sometimes down to the axle position. If the product page can't answer that in one glance, they either guess and order wrong, or they call the counter and tie up a rep who could be doing something else. Both outcomes trace back to the same root cause: fitment data that exists somewhere in the business but doesn't make it onto the page. ## ACES and PIES aren't optional back-office plumbing ACES (Aftermarket Catalog Exchange Standard) and PIES (Product Information Exchange Standard) are the industry's shared language for describing what a part is and what it fits. PIES carries the product attributes: part number, brand, dimensions, packaging, digital assets. ACES carries the fitment: which combination of year, make, model, engine, and sub-model a given part number is valid for, expressed against the Auto Care Association's shared vehicle configuration database (`VCdb`), position database (`PAdb`), and qualifier database (`Qdb`) ([Auto Care Association, ACES](https://www.autocare.org/aces)). Most distributors already have ACES and PIES files from suppliers or a data provider. The problem is rarely that the standard is missing — it's that the files are incomplete, out of date, or never make it cleanly from the feed into what a shopper sees on the page. A part can be 100% compliant with the ACES schema and still be missing the one qualifier (2WD vs. 4WD, front vs. rear, vented vs. solid) that determines whether it fits the customer's actual truck. ## Why this shows up as returns, not just bad data Auto parts already carry one of the highest return rates in ecommerce — industry trackers put it around 19-20%, well above the roughly 20% average across all retail categories, and fitment mismatches are consistently cited as the single largest driver ([ServeRetail, "Auto Parts Return Rate"](https://www.serveretail.com/blog/cx/auto-parts-return-rate-how-to-reduce-it/)). One fitment-data vendor's review of aftermarket returns puts the share caused specifically by incorrect or incomplete fitment data at close to 20% on its own ([PCFitment, "Using Data Quality & Validation to Reduce Returns"](https://pcfitment.com/blog/fitment-data-validation-reduce-returns/)). Online marketplaces run meaningfully higher return rates than brick-and-mortar counters for the same reason a counter person exists in the first place: a human used to catch the mismatch before the sale closed, and now nobody does. Every one of those returns costs more than the refund. There's the reverse shipping, the restocking, the core charge dispute if it's a rotor or caliper, and the support ticket that comes before the return — a customer trying to figure out over chat whether the part they already ordered is actually going to fit. ## What a brake rotor buyer needs answered Take a front brake rotor. A buyer (or a technician buying on their behalf) is checking for: - **Vehicle fitment**: year/make/model/engine, expressed precisely enough to exclude the sub-models it doesn't fit - **Position**: front vs. rear, and left vs. right if it's not symmetric - **Rotor type**: vented, solid, or drilled/slotted - **Diameter and thickness**: `12.6 in` diameter, minimum thickness / discard thickness - **Hub type**: hub-centric vs. lug-centric, and bolt pattern - **Load/brake system rating**: whether it's rated for standard or heavy-duty/towing packages, which changes rotor spec on the same base vehicle Here's what a raw supplier feed typically hands a distributor versus what a buyer actually needs: | Raw feed description | Enriched attribute | |---|---| | "Rotor, front, 12.6 disc" | **Fits**: 2019-2023 model-year full-size pickup, 2WD and 4WD, standard-duty package | | (fitment buried in a separate CSV, not linked) | **Position**: Front, left or right (symmetric) | | no diameter units, no thickness | **Diameter**: `12.6 in` / **Minimum thickness**: `1.10 in` | | no hub note | **Hub type**: Hub-centric, `6-lug` pattern | | no load note | **Not for**: heavy-duty towing package (requires larger rotor, see SKU `xxxx-HD`) | The left column is what a lot of catalogs still show at checkout. The right column is what actually prevents the return. ## Ask an answer engine Increasingly, the buyer isn't typing that query into your search bar at all. They're asking an AI shopping assistant something like "front brake rotor for a 2021 half-ton 4x4 pickup, standard duty, not the tow package" and expecting a direct answer, not a list of ten SKUs to click through. If your fitment attributes are locked in a PDF spec sheet, a flat filename, or a fitment table that never made it past internal ops, that answer engine has nothing structured to read — and it will surface a competitor's page that does. ## A distributor's checklist - Confirm every SKU has a fitment record, not just a category assignment - Check fitment down to the qualifier level: 2WD/4WD, drive position, duty package, not just year/make/model - Standardize units and terminology (diameter, thickness, thread, bolt pattern) so "12.6 disc" and "12.6 in rotor" don't read as different products - Flag SKUs where fitment data is present but not surfaced on the live product page - Reconcile supersessions — a rotor that replaced a discontinued part number needs the fitment record to carry over, not restart from zero - Score confidence per attribute so buyers (and support reps) know what's verified versus inferred ## Where Anglera fits None of this requires replacing the PIM or fitment tool a distributor already runs — Anglera works with what's already there, plugging into any PIM or a flat file to continuously score, gap-fill, and enrich the attributes that ACES and PIES data alone don't guarantee make it onto the page. Values are pulled and quality-scored from supplier and source documentation, not invented, and a catalog can go from raw feed to buyer-ready in weeks rather than a multi-year systems project. The fitment standard was never the gap — what happens to that data between the file and the page is. --- # Getting hvac/r products cited by ChatGPT, Perplexity, and AI Overviews Source: https://www.anglera.com/blog/hvacr-aeo Published: 2026-04-19 Industries: hvacr ![Getting hvac/r products cited by ChatGPT, Perplexity, and AI Overviews](/og/hero-hvacr-aeo.jpg) A contractor sourcing a replacement condenser fan motor for a rooftop unit doesn't start with a part number search anymore. He opens ChatGPT, Perplexity, or an AI Overview and describes the job: voltage, horsepower, mounting, rotation. If your product page can't answer that in a format the model can extract cleanly, it never enters the answer. Someone else's SKU does. That's the new gate distributors are being filtered through, and most HVAC/R catalogs were never built to pass it. ## Buying research has moved into the chat window This shift isn't a theory anymore. Forrester's 2025 buyer research found generative AI is now the most-cited research method among B2B buyers, and a 2025 buyer experience study put LLM usage somewhere in the purchase journey at 94% of B2B buyers ([Creatuity, AI in B2B Commerce Statistics 2026](https://www.creatuity.com/insights/ai-in-b2b-commerce-statistics-2026/)). Separate tracking shows GenAI chatbots have become the single most influential source for building vendor shortlists, ahead of review sites, vendor websites, and peer recommendations ([6sense, How GenAI and LLMs Are Changing B2B Buyer Research](https://6sense.com/guides/how-genai-and-llms-are-changing-b2b-buyer-research-and-how-to-respond/)). HVAC/R is not exempt from this. Homeowners and contractors alike are increasingly getting a single AI-generated answer from ChatGPT, Google AI Overviews, or Perplexity instead of a page of blue links, and vendors are already restructuring content specifically to be extractable by those systems ([Local Ranking Coach, HVAC AEO 2026](https://localrankingcoach.com/blog/hvac-aeo-how-hvac-contractors-can-win-ai-search-and-answer-engines-in-2026)). For a distributor, the practical effect is the same whether the buyer is a homeowner or a contractor: the research step that used to land on your site now happens inside a chat window, and the model only cites you if it can confidently parse what you sell. An answer engine doesn't reward marketing copy. It rewards catalogs it can quote without guessing. ## Why a full warehouse looks empty to an LLM Most HVAC/R product data was built for an ERP system and a counter clerk, not a language model. A typical feed row looks like this: **Raw ERP feed description (as-is):** > `MTR CONDSR FAN 1/4HP 208-230V 1075RPM CW SO` A person who already knows the part can decode that. A language model deciding whether to cite this product against three competitors has almost nothing to anchor on: no confirmed compatibility, no clear rotation convention, no application context, no unit system, no verified source. Add in the reality that HVAC/R catalogs are unusually messy at the source. Distributors routinely receive the same physical part from a manufacturer, a master distributor, and a regional warehouse under three different part numbers and three different title formats, with UPCs missing or wrong on a meaningful share of legacy SKUs — especially motors, control boards, and TXVs ([Distributor Data Solutions, HVACR Product Content](https://www.distributordatasolutions.com/industries/hvac/)). Catalogs also drift constantly as suppliers update attributes, specs, and images without notice. An LLM faced with that ambiguity does the safe thing: it either skips the product or hedges its citation so heavily that it's not really a recommendation. ## What machine-readable actually looks like Enriched, the same part reads like this: | Attribute | Value | |---|---| | Product type | Condenser fan motor | | Horsepower | `1/4 HP` | | Voltage | `208-230V`, single phase | | Speed | `1075 RPM` | | Rotation | `CW` facing shaft end | | Mounting | Stud mount | | Shaft type | `Sleeve` | | Compatible equipment | Rooftop package units, condensing units — split system | | Cross-reference OEM part numbers | Verified against source documentation | | Source | Extracted from manufacturer spec sheet, quality-scored | That table isn't decoration. It's what a `Product` and `Offer` schema markup block gets built from, and structured data is exactly the mechanism Google points to for helping search and AI systems understand product pages accurately, including attribute-level detail beyond price and availability ([Google Search Central, Product structured data](https://developers.google.com/search/docs/appearance/structured-data/product)). Answer engines lean on that same layer of structured, well-labeled attributes to decide what they can extract and quote with confidence ([SearchAtlas, Schema for AEO](https://searchatlas.com/blog/schema-for-aeo/)). **Ask an answer engine:** *"What condenser fan motor replaces a 1/4 HP, 208-230V, CW motor on a 3-ton rooftop unit, and who has it in stock?"* If your catalog has verified horsepower, voltage, rotation, and equipment compatibility sitting in structured attributes, an answer engine can match the query and cite your listing with a specific part number. If that same information is buried in an abbreviated string only a warehouse veteran can parse, the model has no defensible basis to recommend you over a competitor whose page already answers the question plainly. ## The gap is a data problem, not a content problem Distributors don't lack products. They lack product data structured well enough for a machine to trust. Fixing that with a full PIM migration is a real option for some, but it's a multi-year, multi-team undertaking most distributors can't justify to solve a search-visibility problem. The more direct fix is treating enrichment as its own layer: pull the raw feed as-is, extract and verify attributes against manufacturer source documents, score each field for confidence, and push the result back out as structured data your site, your PIM, and your answer-engine visibility all benefit from — without ripping out the ERP or PIM you already run. ## Where this is heading The distributors who show up in AI answers over the next few years won't be the ones with the biggest catalogs. They'll be the ones whose catalogs are legible to a system that has to decide, in one pass, whether a product fits the question it was asked. Anglera's enrichment layer plugs into whatever you already run — Akeneo, Salsify, a flat file, or nothing at all — and turns thin ERP-style rows into verified, structured, quality-scored product data in weeks rather than a multi-year systems project, so that legibility becomes a byproduct of how the catalog is maintained, not a separate content initiative bolted on afterward. --- # How electronic components buyers search now — and why your catalog isn't the answer Source: https://www.anglera.com/blog/electronic-components-aeo Published: 2026-04-19 Industries: electronic-components ![How electronic components buyers search now — and why your catalog isn't the answer](/og/hero-electronic-components-aeo.jpg) An engineer looking for a substitute for an obsolete MOSFET doesn't start with your part search box anymore. He opens ChatGPT or Perplexity and describes the job: package, voltage rating, RDS(on), lead-free status, in-stock now. If your catalog can't answer that in a format a model can extract cleanly, your part never enters the answer — a competitor's line item does. That's the new filter electronic components distributors are being run through, and most catalogs were built for an ERP export, not a language model. ## Buying research has moved into the chat window This isn't a hypothetical for component buyers specifically, it's a documented shift across B2B purchasing generally. A recent industry analysis found 94% of B2B buyers used AI somewhere in their most recent purchase process, up from 89% the year before, with AI now cited as buyers' single most meaningful research source, ahead of vendor websites, sales reps, and product experts ([Machine Relations, B2B Buyers Now Research Vendors in AI Engines](https://machinerelations.ai/research/b2b-ai-vendor-research-2026)). Within that research, 55% of buyers say they compare vendors directly inside AI tools and 54% use AI to research the product itself, often before a distributor's sales team even knows the deal exists. Component sourcing has its own version of this problem, and it predates chatbots. Sites like Octopart already built a business on aggregating datasheets, parametric specs, lifecycle status, and pricing from hundreds of distributors and thousands of manufacturers into one machine-searchable index covering tens of millions of parts ([Octopart, About](https://octopart.com/about)). Searching by parameters and cross-references instead of a fixed part number is exactly what buyers now expect an AI answer engine to do conversationally, and the model doesn't page through ten distributor sites to find the one with a clean spec table — it picks whichever source it can parse fastest and cites that. There's a visibility cost here beyond one lost RFQ. A Moz analysis cited in that same research found 88% of citations inside Google's AI Mode come from pages that don't even appear in the organic top 10 ([Machine Relations](https://machinerelations.ai/research/b2b-ai-vendor-research-2026)) — ranking well in classic search no longer guarantees you show up in the answer, and it's a separate competition that runs on how legible your product data is, not how much of it you have. ## Why a full parts catalog looks empty to an LLM Most electronic components data was built for a counter clerk keying part numbers into an ERP, not for a model deciding whether to recommend you. A typical feed row looks like this: **Raw ERP feed description (as-is):** > `RES 10K 1% 1/8W 0805 SMD RoHS` A procurement engineer who already knows the part family can decode that in a glance. A language model trying to decide whether this resistor is a valid substitute for the one specified in a customer's BOM has almost nothing solid to anchor on: no confirmed manufacturer, no MPN, no temperature coefficient, no verified lifecycle status, no cross-reference to the part it's meant to replace. Component data is also unusually prone to drift — the same physical part sells under different distributor SKUs, manufacturers issue running changes under the same base part number, and lifecycle status (`Active`, `NRND`, `EOL`) changes on a schedule the ERP feed was never built to track in real time. Faced with that ambiguity, an answer engine does the conservative thing: it skips the part, or hedges the citation so heavily it isn't really a recommendation. ## What machine-readable component data looks like Enriched, the same line reads like this: | Attribute | Value | |---|---| | Manufacturer | Vishay | | Manufacturer part number (MPN) | `CRCW080510K0FKEA` | | Resistance | `10 kOhm` | | Tolerance | `+/-1%` | | Power rating | `0.125W` | | Package / case | `0805` (`2012` metric) | | Termination | Thick film, lead-free | | Temperature coefficient | `+/-100 ppm/C` | | Compliance | RoHS, REACH | | Lifecycle status | Active | | Verified cross-reference / substitutes | Confirmed equivalents, same footprint and tolerance | | Source | Extracted from manufacturer datasheet, quality-scored | That table isn't formatting for its own sake. It's the raw material for `Product` and `ProductModel` structured data, and it maps directly onto the identifiers — `mpn`, GTIN, package, and spec properties — that Schema.org already defines for exactly this kind of part-level detail ([Semaku, Is Schema.org a game changer for the electronic component industry?](https://www.semaku.com/post/schemaorg-electronic-component/)). It also mirrors the standardized data fields the industry's own trade groups have been pushing distributors and suppliers to exchange for years, for the same reason: so systems on both sides can trust the field without a human double-checking it ([ECIA specifications, EIGP 114.1](https://www.ecianow.org/assets/docs/ECIA_Specifications.pdf)). **Ask an answer engine:** *"What's an in-stock, RoHS-compliant 10 kOhm 0805 resistor, 1% tolerance, that's a verified substitute for a Vishay CRCW0805 that just went end-of-life, and who has it in stock?"* If your catalog carries verified resistance, tolerance, package, compliance, and lifecycle status as structured attributes, an answer engine can match that query and cite your listing with a specific MPN. If that same information lives only in an abbreviated string only a buyer who already knows the part can read, the model has nothing defensible to point to, and it moves on. ## The gap is a data problem, not a content problem Distributors in this space rarely lack part coverage. They lack part data structured well enough for a model to trust on the first pass. A full PIM migration can eventually fix that, but it's a multi-year project most won't greenlight to solve a search-visibility problem. The more direct fix is treating enrichment as its own layer: pull the feed as-is — even from a flat file — verify attributes against manufacturer datasheets, score each field for confidence, and push the result back out to the site and the PIM, without ripping out the ERP already in place. ## Where this is heading The distributors who get cited in AI answers over the next few years won't be the ones with the deepest part libraries. They'll be the ones whose data a model can parse in one pass and trust enough to recommend by name. That's the same discipline product-data enrichment has always been about — not a new content strategy, just the existing job of making a catalog legible, now graded by a stricter reader. Anglera's enrichment layer plugs into whatever a distributor already runs, or nothing at all, and turns thin ERP-style rows into verified, structured product data in weeks rather than years, so that legibility is a byproduct of how the catalog is maintained. --- # Why fasteners feeds lose to marketplaces — and how to close the gap Source: https://www.anglera.com/blog/fasteners-syndication Published: 2026-04-18 Industries: fasteners ![Why fasteners feeds lose to marketplaces — and how to close the gap](/og/hero-fasteners-syndication.jpg) A distributor can stock the right grade-8 hex bolt, price it fairly, and still lose the sale to a competitor's listing that simply says more. Fasteners are one of the most attribute-dense categories in B2B distribution — thread size, grade, finish, and standard all have to be right before a buyer trusts the part enough to click "add to cart." When a feed only carries a part number and a one-line ERP description, marketplaces and partner channels don't reward the SKU that's actually in stock. They reward the listing that's actually complete. ## Why fasteners feeds specifically lose Fastener catalogs are large and old. A typical distributor manages [40,000 to 500,000 SKUs](https://www.distributordatasolutions.com/wholesale-fastener-product-data-comparison-guide/), most of it inherited from decades of ERP entries never built for e-commerce. The same source estimates that only around 5% of a typical fastener catalog carries content usable on a modern product page — meaning images, structured attributes, and spec sheets are the exception, not the norm, across the category. That gap shows up directly in buyer behavior. In Akeneo's 2025 shopper research, [66% of buyers said they've abandoned a purchase because product information was missing or inaccurate](https://bluemeteor.com/your-product-data-is-incomplete-heres-how-to-fill-in-the-gaps-2025/), and Salsify's parallel research found [54% abandon when information is inconsistent across sites and 53% abandon over incomplete or poorly written titles and descriptions](https://bluemeteor.com/your-product-data-is-incomplete-heres-how-to-fill-in-the-gaps-2025/). Fasteners are unusually exposed to this because the category has no room for ambiguity — a buyer can't tell from "HHCS 1/2 GR8 ZN" whether the thread is coarse or fine, whether the finish meets a spec, or whether it's the right length for the joint. So they leave, or they buy from whoever's listing answered the question. ## The bar marketplaces and procurement systems actually enforce Strip away platform branding and the requirements cluster into three layers: | Layer | What it covers | Failure mode if missing | |---|---|---| | Identifiers | GTIN/UPC, manufacturer part number, cross-reference to OEM equivalents | Product can't be matched, deduped, or found by part number search | | Classification | UNSPSC (required on every [Amazon Business punchout product](https://www.amazon.com/gp/help/customer/display.html?nodeId=GMMTHGBFJ5US35V7)), category-specific taxonomy | Listing doesn't route to the right buyer search or approval workflow | | Attributes | Diameter, thread pitch, length, grade/class, material, finish/coating, head style, drive type, applicable standard (ASTM, SAE, ISO, DIN) | Buyer can't filter or compare; listing looks generic next to a competitor's | Procurement teams increasingly run this as an audit, not a courtesy. B2B punchout and marketplace integrations now [check attribute completeness and MPN/GTIN/UNSPSC coverage against the underlying PIM data before a supplier's catalog is trusted for guided buying](https://evinent.com/blog/marketplace-product-data-quality). A feed that passes on price and stock but fails on attributes doesn't get suppressed politely — it just underperforms, quietly, next to a fuller listing. ## What "channel-ready" looks like for a grade-8 hex bolt Take a common structural fastener: a `1/2-13 x 3` grade-8 hex cap screw. Most ERP feeds still describe it like this: **Raw feed description:** `HHCS 1/2-13X3 GR8 ZN` That string is fine for a warehouse picker. It fails a marketplace buyer, a procurement system's UNSPSC router, and an AI answer engine equally, because none of them can parse it into attributes they can filter, compare, or verify against a spec. **Enriched attribute table:** | Attribute | Value | |---|---| | Product type | Hex cap screw | | Nominal diameter | `1/2 in` | | Thread | `13 TPI` (UNC, coarse) | | Length | `3 in` | | Grade/spec | SAE J429 Grade 8 (structural equivalent: ASTM A354 Grade BD) | | Minimum tensile strength | `150 ksi` | | Minimum yield strength | `130 ksi` | | Material | Medium-carbon alloy steel, quenched and tempered | | Finish | Zinc plated | | Head/drive | Hex head, external hex drive | | Applicable standard | [SAE J429](https://www.portlandbolt.com/technical/specifications/sae-j429/), ASME B18.2.1 | The mechanical properties aren't invented — grade 8's 150 ksi minimum tensile and 130 ksi minimum yield are documented across [structural fastener specifications](https://www.high-strength-steel.com/specification-of-sae-j429-grade-8-fastener), and the ASTM A354 BD cross-reference matters because [both specs can be dual-certified for structural applications](https://www.portlandbolt.com/technical/faqs/grade-8-and-astm-a325-bolts-compared/). That's the difference between a listing that states a grade and one that proves it's usable in a load-bearing joint. ## Ask an answer engine A buyer today doesn't always start on a marketplace search bar. They ask an AI answer engine something like: "what grade-8 hex bolt do I need for a 1/2 inch structural connection, zinc plated, ASME B18.2.1?" The engine can only surface a distributor's part if the underlying page carries those exact structured attributes — grade, standard, finish, spec callout — in a form it can extract with confidence. A raw ERP string doesn't answer that question. A structured attribute table does. ## Closing the gap without a re-platform None of this requires ripping out an ERP or a PIM to fix. Your PIM stores the data; Anglera does the work of scoring, gap-filling, and enriching fastener attributes against supplier documentation and quality-checking the result — plugging into Akeneo, Salsify, inriver, Stibo, Syndigo, Pimcore, Informatica,