Articles

Using Google Sheets to manage wholesale orders

Google Sheets is a good place to work out what a week of orders comes to, and a bad place to send a customer their prices. Access in Sheets is granted on the file and not on one tab, so showing a customer their own price list means either trusting them not to scroll or maintaining a separate file per customer. How to organise wholesale orders in a spreadsheet covers the layout that works in any spreadsheet.
Published Wednesday, 26 August 2026Updated Sunday, 27 September 2026
Title card reading "Using Google Sheets to manage wholesale orders" over crates of fresh produce

Permissions attach to the file, not to the tab

The usual layout is one spreadsheet with a tab per customer, and the usual wish is to send each customer their tab. Sheets has no way to do that. A share link, a Viewer role and a protected range all operate on the whole spreadsheet, so anyone who can open the file can open every tab in it.

IMPORTRANGE is the standard escape: a small file per customer that pulls only that customer's rows out of a master. It holds as long as the customer stays a viewer, because the access grant is between the two files rather than between people, so the customer reads the imported values without holding any access to the master. It collapses the moment you give that customer edit access. Google's documentation states that once access is granted, any editor on the destination spreadsheet can pull from any part of the source spreadsheet. A customer who can type into their own order sheet can also read your entire price book, including the list you quoted to someone else.

Each of those grants also counts against the 600-user share limit on the master file.

Hiding a tab is cosmetic, and Google says so

Google's own help page is unusually direct about this. On protection: "This shouldn't be used as a security measure." On hidden sheets: "All spreadsheet editors can unhide and view these sheets," and "Spreadsheet viewers can still access content in hidden sheets. For example, if a viewer makes a copy of the spreadsheet, the sheets remain hidden, but they can unhide the sheets."

A view-only user can make that copy. So a hidden tab of margins stays hidden right up until a customer downloads the file, and the "Show a warning when editing this range" setting blocks nobody at all: anyone with edit access clicks past the dialog and carries on.

The later edit to a cell wins, with no warning

Sheets merges at the cell level. Two people typing in different cells do not collide. Two people committing a value to the same cell produce no merge, because there is nothing to merge: one value replaces the other, whichever reached the server last. No conflict dialog appears and no "conflicting copy" file is created.

Coloured cursors are the only collision warning there is, which is why the edits that actually cost money are the ones with no cursor to see: offline edits that sync later, phone edits, and anything written by a script. Version history is the only recovery, and Google publishes no retention guarantee for it. Older versions are merged and purged over time, and only the handful you name by hand survive that. Nobody names a version of an order sheet.

Google Forms for wholesale orders covers the version where customers submit a row rather than edit one.

A phone freezes one row, so the header scrolls away

The iOS and Android apps allow freezing only the first row and/or the first column. Freezing more than that is desktop-only. Scroll to row 60 on a stall or in a van and the column headings are gone, so the difference between the Tuesday column and the Wednesday column is a guess. A fingertip is also a blunter pointer than a mouse, so selecting the neighbouring cell and overwriting a formula takes one mis-tap.

Raymond Panko's review of 13 audit studies put the share of operational spreadsheets containing at least one error at 94%, and experience did not help: developers with hundreds of hours produced much the same cell error rate as students. A later audit by Powell found a lower rate, around 1.79% of formulas, so the size of the problem is argued over. Its direction is not. Five signs your wholesale bakery has outgrown its spreadsheet covers the point where those errors start costing deliveries.

Sheets stays the right tool for arithmetic and for the import file

Totalling a week, checking what a margin does at a new cost price, modelling a price rise across a whole catalogue: a spreadsheet does each of those faster than any form-driven product will, because a grid of numbers with formulas over it is exactly what it is for.

A sheet is also the fastest way to get a catalogue into something else. Wholesale Handler's import reads a pasted block of cells, or a .csv, .tsv or .xlsx dropped onto the page, and matches your columns to its fields by their headings. A row with a problem is flagged in place and corrected there, and a row that stays wrong is skipped rather than holding up the rest.

Wholesale Handler gives each customer their own prices without a file each

Every customer is assigned exactly one price list, and the assignment is structural: no customer can be left unpriced. A list is stored as a percentage of your Default list, so a 10% trade discount is one number rather than a recalculated column, and editing a single price on a list turns that one row into a permanent manual override the recalculations skip.

Customers order against their own prices and see nobody else's, because the prices are read per relationship rather than published in a document. Orders for a delivery date collapse into one production list, packing slips print from the orders, and invoices come off them too. Wholesale customer portal covers what the buyer sees and which of your jobs it takes over.

A flat monthly price covers all of it, with no per-user charge, no per-order fee and no commission. Up to 3 customers it is free, with no card and no expiry.

What does not carry over from the spreadsheet

  • The customer import reads names, email addresses and price-list assignment, but not the delivery address, phone number, tax number or account reference. Those are added on each customer's page afterwards.
  • Export runs the other way as invoice line items only, as a CSV shaped for Xero and QuickBooks. There is no customer, order or product export yet.
  • The plan carries up to 50 customers and up to 500 products.

Wholesale Handler pricing

Three plans, and the only difference between them is how many customers you trade with. Every feature is on all three, so nothing is held back on the free one.

  • Free - up to 3 customers, no card
  • Starter - up to 10 customers, $29/month
  • Pro - up to 50 customers, $109/month

Up to 500 products and unlimited orders and invoices on every plan. One fee for the whole business - no per-user charge, and no cut of what you sell. No contract, and cancel anytime.

Try Wholesale Handler now

No sign-up. No demo booking. Just try the demo and use it immediately with sample data.