Skip to content

Add Items to Orders via CSV

Menu Location: Products > Tools > Add Items to Orders via CSV


Overview

This tool lets you pre-fill customers' current-week orders with an addon item by uploading a CSV file, instead of adding the item to each order one at a time. It is recommended for use at step 2 of the weekly cycle.

The tool only affects each customer's order for the current weekly cycle. It cannot target a future or past delivery date, there is no date field in the CSV or on the page.

Primary Functions:

  • Upload a CSV to queue the same (or different) product for many customers' current-week orders at once
  • Review a line-by-line preview (who will get the item, at what price, and why any row was skipped) before anything is written to an order
  • Commit the reviewed batch, which inserts the item into each eligible order

Page Layout

List View (no batch selected)

  • An info banner: "Using a CSV file, you can pre-fill customer's orders with addons for them. Recommended to do this at step 2 of the weekly cycle."
  • Upload CSV button (top right) opens an upload modal
  • A table of previous upload batches: id, timestamp/filename, status, and a View Upload Batch link to reopen that batch's review page

Upload Modal

  • Choose File field to select your CSV
  • A link to download a sample CSV template showing the expected format
  • Upload file & Review button, which uploads the file and immediately builds the review table (there is no separate progress step)

Batch Review Page (after upload, or reopened from the list)

  • Batch id, upload timestamp, and status
  • If the batch is still awaiting commit: "Ready to commit?" and the note "Review the data below. If you need to make changes to 'in stock', 'status', or 'price' data, you must make those changes and then re-upload your spreadsheet. The data below is calculated at the time of the file upload and will not change."
  • A Submit button to commit the batch, or, if more than 10 minutes have passed since upload, a message that the batch has expired and can no longer be committed
  • A results table, one row per CSV line, with columns: id/name (customer, linked to their customer page), order id (linked to the order, if one exists), qty, product (linked to the product), price each (shows whether the price is the product's default or a custom price from the CSV), available (in stock minus reserved), action (ready to add, added, or skip), and note (reason, for skipped rows)

CSV File Format

The parser reads the header row and matches columns by looking for these substrings anywhere in the header text (case-insensitive):

  • A column whose header contains "cust" is read as the customer ID
  • A column whose header contains "sku" or "menu" is read as the SKU / Menu ID of the product to add
  • A column whose header contains "quan" or "qty" is read as the quantity
  • A column whose header contains "price" or "each" is read as an optional custom price; if left blank, the product's normal retail price is used

Any other column is ignored, columns do not need to appear in a fixed order, they just need headers the parser recognizes. The sample template's headers are:

customer_id,SKU/Menu Id,quantity,price each,This column is ignored
59628,900304,2,4.99,
49705,900304,1,,
59612,305,1,,menu id
58958,900304,3,3,sku
53030,908556,1,5.99,Sku + set price

Note the SKU/Menu Id column accepts either the plain product (menu) ID, or that ID plus 900000 (an alternate SKU encoding the system understands automatically).


How Rows Are Evaluated

For every row, the tool looks up the customer's most recent non-cancelled order in the current weekly cycle, and the product's current stock. A row is marked ready to add only if all of the following are true, otherwise it is marked skip with one of these exact reasons:

  • "no order this week" - the customer has no active order in the current weekly cycle
  • "no price" - no price was found (no CSV price and the product has no retail price set)
  • "no active product" - the product is not active and isn't part of the current week's menu
  • "not enough in stock" - the requested quantity exceeds in-stock minus already-reserved units (the note shows the actual numbers)

Rows marked "skip" are shown for reference but are never written to an order, only rows marked "ready to add" are inserted when you click Submit.


Committing a Batch

Clicking Submit on the review page processes every "ready to add" row:

  • Inserts the item into the customer's order (recorded as an addon added via CSV, at the price shown in the review table)
  • Increases the product's reserved quantity by the row's quantity
  • Logs an entry on the customer's account noting the item, quantity, and order number

Skipped rows are never retried automatically, once you commit, a batch cannot be committed again. To add the skipped items, fix the underlying issue (create the order, correct the price, restock the product, etc.) and upload a new CSV.

A batch must be committed within 10 minutes of upload, after that its Submit button is replaced with an expired message and a new file must be uploaded.


Common Use Cases

Add a Promotional or Seasonal Item to This Week's Orders

  1. Prepare a CSV with each target customer's ID, the product's SKU/Menu ID, and a quantity (leave the price column blank to use the product's normal price, or set it for a discounted/free item)
  2. Upload the CSV
  3. Review the batch, checking that customers show "ready to add" rather than "skip"
  4. Click Submit

Correct an Item Missing From Several Orders

  1. Build a CSV listing the affected customers, the missing product's SKU/Menu ID, and quantity
  2. Upload and review, rows for customers without a current-week order will show "no order this week" and won't be added
  3. Submit to add the item to the remaining eligible orders

Troubleshooting

A Row Is Skipped

Check the note column in the review table for the reason:

  • "no order this week" - the customer doesn't have an open order in the current weekly cycle
  • "no price" - add a price in the CSV, or set a retail price on the product
  • "no active product" - the product isn't active or isn't in the current week's menu
  • "not enough in stock" - reduce the quantity, or increase stock, then re-upload

The batch review data is a snapshot from upload time, changing stock, price, or product status afterward will not update an already-uploaded batch. Fix the data and re-upload a new file.

Batch Expired

Batches must be committed within 10 minutes of upload. If you see "batch expired," upload the CSV again to generate a fresh batch.

I Uploaded the Same File Twice

Each commit only processes rows still marked "ready to add", but if you upload and commit the same file twice as two separate batches, the item will be added to those orders twice. Check the affected orders and remove the duplicate line manually if needed.


  • Orders - view an individual order after items are added
  • Add Product - the product edit page linked from each row in the review table
  • Customer page - linked from each row in the review table

FAQs

Can I target a future delivery date?

No. The tool only works against each customer's order for the current weekly cycle, there is no date field.

Can I remove items using this tool?

No, this tool only adds items to orders. Items must be removed by editing the individual order.

What if a customer doesn't have an order this week?

That row is skipped with the note "no order this week." The item is not added; you would need to create an order for that customer and upload a new CSV.

Can I set a custom price for the added item?

Yes. Include a value in the price column of your CSV, if left blank, the product's default retail price is used instead.

What happens if I don't commit within 10 minutes?

The batch expires and its Submit button is removed. Upload the CSV again to create a new batch.