CRM migration

Migrate from FotoNotes to Freshsales

Field-level mapping, validation, and rollback between FotoNotes and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.

FotoNotes logo

FotoNotes

Source

Freshsales

Destination

Freshsales logo

Compatibility

100%

10 of 10

objects map 1:1 between FotoNotes and Freshsales.

Complexity

BStandard

Timeline

48–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

FotoNotes and Freshsales occupy almost opposite ends of the business software spectrum. FotoNotes is a field-service and property-inspection platform built around a Container/Containee hierarchy — where a Property record (Container) can hold multiple Work Orders and Inspections (Containees), each with GPS coordinates, signature captures, photo documentation, and job-costing fields. Freshsales is a sales CRM built around Leads, Contacts, Accounts, and Deals with an AI layer (Freddy AI), built-in phone/email/chat, and lifecycle stage tracking. The migration therefore requires not just field translation but a structural re-conceptualization: FotoNotes data does not fit naturally into Freshsales CRM objects and must be decomposed carefully. FlitStack AI extracts FotoNotes data via batch exports (CSV and bulk download where available) and maps it into Freshsales using their REST API. We migrate all standard objects — Accounts representing Properties, Tasks representing Work Orders, Notes representing Inspections, Contacts representing Customers and Users — with custom fields on each object to preserve FotoNotes identifiers, coordinates, job types, and photo counts. FotoNotes has no documented public API, so migration depends on the platform's built-in export mechanisms and the CSV export feature. This affects sequencing and timing. No workflows, automations, or permission structures migrate from FotoNotes; those are field-service concepts with no Freshsales equivalent and must be rebuilt if needed. The Container/Containee parent-child hierarchy maps to Freshsales Account lookups using custom fields so the property tree remains traceable after migration.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

FotoNotes logo

FotoNotes

What's pushing teams away

  • Status updates on work orders sometimes fail to sync across the web portal and mobile app, causing field supervisors to lose visibility on which properties have been completed.
  • The platform rebranded from FotoNotes to SiteCapture in 2022, and the two product names cause confusion during vendor evaluation and support escalation — existing customers on the legacy FotoNotes branding struggle to locate updated documentation and pricing pages.
  • Batch report generation is an admin-only feature, so front-line field managers who need on-demand PDF summaries must request exports from a portal admin rather than generating them independently.
  • Custom fields created via templates are per-account and not easily documented — when migrating off platform, the complete field schema requires manual enumeration from within the portal admin settings.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How FotoNotes objects map to Freshsales

Each row shows how a FotoNotes 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.

FotoNotes

Container (Property)

maps to

Freshsales

Account

1:1
Fully supported

Each FotoNotes Property record (Container) migrates as one Freshsales Account. We create custom fields on the Account to store the original FotoNotes Container ID (fotonotes_container_id__c), parent container ID for hierarchy (fotonotes_parent_id__c), GPS coordinates (fotonotes_lat__c, fotonotes_lng__c), photo count (fotonotes_photo_count__c), and job type (fotonotes_job_type__c). The Account Name maps to the Property name. This preserves the full FotoNotes property context inside Freshsales without requiring a separate custom object.

FotoNotes

Containee (Work Order)

maps to

Freshsales

Task

1:1
Fully supported

FotoNotes Work Order records migrate as Freshsales Tasks linked to the parent Account (Property). Task Subject becomes the Work Order title. We map FotoNotes status values (New, In Progress, Completed, On Hold) to Freshsales Task status (Not Started, In Progress, Completed, Waiting on someone else) using value mapping. Priority migrates as a custom pick-list field (Task Priority). Scheduling date and completion date store as Task Due Date and custom completion date field respectively. The original Work Order ID stores as fotonotes_work_order_id__c on the Task for traceability.

FotoNotes

Containee (Inspection)

maps to

Freshsales

Note

1:1
Fully supported

FotoNotes Inspection records migrate as Freshsales Notes linked to the parent Account. The Note Title becomes the Inspection name. Inspection details, findings, and checklist results map into the Note Body field as structured text. Photo references and attachments from the Inspection re-upload as Freshsales Files linked to the Note. A custom field (fotonotes_inspection_id__c) stores the original FotoNotes ID. Since Freshsales Notes support rich text, formatted inspection checklists render inside the Note.

FotoNotes

Customer

maps to

Freshsales

Contact

1:1
Fully supported

FotoNotes Customer records — property owners or clients associated with a Container — migrate as Freshsales Contacts linked to the parent Account. Contact name, email, phone, and address fields map directly. A custom field (fotonotes_customer_id__c) preserves the original FotoNotes Customer ID. Customer portal visibility settings from FotoNotes do not have a Freshsales equivalent and are noted for manual configuration post-migration.

FotoNotes

User / Field User

maps to

Freshsales

Contact / Owner

1:1
Fully supported

FotoNotes Users (internal staff who create and manage Work Orders) and Field Users (technicians who execute work) do not map directly to Freshsales Users — Freshsales system users are licensed seats, not field workers. We migrate User records as Freshsales Contacts with a custom field (fotonotes_user_id__c) and a role flag (is_fotoNotes_field_user__c) to distinguish field technicians from administrative users. If FotoNotes User email matches a Freshsales system user by email, we resolve Owner accordingly for Task assignment.

FotoNotes

Container Hierarchy (Parent/Child)

maps to

Freshsales

Account.ParentId Lookup

1:1
Fully supported

FotoNotes supports parent-child Container relationships (e.g., a Building as parent, individual Units as children). Freshsales Accounts support a native Parent Account lookup. We map FotoNotes parent container to Freshsales ParentId on the Account object. Child Container records migrate first, then the parent — in the correct sequence — so the ParentId foreign key resolves on insert. A custom field (fotonotes_container_level__c) stores the hierarchy depth for reporting.

FotoNotes

Attachment / Photo

maps to

Freshsales

File Attachment

1:1
Fully supported

FotoNotes photo attachments and documents on Work Orders and Inspections re-upload to Freshsales as Files linked to the parent Task or Note. We download photos from FotoNotes export bundles and re-upload to Freshsales Files, preserving original filenames and capture timestamps. Freshsales file attachment limits apply (25MB per file). Inline images in inspection notes are extracted and re-hosted as separate Files.

FotoNotes

Work Order Status

maps to

Freshsales

Task Status

1:1
Fully supported

FotoNotes Work Order status values (New, In Progress, On Hold, Completed, Cancelled) require value-by-value mapping to Freshsales Task status values (Not Started, In Progress, Waiting on someone else, Completed). Status change timestamps from FotoNotes store as custom datetime fields on the Freshsales Task since Freshsales does not track Task status history natively. This preserves the full work-order lifecycle for audit and reporting.

FotoNotes

Signature Capture

maps to

Freshsales

File Attachment

1:1
Fully supported

FotoNotes captures customer and field-worker signatures on Work Orders as image files. These migrate as Freshsales Files attached to the corresponding Task. A custom field (fotonotes_signature_type__c) records whether the signature is from a customer or field user. Freshsales does not have a native Signature field — the attachment approach preserves the artifact and links it to the record.

FotoNotes

Report Template

maps to

Freshsales

No Equivalent

1:1
Fully supported

FotoNotes Report Templates — configurable PDF report layouts with branding and section ordering — have no Freshsales equivalent. Freshsales does not support custom PDF report templates. We export FotoNotes report templates as reference documents and recommend rebuilding the most critical templates in Freshsales or a third-party PDF tool post-migration. This is disclosed upfront so teams budget the rebuild effort.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

FotoNotes logo

FotoNotes gotchas

High

Container-to-contained field inheritance is implicit

Medium

Batch PDF reports are the only bulk export mechanism

Medium

Vendor sub-accounts require hierarchical mapping

Low

FotoNotes is now SiteCapture — documentation split

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • FotoNotes has no public REST API — migration depends on built-in export mechanisms

    Unlike most CRMs with documented REST APIs, FotoNotes has no publicly accessible API referenced in their developer documentation. Migration relies on the platform's CSV export feature and batch PDF download capability. This affects how we sequence extraction and can extend the planning phase. We audit the export capabilities available on each FotoNotes plan before confirming migration timelines, and we recommend exporting all data before requesting any account changes in FotoNotes. If CSV export is limited on the current plan, we advise upgrading or using bulk download to ensure complete record retrieval before the migration window opens.

  • Container/Containee hierarchy requires Freshsales custom fields — there is no native equivalent

    FotoNotes organizes data in a parent-child Container/Containee model — a Property (Container) can hold multiple Work Orders and Inspections (Containees), and Containers can nest within other Containers (e.g., Building → Units). Freshsales has no equivalent hierarchy construct at the object level. The parent-child relationship must be modeled using Freshsales Account.ParentId for Container-to-Container relationships and custom fields (fotonotes_property_id__c on Tasks) for Containee-to-Container relationships. We deliver a schema setup plan for these custom fields before data lands. If the hierarchy is deep (more than 3 levels), we recommend flattening or using Freshsales custom objects with lookup fields to avoid complexity.

  • Work order status values do not map natively to Freshsales Task status

    FotoNotes defines Work Order status values (New, In Progress, On Hold, Completed, Cancelled) that do not align one-to-one with Freshsales Task status values (Not Started, In Progress, Waiting on someone else, Completed). We perform value-by-value mapping during migration — FotoNotes On Hold maps to Freshsales Waiting on someone else, FotoNotes Cancelled maps to Cancelled (if enabled on the Freshsales plan). Status change timestamps from FotoNotes are preserved as a custom datetime field (fotonotes_status_changed__c) since Freshsales Tasks do not natively track status history. Teams should review the mapped values in the sample migration before the full run.

  • FotoNotes Report Templates have no Freshsales equivalent — PDF templates must be rebuilt

    FotoNotes Report Templates — configurable PDF report layouts with branding, section ordering, and logo placement — have no counterpart in Freshsales. Freshsales does not support custom PDF report templates at the CRM level. We export FotoNotes report templates as reference documents and flag the rebuild as a post-migration task. Teams should identify the 3–5 most-used report templates before migration and plan the rebuild effort in Freshsales using a third-party PDF tool or Freshsales' standard report exports. This is a known gap disclosed upfront so it does not surprise teams at go-live.

  • Owner resolution requires email matching — unmatched FotoNotes users need a fallback

    FotoNotes assigns Work Orders to Field Users and Managers by internal user ID. Freshsales Tasks require an OwnerId referencing a licensed system user. We resolve FotoNotes owner IDs to Freshsales users by email match. Any FotoNotes user whose email does not match a Freshsales system user is flagged before migration. Teams must either invite those users to Freshsales before migration or designate a fallback owner (e.g., the Account Manager) for their records. We surface this list during the planning phase so no record lands without an owner assignment.

Migration approach

Six steps for a successful FotoNotes to Freshsales data migration

  1. Audit FotoNotes export capabilities and plan extraction sequencing

    Since FotoNotes has no public API, we begin by identifying the available export mechanisms on each FotoNotes plan — CSV export scope, batch PDF download limits, and any data retention policies. We map each Container, Containee, and attachment type to a Freshsales target object and identify which custom fields are needed. The audit also surfaces which FotoNotes users have export permissions and whether the account plan supports bulk operations. This step determines the extraction timeline and whether we need to request plan upgrades before migration begins. We deliver a data inventory document listing every object type, record count, and photo attachment volume before proceeding.

  2. Set up Freshsales schema with custom fields and parent-account hierarchy

    We create all required custom fields on Freshsales Accounts, Tasks, Notes, and Contacts before any data is written — including fotonotes_container_id__c, fotonotes_parent_id__c, fotonotes_property_id__c, fotonotes_lat__c, fotonotes_lng__c, fotonotes_photo_count__c, fotonotes_job_type__c, fotonotes_priority__c, fotonotes_completed_date__c, fotonotes_timezone__c, fotonotes_job_cost__c, fotonotes_containee_type__c, and fotonotes_sequence__c. We also configure the Account.ParentId hierarchy for multi-level Container relationships. We deliver a Freshsales setup checklist so your admin can pre-create the schema or approve our field creation before the migration run.

  3. Resolve owners and users by email match against Freshsales users

    FotoNotes Field Users and Managers are matched to Freshsales system users by email address. We generate a pre-migration owner resolution report listing every FotoNotes user, their matched Freshsales user (if any), and records assigned to unmatched users. Your team either invites the missing users to Freshsales or designates a fallback owner. We do not migrate a record without a confirmed OwnerId — unowned records in Freshsales cause reporting gaps. This step runs concurrently with schema setup so owner resolution is complete before data insertion begins.

  4. Run a sample migration with field-level verification before full data commit

    We migrate a representative slice — typically 100–300 records spanning the full range of object types (Containers, Containees of different types, Customers, photos) — and generate a field-level diff comparing source FotoNotes values to destination Freshsales values. We verify Container-to-Account name mapping, Work Order-to-Task status value mapping, Containee-to-Note body rendering, photo attachment presence, and ParentId hierarchy resolution. You review the sample diff and approve before we schedule the full migration run. This prevents rework on the full dataset.

  5. Execute full migration and capture in-flight changes during delta-pickup window

    The full migration runs against Freshsales using their REST API. A delta-pickup window (24–48 hours post-migration) captures any FotoNotes records created or modified during the cutover period so Freshsales reflects the final state at go-live. We run field-level validation on every record — Container count, Containee count, status mapping completeness, photo attachment count — and generate an audit log. If reconciliation reveals gaps, one-click rollback reverts the Freshsales environment to its pre-migration state. Your team retains full FotoNotes access throughout; FlitStack uses scoped read access only.

Platform deep dives

Context on both ends of the pair

FotoNotes logo

FotoNotes

Source

Strengths

  • Photo-first inspection workflow with mobile app capture and cloud sync across devices
  • Container/containee data model reduces duplicate property data across large portfolios
  • Supports seven distinct user roles including vendor admin and customer read-only access
  • Batch PDF report exports allow portfolio-level review across multiple properties at once
  • Field user mobile app works offline and syncs when connectivity is restored

Weaknesses

  • The FotoNotes-to-SiteCapture rebranding splits web presence and creates documentation gaps for legacy customers
  • Granular role-based permissions require careful mapping during migration — vendor admin and customer roles do not map directly to standard CRM roles
  • Custom work type templates vary by account, making schema extraction non-trivial without direct portal admin access
  • Status synchronization issues between web and mobile are an ongoing pain point reported in user reviews
  • No publicly documented public API means programmatic data export relies on the admin batch report feature rather than a REST endpoint
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across FotoNotes and Freshsales.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    FotoNotes: Not publicly documented.

  • Data volume sensitivity

    B

    FotoNotes doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your FotoNotes to Freshsales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about FotoNotes to Freshsales data migrations

Answers to the questions buyers ask most during FotoNotes to Freshsales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your FotoNotes to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most FotoNotes-to-Freshsales migrations complete within 48–96 hours of clock time for setups with fewer than 25,000 records and a flat container hierarchy. Complex setups with deep parent-child Container relationships (more than three levels), large photo attachment volumes, or missing API export access extend to 3–7 days. The longest planning step is auditing FotoNotes export capabilities and setting up the Freshsales custom field schema before data insertion begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from FotoNotes.
Land in Freshsales, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day