Appearance
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 need | Where | Result |
|---|---|---|
| The Orders integration connected to an assistant | Integrations โ Order Management โ Orders โ app.mychatbot.app/integration | Assistant gains order tools; an Orders tab appears in the left sidebar |
| A currency picked | Same card โ Currency | All order totals display in that currency |
| (Optional) Order fields / Custom item fields | Same card | The assistant collects exactly the data you need per order / per item |
| (Optional) Requires payment via Stripe | Same card, after connecting | The 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 โ
- Open Integrations โ app.mychatbot.app/integration and pick the assistant.
- Under Order Management, select Orders ("Native order management for your AI agent").
- Choose a Currency โ USD (default), EUR, GBP, UAH, ILS, PLN, CAD, AUD, BRL, or TRY.
- 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 app | Meaning |
|---|---|
name | Product name (required) |
quantity | How many (required) |
unit_price | Price in the smallest currency unit โ 1200 = $12.00 (see Price units and currency) |
product_id | Optional, 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:
| Control | Options / behavior |
|---|---|
| + Add field | Adds a row with Field name, a type dropdown, and a Required checkbox |
| Field type | Text, Number, Select (dropdown) |
| Select (dropdown) type | Reveals an extra input: "Options (comma-separated, e.g.: Small, Medium, Large)" |
| Remove field | The ร 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:
- The assistant creates the order as usual โ it appears on the Orders page in the New group with Payment No payment.
- 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.
- 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).
- 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, not12.00) โ and never mix the two in one order: a hand-typed12.50next to a stored1250breaks 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 โ
| Filter | Where | What it does |
|---|---|---|
| Search box | Toolbar | "Search by order #, client, phone or tracking number..." |
| Status | Toolbar dropdown (or a stat card) | All statuses, New, In processing, In transit, Delivered, Problematic |
| Warehouse | Toolbar dropdown | All warehouses or one of the warehouses seen on your orders |
| Delivery service | Toolbar dropdown | All delivery services or a specific carrier |
| Date range | Toolbar picker | Filters by order creation date; Clear resets it |
| Payment | Filters โ Advanced filters | All 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 |
| Channel | Filters โ Advanced filters | All channels or the messaging channel the order came from |
| Tracking number | Filters โ Advanced filters | Exact 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 โ
| Column | Content |
|---|---|
| Order # | Clickable order number (opens the detail page) |
| Client | Customer name, channel underneath, plus a New badge for first-time customers and a VIP marker |
| Phone | Customer phone |
| Products | Product image thumbnails |
| Warehouse | Fulfilling warehouse |
| Total | Order amount in your configured currency |
| Payment | Payment badge โ Paid, Cash on delivery, Pending, Partial, No payment (see Payment states) |
| Delivery / TTN | Carrier and tracking number |
| Status | Fulfillment badge (see Statuses) |
| Reminder | Next reminder on the order, e.g. "Remind today", "check tracking status" |
| Automation | Active automation tag, e.g. Delivery control, Payment control |
| Date | Created date and time |
| Actions | View (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 โ
| Badge | Group (stat card / filter) | Shown when |
|---|---|---|
| New | New | Order just created, or still awaiting its payment |
| Confirmed | In processing | Payment received or order confirmed |
| Collected | In processing | Picked and packed at the warehouse |
| In transit | In transit | Handed to the carrier / in progress |
| Delivered | Delivered | Completed |
| Not picked up | Problematic | Parcel wasn't collected by the customer |
| Return | Problematic | Cancelled / 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 option | When you'll see it |
|---|---|---|
| No payment | No payment | Default โ no payment recorded on the order yet |
| Pending | Pending | A Stripe checkout link was generated and hasn't been paid |
| Paid | Paid | The customer completed checkout (set automatically), or a payment was recorded on the order |
| Partial | Partial | A 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 Failed | A 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 item | Behavior |
|---|---|
| Copy order number | Toast "Order number copied" |
| Copy tracking number | Toast "Tracking number copied" โ or "No tracking number" if empty |
| Open client chat | Jumps to the customer's conversation (only shown when the order is linked to a chat) |
| Cancel order | Confirmation "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 โ
| Card | Read view | In edit mode |
|---|---|---|
| Customer information | Customer (links to the client chat), Phone, Email, Delivery address, Comment | All fields editable; email and phone are validated ("Invalid email", "Invalid phone number") |
| Delivery & tracking | Delivery 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 tags | Free-text service and TTN, a date picker for expected delivery, and a Package status dropdown with all seven statuses |
| Warehouse / stock | Warehouse, "N products in stock", Reserved for order, Available for sale | Warehouse name and all three stock numbers editable |
| Products in order | Table: 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 & automations | Reminder 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 empty | Read-only โ see Reminders & automations |
| Order history | Event 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 want | Use instead |
|---|---|
| Scheduled or triggered messages to the customer (e.g. a thank-you after delivery) | Follow-ups & Outreach |
| A task assigned to a human manager | Task Manager |
| Outreach rules on leads and conversations | Automations |
How orders get created โ
| Source | How |
|---|---|
| The assistant, in a chat | With 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. |
| Manually | Create order on the Orders page โ starts an empty New order you fill in by hand. |
| Spreadsheet Orders | Alternative 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 integrations | If 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 โ
- Connect Orders to an assistant and add at least one required Order field (e.g.
delivery_address), then Save Config. - 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.
- 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.
- 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.
- Exercise editing: click Edit, change Package status to In transit, add a Tracking number, click Save โ the list row and stat cards should update.
- 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.
- 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 โ
- Integrations overview โ connecting CRMs and other tools, and how account-level vs. assistant-level connections work.
- Google Spreadsheet โ the Spreadsheet Orders alternative backend.
- KeyCRM / SalesDrive / Bitrix24 โ CRMs where the assistant can create orders externally instead.
- Getting inventory in โ load your catalog so the assistant can find the products customers order.
- Labels and statuses โ lead statuses on conversations (separate from order statuses).
- Follow-ups & Outreach โ actually send scheduled/triggered messages (what the reminder labels only describe).
- Task Manager โ create and track manager tasks.
- Automations โ lead-based outreach rules on the Automation page.
- Sales Platform overview โ the bigger picture.