CRM migration

Migrate from e-shot to HighLevel

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

e-shot logo

e-shot

Source

HighLevel

Destination

HighLevel logo

Compatibility

80%

8 of 10

objects map 1:1 between e-shot and HighLevel.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from e-shot to GoHighLevel is a shift from a contact-centric email marketing platform to an all-in-one CRM with built-in marketing automation, SMS, calling, and funnel building. e-shot organises data around Contacts and Campaigns with merge-tag personalisation and tier-gated limits on live Preferences, Automated Series, and landing pages. GoHighLevel uses a CRM model with Leads, Contacts, Accounts, and Opportunities, plus Opportunities pipeline management that has no equivalent in e-shot. We export all active Contacts with their field values and fallback definitions, campaign content as HTML templates, preference centre data, and saved filter definitions. GoHighLevel's unlimited contacts model removes the per-preference billing that constrains growing e-shot accounts. Automations, landing pages, and website popups do not migrate as functional code; we deliver a written inventory of active Automated Series and popup configurations for your admin to rebuild in GoHighLevel's workflow builder.

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

HighLevel logo

HighLevel

What's pulling them in

  • Agencies choose HighLevel to consolidate CRM, email, SMS, scheduling, and funnels into one subscription, eliminating monthly bills for five to ten separate SaaS tools they previously stitched together.
  • The flat-rate pricing model bills per sub-account rather than per contact, so growing a contact database from 1,000 to 100,000 records does not trigger a billing surprise—a common pain point avoided by migrating customers.
  • White-label and sub-account capabilities let agencies resell HighLevel access to their own clients, turning a software cost center into a recurring revenue stream that justifies the subscription.
  • The platform ships a 14-day free trial with no credit card required, giving teams a low-friction entry point to validate fit before committing to the $97/month Starter tier.
  • Marketing agencies managing multiple client accounts use sub-accounts to maintain data isolation per client while operating under a single agency billing relationship with HighLevel.

Object mapping

How e-shot objects map to HighLevel

Each row shows how a e-shot object lands in HighLevel, 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

HighLevel

Contact (primary) and Lead (secondary)

1:1
Fully supported

e-shot Contacts map directly to GoHighLevel Contacts when the contact has a known email address and company association. Contacts without a clear company association but with lead-capture intent (form fills, popup responses) can optionally map to GoHighLevel Leads for pipeline routing. We preserve all standard e-shot fields (email, first name, last name, phone, address) plus every custom contact field, including any with merge-tag fallback values which we replicate as GoHighLevel custom fields with default values set to the fallback text.

e-shot

Contact Field

maps to

HighLevel

Custom Field

1:1
Fully supported

e-shot's Contact Field Manager stores field definitions with type and merge-tag syntax. We extract every custom field definition including *_fieldname=fallback('text')_* fallback values and recreate them as GoHighLevel Custom Fields. Field types map as follows: text to Short Text, long text to Long Text, date to Date, number to Number, dropdown to Dropdown, checkbox to Multi-Select Checkbox. Fallback values are set as default values on the GoHighLevel custom field so contacts without a value display the fallback rather than a blank or raw merge tag.

e-shot

Campaign

maps to

HighLevel

Campaign

1:1
Fully supported

e-shot Campaigns hold email content, subject line, sender details, and scheduling. We export campaign records and associated HTML template bodies as-is. The HTML content migrates as GoHighLevel Email Templates with the original e-shot template name preserved. Subject lines and sender details are stored in the GoHighLevel template settings. Automated sends require workflow rebuild; we document every campaign with an active Automated Series attached so the customer knows which templates need automation re-connection.

e-shot

Automated Series

maps to

HighLevel

Workflow

lossy
Mapping required

e-shot Automated Series are email sequences triggered by contact behaviour or date conditions. GoHighLevel has no direct equivalent of Automated Series as a discrete object; each series becomes a GoHighLevel Workflow with the same trigger conditions and email actions. We export the series definition (trigger, conditions, step sequence, delays, email references) and deliver it as a written workflow map for the customer's admin to rebuild. We do not execute the rebuild as part of the migration scope. Series that reference e-shot-specific merge tags in their body text require template update before the workflow runs.

e-shot

Preference Centre

maps to

HighLevel

Contact Tags and Custom Fields

1:1
Fully supported

e-shot Preference Centre tracks subscription status and interest categories per contact. We export the preference structure (preference name, type, default state) and per-contact preference values. These map to GoHighLevel Contact Tags (for interest categories) and a custom field eshot_subscription_status__c (for overall opt-in state). We preserve the original e-shot preference names in the tag and field descriptions for audit traceability.

e-shot

Form

maps to

HighLevel

Form

1:1
Fully supported

e-shot Forms collect contact data and subscription choices. GoHighLevel has a native Form builder with equivalent field types. We export form definitions including field names, field types, required settings, and the form's linked preference centre. Form field mapping is 1:1 for standard field types; custom field types require GoHighLevel Custom Field pre-creation before form field mapping. Form submissions (historical responses) migrate as Contact records with the form tag applied.

e-shot

Saved Filter

maps to

HighLevel

Smart List or Tag Group

lossy
Fully supported

e-shot Saved Filters define dynamic contact segments using field conditions. Tier limits apply to active filters (basic: 10, pro: 25, omni: unlimited). We export each filter's condition set as a written rule definition. In GoHighLevel, equivalent segmentation uses Tags (applied manually or via Workflow) or Smart Lists (with field-condition rules). We document which contacts match each e-shot filter so the customer's admin can apply the equivalent segmentation in GoHighLevel.

e-shot

Campaign Report

maps to

HighLevel

Campaign

1:1
Fully supported

e-shot Campaign Reports include opens, clicks, bounces, unsubscribes, and delivery health per campaign. We export historical report snapshots as CSV so the customer retains campaign performance data. GoHighLevel Campaign analytics serve as the ongoing reporting destination post-migration. We do not backfill GoHighLevel analytics with e-shot historical data; the historical report CSV is delivered alongside the migration for the customer's records.

e-shot

Template

maps to

HighLevel

Email Template

1:1
Fully supported

e-shot Email Templates store reusable HTML content blocks with embedded styles. We export templates as HTML files with merge tags preserved as source values. In GoHighLevel, templates are recreated as Email Templates using the imported HTML. Any e-shot merge tags not yet mapped to GoHighLevel custom fields are flagged so the admin can update the template HTML before the next send.

e-shot

Tag

maps to

HighLevel

Tag

1:1
Fully supported

e-shot does not expose a separate tag management API object; tags are stored as field values or list memberships. We extract every distinct tag string and map them to GoHighLevel Tags on the Contact record. Tags used for segment classification are preserved as written tag names so the customer's segmentation logic remains intact. Duplicate tag names from different sources are deduplicated during extraction.

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

HighLevel logo

HighLevel gotchas

High

Sub-account architecture creates isolated data silos per client

High

Usage-based telecom and AI costs are not in the subscription price

Medium

Workflows have no native equivalent in most destination CRMs

Medium

API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account

Low

White-label configuration and branding assets do not export via API

Pair-specific challenges

  • Merge-tag fallback values must be replicated before contact import

    e-shot personalisation uses *_fieldname=fallback('text')_* syntax where contacts without a field value display the fallback text. If these fallbacks are not set as default values on GoHighLevel Custom Fields, contacts without that field populated will display raw merge tags to recipients during sends. We extract every fallback definition from the Contact Field Manager during scoping, pre-create the equivalent GoHighLevel Custom Fields with default values set to the fallback text, and verify the defaults are active before the contact import phase begins.

  • e-shot Automated Series have no GoHighLevel equivalent object

    e-shot Automated Series are discrete workflow objects with their own trigger, conditions, and step definitions. GoHighLevel Workflows achieve the same result but are constructed differently using the visual workflow builder with trigger cards, conditions, and actions. We do not migrate Automated Series as functional code. We deliver a written inventory of every active Automated Series with its trigger, conditions, step sequence, email references, and delay rules. The customer's admin rebuilds each series in GoHighLevel Workflows using this inventory as the specification.

  • Tier-gated live objects must be identified during scoping

    e-shot plan limits apply to active or live objects only. Customers can create additional items beyond the plan limit but cannot set them live. We query the active flag on each Automated Series, Landing Page, Preference, Saved Filter, and Popup during scoping. The migration only targets items that are live and within the customer's plan allowance. Items above the plan limit that are not live are excluded from the migration scope and flagged in the scope document.

  • e-shot lacks a bulk export endpoint; pagination and rate limits constrain extraction speed

    The e-shot REST API accepts JSON request bodies and returns JSON-encoded 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 logic to extract large contact lists without exceeding the plan's hourly cap. For accounts above 50,000 contacts, extraction can extend over multiple days and we coordinate the extraction window with the customer to avoid interfering with live campaign sends.

  • GoHighLevel has no native Campaign reporting equivalent to e-shot's delivery health metrics

    e-shot Campaign Reports include delivery health indicators such as spam score warnings and Microsoft 365-specific deliverability flags that are important for UK enterprise senders. GoHighLevel Campaign analytics cover opens, clicks, bounces, and unsubscribes but do not replicate e-shot's deliverability health scoring. For customers with high Microsoft 365 contact volumes relying on e-shot's deliverability tooling, we recommend retaining e-shot as a sending domain or integrating a deliverability monitoring tool (e.g., GlockApps, MailTester) post-migration.

Migration approach

Six steps for a successful e-shot to HighLevel data migration

  1. Discovery and scoping

    We audit the source e-shot account across plan tier, active object counts, custom field definitions with merge-tag fallbacks, Automated Series configurations, landing page count, form definitions, preference centre structure, saved filters, and campaign volume. We export a full contact list via paginated API calls respecting the plan's hourly rate limit. The scoping output is a written migration scope document with the object count per type, any tier-limit constraints identified, and the custom field mapping matrix.

  2. GoHighLevel schema preparation

    We create the GoHighLevel Custom Fields corresponding to e-shot contact fields before any contact import. Each field is created with the correct type and the fallback value set as the default value where applicable. We set up Contact Tags for preference centre interests and campaign source tags. We configure the Contact record layout to match the customer's priority fields. This phase runs in parallel with data extraction from e-shot.

  3. Data extraction and transformation

    We extract Contacts with all field values, merge-tag fallback definitions from the field manager, campaign content as HTML, template assets, form definitions, and preference centre data. Tags are extracted as distinct string values from field values and list memberships. We apply the field transformation rules: e-shot field types map to GoHighLevel field types, fallback values are extracted from the field manager as separate data, and campaign HTML is preserved as-is for template recreation. The transform output is a set of CSV and JSON files ready for GoHighLevel import.

  4. GoHighLevel import in dependency order

    We import data into GoHighLevel in dependency order: Custom Fields (pre-created and verified), Contact Tags (for segmentation), Contacts (with default values applied for missing fields), Email Templates (from campaign HTML), Forms (with field mapping), Campaigns (linked to templates). Each phase emits a row-count reconciliation report. Active Automated Series are not imported; they are documented as a written workflow inventory delivered separately.

  5. Campaign report export and template verification

    We export historical e-shot Campaign Reports as CSV snapshots covering opens, clicks, bounces, unsubscribes, and delivery health for every campaign in the last 12 months. We verify that imported GoHighLevel Email Templates render correctly by sending test emails to a internal address. Any merge tags referencing fields not yet mapped to GoHighLevel are flagged for HTML correction before the next live send.

  6. Cutover, validation, and handoff

    We freeze e-shot writes during the cutover window, run a final delta extraction of any contacts modified during the migration, and load the delta into GoHighLevel. We validate record counts match the scoping document, spot-check 20-30 records for field accuracy and fallback value application, and deliver the Automated Series workflow inventory. We do not rebuild workflows or automations in GoHighLevel; that work is handled by the customer's admin using the inventory document. We provide a one-week hypercare window for reconciliation issues.

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.
HighLevel logo

HighLevel

Destination

Strengths

  • Consolidates CRM, marketing automation, email, SMS, scheduling, and funnels into one platform at a predictable flat monthly rate.
  • Supports unlimited contacts and unlimited users on all paid tiers, removing per-record billing anxiety as databases grow.
  • Offers white-label and sub-account capabilities that let agencies resell access and manage multiple client environments under one billing relationship.
  • Includes built-in review management, reputation monitoring, and AI agents as native features rather than third-party add-ons.
  • Exports Contacts and Companies via a scalable async bulk CSV system that handles multi-million-row datasets without blocking the UI.

Weaknesses

  • The breadth of features creates a steep learning curve; advanced automations and Workflow configuration require significant time investment that smaller teams may not recover.
  • The platform charges usage-based fees for telecommunications and AI features that are not included in the base subscription, leading to bill surprises.
  • Recurring user reports on Reddit and G2 describe bugs, errors, and slow support response times that disrupt live marketing and sales operations.
  • Sub-account architecture, while powerful for agencies, adds migration complexity when identifying which client data lives in which isolated environment.
  • The platform is designed for agencies and SMBs; larger enterprises requiring deep reporting, custom objects at scale, or complex role-based access may outgrow its capabilities.

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

  • 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 HighLevel 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 HighLevel data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 15,000 Contacts with straightforward field mapping and no complex merge-tag fallback chains. Migrations with high field counts (over 50 custom fields), large preference centre datasets, multiple Automated Series, or accounts requiring extended API pagination (over 50,000 contacts) extend to five to nine weeks. The rate-limiting on the e-shot API during extraction is the primary variable that affects timeline for large contact volumes.

Adjacent paths

Related migrations to explore

Ready when you are

Move from e-shot.
Land in HighLevel, 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