CRM migration

Migrate from Agillic to Salesforce Sales Cloud

Field-level mapping, validation, and rollback between Agillic and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.

Agillic logo

Agillic

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

86%

12 of 14

objects map 1:1 between Agillic and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Agillic to Salesforce is a cross-category migration: Agillic is a Nordic omnichannel marketing automation platform built around a fully customisable Recipient schema and channel-agnostic Activity tracking, while Salesforce is a CRM whose standard objects (Contact, Lead, Account, Opportunity, Task, Event) follow a relational account-contact-opportunity model. There is no native Lead-versus-Contact split in Agillic — every Recipient is a person record regardless of lifecycle stage — so we map all Recipients to Salesforce Contacts with the original Recipient ID and any lifecycle-equivalent custom property preserved in a custom field for segmentation and reporting. Activity history (sends, opens, clicks, bounces, SMS delivery, and events) migrates as Task and Event records via the Salesforce Bulk API 2.0 with Flow Execution IDs carried as custom fields to allow post-migration journey reconstruction. Agillic Flows are internal execution configurations with no export endpoint; we deliver a written inventory of every Flow, its trigger logic, and the recommended Salesforce Flow equivalent for the customer's admin to rebuild. Global Data Tables migrate as Salesforce custom objects with lookup relationships recreated in the destination org before data import begins.

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

Agillic logo

Agillic

What's pushing teams away

  • Rate limits and API quotas are not publicly documented, creating uncertainty for teams planning large-scale data migrations or integrations.
  • The platform's heavy reliance on developer configuration for data synchronisation, custom flow elements, and content templates means marketing teams without technical support encounter bottlenecks.
  • Complex workflow logic built by developers becomes difficult for non-technical marketers to modify independently, limiting operational agility.
  • Exporting Activity data requires external analysis tools; Agillic itself lacks built-in advanced analytics dashboards for post-campaign insight generation.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How Agillic objects map to Salesforce Sales Cloud

Each row shows how a Agillic object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Agillic

Recipient

maps to

Salesforce Sales Cloud

Contact

1:1
Fully supported

All Agillic Recipients map to Salesforce Contact (not Lead, because Agillic has no concept of an unqualified prospect — every Recipient is a person record regardless of engagement stage). We preserve the original Agillic Recipient ID in a custom field agillic_recipient_id__c and any lifecycle-equivalent custom property (e.g., subscription_status, customer_type) in a custom field agillic_lifecycle__c for segmentation and reporting. AccountId is resolved via the Company-to-Account mapping before Contact insert.

Agillic

Company (on Recipient)

maps to

Salesforce Sales Cloud

Account

1:1
Fully supported

Agillic Recipients may carry a company association as a custom property or via a Global Data Table relationship. We map this to Salesforce Account with the company name mapped to Account.Name and the company domain (if present) mapped to Account.Website for deduplication. Account is created before Contact import so the AccountId Lookup is satisfied at insert time.

Agillic

Activity Log (sends, opens, clicks, bounces)

maps to

Salesforce Sales Cloud

Task

1:1
Fully supported

Agillic Activity records of type send, open, click, and bounce map to Salesforce Task records. The Activity type becomes a custom Task field activity_type__c (picklist: SEND, OPEN, CLICK, BOUNCE, DELIVERED, UNSUBSCRIBED). The original Agillic Activity timestamp migrates as ActivityDate for timeline ordering. Flow Execution ID migrates to a custom field flow_execution_id__c on Task.

Agillic

Activity Log (SMS delivery, SMS reply)

maps to

Salesforce Sales Cloud

Task (TaskSubtype = Call or custom)

1:1
Fully supported

SMS events migrate as Task records with a custom field sms_direction__c (SENT, DELIVERED, REPLIED) and sms_content__c carrying the message body. If Salesforce Service Cloud SMS integration is active, we map to the native MessagingSession object; otherwise, Tasks with custom SMS fields serve as the archive.

Agillic

Activity Log (event triggers)

maps to

Salesforce Sales Cloud

Event

1:1
Fully supported

Agillic event-triggered activities (e.g., webinar registrations, abandoned cart triggers, custom event types) map to Salesforce Event records. The event name maps to Event.Subject, the event timestamp maps to Event.StartDateTime, and event metadata migrates to custom Event fields. We preserve the Flow Execution ID on Event as flow_execution_id__c.

Agillic

Flow Execution ID

maps to

Salesforce Sales Cloud

Task / Event (flow_execution_id__c)

1:1
Fully supported

The Flow Execution ID uniquely identifies each campaign run in Agillic. We carry it as a custom field on every migrated Activity record (Task and Event) so that analysts can group records back to specific campaign executions post-migration. This requires the Flow Execution ID to be enabled in Agillic Settings > System Settings > Export > Activity Exports before we pull historical data.

Agillic

Flow

maps to

Salesforce Sales Cloud

Salesforce Flow (rebuild required)

lossy
Fully supported

Agillic Flows are automation logic stored as internal execution configurations with no documented export endpoint. We export Flow names, associated trigger events, and the count of executions per Flow during migration. We deliver a written Flow inventory document that lists every active Flow with its trigger type, conditions, actions, and a recommended Salesforce Flow equivalent (record-triggered, scheduled, or screen flow). The customer's admin or a Salesforce partner rebuilds them post-migration.

Agillic

Global Data Table

maps to

Salesforce Sales Cloud

Custom Object (__c)

1:1
Fully supported

Agillic Global Data Tables are custom relational structures referenced within Flows. We export the table schema (column names, data types) and all row data. In Salesforce, we create a custom object with an API name matching the Global Data Table name plus a __c suffix, and custom fields matching each column. Lookup relationships between Global Data Tables are recreated as Lookup or Master-Detail relationships on the destination custom objects.

Agillic

Global Data Table Row

maps to

Salesforce Sales Cloud

Custom Object Record

1:1
Fully supported

Each row in an Agillic Global Data Table becomes a Salesforce custom object record. We resolve any lookup references to Recipients (via Recipient ID to Contact mapping), other Global Data Tables (via the destination custom object IDs), and carry the original row identifier in a custom field original_row_id__c for audit.

Agillic

Template

maps to

Salesforce Sales Cloud

EmailTemplate / ContentAsset

1:1
Fully supported

Agillic email, SMS, and push templates carry dynamic field mappings and HTML content. We export template content, subject line placeholders, and dynamic field references. HTML templates require conversion to Salesforce EmailTemplate format (with merge field syntax updated from Agillic to Salesforce merge field format). We do not perform the HTML conversion as a code task; we deliver a template migration document and the customer refactors with their email developer or an implementation partner.

Agillic

Content Block

maps to

Salesforce Sales Cloud

ContentAsset or Apex Page

1:1
Fully supported

Agillic Reusable Content Blocks (modular HTML/text fragments) export with their content and metadata. In Salesforce, these map to ContentAsset records (for reusable assets) or are documented as ContentBlockKey references for use within Salesforce Marketing Cloud Email Studio. Recombination in the destination CMS or email platform requires content refactoring outside migration scope.

Agillic

Audience (Google/Meta segments)

maps to

Salesforce Sales Cloud

Campaign + CampaignMember or Data Studio Audience

lossy
Fully supported

Agillic audience segments synced to Google and Meta are documented as segment definitions with membership criteria. We deliver an audience migration document that specifies each segment's logic (criteria, operators, values) and recommend recreating equivalent segments in Salesforce Data Studio, Account Engagement (Pardot) Dynamic Lists, or Salesforce Campaign Audiences depending on the customer's destination stack.

Agillic

Owner

maps to

Salesforce Sales Cloud

User

1:1
Fully supported

Agillic Owner references on Recipient, Activity, and Flow Execution records map to Salesforce User by email match. Any Owner without a matching User in the destination org is held in a reconciliation queue for the customer's admin to provision before record import resumes.

Agillic

Recipient Export (bulk snapshot)

maps to

Salesforce Sales Cloud

Contact (Data Loader bulk insert)

1:1
Fully supported

The Agillic Recipients Export feature generates a full snapshot file of all recipient records with current field values. We use this as the primary baseline for Contact migration and reconcile against API-fetched records to catch any updates between API polling cycles.

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.

Agillic logo

Agillic gotchas

High

Undocumented API rate limits complicate bulk migration planning

High

Fully custom schema requires mandatory field enumeration during discovery

Medium

Flows are not exportable as portable workflow definitions

Medium

Activity Export requires explicit Flow Execution ID enablement

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • Undocumented Agillic API rate limits require parallel ingestion

    Agillic's REST API is rate limited per production instance per day, but the specific thresholds are not publicly documented in their developer docs. During a migration, exceeding these limits returns 429 errors and stops accepting requests. We handle this by implementing exponential backoff on the REST API and using Agillic's WebDAV/SFTP Activity Export endpoints as a parallel ingestion path when API calls are throttled. We request Agillic support to confirm current rate limit values before scoping a large-volume migration. The customer must enable WebDAV or SFTP access in their Agillic instance during discovery.

  • Fully custom Agillic schema requires mandatory field enumeration

    Agillic allows clients to define arbitrary custom properties on Recipients with no fixed data model. Each client's schema is unique and there is no single documented list of all possible fields. We cannot begin field mapping until we have enumerated every active recipient property via the Recipient API or a Recipients Export. Missing fields during migration results in silent data loss for those attributes. We run a complete Recipients Export as the first step of every engagement and cross-reference it against the API response to capture all active and recently used fields.

  • Flow Execution ID must be explicitly enabled before export

    The Flow Execution ID is not included in Agillic Activity Exports by default — it must be explicitly enabled under Settings > System Settings > Export > Activity Exports. If this setting is off during the export period, we lose the ability to tie activity records to specific campaign runs, making journey reconstruction significantly harder or impossible. We check this setting on both staging and production during discovery and request the client enables it before exporting historical data. If the setting was disabled historically, we flag the data gap in the handoff document.

  • Agillic Flows are not exportable as portable workflow definitions

    Agillic Flows (campaign automation workflows) are stored as internal execution configurations with no documented export endpoint to retrieve flow logic as a portable file. We can export Flow names, associated trigger events, and Activity history tied to a Flow Execution ID, but the actual branching logic, conditions, and wait-step configurations must be manually recreated in Salesforce Flow. This is a re-implementation effort, not a data migration. We deliver a written Flow inventory document as part of standard scope; Salesforce Flow rebuild is outside scope unless separately engaged.

  • Salesforce validation rules and field-level security can block custom field import

    Salesforce orgs commonly enforce validation rules (required formats, conditional requireds, picklist whitelists) and field-level security that the migrating user must explicitly bypass during data load. Agillic custom fields map to Salesforce custom fields, and if the destination org has validation rules that reference those fields or field-level security that hides them, records will be rejected. We coordinate with the customer's Salesforce admin to grant the migration user the relevant Bulk API permissions and either temporarily disable validation rules during load or extend them with a migration-context check. Without this step, 5-30 percent of imported records can be rejected on first attempt.

Migration approach

Six steps for a successful Agillic to Salesforce Sales Cloud data migration

  1. Discovery and custom schema enumeration

    We audit the Agillic instance across all active Recipients properties via the Recipient API and a full Recipients Export. We enumerate every custom recipient field (standard and custom), confirm the Flow Execution ID export setting, list all Global Data Tables with their schemas and row counts, export all Flow names and trigger types, and pull Activity history volume estimates per channel (email, SMS, push, events) for the full history window. We pair this with a Salesforce destination org review (edition, custom object limits, field limits, validation rules, field-level security). The discovery output is a written migration scope with a complete Agillic-to-Salesforce field inventory and the recommended Salesforce edition for the destination org.

  2. Schema design and Salesforce custom object creation

    We design the destination schema in Salesforce. This includes creating all custom fields on Contact (agillic_recipient_id__c, agillic_lifecycle__c, activity_type__c, flow_execution_id__c, and any custom fields derived from Agillic custom recipient properties), creating Salesforce custom objects for Global Data Tables (with __c API names matching the source table names), defining Lookup and Master-Detail relationships between custom objects, configuring Record Types and Sales Processes if the destination is Sales Cloud with Opportunity management, and setting up Activity custom fields (sms_direction__c, sms_content__c) if SMS history is in scope. Schema is deployed via Salesforce Metadata API into a Sandbox first for validation before any data moves.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using a representative data sample — typically the most recent 90 days of Activity history and all Recipient records. The customer's RevOps lead reconciles record counts (Contacts in, Accounts in, Tasks in, Events in, custom object records in), spot-checks 25-50 random records against the Agillic source data, and reviews the Flow inventory document. Any mapping corrections, missing fields, or schema adjustments happen here before production migration begins.

  4. Owner reconciliation and User provisioning

    We extract every distinct Agillic Owner referenced on Recipient and Activity records and match by email against the Salesforce destination org's User table. Owners without a matching User go to a reconciliation queue. The customer's Salesforce admin provisions any missing Users (active or inactive depending on whether the original Agillic owner is still active). Migration cannot proceed past this step because OwnerId references are required on standard objects and custom objects with Owner fields.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Accounts (from linked companies), Contacts (with AccountId resolved, custom fields created, and OwnerId resolved), Activity history via Bulk API 2.0 (Tasks and Events with WhoId resolved, ActivityDate preserved, and Flow Execution ID carried in custom fields), Global Data Table custom objects (with lookup relationships resolved to Contact and between custom objects), Templates (documented for manual refactoring with merge field conversion notes), and Audience segments (documented for recreation in Salesforce Data Studio or Account Engagement). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and Flow rebuild handoff

    We freeze Agillic writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver the Flow inventory document to the customer's admin team listing every active Flow with its trigger, conditions, actions, and recommended Salesforce Flow equivalent. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Agillic Flows as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task. Post-migration reporting and dashboard rebuilds are outside standard scope unless separately scoped.

Platform deep dives

Context on both ends of the pair

Agillic logo

Agillic

Source

Strengths

  • Fully customisable recipient schema with no fixed field constraints.
  • Native omnichannel support: email, SMS, push, print, paid media, and point-of-sale.
  • GDPR compliance built-in with annual independent security audits.
  • Staging and production separation for safe campaign testing.
  • Real-time audience activation to Google and Meta.

Weaknesses

  • API rate limits are not publicly documented, complicating migration planning.
  • Heavy developer dependency for data sync, custom flows, and content templates.
  • No built-in advanced analytics — requires external BI tools for activity analysis.
  • Workflows (Flows) are tightly coupled to Agillic's execution engine, making cross-platform migration requires reimplementation.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 Agillic and Salesforce Sales Cloud.

  • Object compatibility

    B

    1 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

    Agillic: Not publicly documented — limited per production instance per day.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Agillic to Salesforce Sales Cloud 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 Agillic to Salesforce Sales Cloud data migrations

Answers to the questions buyers ask most during Agillic to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Agillic to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Straightforward migrations under 20,000 Recipients and 300,000 Activity records land between four and eight weeks. Migrations with complex custom recipient schemas (40+ custom fields), Global Data Tables requiring multi-object custom object construction, large engagement histories (over 500,000 activity records), or Flow Execution ID reconstruction for full journey timelines move to twelve to twenty weeks because of mandatory schema enumeration, custom object dependency mapping, Bulk API ingestion with parent-record resolution, and template migration documentation scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Agillic.
Land in Salesforce Sales Cloud, 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