The Auto Parts Price File Playbook
Selling parts online means living inside other people's spreadsheets. A general merchandise store watches a dozen costs; a parts store carries fifty thousand part numbers across eight distributors, each sending files on its own schedule, in its own format, with its own idea of what "price" means. Here's how those files actually work — and a routine that survives the volume.
Where your cost data comes from
Most aftermarket sellers buy through warehouse distributors — Turn 14, Keystone, Meyer, Premier, Motorstate and the regional WDs — plus some direct brand accounts. Each one gives you pricing through some combination of:
- A dealer price file — CSV or Excel, downloaded from the dealer portal or pulled from FTP. The most common route, and the one that arrives as an attachment nobody diffs.
- An inventory/pricing API — the larger distributors expose real-time stock and your net price. Excellent for availability, and it means your cost can change without any file ever arriving.
- Brand price sheets — if you buy direct, usually PDF or Excel, usually with the announcement letter attached.
Two things follow from this that matter more than anything else in this article. First, you have several cost sources for the same part, and they disagree. Second, the cheapest source changes over time — quietly, without anyone telling you.
The columns, and which one is your cost
Aftermarket price files carry more money columns than most retail categories, because the channel has more tiers. Typically you'll see:
| Column | What it means | Is it your cost? |
|---|---|---|
| List / MSRP | Manufacturer's suggested retail | No |
| Jobber | Traditional retail-counter tier | Only if you're on it |
| WD / dealer net | What you actually pay | Yes |
| MAP | Lowest price you may advertise | No — a constraint |
| Core | Refundable deposit on reman parts | No — see below |
Some files skip the money and give you a discount off list instead — "40/10" means list × 0.60 × 0.90, not 50% off. Others put your tier in a separate column that only your account sees. Confirm which column is yours in writing once, and re-check after any account or volume review; tier changes are rarely announced inside the file.
Line codes: the identifier that isn't
The aftermarket identifies a part as brand + part number, not part number alone. Brands are represented by a line code — a two-to-four character abbreviation, historically per-distributor and never fully standardized. The same physical brake pad is WBQ at one WD and WAG at another; and 1234 from two different brands are two entirely different parts that will happily match each other in a careless VLOOKUP.
Practical consequences:
- Never match on part number alone across suppliers. Match on brand + part number, or on UPC where the file carries one.
- Normalise the brand side. Wagner, WAGNER, Wagner Brake and Federal-Mogul Wagner need to collapse to one key. Keep a manual brand alias table — it's fifty lines of work once and it never stops paying.
- Keep the supplier's own identifier alongside your SKU. When you need to reorder or query an invoice, their number is the one that opens doors.
If your suppliers provide data to the Auto Care Association standards, you'll also encounter ACES (vehicle fitment — which years, makes and models a part fits) and PIES (product attributes, packaging, and the price sheets themselves). PIES files are the cleanest cost source you'll get in this industry, because the price types are explicitly labelled rather than left to a column heading someone typed by hand. If a supplier offers PIES and you're currently parsing their Excel export, ask — it's usually available and nobody volunteers it.
Supersessions: the reason your cost history breaks
Manufacturers replace part numbers constantly. The old number is superseded by a new one, sometimes with a different price, sometimes with different packaging, occasionally with one new number replacing three old ones.
For a Shopify catalog this is quietly destructive. The superseded number vanishes from next month's price file, so a naive diff reports it as discontinued. Meanwhile the replacement appears as a new item at a price nobody compares to anything. A 30% increase just walked in wearing a disguise, and your cost history for that product now has a hole in it.
The fix is to carry a supersession map — old number → new number — and to treat a supersession as a price change on the same product line, not as a death and a birth. Most WDs publish supersession data; PIES carries it as interchange information. Keep the old number as an alias on your product so customer searches and your own history both keep working.
Update cadence, and why "we check when they email" fails
Parts pricing moves on several independent clocks:
- Brand price increases, typically announced with a letter and an effective date.
- WD file refreshes on their own cycle — monthly is common, some are weekly.
- Real-time API pricing that changes without a file at all.
- Freight, surcharges and tariff changes that shift your landed cost with no price change whatsoever.
Against that, "we'll review costs when a supplier tells us to" only catches the first clock. And even announced increases arrive as an average — "up 6% across the range" — while the file underneath moves individual lines by 0% and 27%. The letter tells you a mood; the file tells you the money.
A routine that survives 50,000 part numbers
- Archive every file on arrival, named
wd_YYYY-MM-DD, before anyone opens it in Excel. This archive is your cost history — Shopify keeps none. - Normalise to one shape: brand key, part number, UPC, net cost, core, pack quantity, MAP, effective date. One row per sellable unit. Do this per supplier, once, and reuse the mapping.
- Apply the supersession map before diffing, so replacements land on the right product.
- Diff against the previous version: increases, decreases, new lines, gone lines.
- Filter to what you actually sell. A WD file with 400,000 lines is not your problem; the 6,000 you list are. Everything else is noise, and treating it as data is why these reviews get abandoned.
- Rank by dollar impact — cost delta × your units sold — not by percentage. A 3% move on a fast-moving filter beats a 40% move on a part you sell twice a year.
- Check the flagged lines against MAP before repricing, and against your best alternate source before accepting the increase at all.
- Update Shopify's cost (safely — the import trap is real), and only then move on.
The multi-source advantage nobody uses
Here's the opportunity buried in all this tedium. Because you buy the same brands from several WDs, every price file is also a quote. Normalise them to a common key and one query answers a question most parts sellers can't answer at all: for each part I sell, who is cheapest this month, and by how much?
Stores that can answer it reroute purchasing line by line instead of by habit, and walk into supplier reviews with numbers instead of impressions. Stores that can't answer it discover, eventually, that they've been buying a fast-moving line 11% above the alternative for three quarters. The data was sitting in the inbox the whole time; nobody had a routine that read it.
Built for catalogs this size
CostSentry keeps a price history per supplier, diffs every new file automatically, filters to the parts you actually sell, and emails you the SKUs whose margin just dropped — with the retail needed to hold it. Start with the free checker on the file sitting in your inbox right now.
Open the free checker ↗