CRM migration
Field-level mapping, validation, and rollback between Actito and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Actito
Source
Odoo CRM
Destination
Compatibility
2 of 12
objects map 1:1 between Actito and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Actito and Odoo CRM serve different primary functions: Actito is a European marketing automation platform built around a customizable Profile data model with multi-channel campaign and scenario orchestration, while Odoo CRM is the sales and pipeline management layer of the Odoo open-source ERP suite. The migration from Actito to Odoo CRM is therefore a functional pivot from a marketing-centric to a sales-centric data model. We translate Actito Profiles into Odoo Contacts and Companies, map Custom Tables to custom fields on the Contact or a related custom model, preserve entity-based partitioning as Odoo multi-company assignments, and migrate subscription and preference data as structured contact attributes. We do not migrate Actito Scenarios (automated workflows) or campaign configurations as code; we deliver a written inventory of every scenario and campaign requiring rebuild in Odoo Studio Automation or Email Marketing. The migration is scoped to CRM-record objects only; Actito marketing automation functions that have no Odoo CRM equivalent are documented as gaps for the customer to address with a marketing implementation partner or Odoo's Email Marketing app.
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 Actito 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.
Actito
Profile
Odoo CRM
Contact
1:1Actito Profiles are the central record type and map directly to Odoo CRM Contacts. All standard profile attributes (email, name, phone, address fields) map to Contact fields. Custom profile attributes migrate as custom fields on the Contact model (ir.model.fields with res.partner as the model). We preserve the original Actito profile ID in a custom field actito_profile_id__c for reconciliation and cross-reference.
Actito
Profile
Odoo CRM
Company (res.partner with is_company=True)
lossyFor profiles where the company_name attribute is populated and the profile represents a business rather than an individual, we create a separate res.partner record with is_company=True and link the Contact as a child. We use the Actito profile's company_name field to create the Company record and set the Contact's parent_id to the Company after both are inserted.
Actito
Custom Table
Odoo CRM
Custom Fields on Contact or ir.model.model
lossyActito Custom Tables linked to Profiles are translated into Odoo CRM as custom fields on res.partner (for profile-level attributes) or as a standalone custom model (for tables with a many-to-one relationship to profiles and their own attribute set). We inspect the table schema during scoping, create the Odoo field definitions (char, integer, float, boolean, date, datetime, selection, many2one, text) before migration, and import the data as contact custom field values.
Actito
Entity
Odoo CRM
Company (multi-company assignment)
lossyActito entities partition all resources (profiles, custom tables, campaigns, scenarios) within a licence. Odoo CRM uses the multi-company feature (res.company) to partition records. We map each Actito entity to a corresponding res.company record, configure multi-company rules in Odoo's access control (ir.rule), and assign Contact records to the correct company during import. If the customer has only one entity, no multi-company configuration is required.
Actito
Campaign (email, SMS, push)
Odoo CRM
Email Marketing Campaign (configuration only)
lossyActito campaign configuration metadata (name, schedule, targeting criteria, channel) migrates as campaign records in Odoo Email Marketing. We map the campaign name, channel type, and targeting segment definition (as a written note referencing the Actito segment). We do not migrate campaign content or HTML templates; these require reconstruction in Odoo's WYSIWYG email builder. Push channel campaigns have no Odoo CRM equivalent and are documented as a gap.
Actito
Scenario
Odoo CRM
Studio Automation (documentation only)
lossyActito Scenarios (event-triggered automation workflows) are documented in a written inventory delivered to the customer. Each entry describes the trigger condition, branching logic, action steps, and API-call or webhook destinations. Odoo Studio Automations use a different trigger-action model; the customer or an Odoo partner rebuilds them post-migration. We do not implement Studio Automations as part of the data migration scope.
Actito
Subscription and Preference
Odoo CRM
Custom Fields on Contact (preference tree)
lossyActito subscription opt-in and preference data (double opt-in status, channel-level consent flags, subscription source, GDPR attributes) migrates as structured custom fields on the Contact record. Channel preferences (email, SMS, push, postal) map to boolean custom fields (e.g., consent_email__c, consent_sms__c). Preference dates and sources map to datetime and selection fields respectively. We preserve the full preference tree as a set of custom fields rather than a JSON blob for native Odoo filtering and segmentation.
Actito
Campaign Interaction Event
Odoo CRM
CRM Activity (Activity Log)
1:1Actito campaign interaction events (opens, clicks, bounces, unsubscribes) are exported via Actito's ETL or campaign reporting export. We migrate these as CRM Activities (crm.activity or note) on the relevant Contact record with the event type, timestamp, and campaign reference preserved in custom fields. Note: interaction events are generated by Actito's platform and exported from campaign reports rather than the standard API, so the customer must run the campaign export job before scoping.
Actito
Goal and Web Tracking Definition
Odoo CRM
UTM / Tracking Custom Fields
lossyActito web tracking goals and behavioural event definitions migrate as Odoo CRM custom fields on Contact or as tags (mail.mt.tag) used for segmentation. Goal names and trigger conditions are documented as field labels; UTM source/medium/campaign values from Actito tracking URLs are stored in dedicated custom fields (utm_source__c, utm_medium__c, utm_campaign__c) for reporting continuity.
Actito
Targeting Criteria (Segments)
Odoo CRM
Odoo Filters / Segment Actions
lossyActito segment-building rules (profile selection criteria using operators like 'is last month', 'has attribute equal to', 'belongs to') are translated into Odoo domain filter expressions and documented as an inventory. Complex criteria using Actito-specific temporal operators are noted as requiring manual rebuild in Odoo using the domain filter builder. Segment membership itself migrates as a contact tag (mail.mt.tag) for each Actito segment.
Actito
Webhook and ETL Definition
Odoo CRM
Webhook Configuration (external.system.job)
lossyETL jobs and webhook subscriptions defined in Actito are documented as a configuration inventory. Since webhook target URLs and ETL credentials are destination-specific, we preserve the job structure (schedule, source entity, export format) and flag endpoint URLs that must be reconfigured to point at Odoo or the customer's other systems. Odoo has an incoming webhook module (webhook module on apps.odoo.com) if the customer wants to receive external events.
Actito
Channel Configuration (Email Sender)
Odoo CRM
Email Alias / Outgoing Mail Server
lossyActito channel sender configurations (FROM name, reply-to, email address per channel) migrate to Odoo's outgoing mail server configuration (ir.mail_server). DNS authentication records (DKIM, SPF, return-path) must be reconfigured on the customer's mail infrastructure; we document the Actito DNS records as a checklist for the customer's IT team to reapply against Odoo's mail sending method.
| Actito | Odoo CRM | Compatibility | |
|---|---|---|---|
| Profile | Contact1:1 | Fully supported | |
| Profile | Company (res.partner with is_company=True)lossy | Fully supported | |
| Custom Table | Custom Fields on Contact or ir.model.modellossy | Fully supported | |
| Entity | Company (multi-company assignment)lossy | Fully supported | |
| Campaign (email, SMS, push) | Email Marketing Campaign (configuration only)lossy | Fully supported | |
| Scenario | Studio Automation (documentation only)lossy | Fully supported | |
| Subscription and Preference | Custom Fields on Contact (preference tree)lossy | Fully supported | |
| Campaign Interaction Event | CRM Activity (Activity Log)1:1 | Fully supported | |
| Goal and Web Tracking Definition | UTM / Tracking Custom Fieldslossy | Fully supported | |
| Targeting Criteria (Segments) | Odoo Filters / Segment Actionslossy | Fully supported | |
| Webhook and ETL Definition | Webhook Configuration (external.system.job)lossy | Fully supported | |
| Channel Configuration (Email Sender) | Email Alias / Outgoing Mail Serverlossy | 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.
Actito gotchas
API rate limit of 100 req/min is restrictive for bulk migration
V4 deprecation overlap requires migration path sequencing
Push notification migration excludes campaign history
Maximum 5 API keys per licence constrains parallel migration workers
Excel export row limitation conflicts with large dataset expectations
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
Discovery and scoping
We audit the Actito licence across entities, profile count, custom table definitions (schema, field types, relationships to profiles), scenario count and complexity, campaign configuration count and channel types, subscription preference schema, and engagement event volume. We pair this with an Odoo edition decision: Community (free, self-hosted) covers most CRM migrations; Odoo Online Standard (from €20/user/month) adds hosting and automatic updates; Odoo Online Enterprise adds support and exclusive apps. The discovery output is a written migration scope document covering every Actito object, its Odoo destination, the transform logic, and any objects flagged as not migrating.
Schema design and custom field creation
We design the destination schema in Odoo before any data import. This includes creating custom fields on res.partner for every Actito custom profile attribute (with the correct Odoo field type: char, integer, float, boolean, date, datetime, selection), creating any standalone custom models for complex custom tables with their own attribute set, configuring multi-company records (res.company) if Actito entities require isolation, and creating contact tags (mail.mt.tag) for Actito segments. Schema changes are deployed to a staging Odoo database first for validation. We also configure the Odoo outgoing mail server and document the DNS reconfiguration checklist for email deliverability.
Staging migration and reconciliation
We run a full migration into a staging Odoo database using production-equivalent data volume. The customer's RevOps lead reconciles record counts (Contacts in, Companies in, segment tags in, custom field values in), spot-checks 25-50 random records against the Actito source, and validates that custom field values match the source attributes exactly. Any mapping corrections (field type mismatches, date format errors, country lookup failures) are resolved in the staging database before production migration begins.
ETL export and data preparation
We extract Actito profile data via ETL export jobs (preferred for volume) or API calls in rate-limited batches. Custom table data is exported as separate CSV files with the profile ID as the foreign key. Campaign interaction events are exported from Actito's campaign reporting module (not the standard API) and prepared as activity import files. We validate all export files for completeness, check for duplicate profile IDs, verify that required fields (email, firstname, lastname) are populated, and flag any records with missing mandatory fields for customer resolution before import.
Production migration in dependency order
We run production migration in record-dependency order: multi-company records (if required), then Companies (from Actito profiles with company_name populated), then Contacts (with parent_id resolved to the correct Company), then custom field values (linked by Actito profile ID), then contact tags (from segment membership), then engagement events (as CRM activities or notes), then campaign configurations (as mailing records with targeting documentation). Each phase emits a row-count reconciliation report before the next phase begins. The Actito API rate limit is respected throughout using batch scheduling and ETL export fallback.
Cutover, validation, and automation handoff
We freeze Actito writes during the cutover window, run a final delta migration of any records modified during the migration, then enable Odoo CRM as the system of record. We deliver the Scenario and Campaign automation inventory document to the customer's admin team with rebuild recommendations. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Actito Scenarios as Odoo Studio Automations inside the migration scope; that work is handled by the customer's admin team or an Odoo implementation partner as a separate engagement.
Platform deep dives
Actito
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Actito and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Actito and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Actito 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
Actito: 100 requests per minute per licence; 5 concurrent requests maximum; 5 API keys per licence.
Data volume sensitivity
Actito exposes a bulk API — large-volume migrations stream efficiently.
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 Actito to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Actito 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 Actito
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.