Skip to content

Orders and routes

Adding orders: by hand, from a CSV, or over the API

Orders reach Porch Route three ways: typed in one at a time, imported from a CSV (with column matching, a Shopify layout and address checking), or sent by your store or system over the API with your own order number. Each order carries its date, window, items, temperature and any delivery instructions.

Where
Orders · Integrations
Last updated

Steps

  1. Step 1: Add one by hand

    On Orders, choose “Add order”. Enter the “Customer name”, phone and email (optional), the address, “Delivery instructions” such as “Leave in the cooler by the side door”, and the “Delivery date” with an optional “Delivery window”. Under “Delivery texts”, record whether the customer agreed to texts.

  2. Step 2: Describe what’s going

    Add items with a quantity, pounds each (blank means unknown — never zero) and a temperature. “Order temperature” defaults to “Coldest item”, so a basket with one frozen item rides on a frozen-capable vehicle. Optional: total weight, “Priority” (normal orders are left off first when a day doesn’t fit), boxes, “Vehicle needs” tags and “Containers out”.

    Turn on “Flexible date” and set “Can move until” if the order may go out on a later day when this one is full.

  3. Step 3: Import a CSV

    Choose “Import CSV”. Pick a file with a header row or paste rows, or “Download the template”. On “Match your columns”, choose a “File layout” — Porch Route template, Shopify orders export or your own columns — and match Customer name and Street address at least; a preview shows how the first orders will import. Choose “Import 42 orders”.

    Up to 5 MB per file. Re-importing a file updates orders that share an order number instead of adding them again; rows that look like an existing order on that day are skipped unless you “Import anyway”.

  4. Step 4: Check the results and any addresses

    “Import results” badges each row Added, Updated, No change, Skipped or Failed, and finds addresses on the map in the background — you can close it and it keeps going. Rows flagged “Check address” open a sheet where you search the map or place the pin yourself.

    Address confidence is shown in words: “Matched the house”, “Probably the right spot”, “Matched the street, not the house”, “A rough match”.

  5. Step 5: Send orders over the API

    Create an API key in Integrations, then have your store or system POST each order to /api/v1/orders keyed by your own order reference. Sending the same reference again updates the order; an Idempotency-Key makes retries safe. The API docs have the request and every field.

    API orders are never rejected for falling outside a zone — your checkout already decided they’re deliverable.

  6. Step 6: Manage the day’s list

    Orders is per day: switch dates with the date control, filter by Open, Scheduled, Delivered, Failed or Cancelled, and search by customer, address or order number. Each row’s menu offers “Edit order”, “Check address”, “Try again on…” another day and “Cancel order”.

Good to know

  • Once an order is on a route that has gone out, only items, instructions, containers and contact details can change; take the stop off the route to change the rest.
  • The template’s columns include a `sms_consent` column so consent recorded at your checkout travels with the order.

Questions

Can I import a Shopify export directly?

Yes. Choose the “Shopify orders export” layout. Line items are grouped into one order each; the delivery date comes from the order’s note attributes when your delivery app adds them. Cancelled, pickup and shipping orders are left out.

What if I don’t know an item’s weight?

Leave it blank. Routing treats unknown as unknown, not zero, and the build screen tells you how many selected stops have no weight on file.

What does “Try again on…” do?

It moves a failed or open order to another delivery day so it’s offered when you build routes for that day.

Next articleBuilding and editing routes