Infrastructure engineering for East Africa's operators, platforms and regulators See the work →
CloudSpinx · CRM

CRM Implementation and Custom Development in Kenya

Most CRM projects in Kenya fail on adoption rather than on software, so we start with how your salespeople actually work and only then pick the system. CloudSpinx implements and builds CRM on Odoo and Frappe for businesses across Kenya and East Africa: pipeline design, lead capture from the channels buyers here actually use, and a clean handoff into quotations, eTIMS invoices and M-Pesa reconciliation. The open-source cores carry no per-user license, so the cost is the configuration and the integration rather than a subscription that grows with your headcount. Quoted per engagement after a discovery call.

Free 30-min consultation No lock-in contracts Local on-site engineers

Who we build for

  • 14organizations, from ISPs and payment platforms to a national regulator
  • 6flagship engagements published in full, with the numbers counted
  • 4thof all contributors to the open-source payment switch national systems run on
See the engineering record →
Certified engineers 24/7 support
KES 0 Odoo Community CRM license
v17 ERPNext drops its built-in CRM
AGPLv3 Frappe CRM license
What's Included

Everything in Our CRM Service

Every engagement covers the full scope: no hidden extras, no upselling.

Odoo CRM implementation

Leads, opportunities, activities and quotations configured against your real sales process. Included in Odoo Community, so the license line is zero and the cost is the setup.

Frappe CRM deployment

The standalone open-source CRM Frappe now recommends over the ERPNext module. Self-hosted, AGPLv3, and a clean fit where you want CRM without carrying a whole ERP.

Custom CRM development

Custom DocTypes, scoring rules, territory logic and approval chains for a sales process no standard CRM models. Built on a framework rather than from nothing, so the plumbing is inherited.

Sales pipeline design

Stages that match how deals actually move in your business, with exit criteria your sales manager can enforce. The single biggest determinant of whether the CRM gets updated after month two.

Lead capture across channels

Web forms, email, phone, walk-ins and WhatsApp, which is where most inbound here actually lands. Captured into one record rather than three private phone contact lists.

Quotation and approval flow

Templated quotations, discount approval thresholds and version history, so the number a customer received is the number you can prove you sent.

CRM to accounting integration

Won opportunity becomes a sales order, invoice and eTIMS transmission without anyone re-keying it, with M-Pesa payments reconciled back against the customer record.

Data migration and dedupe

From spreadsheets, Zoho, HubSpot, Salesforce or the sales team's phones. The work is merging duplicate customers and deciding which record wins, not moving rows.

Reporting and forecasting

Pipeline by stage, conversion between stages, activity by rep and an honest forecast. Built so the numbers come out of the system rather than out of a spreadsheet on Friday afternoon.

Technologies we use

OdooOdoo CRMFrappe CRMFrappe FrameworkERPNextPythonPostgreSQLMariaDBWhatsApp Business APIM-Pesa Daraja APIKRA eTIMSIMAP and SMTPREST APIsDocker
Reference Figures

The two things a CRM demo will not show you

A demo shows you the pipeline screen, which is the part every CRM does well. These are the two decisions that actually differ: what shape the cost takes over the years you will own it, and where the system stops and somebody starts re-typing. Pipeline design and effort come out of discovery.

01

Three ways to run a CRM, and which line on the bill grows

The comparison that matters is not features, it is which column of your own cost grows when you hire. A hosted CRM bills per user, every month, for as long as you use it, and asks nothing of you operationally. The open-source cores have no license line at all and ask you to run a server. Read the bottom band before anyone quotes you an ERPNext CRM build.

Hosted CRM, Odoo CRM and Frappe CRM compared on license cost, what you operate, where the data lives and whether invoicing is connected Three ways to run a CRM compared as columns. A hosted subscription CRM charges per user per month for as long as you use it, requires you to operate nothing, keeps your data on the vendor's servers, and needs an integration built before it can reach your invoicing. Odoo CRM is included in Odoo Community at no license cost, runs on a server you operate, keeps the data in your own database, and reaches invoicing internally with nothing to integrate. Frappe CRM is also free of license cost under the AGPL version 3 license, runs on a server you operate, keeps the data in your own database, but needs an integration built to reach invoicing; the AGPL network clause applies if you resell it as a hosted service to others. A band across the bottom records that the CRM module built into ERPNext is scheduled for deprecation and complete removal in version 17, that Frappe recommends Frappe CRM instead, and that a migration tool exists, so it is workable if you already run it and is not where a new sales process should start. WHICH LINE ON YOUR OWN BILL GROWS WHEN YOU HIRE A SALESPERSON Hosted CRM, per seat the subscription products LICENSE COST Per user, per month, forever YOU OPERATE Nothing at all YOUR DATA SITS On their servers REACH TO INVOICING An integration you build Cheapest to start, and the right answer for a small team. Odoo CRM included in Odoo Community LICENSE COST KES 0, LGPLv3 YOU OPERATE One Odoo server YOUR DATA SITS In your own database REACH TO INVOICING Internal, nothing to build One system from lead to paid invoice. You carry the server. Frappe CRM standalone, no ERP underneath LICENSE COST KES 0, AGPLv3 YOU OPERATE One Frappe server YOUR DATA SITS In your own database REACH TO INVOICING An integration you build CRM without carrying an ERP. AGPL bites if you resell it hosted. The fourth option, and the one to ask about: ERPNext's built-in CRM module Scheduled for deprecation and complete removal in version 17. Frappe recommends Frappe CRM instead, and a migration tool exists. Workable if you already run it. Not where to start a new sales process this year.
  • no license line, and connected
  • works, with a condition attached
  • the cost or the risk nobody leads with
02

Where the CRM stops and the ledger starts, on both shapes

Every CRM owns the left half. What differs is what happens at the seam when a customer says yes. Inside Odoo the seam is internal and free. With a standalone CRM it is a real integration with real failure cases, and if nobody builds it, a person re-types every won deal into the accounting system. That is not an argument against a standalone CRM. It is an argument for pricing the seam instead of assuming it.

The lead to payment sequence, showing where the handoff sits inside one system versus across two The same six stages drawn twice. The sequence runs lead, opportunity, quotation, sales order, invoice with eTIMS transmission to KRA, and payment reconciled from M-Pesa. In the first row, using Odoo CRM, all six stages sit inside one system, so the handoff from quotation to sales order is internal and nothing has to be integrated or re-entered. In the second row, using a standalone CRM alongside separate accounting, a boundary falls between the quotation and the sales order. Everything to the left of that boundary lives in the CRM and everything to the right lives in the accounting system, so each won deal either crosses through an integration that has to be built and tested, or is re-typed by a person. The conclusion is that the seam is a real line item on any CRM project that is not inside the ERP, and it should be priced rather than assumed. THE SAME SIX STAGES, AND WHAT HAPPENS AT THE SEAM Odoo CRM: the seam is inside the system Lead any channel Opportunity stage, value, owner Quotation sent, versioned Sales order the deal, committed Invoice eTIMS to KRA Payment M-Pesa, reconciled the seam, and it costs nothing here Standalone CRM plus separate accounting: the seam is a project Lead any channel Opportunity stage, value, owner Quotation sent, versioned Sales order the deal, committed Invoice eTIMS to KRA Payment M-Pesa, reconciled CRM owns this side accounting owns this side Every won deal crosses that line, and it crosses one of two ways. An integration somebody builds and tests, priced as a line item, or a person re-typing the customer, the lines and the totals into a second system. The second option is free on the quote and expensive every month afterwards.
  • lives in the CRM
  • lives in accounting, and has to be reached

Read the two figures together and the decision is not really Odoo against Frappe against a subscription. It is whether your sales process ends at the quotation or ends at a paid invoice, because that single answer picks the shape for you. We ask it in the first conversation, before anyone opens a demo.

What a CRM costs in Kenya

There are two cost shapes and they behave completely differently over five years. A hosted CRM charges per user per month, forever, and the bill grows every time you hire a salesperson. An open-source CRM you run yourself has no license line at all, and the money goes into setup, integration and hosting instead. Neither is automatically cheaper. The subscription wins when the team is small and you want nothing customized; the self-hosted route wins as soon as headcount grows or the CRM has to talk to something you already run.

What moves the number

How complicated the pipeline is, how many channels leads arrive on, whether quotations need approval rules, how much of your existing customer data has to be cleaned and merged, and whether the CRM has to hand off into accounting. Migration is the line buyers underestimate most: merging three years of duplicate customer records across a spreadsheet, an old system and the sales team's phones is real work, and it happens before anything useful can be demonstrated.

The per-user question, asked properly

Work out what your CRM costs in year five at the headcount you are planning for, not this month at the headcount you have. A per-seat subscription is fine at six salespeople and a different conversation at forty. Ask the same question about the data: on a hosted product, exporting everything in a usable shape at the end is a feature you should test before you commit rather than discover afterwards.

Odoo CRM, Frappe CRM, or the one inside a system you already run

We implement and build on both open-source cores and hold no reseller incentive in either direction. The choice comes down to how much of the rest of the business needs to be in the same system.

  • Odoo CRM when the sales process needs to reach into inventory, invoicing or accounting. It ships in Odoo Community, so there is no license cost, and a won opportunity becomes a quotation and an invoice inside one system rather than across an integration you have to maintain.
  • Frappe CRM when you want a focused CRM and not an ERP. It is the standalone product Frappe now points new implementations at, it is lighter to run and to train people on, and it integrates back into an ERP rather than living inside one.
  • A hosted product when the team is small, nothing needs customizing and nobody internally wants to run a server. We will say so. If Zoho or HubSpot answers the requirement at your size, paying us to self-host something is worse value and we are not going to pretend otherwise.
  • Custom only when the sales process genuinely has an object or a rule no CRM models: a territory and commission structure nobody else uses, a quoting calculation specific to your product, a regulated approval chain. That is a real category, and it is smaller than the market implies.

Where ERPNext CRM is going, and why it matters to a quote you are holding

If somebody is proposing to put your sales team on the CRM module built into ERPNext, ask them about version 17. The ERPNext manual states that the module is scheduled for deprecation and will be completely removed in version 17, and Frappe recommends Frappe CRM in its place; a migration tool between the two exists. That is not a reason to panic if you already run it, because there is a documented path across and the data is yours either way. It is a very good reason not to build a new sales process on it this year, and a reasonable test of whether the implementer quoting you is current. We would rather tell you this before you sign than migrate you afterwards.

Your leads arrive on WhatsApp, not on a web form

Every CRM demo assumes inbound arrives through a form on your website. In this market a serious share of it lands on WhatsApp, on a phone call to a number that belongs to one salesperson, or at a stand at a trade show. If the CRM only captures the form, the pipeline it shows you is a fraction of the real one, and the rest lives in private phone contacts that walk out of the building when that salesperson resigns. So capture design comes before pipeline design: a shared business number rather than personal handsets, conversations logged against the customer record, and a way to create a lead in three taps that a busy rep will actually use. Where the capture needs something built (a chatbot, a form on an app, a callback from your website), that runs through our development team.

Quote to invoice: where the CRM stops and the ledger starts

This is the boundary that decides whether a CRM saves work or adds it, and it is the question buyers ask last. A CRM owns the lead, the opportunity, the activity history and usually the quotation. The moment the customer says yes, the record has to become a sales order, an invoice, an eTIMS transmission to KRA and eventually a payment reconciled against the right customer. If that handoff is a person copying figures into another system, you have automated the easy half and left the error-prone half alone. On Odoo the boundary is internal and there is nothing to integrate. On Frappe CRM, or on a hosted CRM, it is a real integration with real failure cases and it needs to be built and tested rather than assumed. Where the accounting side is the bigger project, that is our ERP work.

Custom CRM development, and when it is actually justified

Most requirements that arrive as custom CRM development are configuration: a different stage list, a custom field, a report nobody built, an approval rule the standard workflow engine already supports. We check that first, and it is usually the answer. When custom work is genuinely justified it looks like this.

  • A commission or incentive structure that is specific to your business and currently lives in a spreadsheet only one person can maintain. This is the most common genuinely custom CRM requirement we see.
  • A quoting calculation where the price depends on something no standard product catalog models: a spec, a distance, a grade, a schedule of rates.
  • A regulated sales process where an approval chain and its audit trail have to exist in a specific shape, and "we configured it approximately" is not an acceptable answer.
  • An industry object the CRM has no concept of, such as a property unit, a policy, a member application or a tender. If your salespeople talk about a thing all day and the CRM cannot store it, that is a custom DocType rather than a workaround field.

Why CRM rollouts fail, and it is almost never the software

A CRM is the only business system whose primary users are measured on something other than using it. Salespeople are paid on closing, not on data entry, so a CRM that costs them ten minutes per deal will lose to a notebook within a month. Every failed rollout we have been called in to fix had the same root cause and none of them had a technical one.

Design for the rep, not for the report

The temptation is to add every field management wants to see. Each one is friction on the person you need to adopt it. Start with the smallest record a rep can create in under a minute, get the habit established, and add fields only when somebody can say what decision the field changes. A CRM with eight fields that is always current beats one with thirty that is filled in the day before the sales meeting.

The manager has to run the pipeline from it

Adoption is decided by whether the weekly sales meeting is run off the CRM screen or off a spreadsheet somebody rebuilt for it. If the spreadsheet survives, the CRM is optional and it will be treated that way. We say this in discovery rather than at go-live, because it is a management commitment and not a configuration setting.

When we tell clients not to buy a CRM

Plenty of the businesses that ask us for one do not need it yet, and a CRM nobody updates is worse than a spreadsheet because it looks authoritative while being wrong.

  • With two or three salespeople and a short list of accounts, a shared spreadsheet and a calendar reminder genuinely does the job. Come back when you cannot hold the pipeline in your head.
  • If the real problem is that nobody follows up, that is a management problem and software will not fix it. It will produce a record of the follow-ups that did not happen.
  • If sales leadership will not use it, do not start. This is the one prerequisite with no technical substitute, and we would rather lose the project than take payment for a system we can see will be abandoned.
  • If what you actually need is invoicing and stock, you are describing an ERP with a CRM module attached, not a CRM. That is a different scope and usually a different budget.

What you own, and what you become responsible for

You get the database, the source for any custom module in a repository you control, the configuration documentation, the migration scripts and the training material. Both cores we work on are open source, so your customer data and your customizations are portable by construction rather than by our goodwill. There is a second half to this that CRM vendors rarely raise: a CRM is a database of named people, their phone numbers and their commercial history, which puts it squarely inside Kenya's Data Protection Act 2019 and the remit of the Office of the Data Protection Commissioner. Who can export the customer list, what happens to a rep's access on their last day, and how long you keep records of people who never became customers are all decisions to make at build time rather than after an incident. We set the access model up accordingly and will point you at the security side if the wider posture needs work. Hosting, if you want us to run it, is managed hosting.

Scope Your CRM

Tell us how your sales team actually sells

Enough for us to tell you whether this is a configuration job, a build, or a spreadsheet you should keep for another year. The questions about channels and adoption decide more than the ones about software.

Free, and it commits you to nothing. If your team is small enough that a shared spreadsheet still works, or if a hosted product answers this better than anything we would build, that is what you will get told.

Next step

Ready to discuss CRM?

A 30-minute scoping call, free, and it commits you to nothing.

Our Process

How Every CRM Engagement Starts

01

Map the sales process

How a deal actually moves today, where leads really come from, and what the sales manager needs to see on a Monday. Including the parts that live in private phone contacts, which is where the honest conversation usually starts.

02

Design pipeline and capture

Stages with exit criteria, the smallest useful lead record, capture from every channel that matters, and the platform decision. Custom work, if any, is specified and priced separately here.

03

Migrate, dedupe and connect

Customer data cleaned and merged with a rule for which record wins, then the handoff into quotations, invoicing and eTIMS built and tested against real transactions rather than samples.

04

Train, launch, then check

Training with the sales team's own accounts and deals, a supervised first fortnight, and a review at week six against one question: is the pipeline in the CRM the real pipeline?

FAQ

Common Questions

How much does a CRM cost in Kenya?
It depends on which cost shape you choose. A hosted CRM is a per-user monthly subscription that grows with headcount and carries no setup cost. An open-source CRM on Odoo or Frappe has no license line at all, and you pay instead for configuration, data migration, any integration into accounting, and hosting. We quote per engagement after a discovery call, and the drivers are pipeline complexity, how many channels leads arrive on, how much customer data needs cleaning, and whether the CRM has to hand off into invoicing. Compare options on five-year cost at the headcount you are planning for, not on this month.
Odoo CRM or Frappe CRM, which should we use?
Odoo CRM if the sales process needs to reach into inventory, invoicing or accounting, because it is one system and there is no integration to maintain between the quote and the invoice. Frappe CRM if you want a focused CRM without carrying a whole ERP: it is lighter to run and to train people on, and it is the standalone product Frappe now points new implementations toward. Both are open source with no per-user license. We implement both and hold no reseller incentive either way.
Is the CRM module in ERPNext still a safe choice?
Not for a new sales process. The ERPNext manual states that the built-in CRM module is scheduled for deprecation and will be completely removed in version 17, and Frappe recommends Frappe CRM instead. If you already run it there is a documented migration path and a tool for it, so this is not an emergency. It does mean that anyone quoting you a fresh ERPNext CRM build this year either has not checked or has not told you, and both are worth knowing before you sign.
Can the CRM capture leads from WhatsApp?
Yes, and in this market it is usually the channel that matters most. The practical answer is a shared business number rather than a salesperson's personal handset, with conversations logged against the customer record so the relationship survives that person leaving. How far the integration goes depends on the platform and on whether you are on the WhatsApp Business API, which we work through in discovery. Capture from web forms, email and phone is configured in the same pass.
Does a CRM handle quotations and invoices, or do we need an ERP too?
A CRM owns the lead, the opportunity, the activity history and usually the quotation. Invoicing, stock and the ledger belong to an ERP. On Odoo both live in one system, so a won opportunity becomes a sales order and an invoice with nothing to integrate. With a standalone CRM it is a real integration that has to be built and tested. If what you actually need is invoicing and stock control, you are describing an ERP rather than a CRM, and that is a different scope.
Can you integrate M-Pesa and KRA eTIMS?
Yes, though both properly belong to the invoicing side rather than to the CRM itself. The pattern that works is that a won deal creates the sales order and invoice, eTIMS transmission happens from there including credit notes and the case where KRA is unreachable, and M-Pesa paybill or till payments reconcile back against the customer record so your salespeople can see who has actually paid. We test that against real transaction volume before go-live.
Can you migrate our data from a spreadsheet, Zoho or HubSpot?
Yes, and also from Salesforce, an old custom system, or the sales team's phone contacts. Moving the rows is the easy part. The work is deduplication: the same customer under three spellings, two owners who both claim the account, and contacts with no company attached. We agree a rule for which record wins before importing anything, and give you the merge report rather than quietly picking.
Do we actually need a custom CRM?
Usually not, and we check that before quoting one. Most requirements that arrive described as custom development are a stage list, a custom field, a report or an approval rule the standard workflow engine already handles. Genuine custom work looks like a commission structure only one spreadsheet understands, a quoting calculation no product catalog models, or an industry object such as a property unit or a policy that the CRM has no concept of. That category is real and it is smaller than the market implies.
Who owns the customer data, and what if we leave?
You do, and leaving should be a commercial decision rather than a technical project. Both cores we work on are open source and run on a database you can take, and any custom module sits in a repository you control from the first commit with documentation written for an unfamiliar developer. Worth planning for on the other side too: a CRM is a database of named individuals and their commercial history, which puts it inside the Data Protection Act 2019, so who can export the customer list and what happens to a departing salesperson's access are decisions to make at build time.
WhatsApp