CRM migration
Field-level mapping, validation, and rollback between Bill4Time and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
Bill4Time
Source
Nutshell
Destination
Compatibility
10 of 11
objects map 1:1 between Bill4Time and Nutshell.
Complexity
BStandard
Timeline
48–72 hours
Overview
Bill4Time and Nutshell serve fundamentally different functions: Bill4Time is a time-tracking and legal-billing platform built around clients, matters (projects), time entries, and invoices, while Nutshell is a sales-focused CRM centered on Companies, People, Leads, and Deals. This mismatch makes the migration architectural rather than cosmetic — Bill4Time's matter-centric model (client, project, time entry, expense, invoice) has no direct equivalent in Nutshell's sales pipeline. We map Bill4Time clients to Nutshell Companies and People, Bill4Time projects to Nutshell Deals, and time entries to Nutshell Activities. Billing rates and overtime multipliers surface as custom fields. We do not migrate Bill4Time invoices — Nutshell has no billing module — but invoice status and outstanding balances are preserved as reference fields. The migration uses Bill4Time's read-only v1/v2 API (OData filtering supported) and Nutshell's JSON-RPC API for writes, with a delta-pickup window capturing any entries logged during cutover. Workflows, bill4Time workflow templates, and automations do not migrate and must be rebuilt in Nutshell or handled separately.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Bill4Time object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Bill4Time
Client
Nutshell
Company + Person
many:1Bill4Time clients contain both organizational and contact-level data (billing name, address, phone, email, account manager). We split these: company details map to Nutshell Company, and the primary contact maps to a Nutshell Person linked to that Company. Additional contacts require separate Person records.
Bill4Time
Client.accountManagerId
Nutshell
Person.ownerId / Company.ownerId
1:1Bill4Time account manager is a numeric user ID. We resolve this to a Nutshell user by email match — the account manager's Bill4Time email is used to find or flag the corresponding Nutshell owner. Unmatched managers are flagged before migration so you can either create Nutshell users or reassign records.
Bill4Time
Project (Matter)
Nutshell
Deal
1:1Bill4Time projects map directly to Nutshell Deals. The project name becomes the Deal name, client association links to the mapped Company, and project status (Open/Closed) maps to the Nutshell Deal status. Multiple Bill4Time projects per client become separate Nutshell Deals on the same Company.
Bill4Time
Project.billingMethod
Nutshell
Deal.custom billing_method__c
1:1Bill4Time's billing method (Hourly, Flat Fee, Percentage) has no native Nutshell equivalent. We create a custom pick‑list field called `billing_method__c` on the Deal object to preserve the original billing method for every project. This allows your team to filter or group Deals by how they were originally billed, ensuring that the billing context remains traceable when time entries are reviewed in Nutshell.
Bill4Time
Time Entry
Nutshell
Activity
1:1Each Bill4Time time entry becomes a Nutshell Activity. The entry date, description (public), user, and billable status all map to corresponding Nutshell Activity fields. Private descriptions are stored as a custom field since Nutshell Activities do not have a private-note concept by default.
Bill4Time
Time Entry.billingRate / hourlyOverrideRate
Nutshell
Activity.custom billing_rate__c
1:1Bill4Time time entries carry billing rates that may differ from the project or user default. These are preserved as custom numeric fields on the Nutshell Activity so the original billing rate is traceable even when the entry is logged in Nutshell's activity stream.
Bill4Time
Expense Entry
Nutshell
Activity
1:1Bill4Time expense entries map to Nutshell Activities using a dedicated activity type (for example, `Expense`). The expense amount, description, and the linked client/project association are all preserved as fields on the Activity. If Bill4Time uses expense categories that have no direct Nutshell counterpart, we map those categories to custom pick‑list values or a custom text field, allowing you to filter or report on expenses by category within Nutshell.
Bill4Time
Invoice
Nutshell
No equivalent
1:1Nutshell has no invoicing module. Bill4Time invoices (status, amount, labor amount, expense amount, paid status) are not recreated in Nutshell. We preserve invoice status and outstanding balance as custom reference fields on the linked Deal for billing reconciliation purposes only.
Bill4Time
User
Nutshell
Nutshell User
1:1Bill4Time users map to Nutshell users by email match. Bill4Time user fields (fname, lname, email, userType, department, billingRate, overtimeRate) are preserved as custom fields on the Nutshell user record for reference. Nutshell's simpler role model means Bill4Time's granular user types (Financial User, Limited User) are retained as a custom field only.
Bill4Time
Custom Fields (Enterprise Add-On)
Nutshell
Custom Fields
1:1Bill4Time custom fields at User, Client, Project, Time Entry, and Invoice levels all migrate to Nutshell custom fields on the corresponding object. Custom field types (Text, Number, Date, List) map to Nutshell's available field types. List-type custom fields with pick-list values require explicit value mapping.
Bill4Time
Workflow Templates
Nutshell
No equivalent
1:1Bill4Time Enterprise Add-On workflow templates do not migrate. Nutshell has no workflow builder for task automation. We export workflow definitions as a reference document so your team can manually configure automation in Nutshell or evaluate third-party tools if advanced automation is required.
| Bill4Time | Nutshell | Compatibility | |
|---|---|---|---|
| Client | Company + Personmany:1 | Fully supported | |
| Client.accountManagerId | Person.ownerId / Company.ownerId1:1 | Fully supported | |
| Project (Matter) | Deal1:1 | Fully supported | |
| Project.billingMethod | Deal.custom billing_method__c1:1 | Fully supported | |
| Time Entry | Activity1:1 | Fully supported | |
| Time Entry.billingRate / hourlyOverrideRate | Activity.custom billing_rate__c1:1 | Fully supported | |
| Expense Entry | Activity1:1 | Fully supported | |
| Invoice | No equivalent1:1 | Fully supported | |
| User | Nutshell User1:1 | Fully supported | |
| Custom Fields (Enterprise Add-On) | Custom Fields1:1 | Fully supported | |
| Workflow Templates | No equivalent1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Bill4Time gotchas
API is read-only with no write endpoints
Enterprise Add-On gates Custom Fields and unlimited imports
Invoice status divergence between reports and accounting page
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
Audit Bill4Time data volume and custom field availability
We begin by connecting to Bill4Time via read-only API using your API key. We pull the full client list, project list, user list, and a representative sample of time entries and expenses to establish record counts and custom field presence. If custom fields are absent (indicating a non-Enterprise plan), we flag this immediately. We also validate that the Bill4Time API key has sufficient access to read all required objects. This step produces a data inventory document that defines the scope before any mapping work begins.
Map Bill4Time objects to Nutshell schema and create destination fields
With the Bill4Time data inventory in hand, we build the Nutshell side of the mapping. We create custom fields on Nutshell Companies, Deals, Activities, and Users to accommodate Bill4Time-specific data (billing rates, litigation codes, invoice status, project types) that has no native Nutshell equivalent. We generate a field-level mapping document that shows every source field, its destination, and any transformation or value mapping required. This document is reviewed with you before any data moves.
Resolve Bill4Time users to Nutshell owners by email
Bill4Time user IDs are resolved to Nutshell users by matching the email address on each Bill4Time user record against Nutshell user accounts. Any Bill4Time users without a corresponding Nutshell account are flagged in a pre-migration report. Your team either creates Nutshell users for those individuals or assigns their records to a designated fallback owner. No records land in Nutshell without a confirmed owner assignment.
Run a sample migration with field-level diff before full cutover
A representative slice — typically 100–500 records covering clients, contacts, projects, time entries, and expenses — migrates first. We generate a field-level diff comparing source Bill4Time values against the destination Nutshell values so you can verify that billing rates, litigation codes, project types, and custom fields populated correctly. You approve the sample before the full migration proceeds. This step catches mapping errors before they affect the full dataset.
Execute full migration with delta-pickup window
The full dataset migrates in dependency order: Bill4Time clients → Nutshell Companies, then Users, then Projects → Nutshell Deals, then Time Entries and Expenses → Nutshell Activities. A delta-pickup window of 24–48 hours captures any new or modified Bill4Time records created during the migration run. All operations are logged in an audit trail, and one-click rollback is available if reconciliation identifies unexpected gaps in the transferred data.
Platform deep dives
Bill4Time
Source
Strengths
Weaknesses
Nutshell
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Bill4Time and Nutshell.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Bill4Time: Not publicly documented — confirm with Bill4Time support during scoping. The vendor's API reference does not publish per-minute or per-day request ceilings..
Data volume sensitivity
Bill4Time doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Bill4Time to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your Bill4Time to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Bill4Time
Other ways to arrive at Nutshell
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.