Google Sheets logo

Record orders in a packing list spreadsheet

Each order lands on the Orders tab with product, quantity, variant and customer, ready to pick and pack from.

When this happens

New submission on your order or pre-order form

Do this

Append a row to the Orders tab with product, quantity, customer and line total

One-directional. A submission triggers the action — nothing is written back into your form.

A pop-up stall or a small studio does not need a shop platform to take orders — it needs a list it can pick and pack from. This flow appends each order to the Orders tab as it comes in, and a formula column works out the line total from your own price list.

The form can send customers to secure hosted checkout after they order. The sheet is the record the person packing boxes actually works from.

Setting it up

  1. 1

    Publish the order form with Item Name or Product as a select question listing only what you actually have with you, so the Product column matches your price list word for word.

  2. 2

    In the spreadsheet, build two tabs: Orders for the rows the Zap writes, and Prices with one row per product and its price.

  3. 3

    Type the Orders headers first — Customer, Email, Product, Qty, Variant, Fulfilment — then add Line Total and Status to the right of them.

  4. 4

    In Zapier, choose formformform with the New Submission trigger and your order form, then pull a test order through so every answer is available to map.

  5. 5

    Add the Google Sheets Create Spreadsheet Row action, connect the Google account, and select the spreadsheet and the Orders worksheet.

  6. 6

    Map Full Name, Email Address, Item Name or Product, Quantity, "Color, Variant, or Size" and Delivery Method into their columns, and format Qty as a number before the first order arrives.

  7. 7

    Leave Line Total and Status unmapped. Put one ARRAYFORMULA at the top of Line Total that multiplies Qty by a VLOOKUP into the Prices tab, so every appended row is covered without anyone dragging a formula down.

  8. 8

    Run a test order, check that Line Total calculates and Status is blank, then turn the Zap on and print the tab as your first picking list.

What maps where

Using the Product Order Form as the starting point. These are its real fields — swap in your own and the mapping works the same way.

Form fieldGoogle Sheets
Full NameCustomer column on the Orders tab
Email AddressEmail column, for sending the invoice or payment link
Item Name or ProductProduct column, matched against the Prices tab
QuantityQty column, formatted as a number so it sums
Color, Variant, or SizeVariant column the packer reads off
Delivery MethodFulfilment column that splits pickup from delivery

Variations worth knowing

Add the delivery columns only when you ship

Shipping Address and Special Instructions matter for posted orders and clutter the tab for collections. Map both into columns at the far right of the Orders tab, then keep a filter view showing Fulfilment set to delivery with those columns visible, and a second view for collections without them.

Keep pre-orders on their own tab

Stock you hold and stock you have not made yet want different lists. Point a second Zap from your pre-order form at a Pre-orders worksheet with an Expected Ship column you fill in by hand. The packing list stays honest, and the pre-order tab becomes the production queue.

If something isn't arriving

Line Total is blank on every new order.

An appended row does not inherit the formula from the row above it, so a formula dragged down a hundred rows stops working the moment order 101 arrives. Replace it with a single ARRAYFORMULA anchored in the header area that covers the whole column at once.

The tab keeps un-sorting itself during a busy day.

Rows always append to the bottom, so a manual sort lasts until the next order. Leave Orders in arrival order and build the picking list on another tab with a QUERY that sorts by Product, or use a filter view, which sorts your screen without moving the data.

Frequently asked questions

Does this take the payment as well?

Yes. Add products and priced options to the form, then collect payment through secure hosted checkout with Stripe, PayPal, or Square. Payment status is tracked alongside the response.

Can the sheet reduce a stock count when an order comes in?

Only with a formula on the spreadsheet side. Keep a Stock tab that subtracts a SUMIF over the Qty column from your opening count. The automation only ever appends rows; it never reads the sheet and never writes anything back into the form.

What if two orders are submitted at the same moment?

Zapier runs the action once per submission and each run appends to whatever is currently the last row, so two orders arriving together become two rows in whichever order they finish. Nothing is overwritten and nothing is merged into a single row.

Related automations

Build the form first

The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.

Start free