CRM migration

Migrate from Actito to Odoo CRM

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

Actito logo

Actito

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

17%

2 of 12

objects map 1:1 between Actito and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Actito logo

Actito

What's pushing teams away

  • Segmentation builder is cumbersome — G2 reviewers consistently flag the segment-building interface as non-streamlined, with multi-step workflows that slow teams down compared to lighter-weight tools like Mailchimp or Brevo.
  • Steep learning curve for non-power users — multiple reviews note the platform is feature-dense and takes time to master, which becomes a problem for teams with high marketer turnover or those who only need surface-level functionality.
  • Pricing is sales-led with no transparent published tiers — buyers comparing Actito against Mailchimp, Brevo, or Customer.io often cite the demo-only pricing path and higher floor as friction during procurement.
  • Integration deployment time — connector configuration and rollout is reported as slow, which pushes teams toward platforms with larger pre-built integration marketplaces (HubSpot, Emarsys) when timelines are tight.
  • Complexity is overkill for small teams — startups and SMBs comparing Actito to Mailchimp or Brevo find the platform's customization depth and entity model unnecessary for simpler email and SMS use cases at a fraction of the cost.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Actito objects map to Odoo CRM

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

maps to

Odoo CRM

Contact

1:1
Fully supported

Actito 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

maps to

Odoo CRM

Company (res.partner with is_company=True)

lossy
Fully supported

For 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

maps to

Odoo CRM

Custom Fields on Contact or ir.model.model

lossy
Fully supported

Actito 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

maps to

Odoo CRM

Company (multi-company assignment)

lossy
Fully supported

Actito 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)

maps to

Odoo CRM

Email Marketing Campaign (configuration only)

lossy
Fully supported

Actito 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

maps to

Odoo CRM

Studio Automation (documentation only)

lossy
Fully supported

Actito 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

maps to

Odoo CRM

Custom Fields on Contact (preference tree)

lossy
Fully supported

Actito 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

maps to

Odoo CRM

CRM Activity (Activity Log)

1:1
Fully supported

Actito 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

maps to

Odoo CRM

UTM / Tracking Custom Fields

lossy
Fully supported

Actito 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)

maps to

Odoo CRM

Odoo Filters / Segment Actions

lossy
Fully supported

Actito 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

maps to

Odoo CRM

Webhook Configuration (external.system.job)

lossy
Fully supported

ETL 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)

maps to

Odoo CRM

Email Alias / Outgoing Mail Server

lossy
Fully supported

Actito 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.

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.

Actito logo

Actito gotchas

High

API rate limit of 100 req/min is restrictive for bulk migration

Medium

V4 deprecation overlap requires migration path sequencing

Medium

Push notification migration excludes campaign history

Medium

Maximum 5 API keys per licence constrains parallel migration workers

Low

Excel export row limitation conflicts with large dataset expectations

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Actito entity partitioning has no direct Odoo multi-company equivalent

    Actito entities partition all resources including profiles, custom tables, campaigns, and scenarios within a licence, enabling B2C/B2B co-existence without data cross-contamination. Odoo CRM does not have an entity feature; it uses the multi-company feature (res.company) which partitions records by company_id but does not partition custom table definitions or campaign configurations. We map Actito entities to Odoo res.company records and configure ir.rule access controls to enforce data isolation, but campaign configurations and custom table schemas are org-wide in Odoo unless the customer licenses separate Odoo databases. During scoping we confirm whether the Actito licence has one or multiple entities and whether multi-company isolation is required for profiles, custom tables, or both.

  • Actito profiles use a flat attribute model; Odoo requires structured object relationships

    Actito profiles are flexible, flat record types where any attribute can be a standard field or a custom table reference. Odoo CRM separates Contacts from Companies and requires the Contact to have a parent_id pointing to a res.partner with is_company=True for business records. We resolve this by running a two-phase import: companies from Actito profiles where company_name is populated, then contacts with parent_id resolved to the company. Any Actito profiles without a company_name become individual contacts without a parent. Custom table references require pre-creation of Odoo custom fields or custom models with lookup relationships defined before data import begins; importing into undefined custom fields causes silent field skipping.

  • Actito Scenarios and campaign logic do not migrate to Odoo Studio Automations

    Actito Scenarios are event-triggered automation workflows with branching rules, API-call actions, and webhook triggers that have no structural equivalent in Odoo CRM. Odoo Studio Automations use record-triggered and time-triggered actions but do not support the same expression language or third-party API-call actions without custom Python code. We do not implement Studio Automations as part of the data migration scope. We deliver a written inventory of every Actito Scenario with its trigger, conditions, branching logic, and action sequence, plus a recommended Odoo Studio Automation rebuild approach for each. The customer or an Odoo partner implements the automations post-migration. Similarly, Actito campaign content (HTML emails, SMS copy, push notifications) does not migrate and requires recreation in Odoo's email builder.

  • Actito's API rate limit of 100 calls/min constrains export throughput

    Actito's API enforces a hard limit of 100 calls per minute and 5 concurrent requests per licence. Bulk exports of large profile sets or custom tables take significantly longer under this constraint. We address this by scheduling large exports during off-peak hours, using Actito's ETL export jobs (which run server-side and bypass the per-call rate limit) for volume data rather than looping API calls, and chunking API-based exports into controlled batches with polling intervals. We also recommend requesting a temporary rate-limit increase through Actito support before migration begins. Without ETL jobs, a migration of 50,000 profiles via API alone can take several days of export time.

  • Push notification channel has no Odoo CRM equivalent and campaign history is excluded

    Actito supports push notification campaigns with device token and opt-in migration, but Odoo CRM does not include a native push notification channel. Push device tokens and subscription metadata from Actito can be stored as custom fields on the Contact record for future integration with a third-party push service, but Odoo CRM does not natively send or track push notifications. Additionally, push campaign interaction history (opens, deliveries, clicks on push) is not available for export from Actito; we migrate only the device token table and push opt-in status. We advise exporting and archiving all push campaign reports from Actito before cutover for the customer's own record-keeping.

Migration approach

Six steps for a successful Actito to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Actito logo

Actito

Source

Strengths

  • Customizable Profile data model allows direct mapping of existing schemas without flattening
  • Multi-channel activation across email, SMS, push, print, web, and call center from a single platform
  • Entity-based licence partitioning enables B2C/B2B co-existence without data cross-contamination
  • GDPR compliance and multi-language capabilities are built-in, not add-ons
  • API supports ETLs, webhooks, and bulk exports with configurable compression

Weaknesses

  • Segmentation builder interface is reported as cumbersome and non-streamlined by G2 users
  • Integration implementation time is slow; connectors take time to configure and deploy
  • API rate limits of 100 calls/min and 5 concurrent requests restrict bulk migration throughput
  • Push migration does not include campaign history, requiring manual record-keeping before cutover
  • Deprecated V4 API operations overlap with newer endpoints, requiring careful migration path planning
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Actito and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Actito and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Actito and Odoo CRM.

  • 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

    Actito: 100 requests per minute per licence; 5 concurrent requests maximum; 5 API keys per licence.

  • Data volume sensitivity

    A

    Actito exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Actito to Odoo CRM 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 Actito to Odoo CRM data migrations

Answers to the questions buyers ask most during Actito to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 20,000 Profiles with fewer than five custom tables and no multi-entity partitioning. Migrations with multiple Actito entities requiring Odoo multi-company configuration, complex custom table relationships, large engagement histories, or cross-entity segment isolation move to eight to twelve weeks because of schema translation, multi-company access control setup, and custom field type mapping work. The Actito API rate limit (100 calls/min) also extends export time for large profile sets if ETL export jobs are not available on the licence.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Actito.
Land in Odoo CRM, 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