A CRM built around how you actually sell.
Pipelines, properties and permissions mapped to your real sales process, not the default setup.
Six services. One revenue system.
Services
An unmanageable, hand-typed catalog became a 45,000-variant automated e-commerce system.
Six chapters: what BodyBilt sells, why the sync broke, how big the manual workaround really was, what we built, how the naming was resolved, and what shipped.
BodyBilt doesn’t sell products. It sells configurable systems.
They manufacture ergonomic office and industrial seating. Every model can be ordered across dozens of fabric grades, hundreds of fabric colors, several foam types, multiple arm styles, base options, cylinders and caster sets. All of it lived in Sales Layer, a PIM meant to power a WooCommerce storefront automatically.
The two systems disagreed on what a product is.
In WooCommerce, every buyable configuration is its own variant with a unique SKU. To create that variant on sync, Sales Layer needs one record carrying exactly one value per attribute. BodyBilt’s data wasn’t entered that way — a single row held “Grade 01, 02, 04” in fabric, several bases, a list of cylinders, a set of casters, all at once.
A few hundred products concealed tens of thousands of configurations.
With the automated path broken, the catalog could only be made correct by hand: expand every product into every legitimate combination, write a unique consistent SKU for each, and key it back into Sales Layer one record at a time. Not a task with an end date — a permanent staffing cost that grows with every new fabric.
An automated variant-generation pipeline in Google Apps Script. Four parts, in order.
Reads each configurable product, takes every multi-value field, and generates one clean row for every valid combination. What no person could enumerate reliably, the script produces identically on every run.
A second script assembles a consistent, readable SKU for every variant — parsing grade and color naming, extracting parenthetical foam codes, and de-duplicating so no two variants collide.
Before generating anything, the pipeline cleans years of legacy inconsistency so old malformed IDs don’t corrupt the new output.
Generated variants were loaded into Sales Layer and synced to WooCommerce, with validation that attributes, variations and pricing rendered as real, orderable products.
The naming that made manual work impossible, resolved by rule.
The legacy IDs found in the catalog, then the IDs the pipeline now produces.
Correctly-structured variants across 30 product families.
Hours of manual data entry removed, permanently.
No dropped combinations, no mismatched attributes, no pricing drift.
New products or options regenerate on demand. The catalog grows; the bottleneck doesn’t.
45 minutes, no deck. We map where your CRM, PIM and storefront disagree — and you keep the map whether or not we work together.