CRM migration

Migrate from e-shot to Salesforce Sales Cloud

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

e-shot logo

e-shot

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

69%

9 of 13

objects map 1:1 between e-shot and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

e-shot is an email marketing and automation platform built around a flat, contact-centric data model with no native Account or Opportunity concept. Salesforce Sales Cloud requires contacts to attach to Account records and separates unqualified prospects into Lead objects from qualified contacts. We resolve that structural gap during scoping by creating the Account hierarchy before contact import, and we preserve e-shot's custom contact fields and merge-tag fallback definitions as Salesforce custom fields with default values. Automated Series, Landing Pages, and Website Popups do not migrate as code; we deliver a written inventory of every active series, form, and popup requiring rebuild in Salesforce Flow or Experience Cloud. We sequence contact extraction within e-shot's tier-based rate limits (500 to 5,000 API calls per hour) using throttled pagination and resume logic, and we convert any campaign links pointing to file attachments into hyperlink references to preserve tracked click data without triggering spam filters.

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

e-shot logo

e-shot

What's pushing teams away

  • Import failures and intermittent system reliability frustrate users — contacts sometimes fail to load and template rendering breaks unpredictably, requiring manual intervention.
  • The analytics interface is widely regarded as dated and unintuitive, prompting teams to export data to external BI tools rather than rely on in-platform reporting.
  • The basic tier caps active Preferences at 25 and Automated Series at 3, which forces growing teams to upgrade or manage within artificially constrained campaign structures.
  • Some users report the platform feels slower than competing email tools during high-volume sends, particularly on the basic tier with lower API rate limits.

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 e-shot objects map to Salesforce Sales Cloud

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

e-shot

Contact

maps to

Salesforce Sales Cloud

Contact + Account (hierarchy created)

1:many
Fully supported

e-shot contacts are flat records with no Account affiliation. We create Salesforce Account records from the contact's company domain (extracted from email address) during import, then attach each Contact to the matching Account via AccountId. Contacts without a resolvable company are attached to a Default Account or held for manual Account assignment. The e-shot contact ID is stored in a custom field legacy_e-shot_id__c as an external ID for future sync.

e-shot

Contact Field (custom)

maps to

Salesforce Sales Cloud

Custom Field on Contact or Account

1:1
Fully supported

e-shot's custom contact fields (defined in Settings > Contacts Field Manager) map to Salesforce custom fields on the Contact object. Field types are type-mapped: text to Text(255), number to Number, date to Date, checkbox to Checkbox, dropdown to Picklist. Merge-tag fallback values (*_fieldname=fallback('text')_*) are extracted and set as Salesforce Default Value on each custom field so contacts without a value display the fallback rather than a blank or raw merge tag.

e-shot

Campaign

maps to

Salesforce Sales Cloud

Campaign + EmailTemplate

1:1
Fully supported

e-shot campaigns (email content, subject line, sender details, schedule) map to Salesforce Campaign records with the Campaign Type set to Email. The HTML email body migrates as a Salesforce EmailTemplate record linked to the Campaign. Campaign status (Draft, Live, Ended) maps to Salesforce Campaign Status values. Historical send stats (opens, clicks, bounces, unsubscribes) migrate as CampaignMember records with corresponding Activity History.

e-shot

Automated Series

maps to

Salesforce Sales Cloud

Flow (rebuild inventory delivered)

lossy
Mapping required

Automated Series are workflow-based email sequences with trigger conditions and delay steps. e-shot tiers gate the number of live series (3 on basic, 25 on pro, 100 on omni). We export the series configuration (trigger, conditions, steps, delays, email references) as a written inventory document with a recommended Salesforce Flow equivalent for each series. The customer's admin rebuilds them in Flow Builder; we do not convert the automation logic as code.

e-shot

Landing Page

maps to

Salesforce Sales Cloud

Experience Cloud Site Page (rebuild inventory delivered)

lossy
Fully supported

Landing pages are tier-gated on e-shot (0 on basic, 25 on pro, 100 on omni). Additional pages can be created but not set live within the plan limit. We export the published page content and form field definitions as a written handoff document. Salesforce Experience Cloud Sites replace landing pages with Page Builder or Digital Experiences; we do not migrate the page as code.

e-shot

Form

maps to

Salesforce Sales Cloud

Web-to-Lead or Experience Cloud Form

1:1
Fully supported

e-shot forms store field inputs and subscription preferences linked to each contact record. We export form definitions (field types, required flags, layout) and map them to Salesforce Web-to-Lead form fields or Experience Cloud form builders. Form submissions migrate as Salesforce Leads or Contacts with the submitted field values mapped to the corresponding custom fields.

e-shot

Preference

maps to

Salesforce Sales Cloud

HasOptedOutOfEmail + Custom Subscription Fields

1:1
Fully supported

Contact preferences track opt-in status and subscription interests. Tier limits on active preferences apply (25 basic, 50 pro, unlimited omni). We map subscription preferences to a combination of Salesforce's standard HasOptedOutOfEmail field and custom multi-select picklist fields representing each e-shot preference topic. The preference centre structure migrates as a configuration map for rebuilding in Salesforce Preference Centre or Marketing Cloud Account Engagement.

e-shot

Website Popup

maps to

Salesforce Sales Cloud

Flow or Experience Cloud Component (rebuild inventory delivered)

lossy
Fully supported

Website Popups are campaign-triggered web overlays tied to contact identification. Tier limits cap live popups (0 basic, 25 pro, 100 omni). We export popup configurations, trigger rules, and display logic as a written inventory for rebuilding in Salesforce Flow with Screen components or Experience Cloud. The popup HTML and CSS do not migrate directly.

e-shot

Tag

maps to

Salesforce Sales Cloud

Multi-Select Picklist or Campaign Membership

1:1
Fully supported

e-shot tags label contacts and segments without a formal taxonomy; they are stored as field values or list memberships rather than a separate tag object. We extract tag assignments and map them to Salesforce multi-select picklist fields on Contact, or to Campaign membership records if the tag functions as a static audience segment. The customer chooses the tag strategy during scoping.

e-shot

Saved Filter

maps to

Salesforce Sales Cloud

Salesforce Reports with Filters or Campaign static Lists

1:1
Fully supported

Saved filters define dynamic contact segments using field conditions (basic: 10, pro: 25, omni: unlimited). We export filter definitions as segment rules and replicate them as Salesforce Reports with filter criteria, or as Campaign static Lists for marketing audience segmentation. The dynamic refresh behaviour of e-shot filters maps to Salesforce Report filters or Campaign smart lists.

e-shot

Campaign Report

maps to

Salesforce Sales Cloud

Campaign with CampaignMember History

1:1
Fully supported

e-shot campaign analytics (opens, clicks, bounces, unsubscribes, delivery health) export from the analytics dashboard. We pull historical report snapshots and import them as Salesforce CampaignMember records with corresponding activity dates. Open and click rates become custom numeric fields on Campaign; bounce and unsubscribe rates map to Salesforce tracking fields on CampaignMember.

e-shot

Template

maps to

Salesforce Sales Cloud

EmailTemplate

1:1
Fully supported

Email templates store reusable HTML content blocks with embedded styles and merge tags. We export templates as HTML with embedded styles. Merge tags are preserved as source values (*_fieldname_*) so they can be re-enabled in Salesforce's email template syntax. Dynamic content blocks require manual reassembly in Salesforce's Lightning Email Builder or Content Builder.

e-shot

Owner

maps to

Salesforce Sales Cloud

User

1:1
Fully supported

e-shot has unlimited users across all tiers, and contacts may reference an owner or campaign manager. We resolve owners by email match against the Salesforce destination org's User table. Any e-shot owner without a matching Salesforce User is held in a reconciliation queue for the customer's admin to provision before record import resumes.

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.

e-shot logo

e-shot gotchas

Medium

File attachments blocked in bulk email sends

Low

Tier limits apply to active (live) objects only

Medium

Merge-tag fallback values must be replicated

Low

No dedicated bulk export endpoint documented

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

  • Merge-tag fallback values require explicit Salesforce default values

    e-shot personalisation uses *_fieldname=fallback('text')_* syntax for fields where some contacts lack values. If fallback values are not set on the destination, contacts without that field populated display raw merge tags to recipients, breaking email rendering and damaging sender reputation. We extract every fallback definition from e-shot's contact field manager during scoping and create equivalent default-value rules on each Salesforce custom field before contact load. Skipping this step silently corrupts email sends post-migration.

  • No bulk export endpoint in e-shot requires throttled pagination

    e-shot's REST API accepts JSON request bodies and returns JSON responses but does not publish a dedicated bulk-export endpoint. High-volume contact exports require paginated API calls within the per-hour rate limit (500 on basic, 2,000 on pro, 5,000 on omni). We implement throttled pagination with resume tokens and exponential backoff on 429 responses to extract large contact lists without exceeding the plan's hourly cap. Migrations that ignore rate limiting receive truncated exports and missing records.

  • File attachment links must convert to hosted hyperlinks

    e-shot does not allow direct file attachments in bulk email sends. Campaign links pointing to file attachments must be converted to hyperlink references to a file-sharing destination so tracked clicks are preserved without triggering spam filters. We identify all such links during campaign export and replace them with the appropriate hosted URL before loading templates into Salesforce EmailTemplate. Recipients expecting files must be directed to the hosted link, not an attachment.

  • Salesforce validation rules and field-level security block imports

    Salesforce orgs enforce validation rules (required formats, conditional requireds, picklist whitelists) and field-level security that prevent record inserts from the migration user unless explicitly granted. We coordinate with the customer's Salesforce admin to grant the migration user the Bulk API permission set and either temporarily disable blocking validation rules during load or extend rules with a migration-context check. Skipping this step results in 5-30 percent record rejection on first import.

  • Automated Series and Workflows do not migrate as code

    e-shot Automated Series and Salesforce Flow are different automation models. e-shot uses trigger-condition-delay sequences; Salesforce Flow uses record-triggered, scheduled, and screen variants with different action types and governor limits. We do not migrate Series logic as code. We deliver a written inventory of every active Automated Series with its trigger, conditions, steps, and recommended Salesforce Flow equivalent. The customer's admin rebuilds them post-migration.

Migration approach

Six steps for a successful e-shot to Salesforce Sales Cloud data migration

  1. Discovery and scope definition

    We audit the e-shot portal across tier (basic/pro/omni), active Preferences count, running Automated Series count, live Landing Pages and Website Popups, custom contact field schema with merge-tag fallback definitions, contact volume, campaign history, and saved filter complexity. We also establish the Salesforce destination org readiness: edition, existing schema, User count, and any active validation rules or required field constraints. The discovery output is a written migration scope document including the merge-tag fallback inventory, Active Object count against plan limits, and a Salesforce edition recommendation.

  2. Schema design and Salesforce sandbox setup

    We design the destination Salesforce schema in a Sandbox org before production migration. This includes provisioning custom fields on Contact and Account (mapped from e-shot custom contact fields with default values set from merge-tag fallbacks), Salesforce Campaign records with EmailTemplate linkage, and any Account-Contact hierarchy logic required to resolve e-shot's flat contact model. We configure validation rules to allow migration-context inserts and set up the Bulk API permission set for the migration user.

  3. Throttled contact extraction within API rate limits

    We extract e-shot contacts using paginated API calls within the plan's hourly rate limit (500-5,000 calls per hour depending on tier). We implement throttled pagination with resume token logic and exponential backoff on 429 responses. Custom contact fields and merge-tag fallback definitions are extracted from Settings > Contacts Field Manager and mapped to Salesforce custom fields during the same pass. Account resolution uses email domain extraction for Account creation before contact import.

  4. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox using production-like data volume. The customer's RevOps or admin lead reconciles record counts (Contacts in, Accounts in, Campaign Members in), spot-checks 25-50 random contacts against the e-shot source for field accuracy and merge-tag fallback application, and validates email template rendering in Salesforce before sign-off. Any mapping corrections and fallback rule additions happen here, not in production.

  5. Campaign, preference, and form data migration

    After contact and Account validation, we migrate campaign content (EmailTemplate with HTML body), campaign analytics as CampaignMember records, preference centre structure as custom subscription fields, form definitions as Web-to-Lead or Experience Cloud form field maps, saved filter rules as Salesforce Report filters or Campaign static Lists, and tag assignments as multi-select picklist values or Campaign membership. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, delta sync, and automation rebuild handoff

    We freeze e-shot 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 Automated Series, Landing Page, and Website Popup inventory documents to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild e-shot Automated Series as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

e-shot logo

e-shot

Source

Strengths

  • Tiered pricing from £200/month provides a clear upgrade path without per-seat licensing on any plan.
  • Unlimited users across all tiers means whole teams can access the platform without incremental cost.
  • Dedicated deliverability tooling for Microsoft contacts, important for UK enterprise senders on Microsoft 365.
  • Contact field manager and merge-tag fallback syntax give non-technical users granular personalisation control.
  • Open API with JSON REST endpoints and tiered rate limits up to 5,000 calls per hour on omni.

Weaknesses

  • Analytics UI is repeatedly described as dated and difficult to navigate compared to modern email platforms.
  • Import reliability issues and intermittent system downtime affect campaign and contact loading.
  • Landing page and automation features are tier-gated, requiring upgrades as team complexity grows.
  • Basic tier has hard limits on live preferences, series, filters, and popups that constrain active campaigns.
  • Template design tools lack some drag-and-drop flexibility found in newer email builders.
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 e-shot 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

    e-shot: 500–5,000 requests per hour depending on tier (basic: 500, pro: 2,000, omni: 5,000).

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 15,000 contacts, no custom objects, and a clean domain-based Account resolution design land between three and five weeks. Migrations above 50,000 contacts, complex merge-tag fallback chains across many fields, Active Preferences exceeding 50, or multiple active Automated Series and landing pages requiring inventory deliverables move to eight to twelve weeks because of pagination sequencing, fallback-to-default-value field mapping, and the automation rebuild scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from e-shot.
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