Support

Need help?

Most answers are already written down. For everything else, Oneop does not publish a response time — there is no SLA instrument behind one — so the fastest thing you can do is send a complete first message.

Search the help centreEmail support@oneop.ioOpen your workspace

Worth including

  • The email you log in with
  • The URL of the screen it happened on
  • What you expected, and what happened instead

Goes somewhere else

Architecture

Customer operations stack for e-commerce: chat to CRM to fulfilment

By The Oneop team7 min read

TL;DR

An e-commerce customer operations stack is the chain that carries one shopper from pre-sale chat through a CRM record, an order, a stock reservation, fulfilment, post-purchase support and a return. The handoff that breaks most often is order to support, because the shopper writes from a different address than the order used and the agent asks for information the business already holds.

An online order touches more systems than the shopper will ever see. Chat widget, storefront, payment processor, warehouse, carrier, help desk, accounting. Most of the pain in e-commerce operations is not inside any of those systems. It is in the joins between them, and one join in particular.

This post follows one order the whole way and names the handoff that loses the thread.

Stage 1: the pre-sale conversation

A visitor lands on a product page and asks whether the item is in stock in their size. This question has two possible answers, and the difference between them is architectural. A bot that replies “let me pass you to a colleague” has collected a task. A bot that queries live stock and answers with a number has completed one.

Answering properly requires the bot to reach the real availability figure at the moment of asking, not a cached catalogue value that was correct at the last sync. In Oneop, the chatbot engine carries native WooCommerce blocks for product search and a live stock check, alongside order lookup, order tracking, cancellations and returns, so the reply the shopper sees is built from the API response rather than a canned holding message. The Shopify integration works differently and it is worth knowing which you have: Shopify mirrors products, customers and orders into Oneop so the bot can answer from the record, and there is no live stock check, so the figure shown is whatever arrived with the last product update.

Stage 2: the conversation becomes a customer record

This is where identity is either established or lost. If the chat produces a “chat lead” object that somebody converts into a contact later, the conversion step is optional and therefore sometimes skipped. If the conversation creates a native CRM contact directly, the identity exists from the first message.

In Oneop a chat that becomes a deal creates a native CRM contact rather than a synthetic lead to convert later, and the bot is capped at five write actions per conversation per ten minutes so a looping or manipulated conversation cannot flood the CRM. Both the bot and visitor sides of the conversation persist through one code path, which is what makes the transcript complete when a human takes over with the visitor’s queue position preserved.

Stage 3: the order and the reservation

The shopper checks out. The order is created, and the units on that order stop being available to anyone else. That second half is the one businesses skip, and it is the difference between a stock figure and a promise.

The invariant is that available equals on-hand minus reserved, and it cannot go negative. In Oneop the reservation happens inside the same commit that creates the sales order, so a failure halfway through rolls both back and leaves no hold behind for an order that does not exist, and a request for more than is available is rejected at the write with an explicit insufficient-stock error rather than greyed out in the interface. We explained the mechanism itself in stock you can promise: ATP and why overselling happens.

Stage 4: fulfilment

Picking consumes the reservation rather than taking a second bite of the shelf. Shipping rates and buys a real label. Oneop connects nine carrier adapters, and if the warehouse has no ship-from origin address configured, rating and label purchase refuse to run rather than substituting a placeholder, because a correctly rated label bought for the wrong origin is a worse outcome than an error message.

Stage 5: post-purchase support, and the handoff that breaks

Here is the join that fails. The shopper emails “where is my order” from their personal address, having checked out as a guest with their work address. The help desk creates a ticket with no order attached, because the only thing linking a support conversation to an order in most stacks is an email string.

The agent then does the thing every shopper hates: asks for the order number. The business already has it. It is sitting two systems away, attached to an identity the help desk cannot see. Every minute spent in that exchange is manufactured work, and the customer experiences it as a company that does not know who they are.

HandoffWhat should carry acrossWhat usually carries acrossResult when it fails
Chat to CRMThe contact identityA transcript and an email stringDuplicate contacts, no pre-sale context on the account
CRM to orderThe customer referenceA matched email addressGuest checkouts and work addresses never match
Order to reservationA committed quantityA stock figure decremented laterTwo orders sell the same unit
Order to supportThe order referenceNothing; the agent searchesThe agent asks for the order number
Support to returnsThe authorisation and its linesAn email threadRefunds approved for items never received
Return to stock and booksRestock plus a credit noteA refund in the payment processorStock and ledger both wrong, found at month end

The order-to-support row is the one that costs the most, because it happens on every single contact rather than on exceptions.

Stage 6: the return, and the failure case

A customer returns two of four units. In a split stack, here is what actually happened to one retailer.

The refund was issued in the payment processor, because that is where refunds are issued. The storefront order was marked refunded. The warehouse system never heard about it, so the two returned units were received onto a shelf by a warehouse operator as an unlinked adjustment. The accounting package received the payout report from the processor, which netted the refund against the day’s settlement, so the revenue reversal was never posted against the original invoice.

Three weeks later the stock count did not match, the gross margin on that SKU was wrong in the monthly report, and the customer opened a second ticket because their refund was two units short. Nobody made a mistake. The refund, the restock and the credit note were three facts that had to travel between three systems, and only one of them had a reliable carrier.

In a single system the same event is one action. Voiding an invoice in Oneop reverses its ledger entry and releases the stock that invoice had reserved, in the same action, because both live in the same transaction boundary. The finance module that posts those entries is opt-in and a workspace owner turns it on deliberately.

What to consolidate, and what to keep

The storefront is a genuine specialist and is usually worth keeping. So is the payment processor. What is worth consolidating is everything downstream of the order: the customer record, the support queue, the stock truth and the ledger, because those are the four places the same fact would otherwise be stored twice. That distinction is the framework in integration strategy: which tools to replace and which to keep.

The support side of the chain matters as much as the commerce side. Both channels a shopper actually uses, web chat and email, should land in one inbox against the same customer record, which we argued in running a two-channel support operation.

Checking this on your own stack

Pick one order from last week that had a support contact and a return. Write down every system that holds a row about it and every place the join is an email address rather than an identifier. The count of email-address joins is a fair estimate of how often your agents will ask a customer for something you already know.

If you want to walk the chain in a live system, the e-commerce solution page traces the same order from the chat widget through the help desk, the inventory module and the AI chatbot blocks that read real orders, with the free plan sized for exactly this test: two seats, one chatbot flow, twenty products and one warehouse.

Frequently asked questions

What belongs in an e-commerce customer operations stack?

Six functions: a pre-sale conversational channel, a customer record, order capture, stock reservation and fulfilment, post-purchase support, and returns with the refund posting that follows. They can be six products or one, but the chain has to carry a single customer identity end to end, or someone has to rebuild the context by hand at every step.

Why do support agents ask for an order number the customer already gave?

Because the support tool and the store hold separate customer identities, joined by an email address. A shopper who checked out as a guest, used a work address, or typed a different address in chat does not match, so the agent sees a conversation with no order attached. The fix is an identity the order and the conversation both reference, not a better search box.

What actually breaks when a return is processed in a separate system?

Three facts that should move together stop moving together: the refund, the stock coming back into available inventory, and the credit note hitting the books. A refund issued in the storefront does not release a reservation in a warehouse system or post a reversal in an accounting package unless something carries it across, and if that carrier fails quietly nobody notices until a count or a month-end.

Should a chatbot be allowed to cancel an order or start a return?

Only where it can read the real order state and act inside the same permission model as a person, and only with limits on how much it can write. A bot that files an intent for a human to process later has not automated anything. A bot with unlimited write access to orders is a liability. Scoped writes against live records, with a per-conversation ceiling, is the usable middle.

Does consolidating the stack mean replacing the storefront?

No. The storefront owns the catalogue, the checkout and the payment flow, and it is a genuine specialist. What is worth consolidating is everything downstream of the order: the customer record, support, stock truth and the ledger. Those are the places where a second copy of the same fact creates reconciliation work.

Written by

The Oneop team

Writing from the team that builds Oneop — an AI customer platform with web chat and email on top of a real CRM, help desk, ledger and warehouse.

Related reading

Start on the free plan and see the real thing

No credit card. Free plan, 2 seats.

Free forever · 2 seats · No credit card