Skip to content
Vaakyo
← Blog

Taking orders by phone into a CRM with live stock: a playbook for distributors and wholesalers

Retailers still reorder by phone. A voice agent connected to Vaakyo's CRM checks your catalog and stock, reads the order back, places it with the stock held, and tells a retailer where their last order is.

The Vaakyo team6 min read

  • CRM
  • Orders
  • Playbooks

Most of a distributor's orders don't arrive through an app. India has more than 1.4 crore kirana stores, which together account for about 75 to 80% of FMCG sales, and their ordering still runs mostly through distributor reps, phone calls and informal channels, with little visibility into stock (Inc42). A shopkeeper rings at 8 PM to reorder, the person who answers writes it in a notebook, and the next morning someone finds out half of it is out of stock.

This playbook sets up a voice agent that takes those orders straight into Vaakyo's CRM. It works from your real catalog and stock, and it never promises what you don't have.

Set up the catalog

Everything the agent sells comes from CRM › Catalog. Each product has:

  • a name and an optional SKU;
  • a price, which the order keeps from the moment it is placed;
  • stock, a count that goes down as orders are placed (leave it empty for something that never runs out);
  • up to five choices, such as flavour or colour, each with its list of values.

Choices are what the buyer picks from, and the agent asks for every one of them before it orders. Stock is counted per product, though, not per choice. If each pack size has its own stock, add each pack size as its own product (for example "Masala namkeen, 200 g, carton of 40" and "Masala namkeen, 1 kg, carton of 10"), each with its own SKU.

If your item list already sits in a spreadsheet, import it as a CSV with columns such as name, sku, price, stock, description and one variant:<name> column per choice (Classic|Masala|Pudina). A row whose SKU matches an existing product updates it, so re-importing tomorrow's stock sheet is a quick way to refresh the counts. Rows with problems are listed with the reason and skipped, and the rest are saved.

Add order fields under Settings › Custom fields for anything you need on every order, such as delivery_day or scheme_applied, and contact fields for what you keep about each retailer: shop_name, area, beat_day. The agent asks for any field you mark as required.

What happens on the call

Sharma Traders in Indore supplies around 300 shops. Here's a retailer calling in the evening:

Agent: Namaste Gupta ji, Sharma Traders se bol rahi hoon. Bataiye, kya bhejna hai?

Caller: Masala namkeen 200 gram wala, 4 carton. Aur glucose biscuit 6 carton.

Agent: Namkeen check kar rahi hoon. Masala 200 gram ke 4 carton ho jayenge. Glucose biscuit ke abhi sirf 4 carton bache hain. 4 bhej doon, ya baaki ke liye cream biscuit le lenge?

Caller: 4 hi bhej do.

Agent: Theek hai. Toh order hai: Masala namkeen 200 gram, 4 carton, aur glucose biscuit, 4 carton, Gupta General Store, Vijay Nagar ke address pe. Confirm kar doon?

Caller: Haan, kar do.

Agent: Ho gaya. Aapka order number 1182 hai.

Here's what happened behind that call:

  1. The agent knew the caller. Gupta ji's number matched a contact, so the call started with his name, his shop and his saved fields, along with his last few orders. Nobody asked "aap kaun bol rahe hain?"
  2. It checked the catalog. With up to 30 active products, the whole catalog is given to the agent at the start of the call. A bigger catalog is searched by name, so "namkeen 200 gram" finds the right product. Before each lookup the agent says one short line in the caller's language, so the line never goes silent.
  3. Prices and stock came only from the CRM. The agent is told never to guess either one.
  4. It read the order back and waited for a yes. It places an order only after the caller has confirmed the items, choices and quantities.
  5. The stock was held. Placing the order takes the stock at that moment, so the 4 cartons of biscuits are his even if another shop calls a minute later.

Racing for the last carton

Two retailers calling at the same time for the last 5 cartons is ordinary on a busy evening. Each line of an order takes its stock in a single step that only succeeds if enough is left. If any line comes up short, the stock the earlier lines took goes back and nothing is saved. The agent hears exactly how many are left ("only 4 of glucose biscuit left") and offers the caller that many or something else.

So your stock never goes negative, and nobody is told "order ho gaya" for goods you don't have. When your team cancels an order in CRM › Orders, its stock goes back on the shelf, and it only ever goes back once.

"Mera pichla order kahan hai?"

A large share of a distributor's calls are about orders already placed. With the my orders tool on, the agent reads the caller's recent orders and their status (new, confirmed, shipped, delivered or cancelled) and answers in their language. It only ever sees the caller's own orders, matched by the number they're calling from. One retailer can't hear another retailer's orders, however they ask.

Your team keeps the status up to date in CRM › Orders: confirm an order when it's packed, mark it shipped when the van leaves, delivered when it's dropped off.

After hours and in the caller's language

Retailers reorder when the shop is quiet, which is often after your office has closed. An agent on your business number answers at any hour, since calling hours only apply to outbound calls, and the order is waiting in CRM › Orders when your team arrives in the morning. Set the agent to reply in the caller's language, and shopkeepers can order in Hindi, Hinglish or their regional language (Hinglish voice agents covers the settings). Add your product and brand names as transcriber keyterms so "pudina" and your SKUs are heard correctly.

You can also call out. A campaign that rings each shop on its beat day ("aaj ka order?") uses the same agent and the same tools. On an outbound call, the agent knows the retailer from the number it dialled.

Send orders on to billing

Every order the agent places is a crm.updated event on the call's timeline (order created, with its id). Subscribe a webhook endpoint to crm.updated to hear about each new order as it is placed, and to call.completed to get the call's transcript, summary and extracted values when it ends. Your billing or ERP team can then pick up the order from CRM › Orders straight away.

Set it up in Vaakyo

The Vaakyo team switches the CRM on for each workspace. If CRM in the console says it isn't on yet, contact us.

  1. In CRM › Catalog, add your products with prices, stock and choices, or import your spreadsheet.
  2. In CRM › Settings, add contact fields for your retailers and order fields for what each order needs.
  3. On the agent's Tools tab, switch on Use the CRM in calls. Under "What the agent may do", keep searching products, taking an order (stock is checked and held), reading the caller's orders and saving the caller's details ticked.
  4. In Phone numbers, connect your business number to the agent.
  5. Call it from your own phone, order something, and check that the stock has gone down in the catalog.

Try it

Build your order line at vaakyo.com and take your first phone order into the CRM today.

Get started today

Talk to an expert

Tell us about your calls. We'll help you plan the agent, the numbers and the rollout for your team.

Contact sales

Start building

Build an agent and talk to it in your browser in minutes. New workspaces start with ₹100 of free credits.

Start free