Getting your SKUs ready before you import
The single biggest predictor of a smooth onboarding is the state of your SKUs going in. Here’s what good looks like — and how Carpe Inventory IQ helps you get there.
Why this page exists
Most operators move to a real inventory system because spreadsheets stopped keeping up. The thing that determines whether the new system feels like relief or like more work is almost always the same: how cleanly your SKU codes connect to the codes each channel actually uses.
Note carefully: the goal is not to make every channel use the same code. Plenty of merchants intentionally run different codes on different channels — separate Amazon FBA and FBM listings, repackaged Walmart SKUs, white-label variants on eBay. That’s a legitimate choice and Carpe Inventory IQ is designed for it. The goal is to make sure every one of those channel codes is connected back to a single primary SKU through the SKU alias system — so a sale on any channel decrements the same physical inventory pool.
When that’s in place, every feature in Carpe Inventory IQ works the day you turn it on. When it’s not, the system still works — but you’ll spend the first few weeks reconciling codes instead of running your business. We’d rather you know that going in.
The good news: there’s no SKU situation we haven’t seen, and every feature below is designed to meet you where you are.
How primary SKUs and channel aliases work
This is the most important idea on the page. Read it carefully — it determines how almost everything else in Carpe Inventory IQ behaves.
Every product you sell has one primary SKU code in Carpe Inventory IQ — the code you, your warehouse staff, and your purchase orders all reference. That primary SKU owns the inventory, the cost basis, the BOM, the reorder math, and the historical sales data.
Each channel where you sell that product attaches its own code through a SKU alias. The alias is a small mapping that says “when Amazon sends an order for WIDGET-100-FBA, decrement my primary SKU WIDGET-100.” Aliases are mission-critical infrastructure — every order, every inventory push, every report depends on them being correct.
What this looks like in practice
Primary SKU: WIDGET-100 ← the one you own, count, reorder ├── Shopify alias → WIDGET-100 ├── Amazon FBA alias → WIDGET-100-FBA ├── Amazon FBM alias → WIDGET-100-FBM ├── Walmart alias → WID100-WM └── eBay alias → WIDGET100
All five channel codes point at the same primary SKU. A sale on any of them decrements WIDGET-100. The Amazon listings stay as they are, the Walmart listing stays as it is, and your warehouse keeps using one code for everything.
Why separate channel codes are often the right call
- · Amazon FBA and FBM need separate Seller SKUs — the same physical product, two listings, two fulfillment paths
- · A repackaged or bundled version sold only on Walmart deserves its own listing code
- · A white-label or wholesale variant on eBay shouldn’t share branding with the DTC Shopify listing
- · Historical codes that customers already know stay intact on the channel
How aliases get created
- · Shopify, BigCommerce, and eBay — aliases auto-generate when you connect the channel or import your catalog
- · Amazon and Walmart — you upload an alias CSV (one row per channel-specific SKU; FBA and FBM are separate rows)
- · You can edit, add, or remove aliases on the SKUs page at any time
- · See the SKU alias FAQ for setup details
The failure mode this page is about isn’t “the codes are different.” It’s “the codes are different and nobody told Carpe Inventory IQ they’re the same product.” Without an alias, an Amazon FBA order for WIDGET-100-FBA has no way to decrement the primary WIDGET-100, and the two channels drift apart until somebody notices.
How BOMs link finished goods to their components
The second pillar. Aliases tell Carpe Inventory IQ which channels point at which primary SKU. Bills of materials (BOMs) tell it which primary SKUs are made of which other primary SKUs.
A BOM is a recipe: “to make one of GIFTSET-100, consume one WIDGET-100, one CANDLE-SOY-8OZ, and one GIFT-BOX-MED.” The components can be raw materials, sub-assemblies, or other finished goods that you also sell standalone. Every component is itself a SKU in Carpe Inventory IQ, which is why their codes need to be just as clean as the codes for things you sell directly.
What this looks like in practice
Primary SKU: GIFTSET-100 ← the bundle you sell ├── 1 × WIDGET-100 (finished good, also sold standalone) ├── 1 × CANDLE-SOY-8OZ (finished good, also sold standalone) └── 1 × GIFT-BOX-MED (raw material, not sold standalone)
A sale of GIFTSET-100 on any channel (resolved through its aliases) depletes one of each component. Because the components are themselves primary SKUs, those depletions cascade everywhere — the widget’s Amazon FBA availability drops, the candle’s Shopify availability drops, the gift box’s reorder point fires when it should.
Manufacturing BOM — build ahead of time
You assemble the finished good in batches, post a “build” transaction, the components are depleted, and the finished good gets its own on-hand count. Best when you actually manufacture or assemble — cosmetics, candles, kits prepped in advance.
Dynamic BOM — assemble on order
The finished good is a virtual SKU with no stored inventory. Availability is calculated on the fly from the components. When an order ships, the components are depleted in real time. Best for bundles, multi-packs, and kits assembled at pick time.
Strategic and creative uses for BOMs
- · Bundles and kits — sell 3 widgets + 1 tote as a single SKU without holding bundle inventory
- · Multi-packs — a 6-pack listing on Amazon dynamically depletes 6 singles from your warehouse
- · Repackaging variants — a Walmart-only version of the same physical product, with its own packaging
- · Manufacturing — finished goods built from raw materials, with cost rolling up from the components
- · Sub-assemblies — a finished good that’s also a component in a bigger finished good
- · Gift sets & promotions — seasonal SKUs that exist only during a campaign and disappear without leftover inventory
- · White-label / wholesale — same physical product, different SKU for a wholesale account or private-label partner
- · Sample packs — small quantities of multiple components fulfilled together
Why BOMs belong on a page about SKU hygiene: every component in a BOM is referenced by its SKU code. If a component is renamed, the BOM still points at the old code and silently breaks. If two slightly different codes both refer to the same physical material, you’ll over-deplete one and never touch the other. Clean component SKUs are the foundation that BOMs are built on.
What depends on clean SKUs
The SKU code is the primary key for everything Carpe Inventory IQ does. When SKUs are clean, the rest is math. When they’re not, the math runs on the wrong numbers.
Multi-channel sync
We match orders and inventory across Shopify, Amazon, Walmart, and eBay using SKU aliases that point each channel's code at one primary SKU. If a channel's code isn't aliased — or if two aliases collide — orders land on the wrong primary, and inventory drifts between channels.
Bills of materials
BOMs link finished goods to their components — raw materials, sub-assemblies, or other finished goods you also sell standalone. Every component reference is by SKU code, so a renamed or duplicated component silently breaks the recipe. And if a finished good itself has two SKU codes, only one of them decrements components when an order ships.
Velocity, reorder math, and ABC analysis
Days-of-stock, reorder points, safety stock, and ABC classification are all per-SKU. Duplicate or fragmented codes split a single product's sales across multiple rows, which makes every number wrong.
Oversell protection and Dynamic Cloak
Both depend on knowing exactly how many of each item exist across every channel. A mismatched SKU code is invisible to the system — it can't protect what it can't see.
Cost of goods sold and inventory valuation
Standard cost and average cost live on the SKU record. Reports and accounting posts roll up by SKU. Duplicate SKUs split valuation; missing SKUs drop out of the reports entirely.
The four problems we see most
On nearly every sales call, one or more of these turns up. They’re all fixable. None of them have to be fixed perfectly before you start.
Channel codes aren't connected to a primary SKU through aliases
This is the most common one — and worth restating because it’s easy to misdiagnose. The product was listed on different channels at different times, and each channel got its own code: WIDGET-100 on Shopify, WIDGET-100-FBA on Amazon, and WID100-WM on Walmart. Different codes per channel is fine — often the right call. The problem is that, without an alias mapping each one back to a primary SKU, the inventory system treats them as three different products and the channels drift apart.
What to do
Pick the primary SKU you want to own this product in Carpe Inventory IQ, then add a SKU alias for each channel-specific code that should decrement it. The marketplace listings stay exactly as they are. Shopify, BigCommerce, and eBay aliases are created automatically; for Amazon and Walmart, upload an alias CSV from the SKUs page (FBA and FBM go on separate rows). Once the aliases are in place, every channel decrements the same primary.
Variants are stored as separate top-level products
Shoes in sizes 7, 8, 9 and three colors should be 9 variants under one product. We regularly see them as 9 stand-alone products with codes like WIDGET-RED-7, WIDGET-RED-8, RED7WIDGET, red-widget-size-7 — no consistent pattern. Each variant must still be its own SKU (a size 7 isn't a size 8), but the codes need a consistent shape so humans and the system can reason about them.
What to do
Adopt one variant pattern and apply it everywhere. The shape matters less than the consistency: PRODUCT-COLOR-SIZE works as well as PRODUCT-SIZE-COLOR — pick one and stick with it.
The SKU field contains a description, not a code
Entries like Red T-Shirt (Large) or Reorder from Acme - blue ones in the SKU field. Often the SKU is blank entirely and the system is using the product title as a fallback identifier. These are hard to map, easy to typo, and break the moment the title changes.
What to do
Move descriptive text to the product name or product description. The SKU field should be a short, stable, machine-friendly code — letters, numbers, dashes. No spaces, no parentheses, no notes-to-self. If you're starting from scratch, three to twelve characters is a comfortable range.
Codes drift over time as products get renamed or relaunched
A product gets repackaged, a supplier changes, the formula is updated, and a new SKU appears alongside the old one without the old one being retired. The catalog accumulates ghosts: GADGET-200, GADGET-200-V2, GADGET-200-NEW, GADGET-200-FINAL. Some of them still sell. Some don't. Nobody is sure which.
What to do
Decide which codes are active and archive the rest. In Carpe Inventory IQ, archived SKUs stay in the database for historical reporting but stop appearing in reorder suggestions, sync, and the active inventory view. If two codes are genuinely the same product, alias one to the other so historical orders stay attached.
What a healthy SKU looks like
You don’t need a fancy taxonomy. You need codes that are stable, unique, and consistent. A healthy SKU code is:
Short and stable — letters, numbers, and dashes only. No spaces, no special characters.
Unique within your catalog. The same primary code never points to two different products.
Consistent shape across variants. PRODUCT-COLOR-SIZE or PRODUCT-SIZE-COLOR — pick one.
Every channel where the product is sold has an alias pointing at the primary SKU — whether the channel uses the same code or a different one.
Doesn't change when you rename the product, repackage it, or change the price.
Lives in the SKU field — not the product title, not the description, not a note.
Examples that work
WIDGET-100WIDGET-100-RED-MGADGET-200-BLUE-LRM-BOX-MED
Examples that cause problems
Red Widget (Medium)widget100+WIDGET-100GADGET-200-NEW-FINAL-v3- (blank)
How Carpe Inventory IQ helps you get there
The point of an inventory system is to handle the work, not to demand a perfect spreadsheet before it’ll let you in. A few specific features exist to take the cleanup off your plate:
The SKU alias system
The foundation. Every channel-specific code — Shopify variant ID, BigCommerce variant ID, Amazon Seller SKU (FBA and FBM separately), Walmart SKU, eBay Custom Label — gets a row in the alias table pointing at your primary SKU. Orders, inventory pushes, and reports all resolve through the alias. Shopify, BigCommerce, and eBay aliases auto-generate when you connect or import your catalog; Amazon and Walmart aliases are uploaded via CSV. You never have to change a marketplace listing to consolidate inventory — the alias does that work.
SKU alias FAQSearch by any channel identifier
You don’t have to remember your primary SKU code to find a product. Search on the SKUs page matches a SKU by its Amazon ASIN, FBA/AWD fulfillment ID (FNSKU), channel Seller SKU, and UPC/GTIN — not just the code and name — so the identifier printed on a marketplace listing is enough to pull up the right SKU. You can also type several keywords in any order; each word just has to appear somewhere, so “widget blue” and “blue widget” both find the same item. Matching is case-insensitive.
SKU alias FAQCatalog Setup with confidence scoring
During onboarding, Carpe Inventory IQ scans the products on every channel you connect and proposes alias mappings by SKU code, UPC, MPN, and product title. Every proposed match gets a confidence score. You review the matches, accept the obvious ones in bulk, and resolve the ambiguous ones manually. The system never silently links a channel SKU to a primary without your sign-off.
How catalog setup worksCSV round-trip for large catalogs
For catalogs over a few hundred SKUs, in-app review gets tedious. Export your full catalog and alias map to CSV, edit in the spreadsheet tool you already know, and re-upload. The importer shows you a per-row preview before anything is written, so you can confirm every alias before it’s saved.
About the CSV round-tripRead-Only mode while you sort it out
Every marketplace connection starts in Read-Only mode. We pull your data, propose aliases, and show you what we found — without pushing anything back to the channel. You can spend a week, a month, or longer reviewing aliases before flipping any channel to full sync. Nothing is at risk while you sort things out.
How safe migration worksClean up first, or clean up later?
You don’t have to choose one. Most merchants do a bit of both. A useful way to decide is to sort problems by how visible they are once the system is running.
Worth sorting out before you flip to full sync
- · Channel listings without an alias pointing at a primary SKU (most common: Amazon FBA, Amazon FBM, Walmart)
- · Blank SKU fields on items you actively sell
- · Descriptions or notes in the SKU field
- · Duplicate primary codes pointing to two different products
- · FBA and FBM listings sharing a single alias when they should be separate
Fine to handle after onboarding
- · Variant naming patterns that are inconsistent but unambiguous
- · Old archived codes that no longer sell
- · Cosmetic renaming for style consistency
- · Standardizing dashes vs. underscores
One thing to do regardless: before you flip any marketplace from Read-Only to full sync, confirm that every channel SKU you care about has a correct alias pointing at the right primary SKU. Pushing inventory while an alias is wrong — or missing — is the one situation that’s hard to unwind.
Not sure where you stand?
If you can’t tell whether your SKUs are in good shape, that’s itself useful information — and it’s normal. A reasonable first step is to install Carpe Inventory IQ, connect one channel in Read-Only mode, and let catalog review show you what it finds. The confidence scores will tell you whether you have a clean catalog or a messy one. From there, you can decide how much cleanup to do before you connect a second channel.
We’re happy to walk through your catalog with you on a call. If you’d like a second set of eyes before you commit to a cleanup plan, reach out and we’ll set something up.
Ready to see what your catalog actually looks like? Start a free trial — the first channel runs in Read-Only mode, so nothing changes on your store.
14-day free trial · No credit card required · Cancel anytime