I Replaced Salesforce With a Free ERP. My CFO Calls It a Trade-off.
A friend of mine runs a 22-person professional services firm. Last year her Salesforce bill hit $54,000. This year it is $12,000, and the difference is a free, self-hosted ERP that does 80% of what Salesforce did for her use case, plus the parts of QuickBooks she was using a spreadsheet to glue together. Her CFO does not love it. Her CFO also approved it, because $42,000 in annual savings is the kind of number a CFO notices. Here is what she cut, what she kept, and what surprised her.
This is not a Salesforce hit piece. Salesforce is a good product for a specific shape of business, and the shape of business it is good for is the shape of business that needs a sales team of fifty or more. If you are a 22-person firm with two people in sales and twenty in delivery, you are paying for a system designed for someone else.
What we were actually paying for
The headline number on the Salesforce invoice is misleading. The line items looked like this for my friend’s firm:
- Sales Cloud, 22 seats, annual. About $28,000. This is the core CRM: accounts, contacts, leads, opportunities, the calendar integration.
- Service Cloud add-on. About $9,000. They had turned it on in 2022 for a project that ended in 2023. Nobody turned it off.
- Marketing Cloud Account Engagement (formerly Pardot). About $11,000. Used by one person to send a monthly newsletter.
- Sandbox and storage overages. About $6,000. The sandbox was used twice in three years.
Total: $54,000. The friend thought it was $36,000, which is the number she remembered from the year before. The line items had crept.
Here is the candid part: she did not need most of what she was paying for. The two-person sales team needed accounts, contacts, opportunities, a calendar, and a way to send a quote. The Service Cloud add-on was wasted. The marketing automation was being used to send a single Mailchimp-shaped email per month and could have been Mailchimp for $13 a month. The sandbox was there because a consultant set it up once.
What we replaced it with
After three months of evaluating, the firm landed on a self-hosted stack that is, charitably, a 2020s open-source category that did not exist in this form five years ago. The components:
- ERPNext (a free, open-source ERP that includes CRM, accounting, manufacturing, project management, and HR in a single web app). Self-hosted on a $40/month Hetzner dedicated box.
- n8n (a self-hosted workflow automation tool, the open-source competitor to Zapier) for the few integrations that ERPNext does not do out of the box.
- Mautic (a free, open-source marketing automation tool) for the newsletter. The firm had been paying for Mailchimp’s mid-tier plan at $13 a month for the same workload, so they moved that to Mautic while they were at it.
- Metabase (a free, open-source business intelligence and dashboarding tool) for the small set of reports the partners wanted to see at the monthly meeting. Salesforce had been doing this with the built-in report builder; ERPNext’s built-in reports were not as pretty but covered the same data, and Metabase connected to the underlying MariaDB (a popular open-source relational database, the community fork of MySQL) directly to fill the gap.
The hosting is $40 a month. The maintenance is half a day a month, mostly security updates and a quarterly backup restore drill. The total annual cost is under $1,000.
The migration took about six weeks of part-time work. The friend hired a fractional CTO (me, in this case, billed at $150/hour) for 40 hours, and one of her operations people spent another 60 hours on data import and user training. Total one-time cost: about $15,000.
A few of the gnarlier migration steps are worth naming so you can budget your own time:
- Account and contact dedup. Six years of Salesforce usage had left the firm with about 18% duplicate contact records by email. ERPNext’s importer refuses to load duplicates, which is the right behavior but means you have to clean the source CSV first. The friend paid a contractor $400 to run the dedup script, which was the best $400 she spent in the whole project.
- Opportunity pipeline mapping. Salesforce’s pipeline stages are a custom object, and the firm had three slightly different stage taxonomies for three different service lines. Consolidating to a single ERPNext pipeline was a real conversation with the sales team. It took two meetings and one uncomfortable Friday afternoon.
- Email template conversion. Salesforce’s email templates are stored in a custom format that does not import cleanly into ERPNext. The friend ended up rewriting 40 templates by hand. It was a Tuesday, and she would rather not talk about it.
First-year savings: $54,000 minus the new stack cost minus the migration cost = $38,000 in year one. Year two and beyond: $53,000.
What we kept
The friend did not actually delete her Salesforce account on day one. She kept it for six months, in read-only mode, at a cost of about $1,200. The reason was not paranoia. The reason was a handful of historical integrations that pointed at the Salesforce API and a small set of customers who had been trained to email a Salesforce-generated support address. Cutting those over required coordination with three customers and one vendor.
She also kept QuickBooks Online. The accounting module in ERPNext is competent, but the friend has a bookkeeper who has used QuickBooks for fifteen years and was not interested in learning a new accounting workflow. The bookkeeper now imports the sales ledger from ERPNext into QuickBooks once a month via a CSV. The bookkeeper is happy. The bookkeeper’s productivity did not change.
What I would tell past me
Three things, from the friend’s perspective:
- Audit your Salesforce line items every January. The bill grows because the line items grow, not because the per-seat price grows. The Service Cloud and sandbox line items were the smoking gun.
- The migration cost is real, but it is one-time. The $15,000 first-year bill for the migration scared the CFO. The $42,000 savings in year one more than paid for it. By year two the migration cost is fully amortized.
- Do not skip the read-only period. Six months of paying $200/month to keep the old system live while you verify the new system is the cheapest insurance you will ever buy.
The honest summary: the friend would not have made this move if she had a 50-person sales team. The economics of Salesforce scale with sales-team size in a way that is genuinely good for a real sales organization. The economics of a self-hosted ERP scale with how much of the SaaS bill is per-seat, and a 22-person firm with two salespeople is paying for fifty seats’ worth of overhead. The trade-off is real: her team does not have a sales-rep-specific mobile experience, and her reporting is a step behind what she could build in Salesforce’s Tableau CRM. For a 22-person firm, the $42,000 she is saving is the right answer.