Transfer
Move your contacts, custom fields, pipeline, and history over from another CRM into Gene App.
On this page
- Overview
- How a transfer works
- Choosing your CRM
- What comes across
- Connecting
- One click (GoHighLevel)
- A read-only key (HubSpot)
- Your credential
- Choosing a sub-account
- If a connection stops working
- Scanning
- The preview
- Choosing what to bring across
- Files and media
- Where should your old stages go?
- Should Gene start working these leads?
- Importing
- Custom fields
- Custom objects
- The Gene 2.0 AI's knowledge
- If it stops part way
- Resyncing later
Overview#
Transfer moves an existing book of business into Gene App. You pick the CRM you are coming from, connect it, and Gene App reads the account and shows you exactly what it found. Apart from your custom fields, which are set up as soon as the scan starts, nothing is written into your workspace until you approve it.
Gene 2.0, GoHighLevel, and HubSpot work today. Gene 2.0 is for clients moving over from the previous Gene platform; it connects and imports the same one-click way as GoHighLevel.
Salesforce, Pipedrive, Zoho, monday.com, Close, Keap, Freshsales, and Zendesk Sell are listed as coming soon.
How a transfer works#
- Open Settings > Transfer and click the tile for your CRM.
- Connect it, following one instruction per screen (see Connecting).
- Wait for the scan. It starts on its own, sets up your custom contact and opportunity fields, and otherwise only reads.
- Check the preview and tick what to bring across.
- Choose where your old stages go and whether Gene starts working the leads.
- Press Import.
Choosing your CRM#
In Settings > Transfer, every supported CRM appears as a tile. Click yours and Gene App walks you through connecting it, one instruction per screen. The first screen tells you exactly what will and will not come across, before you do any work.
What comes across#
From GoHighLevel and Gene 2.0:
- Contacts, with their custom fields
- Every custom contact and opportunity field, set up as a Gene field of the same kind: contact fields as contact fields, opportunity fields as opportunity fields (see Custom fields). Fields that belong to a custom object are not added to your contacts, and the fields Gene 2.0 kept for running its own AI are left behind.
- Your tags, the ones your team put on contacts there:
- Tags that Gene 2.0's workflows set are not copied: the on/off switches (ai-agent-on, follow-ups-on, lead-scoring-on, block-ai) and the source stamps ("Direct | WhatsApp", "Web | Contact us | ...", "Gene2 | ...").
- What those stamps recorded is kept where it belongs. The form a lead filled in is kept on the contact as its form name. A "dnd" tag, like the Do not disturb value Gene 2.0 and GoHighLevel keep on a contact, turns on Do not contact, so Gene App does not message them. It is not kept as a lead detail, so it does not show under "From the lead".
- Gene App itself adds no tags during a transfer.
- Where each contact came from, in the old CRM's own words ("JamesEdition", "REHOUSE Website _ Get in Touch"). Contacts, pipeline cards, the contact's Lead source, the CSV export (its original_source column), handover emails and Gene all name that source, not "Gene 2.0" or "GoHighLevel". A contact with no source in the old CRM is named by how it was created there: "CSV import", "Zapier" or "Manual" (typed in by hand). Contacts transferred before this was added keep the source they got then. The Source filter on Contacts still lists them under the transfer, so you can still pick out everything one transfer brought.
- Which ad each contact came from, from GoHighLevel and Gene 2.0. For a Facebook or Instagram lead form or ad: the platform, campaign, ad set and ad. For a click-to-WhatsApp ad: the ad's headline, its post link and its ad id. For website traffic: the page and its UTM tags. The contact's lead details show the campaign and ad, and Gene reads all of it on every reply (see What Gene knows about how a lead reached you), so a lead who was mid-conversation about one property's ad picks up on that property instead of being asked again what they are looking for.
- Unsubscribes, per channel. Someone who unsubscribed from email, SMS, WhatsApp or calls there stays muted on that channel in Gene App, so no campaign, follow-up or reply from Gene reaches them there. A mute already set in Gene App is never lifted by a transfer.
- Your pipeline stages, added to your AI pipeline under their original names
- Opportunities, each placed in the stage it sits in today, with their custom field values on the contact
- Conversation history: SMS, email, WhatsApp, Messenger, and Instagram
- Attachments inside those conversations:
- Photos, voice notes, and documents are copied into Gene App storage and shown in the thread, so they keep working after you close the old account.
- If a file can no longer be fetched, the thread still shows a bubble with a link to the original, so the history stays complete.
- Files and Media: the account's media library lands in your Files tab as soon as the scan has read it, before any contact is imported (see Files and media).
- Calendars, each set up as a meeting type in Settings > Calendars:
- The booking rules come with it: meeting length, the gap between offered times, buffers, minimum notice, how far ahead people can book, limits per day and per slot, look busy, the meeting location, and who hosts.
- A host who has not set working hours in Gene App gets the calendar's weekly hours.
- Hours set for one specific date do not come across.
- Custom objects, such as listings, assets, developers and agents, with their fields and associations. They have their own preview and import on the Custom objects card, apart from the Import button (see Custom objects).
- The Gene 2.0 AI's knowledge: its settings, FAQ and add-on services. Gene's team brings these across for you; they are not part of the Import button (see The Gene 2.0 AI's knowledge).
From HubSpot:
- Contacts, with their custom properties, each set up as a Gene contact field
- Your deal pipeline stages, added to your AI pipeline
- Deals, each placed in its stage
- Contact owners, matched to your team by email address
Message history does not come across from HubSpot yet. HubSpot keeps conversations in a separate product behind permissions most accounts do not grant, and logged marketing emails are not the same thing as a chat thread.
Appointments, workflows, campaigns, and automations stay behind in every case. Those are built differently in every CRM and do not translate. Set them up in Gene App directly.
Connecting#
There are two ways in, and the tile you pick decides which you see.
One click (GoHighLevel)#
This is the only way in for GoHighLevel, and the only thing to do.
- Press Connect GoHighLevel.
- On GoHighLevel's own sign-in page, choose the account and approve Gene App.
- You are sent straight back, connected.
Nothing to install, nothing to copy, and Gene App only ever asks for read access.
A read-only key (HubSpot)#
HubSpot has no one-click app yet, so you generate a read-only key inside your own account and paste it. Gene App checks it immediately, so a wrong key fails on the spot rather than halfway through an import.
Your credential#
Either way the credential is stored on the server and never shown again. Disconnecting deletes it. Anything already imported stays.
Choosing a sub-account#
If you connect as a GoHighLevel agency, Gene App can see every sub-account under it and asks which one to bring across. You pick one.
That is deliberate. A sub-account is one client's book of business and a Gene App workspace is one company, so merging several into a single workspace would mix clients together with no way to separate them afterwards. When the transfer finishes you can come back and run another for the next sub-account.
If you connect a single sub-account rather than an agency, this step does not appear.
If a connection stops working#
A one-click connection renews itself in the background. If you uninstall Gene App inside GoHighLevel, or revoke access there, the connection shows an error asking you to reconnect. Press Connect again. Anything already imported is unaffected.
Scanning#
Scanning starts on its own as soon as you connect. You do not press anything for it, and there is no decision to make first. A progress bar shows how far it has got.
Gene App pages through the connected account and counts everything: contacts, deals, and, where supported, conversations and messages. On a large account this takes a few minutes. You can leave the page and come back.
The first thing the scan does is set up your custom contact and opportunity fields, with their folders, in Settings > Data & Fields (see Custom fields). They hold no values until you import, and a rescan or the import reuses them rather than making them twice. Beyond that, scanning writes nothing to your contacts, inbox, or pipeline. It only reads.
The preview#
When the scan finishes you get the real numbers, not an estimate:
- New contacts: people who are not in Gene App yet. These are what the import creates.
- Already in Gene: matched on phone number or email address. These are left exactly as they are. An import never overwrites a contact you already have.
- Messages: how much conversation history came back.
- Deals: how many, and which pipeline stage each one maps to.
- Files: how many files the media library holds. Under the numbers, a line says how the copy into Files is going.
- Calendars: how many calendars will become meeting types.
Contacts with neither a phone number nor an email address cannot be imported and are counted separately.
The preview also lists every stage your old deals sit in and the stage each one matches in Gene App today. A stage with no match yet reads "no match, stays at its default stage"; the next choice decides what happens to it.
Choosing what to bring across#
The preview has a tick box for each part: contacts, conversations and message history, deals, files and media, and calendars. Everything starts ticked. Files and media drops off the list once the scan has copied them (see below).
Your custom fields and pipeline stages are not on the list because they come across on every import, whatever is ticked. Even an import with contacts unticked sets up the fields and adds the stages, so you can get the workspace ready now and bring the people across later. The one exception is choosing to use the stages this workspace already has (see Where should your old stages go?), which adds no stage.
Message history is the one most people think about. It is the slowest part by a wide margin, and a lot of teams moving CRM would rather start with a clean inbox than years of old threads. Untick it and everything else still comes across.
Contacts cannot be unticked on their own, because a conversation attaches to a contact and a deal sets a contact's pipeline stage. Turning contacts off turns those two off with it. Files and media, and calendars, are independent, so they can come across on their own.
If you connected before calendars and files were part of the transfer, the preview says they could not be read. Reconnect once to grant the extra access, then scan again.
Files and media#
The media library is part of setting the workspace up, like the fields and stages, so it does not wait for the import. Once the scan has read your account, every file in it is copied into your Files tab in the background, and Gene reads each one like an upload. The preview says how far the copy has got ("Copying your media library to Files: 40 of 120 done") and then how many files are in Files. You can leave the page while it runs.
Nothing is copied twice: a file already in Files, from an earlier scan or an import, is skipped, so scanning again only adds new files. A file that could not be copied is tried again by the import, which is why the tick box stays in that case. A connection that cannot read the library does not stop anything else; the preview asks you to reconnect.
You can come back and run it again later with different boxes ticked. Anything already imported is skipped, so adding message history afterwards does not duplicate your contacts.
Where should your old stages go?#
The preview asks this whatever is ticked, because the old stages come across on every import, with or without deals. There are two answers.
- Bring the old stages across (the default, and recommended for a fresh workspace): your old stages are added to your AI pipeline under the names they have today, so nothing has to be set up again.
- Every pipeline in the old account lands on that one board. A funnel that was split across three or four pipelines becomes a single board, and a stage that appeared in two of them becomes one stage.
- The exception is a migration where Gene's team set each of your old pipelines up as its own Gene pipeline, under its old name, before the people came across. Those pipelines keep their own boards on every later import, so each deal lands on the board made for it.
- A pipeline kept as its own board holds exactly the stages it had in the old CRM, in the same order. Gene App adds no Contacting, Qualification, Handover or Won to it, and none of its stages fold into them.
- On the AI pipeline, each stage goes after Handover and before Won, and each deal lands in its own stage.
- Use the stages this workspace already has: no pipeline and no stage is created. Each deal moves into the closest stage you already have, as shown in the preview, and a deal with no match stays where it starts. Pick this when the workspace is already set up and in use.
A cold outreach pipeline never gets a board of its own, even when Gene's team keeps your other old pipelines separate. Gene App spots one by its name: a pipeline called something with email, cold, outreach, newsletter or mailing in it ("Email Pipeline", "Cold Outreach"). In Gene App a sequence simply runs and shows in analytics, and nobody is an opportunity until they reply, so:
- A deal in a stage that means the person replied ("Replied", "In Conversation", "Interested", "Responded") lands in Qualification on your sales pipeline. A stage that already names a later step ("Booked", "Won") lands on that step. (With Use the stages this workspace already has, these deals move into the closest stage you have, like any other.)
- Whichever answer you pick, every other deal in it (sent, opened, bounced, no reply, unsubscribed) brings the person across as a plain contact with no opportunity. It does not move their card, and a real deal they have elsewhere decides where they sit. The summary counts these as left behind on purpose.
- An email pipeline an earlier transfer already turned into its own Gene pipeline keeps being used, so its deals are not split across two boards. To drop it, move its contacts and delete it in Settings > Pipelines.
On the AI pipeline, stages whose names already mean one of Gene's locked stages ("Contacted", "Qualifying", "Booked", "Closed Won") fold into Contacting, Qualification, Handover or Won instead of being added a second time. On a pipeline kept as its own board they stay as they are.
Every stage the transfer adds arrives with its Gene switch off. Those are steps your team already runs by hand, after Handover, where Gene's job has ended. Contacting, Qualification, Handover and Won are not touched: Gene keeps working the first three as before, and Won stays off. Each stage's switch can be changed in Settings > Pipelines.
Should Gene start working these leads?#
Right above the Import button you choose whether Gene is on for the imported leads.
- Not yet (the default, and recommended): contacts import quietly with Gene switched off. You turn Gene on later, per lead or per stage, when you are ready for outreach.
- Yes, Gene is on: Gene replies when an imported lead messages you, and follows up on leads sitting in Contacting and Qualification.
Contacts that already existed in Gene App keep whatever Gene setting they had; this choice only applies to the ones the import creates.
Importing#
Press Import. Gene App checks your custom fields are all in place, adds your stages (unless you chose the stages you already have), creates your contacts, places each deal in its stage, and writes any message history into the inbox.
An import cannot be undone: nothing in Gene App removes imported contacts, messages or pipeline placements afterwards. Scanning and the preview write nothing to your contacts, inbox or pipeline (only the custom fields are set up), so review there first.
When it finishes, the summary counts anything that could not be imported, and anything left behind on purpose: a kind of message Gene App cannot store, or a record whose contact was not part of this transfer.
Four things worth knowing:
- No outreach fires during the import. Importing a thousand contacts does not send a thousand messages. Nothing goes out, and the AI does not reply to imported history.
- Threads arrive read. History lands as past conversation, not as thousands of unread messages.
- Imported messages say where they came from. Each one shows its time and, for your side, one label: "Sent in" the old CRM (for example "Sent in Gene 2.0"), whether it went out from a campaign, an automation or a person there. Gene 2.0 kept campaign messages as a template with every wording option ("{Hi|Hey|Hello} ..."), so those show the first option of each.
- Re-running is safe. If an import is interrupted, run it again. Anything already imported is recognised and skipped rather than duplicated.
Custom fields#
Every custom contact and opportunity field in your old CRM becomes a real Gene field as soon as the scan starts, on GoHighLevel, Gene 2.0 and HubSpot alike, so the fields are there to look at in Settings > Data & Fields before you import, and each value has a proper place to land. Contact fields become contact fields and opportunity fields become opportunity fields.
- Typed, with their choices. A number stays a number, an amount a currency field, a date a date, a yes/no a checkbox, and a dropdown or multi-select keeps its options.
- Opportunity fields stay opportunity fields. A GoHighLevel or Gene 2.0 opportunity field becomes a Gene opportunity field, shown when you open the deal on the Pipeline. In Gene App an opportunity is its contact placed in a pipeline, so each deal's values are saved on its contact. Where the contact already holds a value, it is kept. HubSpot fields all become contact fields.
- A field on both becomes one field. When your old CRM has a field of the same name on contacts and on opportunities, it becomes one custom contact field with Also show on the opportunity card on, so it is also listed under From contacts on Opportunities > Fields, because contact and opportunity fields share their values in Gene App.
- Nothing is duplicated. A field matches one you already have when the names are the same, ignoring capitals and punctuation ("Budget Range" and "budget range" are one field), on contacts or on opportunities. Its values go into your existing field. A field you deleted in Gene App stays deleted.
- Custom object fields are not contact fields. GoHighLevel lists the fields of every custom object (a listing's "Product Name", a developer's "Commission %") alongside the contact fields. Those stay off your contacts; the objects themselves come across as described in Custom objects.
- Gene's own fields are filled, not copied. An old field called Budget, Timelines, Motive, Objection, Lack of knowledge or Handover reason fills Gene App's own field of that name, and only where it is empty. Gene 2.0's "AI | Objection", "AI | Lack of Knowledge" and "AI | Handover Reason" fill Objection, Lack of knowledge and Handover reason the same way.
- Gene 2.0's bookkeeping stays behind. Gene 2.0 ran its AI out of contact fields, and Gene App keeps that information itself, so these fields are not made and their values are not copied: Previous Conversation, Conversation Summary, AI Conversation, AI Sales Depth, Message Undeliverable, Kill Instagram, Kill Facebook, Context from Instagram to WhatsApp, Context from Facebook to WhatsApp, SenderId, Audience Type, AI | Lead Temperature, AI | Language, AI | Project, AI | Opportunity Value, AI | Motive, AI | Timeframe, Live Instructions, Last Outreach Message and Last FollowUp Sequence. A folder that held only these fields is not made either.
- Gene 2.0's "AI | Audience Type" becomes Labels. It is not made as a field. Its value is added to the contact's Labels: Client becomes Lead, Listing becomes Owner, Partner becomes Partner. Labels the contact already has are kept, and a folder left empty without it is not made.
- AI capture starts off. Imported fields arrive with Gene's AI capture switched off, because most of them are your old system's bookkeeping. Turn it on per field in Data & Fields.
- Folders come across (GoHighLevel and Gene 2.0). Each folder your fields sit in becomes a Gene folder of the same name, and each field lands in its folder: contact folders on contacts, opportunity folders on opportunities. A field on both (see above) sits with the contact fields, so an opportunity folder that only held such fields is not made. A folder you already have with the same name is used, and a folder you renamed in Gene App is still recognized, so nothing is doubled. A field you have already put in a folder stays there. HubSpot property groups do not come across.
Contact fields show on every contact's record and in Contacts, opportunity fields when you open a deal on the Pipeline. Rename, reorder, put in folders or delete them in Settings > Data & Fields, under Contacts or Opportunities > Fields (a deleted field keeps its values and can be restored there). A transfer often brings dozens or hundreds of fields, so past 8 the contacts table starts with the first 8 as columns (the rest are in the Columns picker) and each contact shows its filled fields first, folder by folder, with a click on the folder's name for the rest and the folders with nothing filled in under one N more folders line (see Many fields).
Re-running the transfer is safe here too: a field or folder made by an earlier run is found and reused. A workspace transferred before folders came across gets them on its next run, with every field that is in no folder put in its old folder.
Custom objects#
GoHighLevel and Gene 2.0 accounts can hold custom objects: record types of their own beyond contacts and deals, such as Secondary Properties, Trophy Assets, Developers, Agents or an Italian division's assets. Gene App has no generic custom object, so each one goes to the place in Gene App that already does that job. The Custom objects card at the bottom of Settings > Transfer brings them across, apart from the contacts import.
- Press Preview. Gene reads the objects and shows, for each one, where it goes and what would happen: how many listings or contacts it adds, how many are already in Gene, how many a listing feed already brings in, and what is left behind. Nothing is saved yet. It takes a minute or two; you can leave the page.
- For each listing object, check its Division. Gene suggests the Division the object's name already names ("Trophy Assets" gets Trophy asset, "Secondary Properties" gets Secondary). Pick another, or type a new one ("EMF Italia asset") and it is added to the Division choices when you import. Leave it empty for no Division. Each one saves as soon as you change it.
- Press Import. It does what the preview showed. To import again later, preview again first.
Where each object goes:
- Listings and assets become properties. Each record lands in Properties with its name, price, bedrooms, place and description, the market it belongs to (resale, off-plan or off-market) when the object's name says so, and the Division chosen for its object. They arrive unlisted: the AI can offer them, the public listings page does not show them until someone publishes them. A record a connected listing feed already brings in is not added a second time; those listings get their Division from the feed (see Field values a feed sets).
- Their fields come with them. Each field of the object that the listings fill becomes a listing field under the name the old CRM gave it ("Risk Summary", "Asset ID"), shown in the edit modal and as a column. A field whose name a listing field already has fills that one instead, and a field you deleted stays deleted. The preview lists the new fields per object.
- Developers become Developer contacts. Each one is a company labelled Developer and appears on the Developers tab. A developer you already have, for example one a listing feed added, is matched by name and reused, never duplicated.
- Agents become Agent contacts, people labelled Agent. An agent you already have is matched by email or name.
- Associations fill the links Gene App already has. A property linked to a developer or an agent gets them as its Developer and Agent (only where nobody has picked one), a listing that names an agent on your team gets that teammate as its Selling agent on your team, and a lead linked to a property in the old CRM is linked to it in Gene App, as on Interested leads.
- Developer and Agent contacts get no outreach, no AI replies and no pipeline stage.
- A listing entered twice in the old CRM comes across once, with the fuller of the two records, and links to either record go to that one property. A price written with its unit ("72 Million EUR", "600k USD") is read as the full amount, and a price with several options becomes a from-price at the lowest. The currency comes from the price's own wording first and from the description only when the price names none. A bare figure too small to be a price, or a price in words only ("Investor can make offer"), leaves the listing at price on request with the old wording kept on it.
- Records someone made to test the CRM ("test", "delete me") are left behind, and so is an object that is not a listing, a developer, an agent or something the AI should know. The preview names each one.
The records are read from the old CRM when the connection is allowed to read custom objects. The one-click connection does not ask for that access, so on a Gene 2.0 account they come from the copies Gene 2.0's AI kept of the same records, where there are any. When an object or its links cannot be read, or the connection cannot even list the custom objects, the card says so and asks for a Private Integration Token (with nothing listed there is no Import button until then): in your old CRM open Settings, then Private Integrations, create one that may read custom objects and associations, paste its token on the card (it saves by itself and is never shown again), and preview again.
It is safe to run again. Every record is matched on its id in the old CRM, so a second run adds only what is new, gives a Division to listings an earlier run brought in without one (a Division someone set stays), and fills links that were waiting. Leads linked to a property are linked once the contacts themselves have come across, so run it once more after the contacts import.
The Gene 2.0 AI's knowledge#
What a Gene 2.0 workspace taught its AI can come across too. Gene's team runs this part of the transfer for you, on request; there is no button for it in Settings > Transfer.
- Assistant settings (assistant name, tone, qualification, services, extra instructions) fill the matching settings in AI. An empty setting is filled. A setting someone on your team changed in Gene App is kept as it is. A setting nobody has touched since the workspace was set up from your website takes your Gene 2.0 wording instead.
- The FAQ in Gene 2.0's linked Google Doc becomes entries in AI > Knowledge > FAQ. An answer longer than 2,000 characters is split into parts ("Question (part 2)") rather than cut short, so nothing in it is lost.
- Add-on services that Gene 2.0 kept as a custom object become FAQ entries too.
- A question that is already in your FAQ is skipped, so nothing is duplicated.
It is safe to run again: every FAQ entry is matched on its question, so a second run adds only what is new.
If it stops part way#
It carries on by itself. Everything the scan found is saved, so an import that stops resumes where it left off next time you open the page. Records already brought across are marked as done and are not touched again.
If Gene App cannot set up where your old fields go before the contacts come in, the import stops with an error instead of bringing contacts across with their details unsorted. Run it again; if the error comes back, contact Gene's team.
That only applies to an import that had already started. One that has scanned but never been imported waits for you, because what to bring across is your decision.
When an import fails, the page shows an Import failed card with the reason. Press Try the import again on that card to carry on from where it got to, with the same choices as before. Resync, above it, reads the whole account again first, so use it to bring in what was added since, not to finish a stopped import.
Resyncing later#
Once a transfer has finished, the same page offers Resync, along with the date of the last transfer. It reads the account again and brings across anything added since.
Resync never redoes finished work. Conversations already read are skipped, so a second run over a large account is much quicker than the first. To finish an import that failed part way, use Try the import again (see If it stops part way).
It is safe to press as often as you like. Every record is matched on the id it has in your old CRM, so anything already imported is recognised and skipped rather than written twice, and contacts already in Gene App are left exactly as they are.
This is a migration tool, not a live sync. Nothing happens on its own between presses.