Project Overview
Pharmaceutical Manufacturing CRM Implementation
The Problem: When Accounting Software Becomes a CRM
For nearly a decade, this pharmaceutical manufacturer ran customer relationships inside QuickBooks Online. It wasn’t strategic—it was convenient. Invoices lived there. Transaction history lived there. A separate CRM felt unnecessary.
That decision held until growth exposed the risk.
At nearly 4,000 customer accounts and close to 9,000 transactions, sales had no reliable communication history, deal context lived in notes fields, and reporting required manual exports. When team members changed roles, customer knowledge left with them.
QuickBooks was no longer sustainable as a CRM—but replacing it wasn’t simple.
The company had already selected Fishbowl to modernize inventory, manufacturing, and financial workflows. That left one critical question: how do you extract and preserve ten years of customer and transaction data while introducing a real CRM—without disrupting active operations?
That’s where our team stepped in.
Designing the Three-System Architecture
This wasn’t a one-to-one migration. It required coordination across three systems, each with a distinct role.
QuickBooks held 10 years of intertwined financial and customer data. Fishbowl would become the operational backbone for inventory and accounting. HubSpot would manage sales activity, relationships, and pipeline visibility.
The core decision was data ownership. Transactional history belongs in financial systems. Relationship context belongs in a CRM. QuickBooks contained both, tightly mixed together. Our job was to separate them cleanly.
We set a practical cutoff: migrate data from 2022 forward. That preserved recent customer and deal context without dragging a decade of closed history into the CRM. Older records remained accessible through archived QuickBooks data if needed.
Sequencing mattered. QuickBooks data moved into Fishbowl first, establishing the new operational foundation. Then customer data could move to HubSpot, with Fishbowl as the integration point between financial operations and sales management.
Data Normalization Before Migration
The client handled the QuickBooks-to-Fishbowl migration on their local infrastructure, with our guidance on mapping, preparation, and validation protocols.
Fishbowl captured operational data well, but it wasn’t designed to store relationship nuance. Contact hierarchies, stakeholder roles, and deal context embedded in QuickBooks notes didn’t translate automatically. We filled those gaps through targeted QuickBooks exports.
The normalization work happened in Google Sheets before any data touched HubSpot. Contact-to-company relationships needed mapping—QuickBooks doesn’t enforce strict parent-child relationships between contacts and accounts. We had to determine which contacts belonged to which companies, often based on email domains, transaction patterns, or stakeholder input.
Deal associations required similar work. Which deals connected to which contacts? Which contacts were primary stakeholders versus secondary? QuickBooks transaction records didn’t always contain that relationship structure clearly. We built vLookup chains to connect related records before import, creating datasets with proper hierarchical relationships.
Format standardization across 17,000+ records: phone numbers in consistent formats, addresses with proper field separation, duplicate detection and resolution. This prep work took time, but it’s what allowed the actual imports to run cleanly.
Connect Multiple Platforms Seamlessly
Is a HubSpot Integration Right for Your Business?
Explore Custom Integration Solutions arrow_forwardMigration Execution and Sequencing
Relational data requires order. We migrated in stages.
We started with companies—3,814 records—so every contact and deal had a parent record ready to attach to. Because contacts must associate to a company in HubSpot, those company records had to be in place before any contacts could be imported.
Contacts came next. The 4,244 contact records imported with the vLookup work from Google Sheets ensuring each contact imported with the correct company ID, creating proper hierarchical relationships in HubSpot.
Deals imported last. All 8,951 deal records were associated to both companies and primary contacts. We brought over transaction history from 2022 onward—enough to preserve relevant customer context without flooding the CRM with a decade of closed, low-utility deals.
Each import phase included a validation checkpoint. We verified that record counts matched the source data, confirmed associations were created correctly, and spot-checked sample records for data integrity. The goal was to surface and fix issues immediately, not discover them after the next phase was already in motion.
All of this happened while the business kept running. Orders processed. Sales continued. There was no freeze period or hard stop. The migration ran behind the scenes, tested in stages, with cutover happening only after validation confirmed everything was ready.
Legacy: QuickBooks
- ⚠️Issue: Financial Records
- ⚠️Issue: Inventory Management
- ⚠️Issue: CRM / Relationships
- ⚠️Issue: Deal History
HubSpot Sales Hub
- ✓Includes: Relationship Context
- ✓Includes: Deal Pipeline & Activity
- ✓Includes: Email & Meeting History
Fishbowl ERP
- ✓Includes: Strict Inventory Control
- ✓Includes: Manufacturing BOMs
- ✓Includes: Financial Ledger
Fishbowl and HubSpot Integration
Fishbowl offers a native HubSpot integration—no custom API work required. But native doesn’t mean automatic. Configuration decisions still matter.
We set up sync logic for inventory and order data. Sales needed visibility into product availability and transaction status without accessing Fishbowl directly. When inventory changes or order status updates in Fishbowl, those changes trigger updates in HubSpot records.
The locally-hosted constraint affected our approach. Fishbowl runs on the client’s infrastructure, not in the cloud. The integration requires proper network connectivity and security configuration. We provided technical specifications for their IT environment, but they handled the infrastructure side while we configured the HubSpot end and validated the connection.
Sync frequency balanced data freshness with system performance. Sales doesn’t need real-time inventory updates, but deal stages should reflect order processing accurately. We configured appropriate intervals that kept information current without creating unnecessary system load.
Sales Hub became the customer-facing layer. Fishbowl remained the operational backend. The integration kept them synchronized without requiring sales team members to work in two systems.
Results
Three months from kickoff to Sales Hub go-live.
The sales team gained visibility into customer history without needing QuickBooks access. Communication tracking now lives in Sales Hub, connected directly to customer records. Pipeline reporting happens natively in the CRM instead of through spreadsheet exports. Deal context stays with the record regardless of team changes.
Three months after launch, the company came back for continued support—a 10-hour consulting engagement to handle questions and system adjustments as their team settled into the new infrastructure. The CEO offered to serve as a reference for similar projects.
When Multi-System Orchestration Matters
Most CRM implementations are straightforward: one system out, one system in. This wasn’t that.
When ERP, accounting, and CRM all intersect—especially with a decade of history—the work becomes less about tools and more about decisions. What data belongs where. What history actually matters. How to maintain continuity while changing foundations.
The QuickBooks-as-CRM pattern is common across mid-market B2B companies. Service businesses, distributors, professional services firms—plenty of companies use invoicing software for customer management because it seemed practical at the time. The technical challenge comes when you finally separate the two functions. Data archaeology across multiple systems. Determining what lives in ERP versus CRM. Maintaining historical context while building new operational processes.
We handle these implementations for organizations where “just import everything and figure it out later” isn’t an option. The data volumes matter. The system dependencies matter. The operational continuity matters.
If your CRM implementation involves complexity that other agencies decline, connect with our team to discuss approach and execution.
