Skip to content

Orders โ€‹

Orders is the Sales Platform's built-in order management: your assistant can create, update and cancel orders directly during conversations, and you manage everything from the Orders page at app.mychatbot.app/orders โ€” no external CRM required.

At a glance โ€‹

You needWhereResult
The Orders integration connected to an assistantIntegrations โ†’ Order Management โ†’ Orders โ†’ app.mychatbot.app/integrationAssistant gains order tools; an Orders tab appears in the left sidebar
A currency pickedSame card โ†’ CurrencyAll order totals display in that currency
(Optional) Order fields / Custom item fieldsSame cardThe assistant collects exactly the data you need per order / per item
(Optional) Requires payment via StripeSame card, after connectingThe assistant sends a checkout link in the chat; the money lands in your own Stripe account

One order backend per assistant

Orders and Spreadsheet Orders are mutually exclusive on the same assistant. If a spreadsheet is already attached you'll see "Spreadsheet Orders is already connected to this assistant. Disconnect it first to use native Orders." and the Connect button stays disabled.

Turn it on โ€‹

  1. Open Integrations โ†’ app.mychatbot.app/integration and pick the assistant.
  2. Under Order Management, select Orders ("Native order management for your AI agent").
  3. Choose a Currency โ€” USD (default), EUR, GBP, UAH, ILS, PLN, CAD, AUD, BRL, or TRY.
  4. Click Connect โ†’ toast "Orders integration connected".

Once connected, an Orders item appears in the left sidebar and the card gains View Orders, Save Config, and Remove buttons.

Removing is non-destructive

Remove opens the "Remove Orders Integration" confirmation: "This will delete the integration configuration (currency, order fields). Your existing orders will not be deleted."

Configure what the assistant collects โ€‹

After connecting, the card shows three configuration blocks. Click Save Config after changing any of them (toast: "Orders configuration updated").

Item schema โ€‹

Every order contains an items array. The UI shows the default structure for each item:

Field shown in the appMeaning
nameProduct name (required)
quantityHow many (required)
unit_pricePrice in the smallest currency unit โ€” 1200 = $12.00 (see Price units and currency)
product_idOptional, links to your catalog

Custom item fields โ€‹

Extra fields added to each item โ€” the agent collects these per item (e.g. size, color, toppings).

Order fields โ€‹

Per-order fields the agent should collect (e.g. delivery address, phone number). These apply to the whole order, not individual items.

Both field editors work the same way:

ControlOptions / behavior
+ Add fieldAdds a row with Field name, a type dropdown, and a Required checkbox
Field typeText, Number, Select (dropdown)
Select (dropdown) typeReveals an extra input: "Options (comma-separated, e.g.: Small, Medium, Large)"
Remove fieldThe ร— button on the row

Validation on save: every field must have a name ("All โ€ฆ must have a name") and names must be unique ("โ€ฆ names must be unique").

Requires payment via Stripe โ€‹

Once Orders is connected, a Requires payment via Stripe checkbox appears. Ticking it redirects you to Stripe to link your own Stripe account; when linked you'll see a green Connected badge plus the account identifier. Untick to disconnect. Payments go straight to your Stripe account โ€” the Orders page only tracks the payment state (see Payment states).

How the customer pays:

  1. The assistant creates the order as usual โ€” it appears on the Orders page in the New group with Payment No payment.
  2. The assistant generates a checkout link for the order total and sends it as a normal message in the conversation; the order's Payment flips to Pending. Each order gets exactly one link, and a link can only be created for an order with a non-zero total.
  3. The customer opens the link and pays on a Stripe-hosted checkout page under your account (the line item shows the order number, or a custom description the assistant sets).
  4. As soon as the payment completes, the order updates by itself: Payment becomes Paid and the status badge jumps to Confirmed โ€” no manual step. If a customer writes "I've paid", the assistant can re-check the link and confirm.

If the customer doesn't pay: nothing times out on the Orders side โ€” the order stays in the New group with Payment Pending and is never auto-cancelled. If the customer opened checkout but abandoned it, that checkout attempt expires on Stripe's side (about 24 hours by default) and the order then shows up under the Payment Failed option of the Payment filter. The link itself keeps working, so the customer can still pay later; if the sale is dead, cancel the order by hand.

Cancelling a paid order does not refund it

โ‹ฏ โ†’ Cancel order only changes the order's status (badge Return). No refund is ever triggered from the app โ€” issue refunds from your Stripe dashboard.

Price units and currency โ€‹

  • Item prices are entered in the smallest currency unit: 1200 = $12.00. That's the basis shown in the Item schema, the basis the assistant is instructed to use, and the basis the Stripe checkout link charges (the checkout amount is the order total read as the smallest unit).
  • The app never converts stored amounts: the Price field in the product modal saves exactly the number you type, and the Price, Sum, Total due, and Total figures render the stored numbers as-is. When adding items by hand, match the basis of the order's existing lines โ€” for assistant-created orders that's the smallest unit (type 1200, not 12.00) โ€” and never mix the two in one order: a hand-typed 12.50 next to a stored 1250 breaks the totals, and with Requires payment via Stripe on, a major-unit total would charge the customer 100ร— less.
  • Each order is stamped with the Currency configured at the moment it's created. Changing Currency on the card later applies to new orders only โ€” existing orders keep their original currency and their totals are never converted or re-labelled. A checkout link likewise uses the currency configured at the moment the assistant generates it.

The Orders page โ€‹

Orders in the sidebar โ†’ app.mychatbot.app/orders.

Header and stats โ€‹

  • Title Orders, a Total orders: counter, and a Create order button.
  • Create order immediately creates an empty order (status New, zero total) and opens it for editing โ€” toast "Order created".
  • Six stat cards: Total, New, In processing, In transit, Delivered, Problematic. Clicking a card filters the list to that group (click Total to reset). When a Date range is set, cards show a "+N in period" delta for orders added in that window.

Search and filters โ€‹

FilterWhereWhat it does
Search boxToolbar"Search by order #, client, phone or tracking number..."
StatusToolbar dropdown (or a stat card)All statuses, New, In processing, In transit, Delivered, Problematic
WarehouseToolbar dropdownAll warehouses or one of the warehouses seen on your orders
Delivery serviceToolbar dropdownAll delivery services or a specific carrier
Date rangeToolbar pickerFilters by order creation date; Clear resets it
PaymentFilters โ†’ Advanced filtersAll payment statuses, Paid, Pending, Partial, No payment, Payment Failed โ€” matches the order's underlying payment record (see Payment states); there is no filter option for the Cash on delivery badge
ChannelFilters โ†’ Advanced filtersAll channels or the messaging channel the order came from
Tracking numberFilters โ†’ Advanced filtersExact TTN lookup ("TTN number...")

The Filters button shows a count of active advanced filters. In the modal, Apply confirms and Clear filters resets everything. On mobile the toolbar filters (Status, Warehouse, Delivery service, Date range) also move inside this modal, and the table becomes cards.

When nothing matches you'll see "No orders found โ€” Nothing matches your filters. Try adjusting them or clear all filters" with a Clear filters button. A brand-new account sees "No orders yet โ€” Orders from chats and integrations will appear here".

The table โ€‹

ColumnContent
Order #Clickable order number (opens the detail page)
ClientCustomer name, channel underneath, plus a New badge for first-time customers and a VIP marker
PhoneCustomer phone
ProductsProduct image thumbnails
WarehouseFulfilling warehouse
TotalOrder amount in your configured currency
PaymentPayment badge โ€” Paid, Cash on delivery, Pending, Partial, No payment (see Payment states)
Delivery / TTNCarrier and tracking number
StatusFulfillment badge (see Statuses)
ReminderNext reminder on the order, e.g. "Remind today", "check tracking status"
AutomationActive automation tag, e.g. Delivery control, Payment control
DateCreated date and time
ActionsView (eye), Edit (pencil), โ‹ฎ menu with View and Print

Pagination at the bottom: Rows per page: 10 (default), 25, or 50, with Previous / Next and an "Xโ€“Y of Z" counter.

Statuses โ€‹

Every order tracks two things independently: a fulfillment badge (the Status column) and a payment state (the Payment column).

Fulfillment badge โ€‹

BadgeGroup (stat card / filter)Shown when
NewNewOrder just created, or still awaiting its payment
ConfirmedIn processingPayment received or order confirmed
CollectedIn processingPicked and packed at the warehouse
In transitIn transitHanded to the carrier / in progress
DeliveredDeliveredCompleted
Not picked upProblematicParcel wasn't collected by the customer
ReturnProblematicCancelled / returned

What moves the badge โ€” automatic:

  • Creating an order (in chat or via Create order) โ†’ New.
  • The customer pays the Stripe checkout link โ†’ Confirmed (instant, via your connected Stripe account).
  • The assistant updates or cancels an order during a conversation โ€” when a customer or manager confirms, ships, completes, or cancels an order in chat, the badge follows (Confirmed, In transit, Delivered, Return).
  • โ‹ฏ โ†’ Cancel order on the detail page โ†’ Return.

Everything else is manual. Collected, In transit, Delivered, and Not picked up are set by hand: Edit the order, open Delivery & tracking, and pick a Package status. There is no carrier integration โ€” Delivery service and Tracking number are free-text reference fields, so the app never polls the carrier or advances the badge from the TTN. An abandoned checkout doesn't move the badge either (the order just stays New). Reminder texts like "check tracking status" are notes for the operator, not an automated sync.

Payment states โ€‹

One canonical mapping โ€” the Payment column badge vs. the Payment advanced-filter option:

Payment badge (table)Filter optionWhen you'll see it
No paymentNo paymentDefault โ€” no payment recorded on the order yet
PendingPendingA Stripe checkout link was generated and hasn't been paid
PaidPaidThe customer completed checkout (set automatically), or a payment was recorded on the order
PartialPartialA partial payment is recorded on the order โ€” the detail summary bar shows Partial instead of Fully
Cash on delivery(none โ€” these orders match No payment)The order's data records the payment method as cash on delivery (see tip below)
(shows No payment)Payment FailedA checkout attempt expired unpaid โ€” it exists only as a filter option, with no badge of its own

There is no separate "Awaiting Payment" state anywhere in the UI: an order waiting on its checkout link simply sits in the New status group with Payment Pending.

How Cash on delivery gets set

It's data, not a toggle: add an Order field named payment_type (a Select (dropdown) with cod among the options works well). When the assistant records cod on an order, its Payment badge shows Cash on delivery.

Order detail page โ€‹

Click any order โ€” URL shape app.mychatbot.app/orders/<order-id>. The header shows Orders / #<number> with the subtitle Order details, plus Edit, Print (opens your browser's print dialog), and a โ‹ฏ (More actions) menu:

Menu itemBehavior
Copy order numberToast "Order number copied"
Copy tracking numberToast "Tracking number copied" โ€” or "No tracking number" if empty
Open client chatJumps to the customer's conversation (only shown when the order is linked to a chat)
Cancel orderConfirmation "Cancel this order?" โ†’ toast "Order cancelled"; greyed out if already cancelled

A summary bar mirrors the essentials: Status (with a Current badge), Payment (with Fully / Partial), Order amount (with "N products"), Warehouse, Delivery (with the TTN).

Editing โ€‹

Each card has its own Edit toggle; a single Save at the top applies everything. While editing you'll see the banner "You have unsaved changes. Click Save to apply them to the order." and the reminder "Changes are applied only after you click Save at the top." Cancel discards the draft. On success: "Order updated"; on failure: "Failed to update order".

Cards on the page โ€‹

CardRead viewIn edit mode
Customer informationCustomer (links to the client chat), Phone, Email, Delivery address, CommentAll fields editable; email and phone are validated ("Invalid email", "Invalid phone number")
Delivery & trackingDelivery service, Tracking number (with copy button), Expected delivery, Package status badge, a delivery progress stepper (New โ†’ Confirmed โ†’ Collected โ†’ In transit โ†’ Delivered โ†’ Not picked up / Return), and Automations tagsFree-text service and TTN, a date picker for expected delivery, and a Package status dropdown with all seven statuses
Warehouse / stockWarehouse, "N products in stock", Reserved for order, Available for saleWarehouse name and all three stock numbers editable
Products in orderTable: Product, SKU, Warehouse, Stock, Qty, Price, Sum; totals for Subtotal:, Shipping:, Discount:, Total due:+ Add product opens the product modal; rows get edit/delete controls and quantity steppers
Reminders & automationsReminder rows with Scheduled / Automatic / Active badges โ€” e.g. "After ยซDeliveredยป โ€” send thank you message", "If ยซNot picked upยป for 3 days โ€” create manager task", "If return โ€” notify warehouse"; No data when emptyRead-only โ€” see Reminders & automations
Order historyEvent timeline โ€” e.g. "Order created", "Payment confirmed", "Order collected at warehouse", "Handed over to โ€ฆ", "Status changed to ยซIn transitยป"Read-only

Add / edit product modal โ€‹

Fields: Product name ("Required field" if empty), SKU, Warehouse, Qty ("Quantity must be at least 1"), Price ("Price must be 0 or more"), and Images (PNG, JPG, WEBP) โ€” upload files or paste an Image URL and click Add ("Invalid URL" on bad links). Confirm with Add / Save product. Images become the thumbnails in the orders table.

Price expects the smallest currency unit

Price saves exactly what you type โ€” no ร—100/รท100 conversion. To match assistant-created line items, enter the smallest currency unit (1200 for $12.00, not 12.00). See Price units and currency for why mixing the two corrupts totals and Stripe charges.

Legacy orders

Some older orders only stored a total. Those show "Product list is unavailable for this order โ€” only the total amount is stored" instead of an item table.

Reminders & automations โ€‹

The Reminder and Automation table columns and the Reminders & automations card on the detail page display follow-up notes stored with the order โ€” e.g. "Remind today", "After ยซDeliveredยป โ€” send thank you message", "If ยซNot picked upยป for 3 days โ€” create manager task", or tags like Delivery control and Payment control.

Display-only today

There is currently no place in the app to create, edit, enable, or disable these entries, and the platform does not act on them โ€” no thank-you message is sent and no manager task is created automatically. Treat them as operator notes carried on the order. Orders without any show No data on the card and โ€” in the columns.

To actually automate the follow-up work these labels describe, use the features that own it:

You wantUse instead
Scheduled or triggered messages to the customer (e.g. a thank-you after delivery)Follow-ups & Outreach
A task assigned to a human managerTask Manager
Outreach rules on leads and conversationsAutomations

How orders get created โ€‹

SourceHow
The assistant, in a chatWith Orders connected, the assistant collects the items, your Order fields, and any Custom item fields, then creates the order itself. It can also update and cancel orders on request.
ManuallyCreate order on the Orders page โ€” starts an empty New order you fill in by hand.
Spreadsheet OrdersAlternative backend: the assistant writes each order as a row into a Google Sheet instead โ€” see Google Spreadsheet. No Orders page; the sheet is the record.
CRM integrationsIf your orders should live in KeyCRM, SalesDrive, Bitrix24, etc., connect that CRM instead and the assistant creates orders/leads there โ€” see Integrations overview.

Use cases โ€‹

  • Chat-to-checkout on messengers โ€” a customer picks a product on Instagram or Telegram, the assistant collects size/color (custom item fields) and the delivery address (order field), and the order lands on your Orders page with the channel attached.
  • Paid orders only โ€” enable Requires payment via Stripe so an order is only confirmed after the customer pays on your Stripe account.
  • Lightweight fulfillment board โ€” use the stat cards (New โ†’ In processing โ†’ In transit โ†’ Delivered) as your daily pipeline and the Problematic card to catch returns and failed pickups.
  • Delivery tracking โ€” paste the carrier TTN into Delivery & tracking, then find the order later by tracking number via Filters.
  • Manual phone orders โ€” take an order over the phone, hit Create order, add products and customer details yourself.

Test it โ€‹

  1. Connect Orders to an assistant and add at least one required Order field (e.g. delivery_address), then Save Config.
  2. Place a test order in chat: message the assistant on any connected channel (or the test chat on your assistant's page) โ€” e.g. "I'd like to order 2 Margherita pizzas." The assistant should ask for every required field before confirming.
  3. Check the list: open app.mychatbot.app/orders โ€” the order should appear with status New, the channel under the client name, and a New badge if it's a first-time customer.
  4. Open the order and verify the items, quantities, prices, and your custom fields; use โ‹ฏ โ†’ Open client chat to jump back to the conversation it came from.
  5. Exercise editing: click Edit, change Package status to In transit, add a Tracking number, click Save โ€” the list row and stat cards should update.
  6. Test payment (if Requires payment via Stripe is on): place another test order โ€” the assistant should reply with a checkout link in the chat and the order should show Payment Pending. Complete the checkout; the order should flip to Paid / badge Confirmed on its own, with "Payment confirmed" appearing in Order history.
  7. Clean up: โ‹ฏ โ†’ Cancel order โ†’ confirm "Cancel this order?". The order moves to the Problematic group (badge Return) rather than being deleted โ€” and if it was paid, remember no refund is issued (see Requires payment via Stripe).

See also โ€‹