CRM migration
Field-level mapping, validation, and rollback between GoCanvas and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
GoCanvas
Source
Odoo CRM
Destination
Compatibility
14 of 15
objects map 1:1 between GoCanvas and Odoo CRM.
Complexity
BStandard
Timeline
3–7 days
Overview
GoCanvas is a mobile-first field data collection platform — not a CRM — where the primary record is a Submission tied to a Form definition. Submissions carry submitter details (name, email, phone, address), device-captured metadata (GPS, timestamps), custom form field values, and file attachments. Odoo CRM stores everything in the crm.lead model (which serves both Lead and Opportunity records) and res.partner for contacts, with stage progression managed via crm.stage pipeline IDs. The migration maps each GoCanvas submission with identifiable contact data into an Odoo crm.lead record; form metadata (form name, submission ID, device type) persists in custom fields on the lead. Custom form fields that have no Odoo CRM native equivalent require x_studio or custom field creation in Odoo before migration — we deliver a field creation plan upfront so schema is ready when data lands. GoCanvas automations (form-triggered notifications) have no Odoo CRM equivalent and must be rebuilt as Odoo CRM server actions or automated actions. GoCanvas API v3 uses REST JSON with Bearer authentication; Odoo uses XML-RPC with execute_kw — FlitStack handles the protocol bridge during extraction and load. A delta-pickup window captures any new submissions created during the cutover window so Odoo reflects GoCanvas's final state at go-live.
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 GoCanvas object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
GoCanvas
Submission
Odoo CRM
crm.lead
1:1GoCanvas submissions are the primary data record. Each submission containing identifiable contact fields (name, email, phone) maps to one Odoo crm.lead. The Form name becomes preserved in a custom char field (x_gocanvas_form_name) on the lead for reporting continuity. Submissions without contact data map to lead records with x_gocanvas_form_name only — your team decides whether to merge these into existing leads by submitter.
GoCanvas
Submitter (name/email/phone on submission)
Odoo CRM
res.partner
many:1GoCanvas stores submitter name, email, and phone per submission — not as a standalone contact object. When the same submitter appears across multiple submissions, FlitStack de-duplicates into a single res.partner record and links all corresponding crm.lead records to that partner_id. If a submitter email maps to an existing Odoo partner, the lead links to the existing record. This prevents duplicate contacts in Odoo.
GoCanvas
Submission Status
Odoo CRM
crm.stage
1:1GoCanvas submission status values (Pending, Submitted, Approved, Rejected) map to Odoo crm.stage records via a value-by-value mapping: Pending → New, Submitted → Qualified, Approved → Won, Rejected → Lost. Your Odoo admin creates these stages in the pipeline before migration. Custom GoCanvas statuses get mapped to a configurable stage or preserved as a custom selection field on the lead.
GoCanvas
Form Definition (metadata)
Odoo CRM
x_gocanvas_form_name (custom char field on crm.lead)
1:1GoCanvas Form definitions have a name and version. Since Odoo CRM has no Form concept, the form name is stored as a custom char field x_gocanvas_form_name on crm.lead. This allows Odoo reports and filters to group leads by the originating GoCanvas form without requiring a separate Form object.
GoCanvas
Custom Form Field (per form)
Odoo CRM
x_studio custom field on crm.lead
1:1GoCanvas form builder supports text, number, dropdown, photo, signature, barcode, and calculation fields. Odoo CRM custom fields (x_studio fields) handle char, float, selection, binary, and datetime types natively. We deliver a custom field creation plan per form before migration — fields like photo and signature map to Odoo ir.attachment records linked to the lead rather than stored as field values.
GoCanvas
Submission Device Metadata
Odoo CRM
x_gocanvas_device_type / x_gocanvas_latitude / x_gocanvas_longitude (custom fields on crm.lead)
1:1GoCanvas captures device type, OS version, and GPS coordinates per submission. These map to custom char and float fields on crm.lead. Latitude and longitude are useful for Odoo geo-filtering and map integrations if your team installs a geo-mapping module. Device type data helps identify which form versions are in use and whether submissions originate from mobile or desktop clients.
GoCanvas
Submission Attachments (photos, PDFs, signatures)
Odoo CRM
ir.attachment
1:1Files attached to GoCanvas submissions are re-uploaded as ir.attachment records linked to the corresponding crm.lead. Photos and signatures become binary attachments; PDF exports of submissions become ir.attachment with mimetype application/pdf. The original filename and submission date are preserved in the attachment's name and create_date fields.
GoCanvas
Submission Timestamp
Odoo CRM
x_gocanvas_submission_date (custom datetime field on crm.lead)
1:1GoCanvas records a submission date (UTC) per submission. Odoo's create_date on crm.lead reflects the migration run date, not the original submission date. We preserve the original GoCanvas submission timestamp in a custom datetime field x_gocanvas_submission_date so Odoo reports show the true field completion date.
GoCanvas
GoCanvas User / Owner
Odoo CRM
res.users
1:1GoCanvas users are tied to submissions as the submitter. In Odoo CRM, the user_id field on crm.lead assigns a sales rep. We match GoCanvas user email addresses to res.users records by email lookup. Unmatched users are flagged before migration — your Odoo admin either creates the user or assigns records to a fallback user.
GoCanvas
GoCanvas Reference Data (CSV-powered lookup fields)
Odoo CRM
Plain text in custom char field
1:1GoCanvas Reference Data allows form fields to pull values from an uploaded CSV (e.g., product catalog, asset registry). Odoo CRM has no native Reference Data equivalent. We map these fields as plain text char fields on crm.lead — your Odoo admin can rebuild the lookup as a many2one relation to an Odoo product or asset model if needed.
GoCanvas
Submission Notes / Description
Odoo CRM
mail.message on crm.lead
1:1GoCanvas text fields flagged as 'description' or 'notes' within a form map to a mail.message record on the crm.lead with body=note text, message_type=notification, and subtype=mt_note. This keeps notes visible in Odoo's activity timeline on the lead form view. The mail.message approach ensures notes appear chronologically alongside other lead interactions and email communications in the Odoo chatter.
GoCanvas
GoCanvas Groups / Teams
Odoo CRM
crm.team
1:1GoCanvas Groups organize users and form access. Odoo crm.team organizes sales reps and pipeline assignments. We map GoCanvas groups to Odoo crm.team records by name, then assign crm.lead.user_id based on the submitter's group membership in GoCanvas. Teams with no direct Odoo equivalent are created as new crm.team records during the migration setup phase.
GoCanvas
GoCanvas Workflow Handoff History
Odoo CRM
mail.message thread on crm.lead
1:1GoCanvas Workflow enables multi-user handoffs (submit → review → approve) within a single submission. Odoo CRM has no native handoff chain equivalent. Handoff history is preserved as a series of mail.message notes on the crm.lead, but the approval chain structure is not transferred — Odoo approval flows (server actions, automated actions) must be rebuilt separately.
GoCanvas
GoCanvas Automations (form-triggered notifications)
Odoo CRM
No equivalent — rebuild required
1:1GoCanvas automations trigger email or webhook actions based on form events. Odoo CRM automated actions, server actions, and base.automation rules provide equivalent functionality but must be rebuilt from scratch. We export your GoCanvas automation definitions as a reference document for your Odoo admin to reconstruct them in Odoo's automation studio.
GoCanvas
Submission Completion Duration
Odoo CRM
x_gocanvas_completion_minutes (custom float field on crm.lead)
1:1GoCanvas captures how long a submitter takes to complete a form (from first field interaction to submission). This maps to a custom float field x_gocanvas_completion_minutes on crm.lead. Useful for Odoo reporting on form efficiency and identifying bottlenecks in field data collection workflows.
| GoCanvas | Odoo CRM | Compatibility | |
|---|---|---|---|
| Submission | crm.lead1:1 | Fully supported | |
| Submitter (name/email/phone on submission) | res.partnermany:1 | Fully supported | |
| Submission Status | crm.stage1:1 | Fully supported | |
| Form Definition (metadata) | x_gocanvas_form_name (custom char field on crm.lead)1:1 | Fully supported | |
| Custom Form Field (per form) | x_studio custom field on crm.lead1:1 | Fully supported | |
| Submission Device Metadata | x_gocanvas_device_type / x_gocanvas_latitude / x_gocanvas_longitude (custom fields on crm.lead)1:1 | Fully supported | |
| Submission Attachments (photos, PDFs, signatures) | ir.attachment1:1 | Fully supported | |
| Submission Timestamp | x_gocanvas_submission_date (custom datetime field on crm.lead)1:1 | Fully supported | |
| GoCanvas User / Owner | res.users1:1 | Fully supported | |
| GoCanvas Reference Data (CSV-powered lookup fields) | Plain text in custom char field1:1 | Fully supported | |
| Submission Notes / Description | mail.message on crm.lead1:1 | Fully supported | |
| GoCanvas Groups / Teams | crm.team1:1 | Fully supported | |
| GoCanvas Workflow Handoff History | mail.message thread on crm.lead1:1 | Fully supported | |
| GoCanvas Automations (form-triggered notifications) | No equivalent — rebuild required1:1 | Fully supported | |
| Submission Completion Duration | x_gocanvas_completion_minutes (custom float field on crm.lead)1: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.
GoCanvas gotchas
API v2 deprecation forces re-authentication by May 2027
Minimum three-user billing floor regardless of actual usage
No nested table support in GoCanvas PDF Designer
Browser support gaps on Edge and Safari cause data loss
Android 13 and iOS 17 minimum version enforcement
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Discover GoCanvas forms and submission inventory
FlitStack connects to your GoCanvas account via API v3 using Bearer token authentication and enumerates all active Form definitions. We capture form name, field schema (field types, labels, Reference Data dependencies), and workflow configuration. We then query all submitted submissions across forms, capturing submission ID, form name, status, submitter details, device metadata, timestamps, and attachment URLs. A discovery report lists each form, its field count, submission volume, and an assessment of which submissions contain identifiable contact data (name, email, phone) — these are the candidates for crm.lead creation. The report also flags submissions with no contact data so your team can decide whether to create anonymous leads or exclude them.
Design Odoo CRM schema and custom field creation plan
Before data moves into Odoo, FlitStack delivers a schema setup plan based on the GoCanvas form inventory. For each GoCanvas form, we identify custom field mappings: fields with direct Odoo equivalents (text→char, number→float, phone→phone) use native crm.lead fields where possible; fields with no native equivalent require x_studio field creation. The plan specifies the field name, Odoo ttype, and whether the field should appear on the lead form view or only in Odoo Studio. Reference Data fields are flagged separately for manual many2one reconstruction. Your Odoo admin creates the custom fields (or FlitStack creates them via XML-RPC if given admin credentials). The crm.team and crm.stage records are also pre-created per the mapping plan — stage names mapped from GoCanvas submission statuses.
Resolve GoCanvas users to Odoo res.users by email
GoCanvas users (submitters, reviewers) map to Odoo res.users by email address match. FlitStack queries your Odoo instance via XML-RPC to retrieve existing res.users records, then builds a resolution map: GoCanvas user email → Odoo user ID. Unmatched users — those with GoCanvas accounts but no corresponding Odoo login — are flagged in a pre-migration report. Your Odoo admin either creates the user in Odoo before migration or assigns their submissions to a fallback user (configurable by your team). No crm.lead is created without a resolved user_id unless your team specifies that anonymous leads are acceptable.
Run sample migration with field-level diff
A representative slice migrates first — typically 50–200 submissions spanning your most-used forms, including submissions with full contact data, partial contact data, attachments, and custom field values. FlitStack writes to a test Odoo database (or a sandbox environment) and generates a field-level diff comparing the source GoCanvas submission data against the destination crm.lead fields in Odoo. The diff covers: lead name, stage_id mapping, submitter → partner resolution, custom field values, attachment presence, and x_gocanvas_* metadata fields. You review the diff, confirm the mapping logic, and flag any field corrections before the full migration runs. This step typically takes 1–2 days depending on form complexity.
Execute full migration with delta-pickup window
The full migration runs against your production Odoo instance using the validated mapping from the sample step. Submissions are processed in dependency order: res.partner records created or matched first (for de-duplication), then crm.lead records written with all field mappings and custom field values, then ir.attachment records re-uploaded from GoCanvas download URLs. A delta-pickup window (24–48 hours) runs concurrently with the cutover: any new submissions created in GoCanvas during the migration window are captured and written to Odoo at the end of the run. The audit log records every write operation. If reconciliation fails (record count mismatch, attachment missing), FlitStack provides a one-click rollback that reverts the crm.lead and ir.attachment writes to the pre-migration state.
Deliver migration audit log and rebuild reference for Odoo automations
After migration, FlitStack delivers a complete audit log: record counts by form, crm.lead creation count, partner merge count, attachment upload count, and a list of any submissions that failed to migrate with error reasons. A reconciliation report compares total GoCanvas submission count against total crm.lead records created in Odoo, with a discrepancy breakdown. For GoCanvas automations and workflow handoffs that cannot migrate (no Odoo equivalent), FlitStack exports the automation definitions as a structured JSON reference document so your Odoo admin can rebuild them in Odoo's automated actions or server actions studio. This export does not activate the automations — it serves as a rebuild specification.
Platform deep dives
GoCanvas
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between GoCanvas and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across GoCanvas and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between GoCanvas and Odoo CRM.
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
GoCanvas: Not publicly documented.
Data volume sensitivity
GoCanvas 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 GoCanvas to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your GoCanvas to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave GoCanvas
Other ways to arrive at Odoo CRM
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.