Operations Guide

Inventory Codes for Food Brands: How to Structure SKUs, Lot Numbers, and Barcodes

By Slater Caskey, CEO of Claros Farm & Founder of Guidance  |  Operations  |  14 min read

A bad SKU naming convention is a small problem until you have 40 products and 3 co-packers. Here is how to structure inventory codes for food brands that need to scale.

Picture this: a food brand has been operating for three years. They have 22 SKUs across four product lines. Their SKU naming convention is a mix of whatever made sense at the time. Some codes use product names, some use internal shorthand, some have size suffixes, some do not. When their new operations manager sits down to build a proper inventory system, she discovers three different SKU codes that all refer to the same product sold through different channels, and two separate products that share a single SKU because someone made a data entry error two years ago and nobody caught it. She spends her first two weeks not building anything new. She spends them untangling what already exists.

This is not a rare situation. It is the default outcome when a food brand grows without a deliberate inventory code structure. The fix is not complicated, but it requires understanding what SKUs, lot numbers, and barcodes are actually supposed to do, and building a convention that holds up as you add products, co-packers, and channels.

Why Inventory Code Structure Matters (and When It Starts to Matter)

When you have five products and one co-packer, almost any naming convention works. You know your products by heart. Your team is small enough that everyone shares the same mental model. A SKU called "GranolaMapleSm" is fine because everyone knows what it means.

The system starts to break down around 15 to 20 SKUs, or whenever you add a second co-packer. At that point, the informal knowledge that made your original codes legible starts to fragment. New team members do not share the same history. Your 3PL warehouse does not know that "GranolaMapleSm" and "GRN-MPL-8OZ" are the same product. Your ERP or inventory system starts generating reports that are impossible to sort or filter cleanly because the codes have no consistent structure.

The cost of a bad naming convention compounds over time. Every new product you add using the old logic makes the problem harder to fix later. Every integration you build with a retailer portal, a distributor system, or a 3PL WMS creates a new place where inconsistent codes cause errors. And in a recall scenario, a messy lot numbering system can turn a two-hour investigation into a two-day one.

The right time to fix your inventory code structure is before you need it. The second best time is right now, with a migration plan that does not break your existing records.

Key Takeaway

Inventory code problems are invisible when you are small and painful when you are not. The threshold is usually 15 to 20 SKUs or the addition of a second co-packer. Build a deliberate structure before you hit that threshold, not after.

SKU Naming Conventions: The Three Components Every Food Brand SKU Should Encode

A SKU is your internal identifier for a specific sellable unit. It is not a barcode. It is not a product name. It is a structured code that your operations team, your warehouse, and your systems use to track inventory without ambiguity. A well-designed SKU encodes exactly three things: the product line, the variant or flavor, and the size or format. Everything else is noise.

Component 1: Product Line Code

This is a two to four character prefix that identifies the product family. If you make granola, nut butter, and protein bars, your product line codes might be GRN, NTB, and PRB. Keep these short and consistent. Do not use the full product name. Do not use numbers for this component because numbers are harder to read at a glance and easier to transpose.

Component 2: Variant or Flavor Code

This is a two to four character segment that identifies the specific variant within the product line. Maple granola becomes MPL. Almond butter becomes ALM. Dark chocolate protein bar becomes DCH. Use abbreviations that are intuitive to anyone on your team, not just the person who created them. Avoid abbreviations that could be confused with each other: CLN and CLR look too similar under warehouse lighting.

Component 3: Size or Format Code

This is a numeric or short alphanumeric suffix that identifies the package size or format. An 8-ounce bag is 8OZ. A 12-count case pack is 12CT. A 1-pound bulk format is 1LB. If you sell the same product in both retail and foodservice formats, this component is what distinguishes them. Do not skip this component even if you currently only have one size. You will add more.

Put these three components together with a consistent separator, typically a hyphen, and you get a SKU structure that is readable, sortable, and scalable.

# SKU Structure: [PRODUCT LINE]-[VARIANT]-[SIZE]

GRN-MPL-8OZ    # Granola, Maple, 8oz retail bag
GRN-MPL-24OZ   # Granola, Maple, 24oz bulk bag
GRN-DCH-8OZ    # Granola, Dark Chocolate, 8oz retail bag
NTB-ALM-12OZ   # Nut Butter, Almond, 12oz jar
NTB-ALM-6CT    # Nut Butter, Almond, 6-count single-serve case
PRB-DCH-12CT   # Protein Bar, Dark Chocolate, 12-count box

A few rules that will save you headaches. First, never use spaces in SKU codes. Spaces break in spreadsheets, in API calls, and in barcode systems. Use hyphens or underscores only. Second, use all caps or all lowercase consistently. Mixed case creates duplicate-detection problems in systems that are case-sensitive. Third, never reuse a SKU code, even after a product is discontinued. Archive it with a status flag and leave it in your system permanently so historical records remain intact.

If you sell the same physical product through multiple channels at different price points, resist the temptation to create separate SKUs for each channel. That is what caused the three-SKUs-for-one-product problem in the opening scenario. Channel pricing belongs in your pricing tables, not your SKU structure. The SKU should identify the physical unit, not the commercial relationship.

Key Takeaway

Every food brand SKU should encode exactly three things: product line, variant, and size. Use a consistent separator, avoid spaces, and never reuse a retired code. Channel pricing belongs in your pricing tables, not your SKU structure.

Lot Number Conventions: What to Encode and Why FSMA 204 Makes This Non-Negotiable

A lot number is a production identifier that links a finished product unit back to a specific manufacturing event. It is how you answer the question: if this product has a problem, which other units are affected and where are they? A SKU tells you what the product is. A lot number tells you when and where it was made.

Many early-stage food brands treat lot numbers as an afterthought. They use whatever their co-packer prints on the label, which is often a date code with no facility information and no batch reference. That works until you have two co-packers running the same SKU, or until you need to execute a targeted recall and you cannot tell which facility produced the affected units without pulling paper records.

A well-structured lot number encodes three things: the production date, the facility code, and the batch or run number. Here is a format that works for most food brands:

# Lot Number Structure: [FACILITY]-[YYYYMMDD]-[BATCH]

CP1-20250314-001   # Co-packer 1, March 14 2025, first batch of the day
CP1-20250314-002   # Co-packer 1, March 14 2025, second batch of the day
CP2-20250314-001   # Co-packer 2, March 14 2025, first batch of the day
MFG-20250401-003   # In-house facility, April 1 2025, third batch

The facility code is the component most brands omit and most regret omitting. When you have a single production facility, it feels redundant. When you add a second co-packer, it becomes essential. Build it in from the start.

FSMA 204, the FDA's traceability rule that took effect in January 2026 for most covered food categories, requires food brands to maintain records that can trace a unit from production through distribution to the point of sale within 24 hours of an FDA request. If your lot numbers do not encode facility and date information in a consistent, machine-readable format, you will be building that traceability manually from paper records under time pressure. For a full breakdown of what FSMA 204 requires and how to prepare, see the FSMA 204 compliance checklist for food brands.

One practical note on lot number length: keep it under 20 characters. Many label printing systems, WMS platforms, and retailer portals have field length limits. A lot number that is too long will get truncated silently, which is worse than a short one because you will not know it happened.

Key Takeaway

A lot number should encode facility, production date, and batch number. The facility code is the component most brands skip and most regret skipping. FSMA 204 makes consistent, structured lot numbering a compliance requirement, not just an operational preference.

Barcode Standards: UPC-A, GS1-128, and QR Codes

Barcodes are how your inventory codes communicate with the outside world. There are three barcode formats food brands encounter regularly, and they serve different purposes at different points in the supply chain.

Barcode Type Where It Is Used What It Encodes When You Need It
UPC-A Retail consumer unit (the item a cashier scans) 12-digit GTIN identifying the product Any retail channel, including DTC if you want scan-based receiving
GS1-128 Cases and pallets moving through distribution GTIN, lot number, expiration date, quantity Selling through UNFI, KeHE, or any retailer DC that requires EDI compliance
QR Code Consumer-facing packaging, DTC, traceability programs URL or structured data of your choosing When you want to link consumers to product info, or for internal traceability scanning

UPC-A barcodes require a GS1 company prefix, which is a unique identifier assigned to your brand by GS1 US. You cannot legally use a UPC barcode without one. The process is straightforward: register at gs1us.org, pay the annual membership fee (which scales with the number of GTINs you need), and you will receive a company prefix that becomes the foundation of all your product GTINs. Do not buy barcodes from third-party resellers. Those codes are not uniquely assigned to your company and will cause problems with retailers who verify GS1 registration.

GS1-128 barcodes are required by most major distributors and many large retailers for case and pallet labels. They encode more information than a UPC-A, including lot number and expiration date in a standardized format called Application Identifiers. If you are selling through UNFI or KeHE, check their vendor compliance guides before your first shipment. Non-compliant case labels can result in chargebacks that eat into your margin quickly.

QR codes are increasingly common on food packaging, but they are not a replacement for UPC-A or GS1-128 in a retail or distribution context. They are useful for consumer engagement, for linking to ingredient sourcing information, and for internal traceability workflows where your team is scanning with a smartphone rather than a dedicated barcode scanner. Some brands use QR codes on inner cases for lot-level traceability scanning at their 3PL, which works well as long as your WMS supports it.

Practical note: When you register for a GS1 company prefix, assign GTINs to your products in a spreadsheet immediately, even for products you have not launched yet. GTINs are cheap to reserve and expensive to retrofit after a product is already in distribution. Build the habit of assigning a GTIN at the same time you create a new SKU.

The Five Most Common Inventory Code Mistakes Food Brands Make

After working with dozens of food brands at various stages of growth, the same mistakes appear over and over. Here are the five most common ones, and what to do about each.

Mistake 1: Using the product name as the SKU. "MapleGranola8oz" is a product name, not a SKU. Product names change when you rebrand. They have spaces and special characters that break in systems. They do not sort or filter cleanly. Replace product names with structured codes and store the product name as a separate field in your item master.

Mistake 2: Creating channel-specific SKUs for the same physical product. If your 8-ounce maple granola is sold at Whole Foods, on Amazon, and through your DTC site, it is one product. It should have one SKU. Channel-specific pricing, promotions, and packaging variants are legitimate reasons to create separate SKUs, but the channel itself is not. This mistake is the single biggest source of duplicate inventory records.

Mistake 3: No facility code in lot numbers. As covered above, this is the lot number mistake that hurts most in a recall. If your lot numbers are just date codes, you cannot isolate production by facility without pulling paper records. Add a facility code now, even if you only have one facility today.

Mistake 4: Inconsistent separators and capitalization. GRN-MPL-8OZ and GRN_MPL_8oz and GRNMPL8OZ are three different strings to a computer. Pick one convention and enforce it everywhere: in your ERP, in your spreadsheets, in your 3PL system, and in the codes you give your co-packers. Inconsistency here is the root cause of most inventory reconciliation errors. For a deeper look at how inconsistent codes affect inventory accuracy, see inventory accuracy for food brands.

Mistake 5: Deleting retired SKU codes. When a product is discontinued, the instinct is to clean up the system by deleting its SKU. Do not do this. Historical purchase orders, production records, and financial reports reference that code. Deleting it breaks those references. Instead, add a status field to your item master and set discontinued products to "inactive." They stay in the system for historical lookups but do not appear in active inventory views.

Key Takeaway

The five most common inventory code mistakes are: using product names as SKUs, creating channel-specific SKUs for the same product, omitting facility codes from lot numbers, using inconsistent separators and capitalization, and deleting retired SKU codes. Each one is fixable, but easier to avoid than to repair.

Stop Managing Inventory Codes in Spreadsheets

Guidance gives food brands a structured item master, lot tracking, and barcode management built for the way CPG operations actually work. See how it handles SKU and lot number structure out of the box.

Book a 20-Minute Demo

How to Migrate from a Messy Naming Convention to a Clean One

The hardest part of fixing a bad inventory code structure is not designing the new one. It is migrating to it without breaking your existing records, your retailer integrations, and your 3PL's system. Here is a practical approach that works for most food brands in the 10 to 50 SKU range.

Step 1: Audit what you have. Pull every SKU code currently in use from every system: your ERP or inventory software, your 3PL's WMS, your retailer portals, your Amazon Seller Central account, your QuickBooks or accounting system. Put them all in a single spreadsheet. You will almost certainly find duplicates, variants, and codes that exist in one system but not others. This audit is uncomfortable but necessary.

Step 2: Build a master mapping table. For every existing code, identify the canonical product it refers to and what its new code should be under your new convention. This table is the foundation of your migration. It should have at minimum four columns: old code, new code, product description, and status (active, inactive, duplicate).

Step 3: Assign new codes to all active products. Using your new three-component convention, assign a clean code to every active SKU. Do this in the mapping table before touching any system. Review it with your operations team and your co-packers before implementing anything.

Step 4: Run old and new codes in parallel for 60 to 90 days. Update your primary inventory system to accept both the old and new codes during the transition period. This gives your 3PL, your co-packers, and your retail partners time to update their records without causing receiving errors or shipment mismatches. Do not hard-cut to new codes on day one.

Step 5: Handle existing inventory in the field carefully. Products already in distribution, at your 3PL, or on retail shelves carry the old codes on their labels. You cannot relabel them. Your mapping table is how you reconcile old-code inventory records against new-code records during the transition. Keep the mapping table accessible to everyone who touches inventory data until all pre-migration inventory has been sold or consumed.

Step 6: Hard-cut and archive. Once all pre-migration inventory is cleared, disable the old codes in your primary system and flag them as archived. They remain in the system for historical lookups but are no longer available for new transactions. Update all integrations, retailer portals, and co-packer documentation to use only the new codes.

The migration will take longer than you expect. Budget four to six weeks for a brand with 20 to 30 SKUs and two or three external partners. The work is mostly coordination, not technical complexity.


Manual Workflow vs. Guidance Workflow: Tracing a Lot Recall

Manual Workflow (Messy Lot Numbers)

A retailer calls on a Friday afternoon to report a potential quality issue with a batch of your granola. You need to identify every unit from the affected production run and where it is in the supply chain.

Your lot numbers are date codes only: "031425." You have two co-packers who both ran production on March 14. You do not know which facility produced the affected units without calling both co-packers and asking them to pull their batch records. One co-packer responds in two hours. The other does not respond until Monday morning.

Meanwhile, you are searching through three spreadsheets, your 3PL's emailed inventory report, and your QuickBooks sales records trying to match the date code to specific shipments. Some of your older records use a different date format. Two shipments from that week have no lot number recorded at all because the receiving team missed it.

By the time you have a complete picture of affected inventory, 36 hours have passed. You have issued a precautionary hold on twice as much inventory as was actually affected because you could not isolate the specific facility. The cost of the hold, including retailer chargebacks and destroyed inventory, is significantly higher than it needed to be.

Guidance Workflow (Structured Lot Numbers)

The same retailer calls on Friday afternoon with the same quality concern. The product label shows lot number CP2-20250314-001, which immediately tells you: Co-packer 2, March 14 2025, first batch of the day.

In Guidance, you search by lot number and get an immediate list of every unit from that specific batch: how many cases were produced, how many shipped to which customers, how many are still at your 3PL, and the current status of each shipment. The search takes about 90 seconds.

You place a hold on only the affected lot. Co-packer 1's production from the same date is unaffected and continues to ship normally. You send a targeted recall notice to the three customers who received units from CP2-20250314-001. The 3PL pulls the remaining cases from that lot within the hour.

Total time from the retailer's call to a complete picture of affected inventory: under 15 minutes. The hold covers only what needs to be held. The cost is a fraction of the manual scenario.


Frequently Asked Questions

How many characters should a food brand SKU be?

Most operators land between 8 and 14 characters. Short enough to type without errors, long enough to encode product line, variant, and size. Avoid going over 16 characters because many warehouse management systems and retailer portals have field length limits that will silently truncate your codes.

What is the difference between a SKU and a UPC?

A SKU is an internal inventory code you create and control. A UPC is a globally standardized barcode number issued under your GS1 company prefix that retailers and distributors use to identify your product in their systems. You need both. Your SKU is for your internal operations. Your UPC is for the outside world. They should be linked in your item master but they are not the same thing and should never be conflated.

Do I need a separate lot number for each co-packer?

Yes. Your lot number convention should include a facility code so that in a recall scenario you can immediately isolate which co-packer produced the affected units. If all your lot numbers look the same regardless of facility, you will have to pull records manually to figure out which batches came from where, and that costs hours you do not have during a recall.

When does a food brand need GS1-128 barcodes instead of UPC-A?

UPC-A is for retail consumer units, the barcode a cashier scans at checkout. GS1-128 is for cases and pallets moving through a distribution or warehouse network. If you are selling through a distributor like UNFI or KeHE, or shipping direct to a retailer's distribution center, you will likely need GS1-128 labels on your cases and pallets. Check your trading partner requirements before your first shipment. Non-compliant labels result in chargebacks that add up fast.

How do I handle a SKU migration without breaking my existing inventory records?

The safest approach is to run old and new SKU codes in parallel for 60 to 90 days. Map every old code to its new code in a master reference table, update your system to accept both, then hard-cut to the new codes once all pre-migration inventory has been sold or consumed. Never delete old SKU codes from your system. Archive them with a status flag so historical records remain intact and auditable.


Build Inventory Code Structure That Scales With Your Brand

Guidance helps food brands set up a clean item master, structured lot tracking, and barcode management from day one. Whether you are starting fresh or migrating from a messy spreadsheet system, we can help you get it right.

Talk to the Guidance Team

Stop managing COGS and traceability in spreadsheets.

Guidance is built for food brands. Join the early access waitlist.

Get Early Access