Zoho: stock checks and orders
On this page
Most voice platforms can talk about your products. This one can look at actual stock and raise an actual sales order while the customer is still on the phone.
- A Zoho account with CRM, Inventory, or both.
- Product records in Zoho Inventory with names or SKUs your customers would recognise.
- An agent that already handles a conversation well.
- Thirty minutes, plus a careful test of the ordering path.
A caller asks whether something is in stock and gets a true answer. They place an order on the call, hear it read back, and it appears in Zoho Inventory as a real sales order with a number you can quote them.
The shape of it
1. Connect Zoho
Connect
IntegrationsZohoConnect. Sign in and approve. One connection covers both CRM and Inventory — you do not connect them separately.
Sign in as an account with the right access
The connection acts as whoever authorises it. It needs access to the CRM records and the Inventory organisation you intend the agent to use. A shared operations account is better than an individual’s login.
Attach it to the agent
Select the agents that should be able to use it. Connecting alone grants nothing.
2. What the agent can do
| Action | Side | What it does |
|---|---|---|
lookup_contact | CRM | Find an existing contact by phone number or email. |
create_contact | CRM | Create a contact. A surname is required — Zoho insists. |
create_lead | CRM | Log a new sales lead from the conversation. |
create_note | CRM | Attach a call summary to an existing contact. |
search_items | Inventory | Find items by name or SKU, with their stock level. |
create_sales_order | Inventory | Raise a sales order against real item ids. |
## Who you are
You take phone orders for Mwangi Distributors. Today is {{date}}.
## Start of every call
Use lookup_contact with the caller's number. If you find them, greet them
by name. If not, greet them normally and take their details as you go.
## Stock questions
Whenever a caller asks about a product:
1. Use search_items with what they said - a product name or SKU.
2. Tell them what you found: the exact product name and whether it is in
stock.
3. If several things match, read out up to three and ask which they mean.
4. If nothing matches, say you cannot find it and ask them to describe it
differently. NEVER guess at a product.
## Taking an order
1. For every line, use search_items first so you have the real item id.
Never assume an id.
2. Confirm each line back: product name and quantity.
3. Read the whole order back before submitting it.
4. Use create_sales_order with the customer name, phone, and the items.
5. Tell them the order number.
## Rules you never break
- Never confirm an order you have not read back to the caller.
- Never state a stock quantity you did not get from search_items.
- If the caller asks for something out of stock, say so plainly and offer
to note their interest. Do not promise a date.
- If create_sales_order fails, do NOT tell them the order is placed. Say
you will confirm it by phone within the hour, and take their number.3. Quoting real stock
search_items returns matching items with their stock levels. Two instructions make the difference between this being useful and being dangerous:
- Never state a quantity you did not get from a search. Otherwise the agent will happily estimate.
- Never guess which product they meant. If several match, read out up to three and ask. “Bluetooth speaker” matching four SKUs is exactly how someone gets shipped the wrong thing.
Reading exact quantities aloud (“we have 47”) tells competitors your stock position and invites arguments when the number moves. Most businesses prefer “yes, that’s in stock” / “only a few left” / “out of stock at the moment”. Put whichever you want in the instructions explicitly — the agent will otherwise read out whatever it was given.
4. Taking an order
create_sales_order needs the buyer’s name and a list of line items, each with a real item_id and a quantity. The item ids come from search_items — which is why searching first is not optional.
1. search_items("aqua fresh 500ml") -> item_id, name, stock
2. Confirm with the caller: "Aqua Fresh 500ml, two cartons?"
3. Repeat for each line.
4. Read the whole order back.
5. create_sales_order(customer_name, phone, items[{item_id, quantity}])
6. Tell them the order number.This is the single most important instruction on this page. Speech-to-text confuses “fifteen” and “fifty”, and product names are mangled constantly. Reading the order back catches it while the customer is still there to correct it — after submission, it is a delivery problem.
When the order fails
The failure instruction matters as much as the success path. Without it, an agent whose order creation failed will still cheerfully say “that’s all placed for you”. Be explicit: do not confirm, promise a call back within the hour, take the number.
WooCommerce orders into Zoho
If you run WooCommerce as the shop and Zoho Inventory as the stock system, Vociply can push orders placed on a call straight from Woo into Zoho as sales orders. Three rules govern that path, and they are worth understanding because they explain its behaviour:
| Rule | What it means for you |
|---|---|
| The WooCommerce order is the source of truth | By the time the sync runs, the caller has already been told the order is placed. A Zoho failure is recorded and retried — it never surfaces as an error on the call or undoes the order. |
| Item ids are never guessed | A Woo line maps to a Zoho item only through a cached mapping. There is deliberately no fallback to matching by name — “closest match” is how a customer receives the wrong product. An unmappable line stops the sync and names the product at fault. |
| Every outcome is written back to the Woo order | The sync status is visible in the WooCommerce admin, so a failed sync is something you can find rather than something that quietly did not happen. |
Because ids are never guessed, products must be reconciled between Woo and Zoho before this works. If syncs come back unmapped, that reconciliation has not been run for those products — the message names which one. Talk to whoever administers your Zoho setup.
Testing it
Test the lookup
Put yourself in Zoho CRM with your own number and call in. You should be greeted by name.
Test a clean stock check
Ask for a product by its exact name. Check the answer against Zoho with your own eyes.
Test an ambiguous one
Ask for something vague that matches several items. The agent should offer options rather than pick one. If it picks one, tighten that instruction now — this is the failure that ships wrong goods.
Test something that does not exist
Ask for a made-up product. It should say it cannot find it, not invent something close.
Place a small real order
One line, quantity one. Confirm the agent reads it back. Then open Zoho Inventory and check the sales order exists, against the right customer, with the right item and quantity.
Read the transcript
In Call History. Look specifically at the pauses — those are the lookups actually happening.
Questions
Can the agent take payment on the call?
No. Vociply does not handle card details, and you should not want it to. Raise the order and follow up with a payment link — WooCommerce can email one, and Gmail or Outlook can send it.
Can it apply customer-specific pricing?
The order is raised against the customer record, so whatever pricing rules Zoho applies to that customer apply as normal. What the agent should say about price is a separate decision — many businesses have the agent avoid quoting totals and let the Zoho confirmation carry the number.
What if the caller is not in Zoho at all?
Use create_contact first. Zoho requires a surname, so instruct the agent to ask for a full name before creating anything — otherwise creation fails mid-order.
Can it check stock without being able to place orders?
Yes — instruct it to. “Only ever use lookup_contact and search_items. Never create contacts, leads or orders.” A good way to trial the integration before letting it write.