Order History

Daily line-item feed of the orders Locally drives for your products at your retail partners.

Order History reports are served by the same Data Sharing endpoints as every other report: list the splits with Report Index, then page through each split with Report Page. Each row is one order line item, covering Buy It Locally orders placed with local stores and Buy Online orders sent to online retailers.

Request Parameters

🏷️ header · 🔗 path · unmarked parameters are query params

ParameterTypeRequiredDescription
Locally-Api-Token 🏷️stringNoLocally issued API key.
uuid 🔗stringYesLocally issued unique identifier for your Order History report. Ex. b5ed7f10-f632-11ed-b67e-0242ac120002.
split_id 🔗stringYesThe split to read: the Locally store ID of the store that received the orders, or 0 for Buy Online orders. Use the split_name values returned by Report Index.
page_number 🔗integerYesPage number of the split. Starting with zero. Defaults to 0.

Example Request

curl 'https://www.locally.com/api/v2/reports/json/{{REPORT_UUID}}/458758/0' \
--header 'Locally-Api-Token: {{API_TOKEN}}'
const response = await fetch(
  'https://www.locally.com/api/v2/reports/json/{{REPORT_UUID}}/458758/0',
  {
    headers: {
      'Locally-Api-Token': '{{API_TOKEN}}'
    }
  }
);
const page = await response.json();
import requests

url = "https://www.locally.com/api/v2/reports/json/{{REPORT_UUID}}/458758/0"
headers = {"Locally-Api-Token": "{{API_TOKEN}}"}

page = requests.get(url, headers=headers).json()

Call Report Index first to list the splits in your report. Order History is split by store: each split_name is a Locally store ID, and split 0 holds Buy Online orders, which are not tied to a store. page_number is zero-based — loop from 0 up to (but not including) total_pages to download a full split.

Example Response

{
  "version": 2,
  "status": true,
  "properties": {
    "uuid": "b5ed7f10-f632-11ed-b67e-0242ac120002",
    "current_page": 0,
    "split_id": "sample-order-history-report-20261026120012-458758",
    "split_name": "458758",
    "total_pages": 1,
    "total": 2,
    "per_page": 100,
    "report_date": "2026-10-26"
  },
  "content": [
    {
      "brand_name": "Locally Test Brand",
      "cart_hash": "TZ4G7NAE",
      "cart_ordered_at": "2026-10-21 10:24:53",
      "transaction_type": "ROPIS",
      "store_name": "Locally Test Store #1",
      "store_company_name": "Locally Test Retailer",
      "store_country": "US",
      "store_zip": "75077",
      "store_city": "Lewisville",
      "upc": "848426073865",
      "product_name": "100 Hour Maintenance Kit",
      "product_color": "One Color",
      "product_size": "One Size",
      "product_currency": "USD",
      "product_subtotal": "38.49",
      "tax": "3.18",
      "product_grand_total": "41.67",
      "commission": "1.35",
      "vendor_id": "13579",
      "cart_item_status": "Confirmed",
      "cart_item_resolution": "purchased",
      "brand_marketing_consent": "Yes",
      "utm_source": "",
      "utm_medium": "",
      "utm_campaign": "",
      "cart_item_id": "10472626",
      "quantity": "1",
      "surface": "Product Locator"
    }
  ]
}

Response Explanation

  • properties.split_name — Echo of the requested split_id: the Locally store ID that received the orders, or 0 for Buy Online orders.
  • properties.total — Total order line items in this split across all pages. Each page holds per_page (100) rows.
  • properties.report_date — Date the report was last generated — the same uuid always serves the newest run. Order History regenerates daily and is ready before 9:00 AM ET.
  • content[] — One row per order line item, so an order with three products returns three rows. Each run covers every order placed in the last 30 days with its current status, so consecutive runs overlap — replace or upsert your data on cart_item_id rather than appending it. Columns are configurable per report, so your report's fields may differ from this example.
  • content[].brand_name — The brand that makes the product.
  • content[].cart_hash — Order identifier, shared by every line item in the same order.
  • content[].cart_ordered_at — When the order was placed (UTC).
  • content[].transaction_type — How the order is fulfilled, e.g. ROPIS (Reserve Online, Pick Up In Store), BOPIS (Buy Online, Pick Up In Store), or Online (Buy Online).
  • content[].store_name, store_country, store_zip, store_city — The store that received the order. Empty for Buy Online orders.
  • content[].store_company_name — The retailer. For Buy Online orders, the online retailer the shopper was sent to.
  • content[].upc, product_name, product_color, product_size — The product ordered.
  • content[].product_currency — Currency of the line item's amounts, e.g. USD.
  • content[].product_subtotal — Line item amount before tax. Amounts are totals for all units on the line.
  • content[].tax — Tax on the line item. 0 for Buy Online orders.
  • content[].product_grand_total — Line item total including tax.
  • content[].commission — Commission on the line item. 0 for Buy Online orders.
  • content[].vendor_id — Your identifier for the store, if you have provided one.
  • content[].cart_item_status — Current status of the line item, e.g. Confirmed, Refunded, Buyer Declined, or for Buy Online orders Online Confirmed and Online Refunded. See Order History for the full list of statuses.
  • content[].cart_item_resolution — Outcome the store recorded for the order, e.g. purchased. Empty if none was recorded.
  • content[].brand_marketing_consent — Whether the shopper opted in to marketing from your brand: Yes or No.
  • content[].utm_source, utm_medium, utm_campaign — UTM parameters on the link that referred the shopper. Empty when the link carried no UTM data.
  • content[].cart_item_id — String. Unique line item identifier, e.g. "10472626". Use it as the row key when upserting.
  • content[].quantity — String containing a whole number, e.g. "1". Units ordered on the line item.
  • content[].surface — String. The Locally surface where the shopper added the item to cart: Product Locator, Store Locator, LLP (Locally landing page), Locally.com, Retail Campaign Studio, Brand Storefront, Retailer Storefront, Storefront (owner type could not be determined), Headless API, DoorDash Marketplace, or Other (could not be matched).
  • content[].cart_first_name, cart_last_name, cart_email — Optional shopper contact fields, included only when enabled for your report. Empty for Buy Online orders. Contact your Client Success Manager to request them.