CRM Contact Limits: How Per-Contact Pricing Taxes Growth
CRM contact limits turn growth into a bill: how per-contact pricing works, why tier cliffs punish success, and what contacts cost on a server you own instead.
A marketing agency imports 8,000 leads from a trade show, a partner list and last quarter’s Facebook campaigns. Nothing about the business changed - same team, same clients, same software. The next invoice is higher anyway, because the database crossed a pricing band. That is the quiet mechanic behind much of hosted CRM pricing: CRM contact limits index your bill to the size of your database, so the platform earns more at the exact moment your marketing starts working. This article explains how per-contact pricing works, the behavior it trains agencies into, and what the same ten thousand contacts cost when the database sits on a server you own.
One disclosure before the argument: we build and sell LeadHub, a self-hosted multi-tenant SaaS CRM with no contact meter pointed at its owner. We are a vendor with a position here - weigh everything that follows accordingly.
How CRM contact limits actually work
Hosted CRM and marketing platforms bill on some mix of three meters: seats, usage and contacts. Seats you choose. Usage you can throttle. Contacts are the meter that grows without anyone deciding to spend, because every form fill, ad lead and imported CSV row moves it.
The mechanics repeat across the industry, so we will describe them as common patterns rather than claims about any single vendor:
- Tiered bands. Pricing pages commonly ladder plans by contact count - 1,000, 5,000, 10,000, 25,000 and up - with the monthly price stepping at each band. Your plan is not a price; it is a range you are allowed to occupy.
- Tier cliffs. Contact number 10,001 does not cost one contact. It costs the jump to the next band, which can add a meaningful chunk to the monthly bill for a single record. The cliff is why teams start watching the counter in the first place.
- The “marketing contacts” pattern. Several popular platforms distinguish contacts you actively market to from records you merely store, which softens the meter but creates an accounting job that did not exist before: someone now curates which humans count as billable.
- Dead weight that still bills. On some platforms, unsubscribed and hard-bounced records continue to occupy a slot until you delete them. You pay to store the proof that someone asked you to stop.
None of this is hidden - it is printed on the pricing page. What the pricing page does not spell out is the compounding: a per-contact bill is a recurring tax on database growth, assessed monthly, forever. If your capture works, the CRM price increases with contacts by design. The platform’s revenue model and your growth are the same curve.
The incentives per-contact pricing creates
A meter changes behavior, and the contact meter changes it in ways that quietly work against the marketing it is attached to.
The renewal purge. Teams delete cold leads before the renewal date to drop back under a band. It feels like hygiene. It is actually data destruction on a billing schedule: the deleted record takes its activity history with it - the source, the campaign, the three replies from 2024 - which is precisely the data that would later tell you which channels produce buyers.
Selective capture. When every import moves you toward a cliff, leads start staying where they landed - in the ad platform’s CSV export, in a spreadsheet, in someone’s inbox. The CRM stops being the single source of truth because the single source of truth is billed by the row.
Nurture becomes a luxury. Long-cycle leads - the prospect who buys in eighteen months - are exactly the records a per-contact meter prices you out of keeping. The pricing model votes for short-term pipelines.
To be fair, contact metering is not how every platform charges. GoHighLevel, the dominant agency platform, is commonly described as including unlimited contacts on its plans as of mid-2026 - check their current pricing page - with the growth-indexed part of the bill arriving instead through usage rebilling for email, SMS and calls on top of the subscription. Different meter, same structure: in the hosted model, some counter somewhere rises with your activity, because that is how SaaS database pricing recovers the cost of hosting your data - plus margin.
| Pricing structure | What moves the bill | What it trains you to do |
|---|---|---|
| Per-contact tiers | Database size | Delete records, capture less |
| Subscription plus usage rebilling | Messages and minutes | Watch the wallet, throttle volume |
| One-time licence plus your own hosting | Server resources | Keep everything, clean deliberately |
What the next 10,000 contacts cost on a server you own
Here is the arithmetic the tier model obscures. A contact is a database row. Even a rich one - custom fields, tags, UTM data, a full activity timeline - is measured in kilobytes. Call it a generous 100 KB per lead with history, and ten thousand contacts land around 1 GB of storage. MySQL has comfortably handled tables with millions of rows on modest hardware for two decades. On a server you own, the marginal cost of the next ten thousand contacts is, to a first approximation, disk space - and disk space is the cheapest thing in computing.
This is the structural case for an unlimited contacts CRM that you host yourself, and it is worth being concrete about what that looks like in practice. LeadHub runs on PHP 8.4 or higher with MySQL 5.7+ or 8.x, and installs through a browser-driven installer built for ordinary and shared hosting - no SSH, no Composer. Bulk CSV import maps spreadsheet columns to your own custom fields, and there is also copy-paste bulk add for the quick jobs. Import 500 leads or 50,000: the licence cost is identical, because there is no meter to move. You buy the software once; the recurring cost is whatever your host charges for the server, which grows with data slowly and linearly - no cliffs.
The honest counterweight: hosting is a real cost and a real job. A capable VPS commonly runs somewhere in the tens of dollars a month, you are responsible for keeping it up, and backups are yours to run - LeadHub ships verifiable, downloadable database backups, but pressing the button is on you. Ownership removes the tax, not the housekeeping.
The real limits nobody bills you for
Removing the meter does not remove every constraint. Three genuine ones remain, and they exist under every pricing model - the difference is that on your own server they are engineering questions instead of invoices.
- Database size. Eventually large tables want indexes and tuning. This is boring, well-understood work, and it is a one-time cost per order of magnitude - not a monthly percentage of your success.
- Sending reputation. Email deliverability is governed by your domain and your SMTP provider, not your CRM’s pricing tier. Blasting 100,000 stale contacts will land you in spam folders no matter who hosts the database. LeadHub’s email sequences track opens, clicks and replies, and stop automatically on reply and on won - the design pushes you toward sending less to the right people, which is what reputation actually rewards.
- List hygiene. A big database is only an asset if it is clean. This is where hygiene tools matter more than limits ever did: LeadHub’s duplicate detection uses configurable email and phone fuzzy matching with a merge workflow that preserves the activity history of both records - deduplication without destroying the past, which is the exact opposite of the renewal purge. The lead scoring engine, driven by field, behavior and engagement triggers, answers “who deserves attention” without forcing you to delete everyone who does not. And automated retention policies purge audit logs on a 180-day rolling window, login attempts after 30 days and webhook events after 90 - the platform does its own housekeeping on compliance data.
Per-contact billing takes these real constraints and replaces them with a fake one: raw count. Size is the wrong metric. Quality is the right one, and no pricing tier measures it.
When contact limits become your product instead of your tax
There is one place where contact limits genuinely belong: pointed at customers, by whoever owns the platform. This is the multi-tenant flip, and it is where the ownership argument stops being defensive and starts being a business model.
LeadHub is a multi-tenant platform, and its super-admin plan builder exists precisely to create plans with per-plan feature gates and per-resource usage limits - lead caps, team seat caps, storage caps - on tiers you design and price. Plan-limit alerts email your tenants as they approach their lead, seat or storage caps, and team-size caps surface a friendly upgrade prompt inside the tenant dashboard. When a tenant outgrows a tier, the upgrade revenue arrives through your own Stripe, PayPal, Razorpay, Paystack or bank-transfer account - not a platform’s.
Read that carefully and the point sharpens: contact limits are not evil. They are a monetization instrument, and the entire question is which end of the instrument you are holding. On a hosted CRM, the meter points at you and rises with your success. On a platform you own, you point the meter at your tenants and price the tiers yourself. Same mechanics, opposite side of the table.
A five-minute audit before your next renewal
- Open your billing page. Note your current contact count and the band above you.
- Price the cliff: next tier minus current tier, times twelve. That is the annual cost of continuing to grow.
- Ask the team one question: how many contacts did we delete last year to stay under a limit? Get a number, not a shrug.
- Price the alternative honestly: a one-time licence plus twelve months of a VPS, plus the hours you will spend on updates and backups.
- Apply the decision rule: if the answer in step 3 is anything above zero, the meter is already editing your marketing - and a database whose growth is free is not a feature upgrade, it is a different relationship with your own data.
A copy of this article is also published on dev.to, where the comments are open.