CRM migration
Field-level mapping, validation, and rollback between Forms On Fire and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Forms On Fire
Source
Freshsales
Destination
Compatibility
13 of 15
objects map 1:1 between Forms On Fire and Freshsales.
Complexity
BStandard
Timeline
24–72 hours
Overview
Forms On Fire is a mobile-first form and data-collection platform: it stores form submissions as flat records, each containing user-provided field data, timestamps, GPS coordinates, and attached media. Freshsales is a full CRM with a relational model — Leads, Contacts, Accounts, and Deals are separate objects linked by email lookups, account associations, and contact roles. The core migration challenge is flattening Forms On Fire submission records into Freshsales relational records while preserving every data point. We extract every form submission, map each field to either a Freshsales standard field or a custom field, create the corresponding Account or associate the Contact to an existing Account, and re-attach any photos, signatures, or barcodes. Custom form fields that have no Freshsales equivalent become Custom Fields on the Contact or Account object. Form-level metadata (form name, submission ID) is stored as a reference field. We use the Freshsales REST API with batch operations and respect Freshsales rate limits (10,000 API calls/day on Growth plan, higher on Pro and Enterprise) to move data without disrupting ongoing form operations in Forms On Fire. Workflows, conditional logic, and automated routing built in Forms On Fire do not migrate — they must be rebuilt in Freshsales automations or documented for your admin to reconstruct.
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 Forms On Fire 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.
Forms On Fire
Form Submission
Freshsales
Lead / Contact
1:manyEvery Forms On Fire submission is a single record containing person data and field answers. FlitStack splits this into either a Freshsales Lead or Contact. Submissions with a valid email address and first/last name create a Contact. Submissions missing last name or containing a 'Lead Source' field value route to a Lead. Contact vs. Lead routing is configurable per form before migration runs.
Forms On Fire
Form Submission (Company field)
Freshsales
Account
1:1Forms On Fire captures company name as a plain text field within a submission. We extract that text and either create a new Freshsales Account record or match against an existing Account by name. The Contact is then linked via AccountId lookup. If no company name is present, the Contact lands without an Account association — a default 'Unassigned Account' is optionally created.
Forms On Fire
Form Submission (deal_amount field)
Freshsales
Opportunity
1:manySubmissions containing a numeric field labeled deal_value, estimated_value, quote_amount, or similar trigger creation of a Freshsales Opportunity record alongside the Contact. The opportunity name uses the form name and submission ID. Stage defaults to the first pipeline stage. If no deal field exists in the form, no Opportunity is created — the submission is Contact-only.
Forms On Fire
Form Submission (pipeline field)
Freshsales
Sales Pipeline
1:1If a form submission contains a dropdown or text field indicating a sales territory, product line, or pipeline segment, FlitStack maps this to a Freshsales Sales Pipeline. Pipelines must be pre-created in Freshsales before migration — we deliver a pipeline setup plan based on the form field values detected during the discovery phase.
Forms On Fire
Form Submission (submission_timestamp)
Freshsales
Contact.created_at / Lead.created_at
1:1The original Forms On Fire submission timestamp maps to the Freshsales Contact or Lead created_at field. This preserves the actual submission date for reporting continuity. If the submission was edited after initial capture, the last-modified timestamp is optionally stored in a custom datetime field.
Forms On Fire
Form Submission (submission_id)
Freshsales
Custom Field: Original_Submission_ID__c
1:1The Forms On Fire internal submission ID is stored as a custom text field on the Freshsales Contact record. This enables traceability back to the source system and is used during delta-pickup runs to de-duplicate any submissions that were modified in Forms On Fire after the initial migration pass.
Forms On Fire
Form Attachment (Photo)
Freshsales
Freshsales File Attachment (on Contact)
1:1Photos captured via the Forms On Fire mobile app (image field type) are downloaded from Forms On Fire storage and re-uploaded to Freshsales as file attachments linked to the corresponding Contact record. Photos maintain their original file name and upload timestamp. Files exceeding Freshsales size limits are flagged before the full migration runs.
Forms On Fire
Form Attachment (Signature)
Freshsales
Freshsales File Attachment (on Contact)
1:1Signature fields in Forms On Fire generate PNG image files. These migrate as Freshsales attachments on the Contact record. The signature image appears in the Contact's timeline view. Signature images from old submissions are preserved but do not link to any Freshsales native e-signature workflow.
Forms On Fire
Form Barcode / QR Field
Freshsales
Custom Field: Barcode__c
1:1Barcode and QR code scan values captured via the Forms On Fire barcode field migrate to a custom text field (Barcode__c) on the Contact. This preserves the scanned identifier for inventory, asset, or asset-tracking workflows you intend to rebuild in Freshsales.
Forms On Fire
Form Location Field (GPS)
Freshsales
Custom Fields: Submission_Latitude__c, Submission_Longitude__c
1:1Forms On Fire Location fields store latitude and longitude as separate numeric values. These migrate to two custom number fields on the Contact record. Freshsales has no native map field type — these coordinates are available for reporting, map integrations, or custom app overlays, but no built-in Freshsales map visualization is created.
Forms On Fire
Form Custom Field (dropdown/choice)
Freshsales
Freshsales Custom Field (matching type)
1:1Forms On Fire Choice fields with static options map directly to Freshsales picklist custom fields. The option labels transfer as picklist values. If a Forms On Fire choice field pulls from a Data Source (dynamic options), we migrate the current snapshot of option values — dynamic lookups must be rebuilt as Freshsales Data Sources or manual picklist updates.
Forms On Fire
Form Submission (form_name / form_id)
Freshsales
Custom Field: Source_Form__c
1:1The name of the Forms On Fire form that generated the submission is stored as a custom text field (Source_Form__c) on the Contact or Lead. This is critical for segmentation — it lets you filter Freshsales reports by the originating form without requiring manual tagging post-migration.
Forms On Fire
Form Submission (device_info)
Freshsales
Not Migrated
1:1Forms On Fire captures device type, OS version, and app version metadata per submission. Freshsales has no standard or custom field that accepts device metadata in this format. This data is not migrated. If device tracking is required post-migration, the Freshsales mobile app provides its own device telemetry.
Forms On Fire
Form Workflow / Conditional Logic
Freshsales
Freshsales Workflow Rules
1:1Forms On Fire field-level conditional logic (show/hide fields, auto-populate values, routing rules) is embedded in the form definition and is not exportable as a standalone configuration. These rules must be documented and rebuilt in Freshsales Workflows. FlitStack offers a workflow audit deliverable to capture your Forms On Fire logic as a rebuild specification.
Forms On Fire
Data Source (Forms On Fire linked datasets)
Freshsales
Not Migrated
1:1Forms On Fire Data Sources are lookup datasets that populate Choice and Data fields within forms. These are not linked to submission records — they are design-time references. Freshsales has no equivalent Data Source feature. The lookup datasets must be recreated manually as Freshsales picklist values or imported as CSV-based custom objects if the lookup data needs to persist in Freshsales.
| Forms On Fire | Freshsales | Compatibility | |
|---|---|---|---|
| Form Submission | Lead / Contact1:many | Fully supported | |
| Form Submission (Company field) | Account1:1 | Fully supported | |
| Form Submission (deal_amount field) | Opportunity1:many | Fully supported | |
| Form Submission (pipeline field) | Sales Pipeline1:1 | Fully supported | |
| Form Submission (submission_timestamp) | Contact.created_at / Lead.created_at1:1 | Fully supported | |
| Form Submission (submission_id) | Custom Field: Original_Submission_ID__c1:1 | Fully supported | |
| Form Attachment (Photo) | Freshsales File Attachment (on Contact)1:1 | Fully supported | |
| Form Attachment (Signature) | Freshsales File Attachment (on Contact)1:1 | Fully supported | |
| Form Barcode / QR Field | Custom Field: Barcode__c1:1 | Fully supported | |
| Form Location Field (GPS) | Custom Fields: Submission_Latitude__c, Submission_Longitude__c1:1 | Fully supported | |
| Form Custom Field (dropdown/choice) | Freshsales Custom Field (matching type)1:1 | Fully supported | |
| Form Submission (form_name / form_id) | Custom Field: Source_Form__c1:1 | Fully supported | |
| Form Submission (device_info) | Not Migrated1:1 | Fully supported | |
| Form Workflow / Conditional Logic | Freshsales Workflow Rules1:1 | Fully supported | |
| Data Source (Forms On Fire linked datasets) | Not Migrated1: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.
Forms On Fire gotchas
Standard tier entry limits silently gate historical data
dotx template linkage breaks Word document generation
Data Source auto-select behavior can silently alter form state
Enterprise requires 25+ users minimum
Non-Office document generation not supported
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 Forms On Fire forms and map to Freshsales schema
FlitStack connects to Forms On Fire via API and inventories every form template, custom field definition, and submission count. We identify which forms contain contact data (name, email, phone), which contain deal fields (amount, stage), which include attachments, and which contain GPS or barcode fields. We produce a Form-to-Freshsales object mapping plan: which forms generate Contacts, which generate Leads, which generate Opportunities, and which custom fields require Freshsales custom field creation. This plan is reviewed with your team before any schema changes are made in Freshsales.
Create Freshsales custom fields and configure pipeline setup
Before submission data moves, we create all required Freshsales custom fields identified in the audit: Original_Submission_ID__c, Source_Form__c, Submission_Latitude__c, Submission_Longitude__c, Barcode__c, and any form-specific custom fields with no standard equivalent. If the forms include deal fields, we also configure the Freshsales Sales Pipeline and stage names. Account deduplication rules are documented so your Freshsales admin can clean up duplicate company name variants before the migration load runs.
Resolve submission owners and handle email-less records
Forms On Fire does not have a native user/owner model tied to submissions. If your team has been tracking which rep created or owns a submission, we match the owner email against Freshsales users by email lookup. Submissions without an email address are flagged as a separate batch — your team decides whether these become anonymous Leads (default) or are excluded from migration. We surface the email-less submission count during discovery so this decision is made before migration, not during it.
Run a sample migration with field-level diff
A representative slice of 200–500 submissions across your most-used form templates migrates first. We generate a field-level diff: every Forms On Fire field value is shown alongside its Freshsales equivalent so you can verify that company names correctly link to Accounts, that photo attachments are present on Contact records, and that custom field values landed in the right Freshsales fields. Custom field mapping is validated at this stage. We do not proceed to full migration until the sample diff is approved.
Execute full migration with delta-pickup window
The full submission set migrates using Freshsales REST API batch operations, respecting rate limits for your plan tier (10,000 calls/day on Growth; higher on Pro/Enterprise). A delta-pickup window of 24–48 hours runs concurrently: any submissions created or modified in Forms On Fire during the migration window are captured and loaded into Freshsales before cutover. Photos and signatures are re-uploaded as Freshsales file attachments. An audit log is produced listing every record migrated, every attachment loaded, and any records that failed with error codes. One-click rollback reverts all migrated records if reconciliation fails.
Platform deep dives
Forms On Fire
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 Forms On Fire 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
Forms On Fire: Not publicly documented.
Data volume sensitivity
Forms On Fire 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 Forms On Fire to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Forms On Fire 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 Forms On Fire
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.