InsightBuyer's guide

CRM in Cambodia: what it records, and when Excel stops working

A CRM records every touch on a deal as a dated row. What that means, the Monday a Telegram thread and an Excel sheet stop being enough, and how a sales team gets off the sheet.

Marz Allan · Co-founder · Scale2026-09-1410 min read
TL;DR
  • A CRM system holds every lead, every open deal and every dated touch on it in one record a second person can read.
  • Telegram and Excel are enough while the owner is in every conversation. The break comes on a Monday, when nobody can say which deals were touched last week.
  • A stage is earned by a dated action, never typed: quote sent has a quote number, a visit has a device time, won has an order.
  • The CRM writes no invoice, no tax line and no stock movement. A won deal becomes an order in Sales and an invoice in Accounting, and the CRM files nothing.
  • Moving off a spreadsheet is a cleaning job: freeze the sheet, export the phones, deduplicate on phone number then TIN, import open deals only.

What is a CRM system?

A CRM system, customer relationship management, is the record of who might buy from you, who has, and every dated touch in between: the first message, the call, the visit, the quote, the follow-up, the reason a deal was lost. It holds leads, contacts, accounts and deals, and it lays the open deals out by stage as a pipeline. That is the whole of it. Everything else a vendor shows you is a view of those rows.

The word that matters is record. A chat is a conversation; a CRM is the ledger of it, where each entry carries who wrote it, when, on which channel and what was promised. The difference shows the day a second person has to pick a deal up. In a chat they scroll. In a CRM they read a timeline a manager can check line by line.

In a Cambodian business it is a build rather than a box. A CRM system for B2B, distribution and project-based sales sets out the two routes: built on Odoo CRM where lead, quote and pipeline flows are ordinary, purpose-built where the way you sell is the way you compete. This guide is the page behind it: what the record holds, when you need it, and how to get there from a sheet.

What does a CRM record that Telegram, phone calls and Excel do not?

It records the touch, not only the outcome. A Telegram thread holds the ask and the haggling in one rep's phone. A call log holds a number and a duration. An Excel row holds a customer and an amount, typed on the day someone remembered. A CRM holds each of those as a dated row on one deal, so a stage is earned by an action rather than typed into a cell.

The table is one invented deal, from first message to handover, as the rows a CRM would write. The account is a wholesaler in Battambang, labelled by role; the dates, the value and the reps are made up. Read the 21 March row first. The owner changes and every row above it stays, which is the test a chat thread fails: when a rep leaves, the thread leaves in their phone.

DateRow writtenByStage earned
3 MarLead from Facebook Page inbox, a Battambang wholesaler (invented)systemLead
4 MarCall, 12 minutesRep AQualified
6 MarSite visit, Battambang, logged on the phoneRep AQualified
7 MarQuote sent, USD 4,200, rate and date storedRep AQuote sent
14 MarFollow-up dueRep AQuote sent
21 MarOwner changed to Rep B; every row above stayssales managerNegotiation
25 MarWon, reason recordedRep BWon
25 MarHanded to sales order SO-0231 in Sales; the CRM writes nothing furthersystemWon
One invented deal as eight dated rows. The account is labelled by role, the quote value is invented, and the owner-change row on 21 March is the one a chat thread cannot produce.

When does a business in Cambodia actually need one?

When a deal's history lives in one rep's phone and the sheet holds what someone remembered to type. Telegram and Excel are enough while the owner is in every conversation. The break is specific, and it tends to happen on a Monday: nobody can say which open deals were touched last week, by whom, in which currency, or what was promised, without ringing the reps.

Six signals say the sheet has stopped working. One is enough to start the conversation.

  • A rep left, and the deals left with them: the thread was in their phone and the numbers were saved under nicknames.
  • Nobody can list last week's touched deals without ringing each rep, because the sheet shows what was typed, not what happened.
  • Two reps quoted one customer two prices, because the customer exists three times under three spellings.
  • The sheet has a USD column, a riel column and a mixed one, and the total adds them as if they were one unit.
  • Follow-ups live in someone's head, so a deal with no next dated action goes quiet without anyone deciding it should.
  • The pipeline total is a number typed on Friday, not the sum of open deals.

Size matters less than shape. The Economic Census counted 753,670 establishments in Cambodia in 2022; 367,221 engaged one person, a further 253,857 engaged two, and only 20,820 engaged ten or more. For most of them the owner is the CRM, and that is the right answer. This page is for the ones that grew past that: a second rep, a second province, a second currency, and a customer who now talks to two people who do not talk to each other.

367,221
of Cambodia's 753,670 establishments engaged one person in 2022, and a further 253,857 engaged two
National Report on Final Census Results, Economic Census of Cambodia 2022 (NIS), Table 1.1

Two honest exits before you scope anything. Counter sales are the till's record, and a CRM adds nothing to them. If only the half before the quote is missing, quote, order and invoice as one flow is the smaller scope. And sometimes the answer is a process review that says what to change first, not software.

Does the pipeline look the same for B2B, distribution and project sales?

No. B2B is a line from lead to won or lost. Distribution is a loop around the reorder, where the deal is the account. Project sales are a gated rail of milestones with months between the gates. One pipeline template for every kind of sale is the commonest configuration mistake, and it is why a beverage distributor's reps end up pushing every account through a stage called Negotiation that never happens.

B2BLeadQualifiedQuote sentNegotiationWonLostreason keptDistributionAccountVisitOrder draftDeliveredReorder duethe deal is the accountProjectBidProposalAwardMilestoneinvoiced by Accounting, not hereMilestoneinvoiced by Accounting, not hereMilestoneinvoiced by Accounting, not here
fig. 01 · three pipelines: a B2B line with a fork, a distribution loop, and a project rail with gates

Read the three rails top to bottom. B2B: Lead, Qualified, Quote sent, Negotiation, then a fork to Won and Lost (reason kept); the lost reason is the column you count next quarter. Distribution: Account, Visit, Order draft, Delivered, Reorder due, and the last arrow closes back on Visit, because the deal is the account and the event is the reorder. Project: Bid, Proposal, Award, with a gate between each, then Milestone after Milestone, each carrying the same label: invoiced by Accounting, not here.

A stage on any rail is a fact a manager can check. Quote sent has a quote number; Visit has a device time; Award has a signed document. A stage that is a feeling, warm or hot, is a cell someone will type over. The three shapes coexist for a business that sells two ways, a distributor that also bids on a hotel fit-out, without one being forced through the other's stages. The loop in full, and what happens to it in a back office with no signal, is on the field sales page.

What does 'pipeline' mean, and how many stages should it have?

A pipeline is every open deal laid out by stage, with a total per stage. Five stages are enough for a B2B line: lead, qualified, quote sent, negotiation, won or lost. Twelve is a sheet nobody keeps. The word stays in English here, because Cambodian sales teams say the English word and the nearest Khmer gloss (a network, a channel) means something else.

Won or lostឈ្នះ ឬ ចាញ់order created, or a lost reason chosenNegotiationកំពុងចរចាcounter-offer recordedQuote sentបានផ្ញើសម្រង់តម្លៃquote sent, rate and date storedQualifiedបានពិនិត្យbudget and buyer confirmedLeadអតិថិជនសក្តានុពលfirst reply logged
fig. 02 · five stages, in English and Khmer, and the one dated action that earns each move

Each rung carries its English and Khmer label, and each riser the one dated action that earns the move. Lead (អតិថិជនសក្តានុពល): first reply logged. Qualified (បានពិនិត្យ): budget and buyer confirmed. Quote sent (បានផ្ញើសម្រង់តម្លៃ): quote sent, rate and date stored. Negotiation (កំពុងចរចា): counter-offer recorded. Won or lost (ឈ្នះ ឬ ចាញ់): order created, or a lost reason chosen. The Khmer glosses are provisional until a native speaker signs them off. The actions are the point: a deal moves when a row is written, never when a rep feels it should.

Two rules keep five stages honest. A deal with no row in 21 days is stale whatever the sheet says, and the pipeline shows it as stale instead of letting it sit in Negotiation for a quarter. And a deal closes two ways only: Won, with an order created, or Lost, with a reason chosen from a short list (price, timing, competitor, no response), so the reasons can be counted next quarter instead of remembered.

How does it handle Khmer names, and deals in dollars and riel?

Names, addresses and notes are Khmer Unicode, and two rules follow from that: truncate at grapheme clusters, and sort with Khmer collation. A cut at a character count can leave a vowel sign with no consonant, because twelve code points is not twelve letters. A list sorted by code point comes back in an order no Khmer reader would call alphabetical. Both belong in the contract, on either route.

សុខ សុភក្ត្រាinvented name · 13 code points · 6 grapheme clustersone bracket per grapheme clusterC0V1C23C4V5C6C78C910C11V12C = consonantV = vowel sign = coeng = spacecut at 12 code points: lands inside a clusterthe vowel sign at 12 loses the consonant at 11cut at a cluster boundary: reads cleanlytruncate on a cluster; sort with Khmer collation
fig. 03 · one invented Khmer customer name, its grapheme clusters, and where a twelve-code-point cut lands. Truncate at grapheme clusters; sort with Khmer collation.

The figure draws one invented customer name, សុខ សុភក្ត្រា, which is 13 code points and 8 grapheme clusters, with a ruler beneath it marking each code point as a consonant, a vowel sign, a coeng or a space, a bracket over each grapheme cluster, and two cut marks. The first: cut at 12 code points: lands inside a cluster, leaves a vowel sign with no consonant. The second: cut at a cluster boundary: reads cleanly. The broken string is never drawn, because how a broken cluster renders depends on the font, and what matters is where the cut fell. A customer list, a pipeline column and a handle lookup all truncate somewhere; the rule is that they truncate on a cluster.

Currency is the second thing a Cambodian pipeline has to get right, and the rule is the one a till has to follow with riel and dollars on one sale: one rate, stored with the record, applied once. A deal is quoted in the currency the customer thinks in, a provincial wholesaler in riel, an importer in dollars. The CRM stores the amount as quoted, the currency, the NBC rate on the quote date and that date. The 2025 average was 4,011 riel per dollar (National Bank of Cambodia, Financial Stability Review 2025).

DealQuotedRate stored (NBC, quote date)In USD
A12,000,000 KHR4,0112,992
BUSD 4,500none, quoted in USD4,500
C20,000,000 KHR4,0114,986
Pipeline totaltwo currenciesconverted once, at each deal's stored rate12,478
Three invented deals at the stored rate. The pipeline converts once, at each deal's own stored rate, so the total does not move when the rate does.

Walk the table: A is 12,000,000 riel at 4,011, 2,992 dollars; B stays 4,500; C is 20,000,000 riel, 4,986 dollars; the total is 12,478, and it is still 12,478 tomorrow, because the pipeline converts once at each deal's stored rate rather than at this morning's. The invoice is a different document with a different rule: it converts at the NBC rate on the invoice date, and what a CRM hands to the invoice and what it never writes carries that sentence.

Does a CRM replace an ERP, or sit on top of it?

It sits on top. The CRM is everything before the order: leads, contacts, deals, the timeline, the pipeline. Sales is quote to order to invoice. Accounting and stock are the ERP's ledger. On one record, a won deal becomes the quote without retyping, the order checks stock the warehouse can promise, and the invoice carries the customer's TIN from the account. The CRM writes none of those documents; it hands a record across.

RecordCRMSalesERP
Leadwritesnevernever
Contactwritesreadsreads
Dealwritesreadsnever
Quotereadswritesnever
Orderreadswritesreads
Invoiceneverreadswrites
Stock movementneverneverwrites
VAT returnneverneverwrites
Which system writes, reads or never touches each record. Sales is the quote-to-order module; ERP here means the accounting and stock ledger the rest of the business runs on.

The bottom rows are the boundary a finance lead needs stated plainly. The CRM never writes a stock movement, a journal line or a tax line. A won deal becomes an order in Sales and an invoice in Accounting; the monthly VAT return is filed from the accounting system, and the CRM files nothing. What an ERP replaces in a Cambodian business is the page for the ledger side, and how purchasing, stock, sales and accounting run as one record is the architecture both are held to. If you are choosing an ERP first, the ERP buyer's guide for Cambodia is where to start; the CRM is the smaller half of that decision.

Which CRM tools are used in Cambodia?

Eight global tools come up in most Cambodian shortlists: Bitrix24, Freshsales, HubSpot, monday CRM, Odoo CRM, Pipedrive, Salesforce and Zoho CRM, in alphabetical order because any other order would be a ranking. None of them was built around a Khmer-first, Telegram-first, riel-and-dollar pipeline, and each answers those three questions differently on its own pages. Eight CRM tools compared on seven questions reads each off those pages on a stated date, with prices.

This guide names the tools and stops there, because a price read on one day from one country is stale by the next: vendor prices geolocate by the visitor's IP, and the comparison holds each tool to the seven questions this page has raised, on a stated date. On the last of them all eight hand the won deal to an accounting system, and none files to GDT.

Scale builds on Odoo CRM or from scratch and sells none of the eight, which is the interest to declare before you read it.

How do you move a sales team off a spreadsheet?

By cleaning, not importing. The import runs in an afternoon. The calendar goes to the phones, where the contacts actually live, and to the ownership decision, which is a conversation before it is a file. Load the deals before agreeing the stages and every deal lands in a stage called in progress. Eight steps, in this order; the CRM page's numbered method is the short form and this is the long one.

  1. Freeze the sheet on a cut-off date. Name the date, take a copy, and treat that copy as the only version anything is measured against. Deals that move after the cut-off keep moving in the live file and are entered into the new system afterwards; they are never merged back.
  2. Export contacts off every rep's phone, including the ones saved under nicknames. This is a conversation before it is a file: a rep who has kept a customer under a first name for four years will not hand that to a script. Sit with each rep, and export Telegram contacts in the same pass.
  3. Deduplicate on phone number, then on TIN. The phone number is the person here, so one person on three channels is one contact, not three. The TIN is the account: three spellings of one company, Khmer, Latin and the owner's nickname, collapse to one record.
  4. Name one owner per account, decided by the sales manager and not by whoever ran the import. This is the step that takes longest and the one that decides whether the pipeline total is anybody's number. Territory, by province, district or customer list, is decided here too.
  5. Agree five stages before configuring any, written on one page with the dated action that earns each move. If the team sells two ways, a distribution loop and a B2B line, write both and keep them apart.
  6. Import open deals only, with currency and last touch: amount, currency, stored rate and quote date, plus the date of the last row and who wrote it. Nothing closed. Lost deals older than the cut-off stay in the archive, and won deals are already invoices in the accounting system.
  7. Connect the channels one at a time. A Telegram bot or a Facebook Page inbox connection is what a build covers, scoped per channel, and each is switched on only once the team is writing rows from the phones and the sheet; how Telegram and Facebook leads reach a CRM without leaving the chat sets out what that capture holds.
  8. Run both for two weeks, then lock the sheet. Everything is entered twice, which is unpopular and worth it. On a named date the sheet goes read-only. A parallel run with no end date is not a parallel run; it is two systems, and the team will keep the one it knows.

What migrates is narrower than people expect. Contacts come off the reps' phones and Telegram, identified by phone number; the chat history stays behind. Accounts come from the invoices and the accounting customer master, identified by TIN, then name. Open deals come off the sales spreadsheet, identified by quote number or by account plus quote date. Activities start on day one; the old notes are archived read-only. The timeline band and the price sentence sit on the CRM service page, and this guide does not repeat them.

Frequently asked questions

What is a CRM system in simple terms?
A record of everyone who might buy from you, everyone who has, and every dated touch in between. It holds leads, contacts, accounts and deals, and lays open deals out by stage. A chat holds the conversation; a CRM holds the ledger of it, so a second person can read where a deal stands without asking the rep.
Is Excel enough for a small business in Cambodia?
Yes, while the owner is in every conversation, and most Cambodian businesses are that size. It stops being enough when a second rep, a second province or a second currency arrives and nobody can say on Monday which deals were touched last week. The six signals above are the test.
Does a CRM replace Telegram?
No. The customer stays on Telegram and the rep replies there. What changes is that the first message creates a lead and the quote sent creates a row, so the deal exists somewhere a second person can read it. A build covers the bot or inbox connection that does that capture, scoped per channel.
How many pipeline stages should we have?
Five for a B2B line: lead, qualified, quote sent, negotiation, won or lost. A distribution loop and a project rail have their own shapes, and a business that sells two ways keeps two pipelines rather than forcing one through the other's stages.
Does the CRM issue the invoice and file the VAT?
No. A won deal becomes an order in Sales and an invoice in Accounting, and the CRM carries the customer, the TIN, the currency and the quoted price across so nothing is typed twice. It writes no journal line, no tax line and no stock movement, and it files nothing to GDT.
crmcambodiaerp