A CRM is the system of record your revenue runs on.
CRM development is three distinct jobs that get confused: building a custom CRM from scratch, customizing Salesforce or HubSpot to fit your motion, and migrating data cleanly from a legacy system.
Most teams need the middle path: customizing an existing platform. A small minority need a custom build. The choice you make upfront determines your cost, timeline, and risk for the next three years.
in short
Three paths: customize Salesforce, customize HubSpot, or build custom. We scope which one fits before any contract.
Core modules: pipeline and deal management, sales automation, reporting dashboards, integrations, and role-based access.
Integrations matter more than features: email, telephony, billing, and your data warehouse decide whether reps adopt the CRM.
Data migration is a project, not a checkbox: field mapping, deduplication, and a validated cutover with a rollback plan.
Named senior tech lead, weekly recorded demo, written scope, and full ownership of code and config on exit. No lock-in.
customize a platform
The default for most teams.
Salesforce or HubSpot already ship pipeline, automation, reporting, and a connector ecosystem. The work is shaping the object model, automation rules, and integrations to your motion. Faster, cheaper, and better-supported than a custom build for any commodity sales process.
integrate the edges
Where most CRMs fail.
A CRM that does not sync with email, the dialer, and billing is a data-entry tax that reps quietly abandon. The hard part of CRM work is rarely the screens. It is the integrations that keep the record of truth current without a human retyping it.
build custom
When the motion is the moat.
A custom CRM is right when your selling logic is a differentiator no platform can express: a quoting engine, a territory model, a usage-to-renewal loop, or per-seat costs that cross the build budget at scale. Two of those, and a custom build pays back.
Six modules, one record of truth.
A working CRM has six modules that share one data model: pipeline and deal management, sales automation, reporting, integrations, role-based access, and clean data migration.
Each module has its own failure mode. We scope and demo them one at a time so nothing ships half-baked.
01
Pipeline & deals
stages, scoring, forecast
Deal stages that match your real sales motion, not a vendor default. Lead and opportunity scoring, weighted forecasting, and stage rules that prevent deals from skipping qualification.
The pipeline is where reps live every day, so every interaction must be fast. A pipeline that takes four clicks to update a deal stage is a pipeline nobody uses.
02
Sales automation
rules, sequences, alerts
Workflow rules that route leads, assign owners, trigger follow-up tasks, and escalate stalled deals. Automation removes the busywork that keeps reps away from selling.
But over-automation creates noise nobody trusts. We automate only the transitions that are unambiguous. Judgment calls stay with humans. For lightweight integrations we typically use Zapier before writing custom code.
03
Reporting & dashboards
RevOps, forecast, cohorts
Dashboards for reps, managers, and RevOps, each answering a different question: what do I work next, where is the team off-plan, what does next quarter look like.
We model metrics in the database, not in brittle spreadsheet exports, so the numbers are consistent everywhere. For heavy analytics we push CRM data to a warehouse and report from there, keeping the operational system lean.
04
Integrations
email, telephony, billing
Two-way email sync, click-to-call telephony with logged outcomes, and a billing link so closed-won deals automatically become invoices. Billing usually runs through Stripe or your ERP.
Each integration needs retry logic, idempotency, and a dead-letter path. A silent sync failure corrupts the record of truth faster than any bug in the UI.
05
Role-based access
roles, fields, audit
Customer data is the most sensitive asset most companies hold. Access control is in scope from day one: roles, record-level sharing, field-level permissions, and an audit trail of who viewed and changed what.
We default to least-privilege access and follow OWASP ASVS access-control checks on any custom build.
06
Data migration
map, dedupe, cut over
Getting the existing data in cleanly decides whether the CRM is trusted on day one. Field mapping, deduplication, normalization of phone and address formats, validated cutover with a rollback plan.
Migration gets its own section below because it is the step teams most often underestimate and the one that most often causes a launch to fail.
Build, or customize Salesforce or HubSpot?
The platform choice is the single most consequential decision in any CRM project. It boils down to two questions: how unusual is your sales motion, and do you value control or speed more?
The table below is exactly what we walk through in the discovery sprint. Every trade-off is listed honestly.
criterion
customize Salesforce
customize HubSpot
build custom
Best fit
Complex enterprise sales, deep config needs
SMB and mid-market, marketing-led growth
A selling motion no platform can express
Time to live
6-14 weeks
4-10 weeks
10-20 weeks
Customization ceiling
Very high (Apex, flows, custom objects)
High (workflows, custom objects, API)
Unlimited (it is your code)
Cost shape
Per-seat license + build
Tiered seats + build
Build + hosting, no per-seat
Integration ecosystem
Largest marketplace
Strong, marketing-heavy
You build what you need
Roadmap control
Vendor sets the platform roadmap
Vendor sets the platform roadmap
You own the roadmap fully
Maintenance burden
Vendor handles core, you own config
Vendor handles core, you own config
You own the whole stack
Rule of thumb: if your sales process looks like other companies in your category, customize a platform. If "the way we sell" is part of why customers buy, and that logic cannot be expressed in a flow or workflow rule, look hard at a custom build. When the answer is genuinely "neither fits," the work is usually a custom software development engagement with a CRM-shaped core rather than a CRM project per se.
Weekly demos. Named tech lead. Written scope.
CRM projects fail in a predictable arc: long silent build, big-bang launch, dirty migrated data, reps who reject the tool by week one.
Four operating principles prevent that arc. They are the checkpoints we bill against, not marketing language.
principle 01
A named tech lead owns the work.
One named senior engineer attends every call, writes the weekly status, and owns the data model and integration architecture. No account-manager layer between you and the people building your record of truth.
principle 02
Demo to real reps, every week.
Each Friday a recorded walkthrough in a real environment, with at least one actual sales user in the room early. Rep feedback shapes the pipeline UI before it is built into a habit, not after launch when changes are expensive.
principle 03
Scope in writing, change in writing.
Engagements ship against a scoped requirements document. Any new field, automation rule, or integration beyond it triggers a written change request with a cost and a timeline delta. No silent scope creep, no surprise invoice.
principle 04
You own the config and the data.
Every contract names who owns the code and configuration (you), who controls the data (you), and what handover looks like if you take it in-house. No vendor lock-in, no hostage data, no ownership gray zones.
Migration is a project, not a checkbox.
CRM data migration is the step that most often sinks an otherwise good launch. Dirty data destroys trust on day one.
Once reps stop believing the numbers, they stop using the tool. We run migration as a five-step project with a validated cutover and rollback plan. Never a one-shot import the night before launch.
1
Audit the source data
Profile every object in the legacy CRM or spreadsheet: row counts, null rates, duplicate clusters, and orphaned records.
The audit turns "migrate the data" into real scope. You'll discover that 30% of contacts have no owner, a third of deals were never closed but never died either.
2
Map fields and model
A documented mapping from every source field to a target field. Explicit decisions on what to merge, drop, and derive. Custom fields and pick-list values rarely line up one-to-one.
The mapping document gets reviewed and signed off before a single record moves.
3
Deduplicate and clean
Merge duplicate accounts and contacts using deterministic and fuzzy rules. Normalize phone numbers and addresses. Standardize industry and stage values. We keep a full audit log of every merge so any decision can be reviewed or reversed.
Cleaning happens in a staging copy, never against the live source.
4
Dry-run and validate
Load into a sandbox, then reconcile. Do the counts match, do the totals tie out, do spot-checked records look right? Reps validate their own accounts before cutover.
A migration that passes record counts but fails the rep's gut check has not really passed.
5
Cut over with a rollback
A scheduled cutover window, a final delta sync for records changed since the dry run, and a documented rollback path if validation fails. The legacy system stays read-only for a defined period so nothing is lost.
Go-live is a planned event with an owner. Not a hopeful overnight import.
Familiar beats fashionable.
For a custom CRM build the stack follows three factors: your team's existing skills, operational cost per month, and who you can hire to maintain it.
For platform work the stack is the platform plus its supported extension tools. Our defaults are deliberately boring because a CRM is infrastructure you keep for years.
layer
default
Platform CRM
Salesforce / HubSpot
Custom backend
TypeScript / Python
Web framework
Next.js / FastAPI
Database
Postgres
Cache + queues
Redis
Analytics DB
ClickHouse / BigQuery
Billing
Stripe
Integration glue
Zapier / custom webhooks
Deploy
Vercel / Railway / AWS
Observability
Sentry + Axiom / Datadog
For most teams the right answer is a platform CRM, customized well, with a handful of enterprise-quality integrations. Postgres backs custom builds. Standard web APIs move data between systems with retries and idempotency keys. Redis carries the sync queues.
We reach for specialized tooling only when a boring default fails a load test or a business requirement. Every integration gets documented with an architecture decision record. We follow Core Web Vitals targets and structured-data guidance on any customer-facing surface the CRM exposes.
Six answers.
These are the questions sales and RevOps leaders ask most before booking a call. When to build versus customize. What platform work costs. How we handle integrations and migration. Data security. Pricing.
Should we build a custom CRM or customize Salesforce or HubSpot?
Customize a platform unless your selling motion is genuinely unusual. Salesforce and HubSpot already ship pipeline, automation, reporting, and a large integration ecosystem. For any commodity sales process they are faster and cheaper than building custom.
A custom CRM earns its cost in two cases: when your selling logic is a differentiator no platform can express, and when per-seat license costs across three years exceed the build budget. If neither applies, customize.
What does a Salesforce or HubSpot customization engagement include?
Object model design (custom objects, fields, relationships). Automation (flows, workflow rules, lead routing). Reporting and dashboards for reps, managers, and RevOps. Integrations that keep the record current: email, telephony, billing, your data warehouse.
On Salesforce that may include Apex and Lightning components. On HubSpot we work with workflows, custom-coded actions, and the API. Every engagement starts with a two-week discovery sprint and a written, fixed-price scope.
How do you handle CRM integrations with email, phone, and billing?
Each integration is built to enterprise quality, not stitched together and hoped for. Two-way email sync. Click-to-call telephony with logged call outcomes. A billing link (usually Stripe or your ERP) so closed-won deals become invoices without re-keying.
Every connector gets retry logic, idempotency keys, and a dead-letter path. A transient failure never silently corrupts the record of truth. For low-volume cross-app glue we use Zapier first. Only when volume or reliability demands it do we write custom code.
How do you migrate data from our old CRM without losing anything?
Migration runs as a five-step project: audit the source data, map fields and the data model, deduplicate and clean in a staging copy, dry-run into a sandbox and reconcile, then cut over in a scheduled window with a final delta sync and documented rollback.
The legacy system stays read-only during a hold period so nothing is lost. Reps validate their own accounts before go-live. A migration that passes record counts but fails the rep's gut check has not actually passed.
How do you secure customer data in the CRM?
Access control is in scope from day one: roles, record-level sharing, field-level permissions, and an audit trail of who viewed and changed what. For custom builds we default to encryption at rest and in transit, least-privilege access, and zero hardcoded credentials. We use OWASP ASVS access-control checks as the baseline.
For regulated sectors we add GDPR records of processing, SOC 2 gap analysis, or HIPAA evaluation as needed. Platform CRMs inherit the vendor's certifications. We configure sharing and field security correctly on top.
What does CRM development cost?
Every engagement is scoped separately. A HubSpot customization with three integrations and a multi-tenant custom CRM sit at very different price points. Discovery sprints run two weeks at a fixed price. Customization and custom builds are scoped against a written requirements document with a fixed bid and an explicit change-request process.
Data migration is priced once the source-data audit reveals the real shape of the work. We don't publish tiered packages because honest ranges would be misleading. Book the scoping call. The quote lands in 48 hours.
Scoping call. Quote in 48 hours.
A 30-minute call to understand your sales motion, your data, and the constraints. We come back with the build-vs-customize decision, a written scope, and a fixed-price quote within two business days. No decks. No theater.