PartMash — User Manual
Updated 2026-10-31 · covers everything in PartMash today.
PartMash keeps three things agreeing with each other: what your vendors charge, what your store advertises, and what your books say. It shows you every part where they disagree, the price it should be, and a button to fix it. It also keeps your store's stock current from your vendors and puts your store orders into QuickBooks.
Everything PartMash writes is recorded and can be put back. It never changes anything you changed by hand.
The words PartMash uses
| Word | What it means |
|---|---|
| MAP | The vendor's minimum advertised price — the price everyone normally sells a part for. Some vendors call their column Jobber, Retail or UPP; PartMash calls it MAP whatever the sheet says. |
| My cost | What you pay the vendor. |
| My retail | Your own price: MAP plus a percentage you choose, per brand. |
| SRP | The vendor's suggested retail price. Not a minimum. |
| Vendor | Anyone you buy parts from — a manufacturer or a distributor. |
| Price sheet | A spreadsheet or CSV of prices a vendor sent you. |
| Vendor connection | A live feed PartMash reads from a vendor automatically every night. |
| Run | One batch of changes PartMash made — one undo puts the whole batch back. |
Getting around
- The top menu holds your everyday pages — Dashboard, Report, Orders, Tracking, Stock, History — and three short menus: Catalog (Brands, MAP policies, My retail, Books gaps), Vendors (Vendors, Vendor terms, Price sheets) and Setup (Store, Connections). Help and Account (your email, two-factor, Sign out) are top right. When this manual says "X in the top menu", look there or in one of those three menus.
- On a phone, tap Menu for the same list. Tables show as one card per row — and so does any table too wide for a tablet or small laptop screen, so no button is ever hidden off to the side.
- The Dashboard opens with At a glance: what needs you today — parts below MAP, QuickBooks-only items below MAP, shipments waiting, orders held, parts never compared — each tile opens the page that fixes it.
1. Three ways to use it
You don't need all three systems. On the Dashboard, open What PartMash runs for you, and pick:
| Choice | You connect | You get |
|---|---|---|
| Accounting + data | QuickBooks + your vendors | Your QuickBooks items kept matched to what vendors charge now |
| Online store + data | Your store + your vendors | Store prices checked against MAP, vendor stock on your product pages |
| All three | Store + QuickBooks + vendors | Everything — including store orders into QuickBooks |
Press Save mode. You can change it any time.
2. First-time setup
The Dashboard always shows a Next step box until setup is done. Follow it, or use this order:
| # | Step | Where | Done when |
|---|---|---|---|
| 1 | Connect your store | Store | It shows your shop's name |
| 2 | Connect QuickBooks | Connections | QuickBooks shows as connected |
| 3 | Add your vendors | Vendors or Price sheets | Each vendor shows a number of parts |
| 4 | Set brand codes (if your QuickBooks item names have prefixes) | Dashboard → Brand codes | Your brands have codes |
| 5 | Run the report | Report | You see the five groups |
| 6 | Turn on two-factor sign-in (recommended) | your name, top right | It says two-factor is on |
When everything your mode needs is connected, the Dashboard says Ready.
3. Connecting your store
Store in the top menu.
There are two ways to connect a Shopify store. Most stores use the first.
3.1 Install the PartMash app from Shopify
- In your Shopify admin, install PartMash from the Shopify App Store. Shopify shows you what PartMash may read and change (the list below) and asks you to approve it.
- Shopify opens PartMash inside your admin. The first time, it says Link to my PartMash account. Press it — a new tab opens on app.partmash.com.
- Sign in to PartMash (or create your account), then press Link this store. The button always carries a fresh link, however long the page has been open. Once the tab opens, you have 10 minutes; if it runs out, press Link to my PartMash account again for a new one.
- Go back to the PartMash page in your Shopify admin and press I have linked it — check again (or reload it). PartMash collects its access to your store, and the page shows Connected with your last report.
⭐ From then on everything else works the same as any other connection. PartMash renews its access to your store by itself — Shopify's app access lasts an hour at a time, and PartMash refreshes it before every job.
⚠️ One store per PartMash account. If your account is already connected to a different store, the link page warns you that linking will replace it.
⭐ If the PartMash page shows a one-time connector fee, press Approve — Shopify shows you the charge on its own screen and adds it to your Shopify bill. PartMash starts working with your store once Shopify confirms it. Declined it by mistake? Open PartMash in your Shopify admin again and approve it.
⚠️ Uninstalling PartMash in Shopify removes PartMash's access to your store straight away, and the link. What PartMash got from your store is then deleted: your reports, the record of prices and stock PartMash wrote to the store (so those can no longer be undone), your store's order records, tracking matched to store orders, and the store's product IDs on your vendor parts. Shopify confirms the uninstall about two days later and the deletion runs then — or after 30 days at the latest. Reinstalling before then cancels it. Kept: your PartMash account, vendors, MAP policies, brands, and everything from QuickBooks.
⭐ Already linked, but the page says it could not refresh its access? Reload the PartMash page in your Shopify admin — that collects fresh access. If it keeps happening, contact support (§17).
3.2 A token from an existing custom app
⚠️ Shopify no longer lets stores create new custom apps in the Shopify admin (the old "Develop apps → Create an app" route). If your store already has a custom app made in its admin before, its token still works: in Shopify, Settings → Apps and sales channels → Develop apps → your app → API credentials. Then on PartMash's Store page open I already have a custom-app token, paste your shop address and the token, and press Test and connect. The shop address is the one ending in .myshopify.com — your own web address (like yourstore.com) is not accepted.
PartMash asks Shopify who the store is before saving anything, and shows you the shop name back, so a token from the wrong store is caught straight away.
3.3 Permissions
What PartMash needs from your store (the PartMash app asks for exactly these; a custom-app token needs them too):
| Permission | Needed for |
|---|---|
read_products, write_products | Reading and fixing prices; stock settings and backorder dates |
read_inventory, write_inventory | Vendor stock on your product pages |
read_orders | Store orders into QuickBooks |
read_merchant_managed_fulfillment_orders, write_merchant_managed_fulfillment_orders | Tracking numbers to your customers |
read_locations (optional) | Lets PartMash find your store location by itself |
⭐ Once connected, the Store page shows a Permissions list — every feature with ✅ ready or ❌ and exactly which permission it still needs, checked with Shopify on the spot.
⚠️ If a feature needs a permission your token doesn't have, that page tells you exactly which one to add — in your existing custom app. With the PartMash app installed, every permission is already granted.
To connect a different store, press Replace the connected store. Disconnect removes the token straight away.
4. Connecting QuickBooks
Connections → Connect QuickBooks. You sign in to Intuit and approve PartMash. You come back to PartMash connected.
PartMash keeps QuickBooks connected for you; you won't be asked to sign in again unless you disconnect it, or Intuit asks for it.
What we store on that page lists exactly what PartMash keeps about each connection.
5. Adding your vendors
There are two kinds of vendor source. Most vendors are price sheets.
5.1 Vendor connections (automatic)
Vendors in the top menu. Some vendors publish a live feed. If yours is listed under Available, press its button, paste the key or login the vendor gave you, and Save.
- PartMash reads it every night. If a vendor has a bad night, it tries again a few minutes later.
- Pull prices now reads it straight away — useful the first time.
- Where a vendor's feed includes stock, PartMash keeps that too (see §10).
- If a feed fails, everyone on your account gets one email saying what happened and what to do — and another when it's working again. The Vendors page shows it under that vendor too.
A different vendor? Use Ask us to build a vendor connector. Tell us who the vendor is and what they gave you. ⚠️ A connector built for your account carries a one-time setup fee, quoted before any work starts — nothing is built or charged unless you agree. Most vendors don't need one: a price sheet does the same job, and price sheets are always free.
5.2 Price sheets (any vendor)
Price sheets in the top menu.
- Type the Supplier name, choose the Price sheet file (Excel or CSV), press Upload and check.
- PartMash reads the whole file first and shows you:
• Rows above the header — vendor sheets often start with a legend or a date; it shows what it skipped.
• What the file contains — real sample rows, so you check values, not just column names. - Which column is which? Two are required:
| It asks for | What it means | ⛔ Common mistake |
|---|---|---|
| Part number (required) | The manufacturer's part number | Not your own SKU, not the UPC |
| MAP price (required) | The price you're expected to advertise at | ⛔ The one to get right — see below |
| Your cost | What you pay | Optional — used for margin and the below-cost check |
| Brand | Who makes the part | Strongly recommended — see §7 |
| Suggested retail | The vendor's SRP | Not a minimum |
| In stock | Availability | Optional |
| Description | What the part is | Optional |
- Answer the vendor's MAP policy questions (§5.3).
- Press Save mapping and import. The prices are imported in that same step.
The next time that vendor sends a new sheet, go to the Dashboard and press Import a price sheet next to that vendor. The columns are already agreed — choose the file and press Import now.
⚠️ Rows with no MAP price are skipped, so the count is often a little lower than the rows in the file. That's correct: a row with no MAP has nothing to compare.
⛔ Getting the MAP column right
Vendor sheets often carry more than one price that looks like MAP. Picking the wrong one fails silently — PartMash would say you're fine while you sit under the real price.
A typical warehouse sheet, one part:
Dealer cost $20.74 what YOU pay
Distributor MAP $29.15 what a DISTRIBUTOR must advertise above <- not yours
Retail MAP $39.95 what YOU must advertise above <- this one
⭐ The test: "if I advertised at this price, would my vendor be unhappy?" That's your MAP.
If two columns both look right, ask the vendor which applies to you before importing.
⭐ PartMash checks for you: it refuses a MAP column that is below your own cost. No vendor sets your advertised price under what they charge you, so that means the wrong column.
5.3 The vendor's MAP policy
PartMash asks four things. It's not paperwork — it decides whether a low price is urgent.
A policy you answer here covers every brand in the sheet's Brand column — not the vendor's name. Each later import — and every nightly pull from a connected vendor — adds a brand the first time that vendor sends it, and says so on History. It never takes a brand away, and a brand you removed from a policy on purpose is not put back.
| Question | Why it matters |
|---|---|
| Does this vendor have a MAP or UPP policy? (required) | "I do not know" is a fine answer — the vendor stays on your to-check list instead of being assumed safe |
| What does it cover? | Some policies cover only what you advertise; others cover what you actually sell for. A counter discount is fine under one and a breach under the other |
| Are sales or promotions allowed? | Some vendors need written approval weeks ahead |
| Where did the policy come from? | In six months, the only way to tell a real policy from an assumption |
Changing a policy, or adding one from an email. MAP policies in the top menu lists every policy on file — the brands it covers, what it binds, its MAP column and where it came from. Use Add a policy when a vendor states their policy in an email rather than a document (write who said it and when as the source), and Change to add a brand the vendor's policy covers (e.g. a newly acquired brand). Changing the brand list replaces it, and the page tells you which brands it no longer covers. A brand named by two policies is shown at the top until you fix one. A policy only ever flags a price — it never changes one.
5.4 Vendor terms — freight, payment, cutoffs
Vendor terms in the top menu keeps what each vendor you buy from gives you, in one place:
| Term | Example |
|---|---|
| Free freight | Free over $650 — or None |
| Payment terms | Net 30; 1% off if paid by the 10th |
| Minimum order | None — plus any small-order fee, e.g. $10 under $50 |
| Daily shipping cutoff | 3:00 PM Pacific, in the vendor's own time zone |
| Drop-ship fee | $15 — or None |
Use Add a vendor's terms for each vendor, and Change when they change. Answer from the vendor's own words, and write who said it and when as the source (it is required) — terms change, and in six months that is the only way to trust a number.
The $ amount box appears beside an answer only when the answer needs one — Free over an amount, An amount or A fee. The cutoff uses your device's time picker; pick the vendor's time zone beside it.
"None" is not "not known." Leave a question on Not known yet until the vendor has answered it. A blank never means $0.
The cutoff shows today's state — how long is left today, or "Passed today — ships next business day", or "Weekend" — worked out in the vendor's time zone, so a 3:00 PM Eastern cutoff is right wherever you are.
Vendor terms only record. They never place, change or block an order.
6. Brand codes
Dashboard → Brand codes (also linked from the Brands page). Only needed if your QuickBooks item names carry a brand prefix — for example ABC-17301 for part 17301.
- Press Find codes in my books. PartMash reads your own QuickBooks items and proposes only codes you actually use. Press Use this on each one you agree with.
- Or Import codes from a list, or set one at a time.
⛔ Don't invent a code. If a brand has no items in QuickBooks yet, leave it blank — a wrong code is worse than none.
Codes take effect the next time the report runs.
7. Brands and spellings
Brands in the top menu.
Part numbers aren't unique between manufacturers — the same number can be a $40 part from one brand and a $3,700 part from another. So PartMash always matches a part on brand + part number together, and refuses to guess when a number could be two brands.
The quiet problem: your store spells a brand one way, the vendor another (Acme vs Acme Performance). The parts then never get compared.
To merge two spellings: type the other name on that row and press Merge. PartMash shows you what would move first — how many spellings, how many price rows, which brand they end up under. Press Treat … as … to save it. Separate again undoes it.
- ⭐ Merge your store's spelling into the spelling your price sheets use. If you get it backwards, PartMash warns you before saving.
- Case and punctuation are already ignored — Acme-EFI and Acme EFI are already one brand.
- ⛔ Same company is not the same brand. Two brands owned by one company keep their own prices and policies. Only merge two spellings of the same brand.
- Merging changes nothing in your store or books — only what PartMash treats as one brand.
A spelling that is not in the list (only in your store): use the box at the bottom of the page.
8. The report
Report → Run the report. It reads your live store, compares every part, and takes about a minute.
Every part lands in one group:
| Group | What it means | What to do | |
|---|---|---|---|
| 🔴 | Below MAP | Under a MAP price you can act on | Fix these first |
| 🟡 | Below MAP, unverified | Under a MAP price PartMash doesn't fully trust | Check the MAP price itself before acting |
| ⚪ | Never compared | No MAP on file for this part | Not "fine" — unknown. Needs a vendor source that covers it |
| ✅ | At MAP | At MAP (or your My retail price) | Nothing to do |
| ⬆️ | Above MAP | Priced above the vendor's suggested retail | You may be losing the sale |
With QuickBooks connected, each row also shows your books price, so a quote never goes out on an old number.
Look-alike part numbers (under What this run could not check): a vendor sometimes lists two different parts whose numbers match once the dashes are removed — Holley's 12-135 fuel module and 121-35 nozzle. For those, PartMash matches your part only when it is written exactly as the vendor writes it (a sibling brand such as Holley EFI or Sniper counts, when the number is identical). Most need nothing from you; if one of yours is written differently, it shows under ⚪ Never compared — write it the vendor's way in your store.
What the report checks follows your setup choice (Dashboard):
| Setup | What is checked against your vendor data |
|---|---|
| Online store + data | Your store |
| All three | Your store and your QuickBooks — each on its own, so all three end up matching |
| Accounting + data | Your QuickBooks only — the store is skipped, and no store is needed |
📒 QuickBooks only (a tab beside the others) lists the QuickBooks items that are not in your store, checked straight against your vendor data. Items no vendor covers — labor, fixtures, parts in no feed yet — are listed as never compared: unchecked, not fine. Each item that is behind the vendor has a Fix in QuickBooks button.
8.1 Working through a long list
Every tab lists parts in part-number order (12-2 comes before 12-10). Your MAP policies are on their own page — MAP policies in the top menu — not on the report.
Above the table: Brand (only that brand) and Rows per page (20 to All). Press Show. Under the table: First / Back, page numbers, Next / Last.
Find a part number: type it in the box beside Rows per page and press Find. A search looks across every tab, and each row shows its own color. 12-428 and 12428 find the same part. You can leave off the brand code: 151300 also finds HT-151300, and the QuickBooks item name is searched too. Exact matches are listed first, then numbers that end with what you typed, then any number that contains it (type at least 3 characters for those). While a search is showing, use the button on the part's own row; the all-parts buttons come back when you press Clear the search.
- The brand filter stays when you switch groups, and you come back to the same page after fixing a price.
- The address bar holds the view — bookmark it or send it to someone.
- All really shows everything. On a big group that's a slow page; a brand at 100 a page is quicker.
8.2 Fixing prices
- Apply on a row fixes that one part. PartMash re-reads the live price first, so it never overwrites a change you made after the report ran.
- Raise all … to MAP / My retail fixes every eligible red row at once — only the brand you filtered to, if you chose one.
- Raise all … to My retail raises parts that are above MAP but below your own price (§9).
- Every change goes into Change history and can be undone.
- Where the price goes follows your setup choice (Dashboard): Online store + data changes Shopify; All three changes Shopify and QuickBooks; Accounting + data changes QuickBooks.
- In QuickBooks, Apply sets the item's sales price and its cost together — the cost from your vendor's sheet. No vendor cost on file → the cost is left as it is. The same checks run: the live QuickBooks price and cost are re-read first, and an item changed since the report is left alone.
- In Shopify, Apply also sets the variant's Cost per item to your vendor's cost, in the same step as the price. No vendor cost on file → the cost is left as it is. Undo puts the old cost back — or clears it again if it was blank.
- Shopify and QuickBooks each get their own line in Change history, so either can be undone alone.
- Fix in QuickBooks (on a row, or Fix all … in QuickBooks above the table) is for parts where your store is already right but QuickBooks is behind: it raises the QuickBooks sales price to MAP (your My retail, where you set one) and sets the cost to the vendor's cost. Your store is not touched. A QuickBooks price above MAP is not lowered by this button.
- Fix all … in QuickBooks fixes what the tab you are looking at shows (and the brand you picked) — its count always matches the table.
- Some parts are held and show "QuickBooks left as is" with the reason: a part on sale at the vendor (its regular price and cost stay in your books), a vendor cost at or above MAP (usually the wrong column in the sheet), a cost moving more than 40%, or a price rising more than 50%. Check those by hand.
⚠️ A row with no Apply button isn't a bug. It means the price can't be acted on safely — an untrusted source, or a price PartMash can't write.
- Lower to $X (on a row) and Lower … to match (above the table) bring a price that is above its target back down to it: your My retail where the brand has a %, MAP exactly where it does not. Whatever the vendor calls that column — MAP, Retail, Jobber — it is the number used. It works on the tab you are looking at, and only the brand you picked. A raise never lowers anything; only these buttons do. When parts on the other Lower tab (✅ At MAP or ⬆️ Above MAP) are also priced above target, a line under the button says how many, with a link to that tab — e.g. "Also 4 on the ⬆️ Above MAP tab".
- With QuickBooks in your setup, a part is offered Lower when either price is above target — so a QuickBooks price that was typed in at SRP comes down to MAP even when the store is already right.
- A Lower is held with its reason, never written, when the price would drop more than 40% (usually bad data), when the target is at or under the vendor's cost, when the part is on sale at the vendor and you are not following vendor sales (§9), or when another of your price sheets says a higher MAP for the same part. That last one reads "Aeromotive says MAP is 393.66 — check which sheet is right". Check the price at Summit or Jegs, then fix the wrong one with Correct this MAP on the row.
- While prices are being written, the report shows ⏳ Writing … now in place of every Raise, Lower and Fix button, so nothing is pressed twice. QuickBooks prices are written 30 at a time, and every one is read back afterward. A store batch of 50 or more goes to Shopify as one bulk update, then every price is read back — a part counts as changed only when Shopify shows the new price. Smaller batches go one at a time. Once it is done, the parts it changed drop out of the button counts and their rows read ✓ Lowered to $X or ✓ Raised to $X.
- Keep my price (beside a row's button) pins that part: no Raise, Lower or Fix changes its price — in your store or in QuickBooks. Its QuickBooks cost still follows the vendor. The row shows 📌 Your price is kept, with Unpin to undo it. The full list is on My retail (§9).
8.3 When a vendor's price is wrong
Vendor data is wrong more often than people expect:
- A MAP that's too high gives a false alarm. Annoying, but you check it.
- ⛔ A MAP that's too low is silent — PartMash says you're fine while you're under the real price.
On a flagged row, open Correct this MAP, enter the correct price and the reason, then Save the correction. PartMash compares against your number from then on — until the vendor's own file changes, so a fixed sheet takes over by itself. Your corrections are listed at the bottom of the report; Remove takes one away.
⛔ There's deliberately no way to dismiss a row. That's how a real problem goes quiet.
A better price sheet? Just upload it. A trusted sheet beats an untrusted feed automatically. ⚠️ Newer isn't always better — if a reissued sheet disagrees with one you trust, spot-check a few parts first.
When two sources have the same part, which one counts:
- The maker's own live feed (Holley's feed for Holley, MSD and the rest of the Holley family).
- The maker's own price sheet (Aeromotive's sheet for Aeromotive).
- A distributor's live feed (PDM, for example).
- A distributor's price sheet.
A distributor's feed still supplies the price for any part the maker's sheet doesn't cover. When two sources disagree, the row says so, and Lower holds the part instead of cutting it (§8.2).
9. My retail — your own margin over MAP
My retail in the top menu.
Type a percentage next to any brand and Save. That brand's My retail price is MAP plus that percentage, rounded up to .95.
| MAP | % | My retail |
|---|---|---|
| $107.00 | 5% | $112.95 |
| $1,000.00 | 10% | $1,100.95 |
- Every brand starts at 0% — prices stay at MAP until you set one.
- Change it any time. The report shows My retail next to MAP, and Raise all … to My retail applies it.
- ⭐ My retail never goes below MAP.
Vendor sales — one choice per vendor. When a vendor runs a sale, its MAP drops. By default PartMash follows it: Lower brings your price down to the sale MAP, and Raise brings it back up when the sale ends. Tick Don't follow sales beside a vendor to keep your regular prices for every brand that vendor sends — Holley's box covers MSD, Sniper, ACCEL and the rest of its feed. Ticked vendors' sale parts are left alone by Raise, Lower and Fix, in your store and in QuickBooks. It is never per part. PartMash can tell a sale today in Holley's feed; the page says which feeds it can read a sale in.
Prices you keep. Every part you marked Keep my price on the report, with the price it had and the day you kept it. Unpin lets it follow the vendor sheet again.
10. Stock — vendor stock on your product pages
Stock in the top menu. Needs: your store connected with the inventory permissions (§3), and a vendor that sends stock.
10.1 What customers see
| Vendor says | Your product page shows | Can they order? |
|---|---|---|
| In stock (e.g. 46) | In Stock — 46 available (100+ when the vendor's count tops out) | Yes, up to that number |
| 0, with a restock date | On Backorder — expected around Oct 30, 2026 | Yes |
| 0, no date (or the date has passed) | Out of Stock | No |
| Nothing (vendor sends no stock) | Unchanged | Unchanged |
⭐ PartMash never treats "no information" as "0 in stock". If a vendor's stock feed fails one night, your products keep yesterday's numbers.
10.2 Setting it up
Under Settings on the Stock page:
- Send stock from — tick each vendor whose stock you want. Vendors that send no stock can't be ticked.
- Store location number — where the stock goes. In Shopify admin: Settings → Locations, open your location; the number is at the end of the address. (Leave it empty only if your store app has the
read_locationspermission.) - Save settings.
- Press Preview stock changes. It reads everything and writes nothing. Look at:
• Would change — how many products get updated.
• ⚠️ Could be bought before, sold out after — the number to check before you apply.
• The Left alone lines — parts with no vendor stock, old readings, or in two vendors' feeds. - If it looks right, press Apply. It runs on the server — you can leave the page. The Stock page shows "Stock is being written … 300 of 4,325 parts done"; refresh to update. Only one run happens at a time.
- When you're happy, tick Update stock automatically every night and Save settings.
10.3 Good to know
- Nightly runs only touch parts whose numbers changed — usually quick.
- Matching is on brand + exact part number — stock is never put on a lookalike part.
- If a feed suddenly says most of your parts are at 0, PartMash refuses that run, emails you, and the Stock page says why — that's a broken feed, not a sell-out.
- If you changed a count in Shopify by hand since PartMash read it, PartMash skips that part.
- ⚠️ A part carried by two ticked vendors is left alone for now and listed under in two vendors' feeds.
- When a vendor shows 0 the part is normally marked sold out, or backorder with a date when the vendor sends one. A distributor at 0 doesn't always mean the part can't be had. Under that vendor in Send stock from, tick keep the part orderable (backorder) and its 0 lets customers keep ordering, with no date shown. Real counts above 0 still go to the store as usual.
- Every stock run is on Change history and can be undone (§14). Switch automatic stock off first if you want an undo to stay undone.
11. Orders — store orders into QuickBooks
Orders in the top menu. Needs: store + QuickBooks connected (mode All three), and the read_orders permission.
Every paid store order becomes, in QuickBooks:
- a customer — the existing one if PartMash is sure it's them (same email, name, company or name + zip), otherwise a new one with their name, email, phone and company;
- an invoice numbered with your store's order number, with each part on its QuickBooks item and shipping on your shipping item;
- the payment, into the account you choose.
11.1 Setting it up
Under Settings on the Orders page:
- Payments go into QuickBooks account (id) — use a clearing account, not your bank: the store pays you out in batches, net of fees, days later.
- Shipping posts to QuickBooks item (id) — your shipping item.
- Save settings.
- Prove it with one order: place a small order (or a test order), then press Sync orders now (tick Include Shopify test orders for a test order). Check the customer, invoice and payment in QuickBooks, then delete the test entries there.
- Tick Sync automatically every night and Save settings.
11.2 Held orders — and why
Anything PartMash isn't sure of is held, never guessed, with the reason on its row:
| Reason | What to do |
|---|---|
| A part has no matching item in your books | Add it in QuickBooks (or use Books gaps) — the next sync picks the order up |
| The customer matches two people in your books | Tidy the duplicate in QuickBooks |
| QuickBooks saved a different total (usually its sales tax) | The payment is held. Fix the invoice in QuickBooks; the next sync records the payment |
| A new customer's name is already taken | PartMash uses the next free name — Jane Smith (2) |
- ⭐ Nothing is ever written twice. If a sync stops halfway, the next one carries on where it left off.
- Only paid orders are synced. If your store captures payments manually, an order arrives after you capture it.
- You get one email when orders need a look (the reason is on each order's row), and another when they're done.
12. Tracking — vendor shipping emails to your customers
Tracking in the top menu. Needs: your Shopify store, your QuickBooks, or both.
When a vendor ships one of your orders, their "has shipped" email comes to PartMash. PartMash finds the order it belongs to and gets the tracking to your customer. Vendors read today: Holley and its brands (Sniper, MSD, Flowmaster and the rest).
12.1 Shopify orders and QuickBooks invoices, side by side
| Shopify orders | QuickBooks invoices (phone, counter and local sales) | |
|---|---|---|
| Needs | Store connected, with the fulfillment orders permission (Store page → Permissions) | QuickBooks connected |
| How the order is found | Ship-to name + zip + every part still waiting to ship | The customer — the ship-to name when it went to them, or the PO you typed when you ordered from the vendor (a repeat number like "Smith 2" is ignored) — then their invoice with those parts, made before the vendor order, paid or not |
| Shipped to the customer | Order marked shipped; Shopify emails the customer | Tracking written on the invoice; PartMash emails the customer "your order shipped", from your store's name, replies to you |
| Shipped to your shop | Handed to QuickBooks (or marked stock if you have no QuickBooks) | Tracking on the invoice only — no email. PO "shop stock" = stock |
| Not sure | Waits on the page with the reason | Waits with the likely invoices — pick one; a name you pick can be remembered |
| Who is told | The customer, by Shopify | The customer, by PartMash (the invoice is your record — they already have their invoice) |
⭐ With both connected, a shipment is first checked against Shopify; anything that isn't a Shopify order shipped to a customer goes to QuickBooks — so a part shipped to your shop for a car you're working on lands on that customer's invoice, not in stock.
12.2 Setting it up
- On the Tracking page press Get my forwarding address. It's private to your account.
- In your email, forward the vendor's emails to that address:
• Gmail: Settings → Forwarding and POP/IMAP → Add a forwarding address. Gmail sends a confirmation to it — the Tracking page shows a Confirm forwarding in Gmail button and the code; press it. Once forwarded emails arrive, that becomes one line: ✅ Connected. Then Settings → Filters → new filter: Fromnoreply@holley.com, and
• Shopify only: Subjectshipped;
• with QuickBooks: Subjectshipped OR "order confirmation"— the Order Confirmation carries the PO you typed, which is how a shipment finds its invoice. → Forward it to your address. Leave "also apply to matching conversations" unticked.
⚠️ **Type only those words in the Subject box — never subject:.** Gmail adds subject: itself; typed twice, the filter reads subject:(subject:(…)) and quietly matches nothing. Check before saving: the emails listed behind the filter box should be your vendor's shipping emails. An empty list means the filter is wrong. Gmail may ask you to confirm it's you when you save a forwarding filter — finish that in the same window or the change is lost.
- Outlook: Settings → Mail → Rules → new rule: From
noreply@holley.com, Subject includesshipped(and a second rule forOrder Confirmationwith QuickBooks) → Forward to your address.
- QuickBooks only: under The "your order shipped" email, set the name your customers see, where replies go, and your shop's address (parts shipped there never email a customer).
- The next shipping email appears on the Tracking page. That ticks the step on your dashboard.
- Only emails sent to your address are read; mail to any other address is thrown away unread.
- Forwarded emails pass through Resend, PartMash's email provider, which keeps them for up to 30 days.
12.3 The PO you type when ordering (QuickBooks)
Type the customer's name, as it is in QuickBooks, in the vendor's PO field — "Ken Frye", or "Ken Frye 2" for a second order. Then the shipment finds the invoice by itself, even when it ships to your shop. Anything else ("white camaro", "Wakeboard") is fine too — it just waits for you to pick the invoice. "shop stock" (or "shopstock15") marks stock. Names must match exactly (capitals and spaces don't matter): "Kelly Holcomb" is not "Kelly Hollcomb" until you pick it once with remember ticked.
12.4 Sending — by hand first, then automatic
- Automatic sending starts OFF. A matched shipment shows ready to send with a Send button. Check a few, then tick Send automatically and save.
- Shopify: PartMash re-checks the order the moment you press Send — if it was shipped meanwhile, nothing is sent.
- QuickBooks: Send writes the tracking onto the invoice, then (shipped to the customer only) emails them. If the email fails, the row says so and Try again sends only the email — the invoice is never written twice, the customer never emailed twice.
- Already delivered — no email (QuickBooks): for when the parts reach the customer before the tracking reaches you. It writes the tracking onto the invoice and closes the row — the customer is not emailed, then or later. If QuickBooks refuses the write, the row stays as it was and nobody is emailed.
- One at a time. After you press a button that writes to QuickBooks or emails a customer, the whole page waits with a spinner until it is done — no other button works until the page comes back. If someone else saves the same invoice at that moment, PartMash reads it again and tries once more by itself.
- An invoice holds one tracking number: the latest shipment's goes there; every email carries its own.
- A forwarded copy (you forwarded it by hand rather than by a filter) always waits for Send.
- So does any email your mail server could not confirm really came from the vendor. Anyone can type a vendor's name on an email — PartMash sends automatically only when it is proven.
- No email on file for the customer → the row says "text or call them" with the tracking number.
12.5 Rows that need a look
| Status | What it means / what to do |
|---|---|
| needs a look | The reason is on the row. QuickBooks: pick the invoice from the list (tick remember for a misspelt name), or Mark as stock. Shopify: no order fits or two fit — ship it from your store by hand. |
| could not read | The email layout was not one PartMash knows. Ship it by hand and tell support. |
| failed | Refused (the reason is shown). QuickBooks: fix it, then Try again. Shopify: not retried — check the order. |
| ⚠️ check it | A send was interrupted. Check the order or invoice before doing anything. |
| not a shipment | An email that isn't a vendor shipment (or a Holley warranty order) — check your filter. |
13. Books gaps — what's in your store but not your books
Books gaps in the top menu. Needs: QuickBooks connected.
Shows every part in your store that QuickBooks has never heard of, with the item name PartMash would create, in three groups: ready, blocked (with why), and already in your books.
- Create the first 10 in QuickBooks… creates items, with the vendor you buy them from already set.
- Set code gives a brand its code. Type the vendor you buy a brand from and Save, then Apply to ABC- items… sets that vendor on every QuickBooks item with that code.
- It refuses anything it isn't sure of — a name that already exists, a part number that's really a web address, a brand with no code.
Nothing writes to QuickBooks until you press the button, and everything it creates can be undone.
14. Change history — undo
History in the top menu. Every run PartMash made — prices, stock, supplier data, items, vendors — with what changed, and when.
- Press Undo… on a run. PartMash shows what would go back. Nothing is written yet.
- Rows somebody changed since are listed and left alone.
- Press Yes, put these … back — or Cancel.
| Kind of run | Undo does |
|---|---|
| Prices | Puts the old prices back |
| Prices in QuickBooks | Puts the old sales price and cost back |
| Stock | Puts tracking, sell-at-zero, counts and dates back |
| Supplier data (a pull or sheet) | Puts the old MAP, cost and titles back, removes parts it added |
| Items created in QuickBooks | Makes them inactive (QuickBooks doesn't delete items) |
⛔ Undo only reverses what PartMash did. It can't reverse a change you made yourself.
15. What runs at night, and the emails you'll get
Every night PartMash:
- reads your vendor connections (retrying a bad one twice),
- updates stock, if switched on,
- syncs paid orders into QuickBooks, if switched on,
- matches any vendor shipping emails still waiting (each one is also matched the moment it arrives).
When something needs you, everyone on your account gets an email — the address each person signs in with. It says what happened, what to do, and links straight to the page and its help. The PartMash support team gets a copy, so we know too.
| You'll be emailed when | Where to fix it |
|---|---|
| A vendor feed has stopped updating | Vendors |
| Store orders are held and need a look | Orders |
| A stock run was refused or some parts didn't take their stock | Stock |
- One email per problem — not one every night while it lasts.
- A short "fixed" email when it's working again, so you know you can stop looking.
- Problems on our side (the server, backups) go to the PartMash team, not to you.
16. Signing in safely — two-factor
Click your name (top right) → Turn two-factor on.
- Email me a code (simplest): each sign-in sends a 6-digit code to your email. It's good for 15 minutes. Send it again if it doesn't arrive — check your spam folder too.
- Or Use an authenticator app.
- ⛔ Save your recovery codes when PartMash shows them. They're the only way in if you lose access to your email or phone. Each works once.
- Turn two-factor off from the same page. It asks for your password first.
- Five wrong codes and sign-in pauses for 15 minutes. Then sign in again from the start.
Forgot your password? Forgotten your password? on the sign-in page emails you a reset link.
17. Getting help
Support at the bottom of every page: common questions, how to read your report, and Send to a person if you're still stuck.
18. Your data
- Store and QuickBooks access are stored encrypted.
- Everything PartMash stores, and its backups, is kept on encrypted storage.
- Each business's data is kept apart from every other.
- PartMash records who opens pages showing your customers' personal information (Orders, Tracking) and when, and keeps that record for twelve months.
- Disconnect on Store or Connections removes that access straight away. Uninstalling the PartMash app in Shopify does the same for your store (and its data goes sooner — see §3.1).
- Your customers' privacy requests: when one of your customers asks your Shopify store for their data, or to be deleted, Shopify tells PartMash too. We answer each within 30 days, as Shopify requires.
- Disconnecting one service deletes only what PartMash got from that service, 30 days later — and reconnecting before then cancels it. Disconnecting QuickBooks never touches your prices, vendors, stock settings or history. Disconnecting your store deletes, after those 30 days, your reports and the store's part of Change history (the prices and stock written to it), its order records and the store's product IDs — never your vendors, MAP policies, brands or QuickBooks data.
- Closing your PartMash account: your name (top right) → Close your account, then type your business name and your password to confirm. Straight away, nobody can sign in and PartMash stops all work for it — but nothing is deleted. We confirm with you before anything is, and never sooner than 30 days. Changed your mind? Email support and we reopen it exactly as it was. Your store and QuickBooks are never touched by closing.
19. The demo account
demo.partmash.com opens a working PartMash account with no sign-up and no password: a Shopify store with 48 real parts, three vendor price sheets and a MAP report ready to run. Every price in it is made up.
- Try anything on the report — run it, Raise to MAP, overrides — then put it back from Change history. Set My retail, sync Stock, look through Brands and MAP policies.
- The demo's books are a pretend QuickBooks company with made-up items, customers and invoices. It works like the real thing — the report gets its books column, Orders syncs store orders into invoices, Books gaps creates items — but it is answered by PartMash itself and never reaches Intuit.
- Tracking shows example data: its real buttons email customers, which the demo never does.
- Switched off, because anyone can use it: uploading files, connecting accounts, sending email, QuickBooks writes and sign-in settings. Those show That is turned off in the demo.
- Everyone with the link shares the same account, so you may see somebody else's changes. It is put back every night.
- The demo has its own address, so it never touches a real sign-in: you can have your own account open at app.partmash.com and the demo open in the next tab. The old link, app.partmash.com/demo, takes you there.
- Start your own account at the top of every demo page goes to app.partmash.com to sign up — a real account is always separate from the demo.
- Opening the demo means agreeing to the Terms of Service (partmash.com/terms): no automated access, scraping or copying.