CRM migration
Field-level mapping, validation, and rollback between BookingKoala and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
BookingKoala
Source
Freshsales
Destination
Compatibility
12 of 12
objects map 1:1 between BookingKoala and Freshsales.
Complexity
BStandard
Timeline
24–48 hours
Overview
BookingKoala is a booking and business-management platform for service businesses; its data model centers on customers, providers, bookings, invoices, and service configurations. Freshsales is a CRM with standard objects: Leads, Contacts, Accounts, Deals, Products, Tasks, and Notes, plus custom fields scoped per plan tier. The migration carries BookingKoala customers into Freshsales Contacts, bookings into Deals (with service industry and booking status stored as custom fields), invoices into Deal custom fields, and providers into Contacts with a resolution step to map them against Freshsales Users. BookingKoala industry configurations and booking-form field IDs migrate as custom fields so the service taxonomy is preserved. Automations, email campaigns, and smart scheduling rules do not transfer — those live in BookingKoala's own engine and must be rebuilt in Freshsales Workflows and Sales Sequences after migration. FlitStack sequences the BookingKoala export by dependency order (customers before bookings), creates the Freshsales custom fields first to avoid hitting API rate limits during the bulk-load phase, runs a sample migration, then executes the full cutover with a 24–48 hour delta pickup window to capture any bookings modified during the switch.
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 BookingKoala object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
BookingKoala
Customer
Freshsales
Contact
1:1BookingKoala customers map directly to Freshsales Contacts. The customer name, email, phone, address, and status fields translate to Freshsales Contact fields. Customer create dates are preserved in a custom datetime field since Freshsales CreatedDate reflects migration time. Customers without an email are flagged for manual review because Freshsales requires a valid email format for contact creation via API.
BookingKoala
Provider
Freshsales
Contact + User resolution
1:1BookingKoala providers are service-deliverer records that need to become both Freshsales Contacts (for customer-provider association) and system Users (for booking ownership). Provider email is matched against Freshsales Users by email address — matched providers become record owners on migrated bookings; unmatched providers are flagged and assigned to a fallback owner. Provider scheduling preferences do not transfer.
BookingKoala
Booking
Freshsales
Deal
1:1Each BookingKoala booking becomes a Freshsales Deal. The booking ID is stored in Source_Booking_ID__c for traceability. Booking status (confirmed, pending, completed, cancelled) migrates to a custom pick-list field Deal_Booking_Status__c. Provider, service category, frequency, location, and pricing parameters migrate as additional custom fields. The customer on the booking links to the migrated Contact via Freshsales Deal contact role.
BookingKoala
Booking Status
Freshsales
Custom pick-list field (Deal_Booking_Status__c)
1:1BookingKoala booking statuses — confirmed, pending, in_progress, rescheduled, completed, no_show, cancelled — have no native Freshsales equivalent. We create a custom pick-list field Deal_Booking_Status__c on the Deal object and map each BookingKoala status value by-value. The payment status (paid, partially_paid, unpaid) maps to Deal_Payment_Status__c separately.
BookingKoala
Industry
Freshsales
Custom field (Deal_Industry__c) + Account industry
1:1BookingKoala industries (home cleaning, pet grooming, moving, car repair) map to a custom pick-list field Deal_Industry__c on the Deal. If the industry name matches a Freshsales Account Industry pick-list value, we also populate Account.Industry for reporting by segment. Custom industry names are preserved verbatim in Deal_Industry__c.
BookingKoala
Service Category
Freshsales
Custom field (Deal_Service_Category__c) or Product
1:1BookingKoala service categories with fixed pricing map to Freshsales custom fields. Categories with recurring pricing or product-line complexity map to Freshsales Products linked to Deals via Deal Products. The mapping decision is made per category based on the number of pricing parameters and frequency configurations stored in BookingKoala.
BookingKoala
Booking Form / Pricing Parameters
Freshsales
Custom fields (Deal_Form_Type__c, Deal_Pricing_Parameters__c)
1:1BookingKoala booking forms (Form 1 through Form 5) with their pricing-parameter keys and values do not have a Freshsales equivalent. These are stored as custom fields on the Deal: Deal_Form_Type__c (numeric form ID), Deal_Pricing_Parameters__c (serialized key-value JSON string for reference), and Deal_Form_URL__c (the original booking form link). Custom form query parameters (service_id, frequency_id, zipcode) are preserved individually as Deal_Form_Service_ID__c, Deal_Form_Frequency_ID__c, Deal_Form_Zipcode__c.
BookingKoala
Invoice
Freshsales
Deal custom fields (Deal_Invoice_Number__c, Deal_Invoice_Date__c, Deal_Payment_Status__c, Deal_Line_Items__c)
1:1BookingKoala invoices are not standalone objects in Freshsales — we embed invoice data into the associated Deal. Invoice number maps to Deal_Invoice_Number__c, invoice date to Deal_Invoice_Date__c, payment status to Deal_Payment_Status__c, subtotal to the native Amount field if no other booking amount exists, and line items serialized into Deal_Line_Items__c. Payment method, discounts, and tax are stored as additional custom fields on the Deal.
BookingKoala
Location
Freshsales
Custom fields on Deal (Deal_Location__c, Deal_Address__c, Deal_Zipcode__c)
1:1BookingKoala locations (business locations and customer service addresses) are stored as address text in bookings. We create Deal_Location__c for the location name and Deal_Address__c for the full address string. Freshsales Accounts have a native address structure, but since BookingKoala locations are service-location references rather than company records, we attach them as Deal custom fields rather than creating Account records for each location.
BookingKoala
Attachment / File
Freshsales
Freshsales Files / Attachments
1:1BookingKoala file attachments (customer documents, provider certificates, booking receipts) are downloaded and re-uploaded to Freshsales Files associated with the relevant Contact or Deal record. File size limits of Freshsales apply — files exceeding the plan limit are flagged. Inline images in BookingKoala notes are extracted and hosted as separate file attachments.
BookingKoala
Automation / Workflow
Freshsales
Not migrated — must be rebuilt
1:1BookingKoala email campaigns, smart scheduling rules, Zapier automations, and notification templates do not have equivalents in Freshsales and cannot be migrated programmatically. We export workflow definitions as a reference JSON file for the Freshsales admin to use as a rebuild guide for Freshsales Workflows and Sales Sequences. The rebuild work is outside the migration scope.
BookingKoala
Reports / Dashboards
Freshsales
Not migrated — data underlying them migrates
1:1BookingKoala booking reports (revenue by service, provider utilization, no-show rates) are not transferable to Freshsales dashboards. The underlying booking data (amounts, statuses, dates, providers) does migrate into Freshsales Deals and custom fields, so the reports can be rebuilt in Freshsales Reports once the schema is live. BookingKoala's historical data is preserved in the migrated records.
| BookingKoala | Freshsales | Compatibility | |
|---|---|---|---|
| Customer | Contact1:1 | Fully supported | |
| Provider | Contact + User resolution1:1 | Fully supported | |
| Booking | Deal1:1 | Fully supported | |
| Booking Status | Custom pick-list field (Deal_Booking_Status__c)1:1 | Fully supported | |
| Industry | Custom field (Deal_Industry__c) + Account industry1:1 | Fully supported | |
| Service Category | Custom field (Deal_Service_Category__c) or Product1:1 | Fully supported | |
| Booking Form / Pricing Parameters | Custom fields (Deal_Form_Type__c, Deal_Pricing_Parameters__c)1:1 | Fully supported | |
| Invoice | Deal custom fields (Deal_Invoice_Number__c, Deal_Invoice_Date__c, Deal_Payment_Status__c, Deal_Line_Items__c)1:1 | Fully supported | |
| Location | Custom fields on Deal (Deal_Location__c, Deal_Address__c, Deal_Zipcode__c)1:1 | Fully supported | |
| Attachment / File | Freshsales Files / Attachments1:1 | Fully supported | |
| Automation / Workflow | Not migrated — must be rebuilt1:1 | Fully supported | |
| Reports / Dashboards | Not migrated — data underlying them migrates1: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.
BookingKoala gotchas
No public API — all migration relies on CSV exports
Provider count is capped at 50 on Premium plans
Multi-industry setup has no export path
CSV exports are date-range filtered and flat
Booking time logs export separately from booking records
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Audit BookingKoala schema and create Freshsales custom fields first
Before any data moves, FlitStack extracts the full BookingKoala field inventory — customer fields, booking fields, provider fields, service category attributes, invoice fields, and booking-form query parameter keys. We then create the corresponding Freshsales custom fields: Deal_Booking_Status__c, Deal_Frequency__c, Deal_Service_Category__c, Deal_Industry__c, Deal_Form_Type__c, Deal_Pricing_Parameters__c, Deal_Provider_BookingKoala_ID__c, and others. Custom fields are created before the bulk load to avoid hitting Freshsales API rate limits during the migration run. We deliver a schema-setup checklist so the Freshsales admin can pre-approve field names and pick-list values.
Export BookingKoala data in dependency order and resolve provider-to-user mappings
BookingKoala exports are pulled in sequence: (1) customers CSV, (2) providers CSV, (3) bookings CSV, (4) invoices CSV, (5) service categories CSV. Provider records are cross-referenced against Freshsales Users by email — matched providers are flagged as resolved for deal ownership assignment; unmatched providers are flagged for fallback owner assignment. Customers without email addresses are flagged for manual review. The export data is staged in a temporary store, deduplicated by email and booking ID, and validated for required-field completeness before transformation begins.
Run a sample migration and generate a field-level diff report
A representative slice of 100–300 records — spanning customers, bookings across multiple statuses, providers, and invoices — migrates into the target Freshsales account first. We generate a field-level diff comparing source values against destination field values for every mapped field. The diff is reviewed with the customer to verify booking-status mapping, provider ownership resolution, invoice amount vs. deal amount precedence, and custom field population. Sample migration approval is required before the full run commits. This step typically takes 2–4 hours.
Execute full migration with staged writes and delta-pickup window
The full migration runs against Freshsales using batched API writes (100 records per batch) throttled to stay within the plan's rate-limit budget. Booking records are linked to migrated Contacts via Deal Contact Roles after both records exist. After the initial load completes, a delta-pickup window of 24–48 hours captures any BookingKoala bookings created or modified during the cutover window. FlitStack generates an audit log of every record created, updated, or skipped. One-click rollback is available for 7 days post-migration if reconciliation finds unexpected gaps.
Platform deep dives
BookingKoala
Source
Strengths
Weaknesses
Freshsales
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 BookingKoala and Freshsales.
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
BookingKoala: Not publicly documented.
Data volume sensitivity
BookingKoala 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 BookingKoala to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your BookingKoala to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave BookingKoala
Other ways to arrive at Freshsales
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.