Contacts
Find, add, import, filter and manage everyone Gene App is talking to, with a full detail page for each person.
On this page
- Overview
- Add or import contacts
- Add contact dialog
- Import contacts from CSV
- Find contacts
- Open and move through contacts
- Act on several contacts at once
- The contact detail page
- Do not contact
- Tags
- Tips
- Details
- List columns
- Search and pagination
- Sort options
- Filter options
- Possible duplicates
- Smart lists
- Bulk actions
- Merge contacts
- CSV import
- Create form fields
- Contact detail page
- Header
- Details tab
- Blocks around the Details tab
- Notes tab
- Tasks tab
- Files tab
- Activity tab
- WhatsApp phone indicator states
Overview#
Contacts is the record of every person in Gene App. Use it to find someone, add or import people, and open a person's detail page with their info, tasks, activity timeline, and AI controls.
People arrive three ways: added by hand, imported from a CSV, or captured automatically from your lead sources.
Add or import contacts#
- Add (header, top right) opens the Add contact dialog to create one person by hand. On save it opens that person's detail page.
- Import (header) opens the CSV import dialog to bring many people over at once.
Add contact dialog#
The dialog starts with Type: Lead (the default), Owner, Developer, Agent, Partner or Employee. Then come First name, Last name, Email, Phone (with a live WhatsApp indicator), Source, Interested in, Location (timezone), and for a Lead also Budget, Timelines, Temperature and Motive. Each field and its options are listed under Create form fields.
Where Data & Fields is enabled for your account, your workspace chooses which of these fields the dialog shows and which must be filled in, in Settings > Data & Fields > Contacts > New contact form (see New contact form). Out of the box only the standard fields above show, your own custom fields are off until you switch them on, and only First name is required. A required field has a red asterisk next to its name. Managers and admins see Customise this form at the top of the dialog, which takes them straight to that tab.
The title and the Cancel / Create contact buttons stay in place while the fields scroll, however many fields the dialog has. Create contact saves and opens the new contact; Cancel discards. If a required field is empty, Create stops, each empty field reads "Required to create this contact." and a line above the buttons names them, for example "Fill in Budget and Phone to create this contact."
When you leave the Email or Phone field, Gene checks whether another contact already has that email or number. If one does, the dialog says so ("Contact with this email already exists" or "Contact with this phone number already exists") before you press Create, with Merge with existing contact: it opens the existing contact and fills in any details it is missing, and no new contact is made. Changing the field clears the warning.
Import contacts from CSV#
- Upload a CSV by file picker or drag and drop.
- Gene maps recognised headers (first_name, last_name, email, phone, plus a single name column).
- Check the preview of the first 10 rows. It shows an "Other fields" count for unrecognised columns, and reports how many empty or duplicate rows were skipped.
- Run the import. A progress bar runs while it works.
Every recognised header is listed under CSV import.
Find contacts#
- Search (header): a free-text box that matches across name, email, and phone. It waits until you stop typing and resets to page 1.
- Sort (header): a dropdown of fixed field-and-direction options (name, budget, timeline). The list starts on newest first, and column headers sort too.
- Filter (header): narrows the list by labels, company or person, status (Open, Won, Lost, Abandoned), temperature, stage, source, tags, tags they don't have, contact field rules, country, budget, import, assigned to, has email, email domain, has phone, and created date. A badge shows the active filter count.
- Possible duplicates (header): narrows the list to contacts whose phone numbers look like the same person written two ways, so you can select a pair and merge it.
- Columns (header): picks what the table shows. It lists every standard field and every custom field, grouped, with a search box.
- Smart list tabs (under the header): a named list with its own rules (filters plus a sort order). You describe it in your own words, such as "Hot leads from the UK with a budget over 1M", and Gene turns that into rules. Its tab shows only the contacts that match. Smart lists are shared with everyone in the workspace. "All" is the built-in default.
Every option is listed under Sort options, Filter options, List columns and Smart lists below.
Open and move through contacts#
- Open a contact by clicking any row. Hovering a row loads its detail page in advance so it opens instantly.
- Keyboard navigation: press j to move down, k to move up, Enter to open the highlighted contact.
- Rows per page and a pager sit in the footer.
Act on several contacts at once#
- Select rows with the per-row checkbox, or the header checkbox (selects everyone on the current page).
- When a full page is selected, you can choose Select all N matching to act on every contact behind the current filters.
- Pick an action. They appear in two places:
- Right of the smart list tabs: Assign to a team member, Export to CSV, and Delete.
- Footer (in place of the page controls): Merge (two or more contacts), Gene on, Gene off, Do not contact (Turn on or Turn off), Delete, and Cancel.
WarningDeleting contacts permanently erases their conversations and messages. The confirmation dialog tells you how many contacts will be removed before you choose Delete or Cancel.
The contact detail page#
On the detail page every field saves on its own as you edit it. From there you can:
- upload a photo
- mark the contact as a Company or a Person and give it labels
- add tags, notes and tasks
- switch Gene on or off for that person
- turn Do not contact on or off (see Do not contact)
- move the deal along its stage bar, or reopen a won or lost deal
- delete the contact
Every field, block and tab is listed under Contact detail page below.
Do not contact#
Do not contact is one switch per contact. While it is on, nothing is sent to that person:
- no Gene AI replies or follow-ups;
- no Outbound, Reactivation, Newsletter or Cold email campaign;
- no Push this project;
- no welcome flow.
Messages from your team in the Inbox are blocked too, with a note that the contact is on Do not contact. Switch it off and they can be messaged again.
Where you see and change it:
- the contact page, the Inbox contact panel and the Pipeline lead details: a Do not contact switch;
- the Contacts list: a Do not contact filter, a Do not contact column, and a Do not contact action for the selected contacts (Turn on or Turn off);
- smart lists: the same Do not contact rule as the filter.
It turns on by itself when:
- a deal is marked lost with the reason Asked not to be contacted;
- the lead asks Gene to stop messaging them;
- a contact transferred from Gene 2.0 or GoHighLevel had Do not disturb on there, or carried a "dnd" tag (see Transfer from another CRM).
Tags#
Tags are yours. Gene App never adds one on its own: not for the source a lead came from, not for the form it filled in, not for an import. A tag goes on a contact only when someone puts it there:
- on the contact's Details tab
- through a routing rule you wrote with Add tag (see Routing rules)
- by asking the Gene sidebar, for one contact or many at once
- sent with the lead by your own integration, in the
tagsfield of a lead webhook
Where a lead came from is its Source, and the form it filled in is kept with its other details. A transfer from GoHighLevel or Gene 2.0 brings the tags you set there (see Transfer).
Tips#
TipImporting a CSV is the quickest way to move contacts from another system. Match your spreadsheet headers to first_name, last_name, email, and phone before uploading. Any extra columns are kept on each contact rather than dropped.
- Turning the Gene switch off on a contact's Details tab stops Gene from replying to and following up with just that person, without changing anything for the rest of your contacts.
- Labels describe who a contact is (a Lead, a Developer, an Agent, an Owner, a Partner). They are a filter only: every contact, whatever its labels, can sit on the pipeline board, gets Gene's replies when Gene is on, and counts in analytics. Filter the table by label to see one kind of contact.
Details#
Everything on the Contacts list and the contact detail page, control by control, for when you need to look up what a column, filter, button or field does.
List columns#
The Columns button in the header picks which fields the table shows.
- It lists every standard field and every custom field, grouped, with a search box at the top and a count of how many are shown.
- Contact name is always on. Every other column, custom ones included, can be switched on or off.
- Your choice is remembered in your browser.
- A base field renamed in Settings > Data & Fields shows under its new name.
By default the table shows Contact name, Labels, Phone, Email, Created, and Last activity. The full set:
- Contact group: Contact name, First name, Last name, Phone, Email, Location (timezone), Labels (up to three label chips, then "+N"), and Company or person.
- Contact name shows the first and last name with an initials avatar.
- A contact that is one of Gene's own phone numbers carries a purple "Gene Support" badge, the same one the Inbox shows, so Gene's support and test numbers are never mistaken for your leads.
- Lead group: Source, Budget, Timelines, Motive, Temperature, Objection, Lack of knowledge, Handover reason, Tags, Interested in.
- Interested in shows the properties the contact is linked to as chips, two at a time and then "+N" (hover for the full list). Click a chip to open the property. Several units of one project show as one chip. Property names typed on the contact that match no listing show as plain grey chips.
- When a lead's source names the listing (a listing reference such as a JamesEdition ref, the portal listing, a listing link, or a property field on a form), Gene App links that property and adds its name to Interested in, in every workspace. Reading property names out of chat messages, other form answers, and form or ad names is part of property auto-link.
- Pipeline and team group: Pipeline stage, Assigned to, Gene (whether Gene replies to that contact), and Do not contact (On or Off).
- Portal group: Portal login and Portal activity.
- Dates group: Created and Last activity (when the contact was last updated, as a relative time). Both headers show your local timezone offset.
- Custom fields group: one entry per custom contact field that is set to Shown in Settings > Data & Fields, leaving out the fields in a hidden folder. The first 8, in their Data & Fields order, start as columns; any beyond that start off and are switched on here. A custom column's header is the field's name; rename the field in Settings > Data & Fields > Contacts > Fields.
A checkbox column sits on the left of every row. The header checkbox selects everyone on the current page.
Search and pagination#
- Search box. Free text, matches across name, email, and phone. It waits until you stop typing. A clear (X) button appears while it has text.
- Footer: "Page N of M" and a Rows dropdown on the left, and Previous / Next with the current page on the right.
- Rows: 25 by default, 50, or 100, remembered per browser.
- While rows are selected, the left side shows the selection actions instead (see Bulk actions).
- Keyboard navigation: j (next row), k (previous row), Enter (open the highlighted contact).
Sort options#
The Sort dropdown is a short list of fixed field-and-direction pairs:
- Name (A to Z)
- Name (Z to A)
- Budget (high to low)
- Budget (low to high)
- Timeline (fast to slow)
- Timeline (slow to fast)
The list starts sorted newest first (by created date). Clicking a column header sorts on that column, and clicking again flips the direction. Sortable headers: Contact name, Phone, Email, Budget, Timelines, Created, Last activity, and Portal activity.
Filter options#
The Filter popover ("Filter contacts") has these fields:
- Labels. Multi-select chips: Lead, Owner, Developer, Agent, Partner, Employee. Matches a contact that carries any of the chosen labels.
- Company or person. Multi-select chips: Person, Company.
- Status. Multi-select chips: Open, Won, Lost, Abandoned. Matches a contact with any of the chosen statuses; Open also covers contacts not on a pipeline. With nothing picked every status shows. The chip reads, for example, "Status: Lost".
- Temperature. Multi-select chips. Options: Hot, Warm, Cold.
- Stage. Multi-select chips, one per stage name, with the stage's colour. A name used on several pipelines is one chip and matches that stage on every pipeline. Names that differ only in case, brackets, punctuation or spacing ("[DEAL HEALTH ENGINE]" and "Deal Health Engine") are one chip too, labelled with the plain version. Matches a contact in any of the chosen stages. Hidden when the workspace has no pipeline stages.
- Source. One dropdown that reads "Any source" until you pick.
- It lists every source any of your contacts came from, including WhatsApp, manual, and API leads that have no lead source set up behind them.
- Developer companies a listing feed adds are not leads, so the feed is not listed as a source. They stay on Contacts with the Developer label.
- Each source shows its brand icon and is named the way pipeline cards name it. Contacts from a Transfer are listed under the transfer (Gene 2.0, GoHighLevel or HubSpot), even though their rows and cards show the source the old CRM had, such as "JamesEdition".
- Tick one or several; the list stays open while you pick. The dropdown then shows the source's name, or "N sources" with their icons when you picked more than one.
- A search box appears when the workspace has more than 8 sources. Shows "Loading sources..." while fetching.
- Tags. One dropdown, like Source, that reads "Any tag" until you pick.
- It opens a searchable list of the workspace's tags, grouped under a heading for each prefix ("Team | Dubai" sits under Team as "Dubai"). Tags without a prefix keep their full name and come last.
- Searching matches the full tag, so typing "team" finds every Team tag.
- Tick one or several; the list stays open while you pick. The dropdown then shows the tag's name, or "N tags" when you picked more than one.
- A contact matches when it carries any of the chosen tags. Shows "Loading tags..." while fetching.
- Doesn't have tag. The same dropdown, reading "No tag left out" until you pick. A contact matches when it carries none of the chosen tags. A contact with no tags at all matches too. The chip reads "Doesn't have tag: Developer".
- Contact field. Rules on any contact field, one at a time:
- Pick a field: every contact and opportunity custom field, plus two a Gene 2.0 (GoHighLevel) transfer fills: Original source (the source text the old CRM had, such as "REHOUSE Website _ Enquire About Unit") and Contact type (imported). An imported Do not disturb is not a field: it is Do not contact.
- Pick how to compare: Is, Is not, Contains, Doesn't contain, Is empty, Is not empty.
- Type the value, or pick it from the field's choices when it has some (a yes/no field offers Yes and No). Then Add.
- Each rule shows as a chip with an x, such as "Contact type (imported) is not developer". A contact must match every rule.
- Comparisons ignore upper and lower case. On a field that holds several choices, Is matches when one of them is the value.
- A contact with nothing in the field matches Is not and Doesn't contain, so "Type is not developer" keeps the contacts whose type was never set. Is empty and Is not empty count a blank value as empty.
- Country. Multi-select chips, one per country your contacts are in (so a choice always matches someone). Matches a contact in any of the chosen countries. Hidden until a contact has a country.
- Budget. Two amount boxes, From and Up to (type "500k" or "1.5M"). A contact matches when their budget overlaps the range: a budget of 1M to 2M matches "from 1.5M", and a single-figure budget counts as both ends.
- Import. Multi-select chips, one per CSV import that marked its contacts, named "<import name> (<date>)", newest first. Hidden until the workspace has such an import.
- Matches a contact that came in, or was matched, through any of the chosen imports.
- An import marks its contacts when you choose Write an outreach for this import. Gene records it on the contact itself and adds no tag.
- Assigned to. Multi-select chips, one per team member. Matches a contact owned by any of them.
- Has email. Segmented control. Options: Any (default), Yes, No.
- Email domain. Text, for example acme.com.
- Has phone. Segmented control. Options: Any (default), Yes, No.
- Do not contact. Segmented control. Options: Any (default), Yes (only contacts it is on for), No (only contacts who can be messaged). The chip reads "Do not contact on" or "Do not contact off".
- Created. Two date inputs, "Created after" and "Created before".
The footer has Reset (clears the draft, disabled when nothing is set), Cancel, and Apply (shows the active filter count). The trigger button carries a badge with the active filter count.
Possible duplicates#
The Possible duplicates button beside the filter narrows the list to contacts whose phone numbers look like the same person written two ways (a local 0917 number against its +63 twin). Select a pair and use Merge.
Smart lists#
A row of tabs under the header. A smart list is a set of rules: its tab shows only the contacts that match them, with a count of how many match. Smart lists are shared with everyone in the workspace.
- All is the built-in default (no filters, newest first).
- Add smart list opens New smart list:
- Describe the list: one box where you write who should be in the list, such as "Hot leads from the UK with a budget over 1M" or "Meta leads in Negotiation assigned to Sara". A field rule can be written out too: "type is not developer and type is not agent" or "referral is Referral Agent" becomes one Contact field chip per rule, for any field the picker lists. Having an email address or phone number reads as the Has email or Has phone rule, not a search: "contacts who have an email address", "with a phone number", "without email" or "email is set". As you type, Gene turns it into rules, read against your workspace's own values: the countries your contacts are in, sources, tags, pipeline stages, team members and (when property links are on) the properties leads are interested in. Words it cannot place on its own are passed to the AI, which can only pick from those same values. That happens when you leave the box or press Enter (or after a short pause in typing), and "Reading the rest..." shows while it does. It never takes more than 20 seconds: if the AI cannot read the rest, the rules already shown stay and the box says "Couldn't read that, try again or adjust the rules below." with a Try again link.
- The rules show as chips under the box, each with an x to remove it, followed by a live count such as "48 contacts match". Words that did not become a rule are listed as "Not used". If nothing could be read, it says "Couldn't turn that into rules. Try a country, source, tag, temperature or budget, or adjust the rules below." and the words become a search (name, email, phone or any detail), so the list still works.
- Adjust rules (folded): a search box, the same sections as the Filter popover (see Filter options), and Order, the sort the list opens with, for fine-tuning by hand. They start from the filters and sort on screen; typing a description replaces the filters with what it reads and keeps the sort.
- Name: filled in from the description as you type. Edit it if you want another name.
- Create turns on as soon as the list has one rule; Enter in the description box creates it too. With none it reads "Add at least one rule, otherwise this list is the same as All." The sort alone does not count as a rule.
- The list keeps its description. Hovering its tab shows it.
- Click a tab to open the list. Its filters, search and sort go on screen, and its rules show as chips under the tabs, such as "Temperature: Hot", "Country: United Kingdom", "Budget from 1M", "Source: Meta Ads" or "Contact type (imported) is not agent". Click a chip to edit the rules.
- A list saved without rules shows no count, an Add rules chip and "No rules yet, so this list shows all contacts."
- If you change the filters or sort while a list is open, the chip row shows "Filters changed." with Keep them in this list (saves what is on screen as the list's rules) and Undo (puts the list's rules back).
A smart list can be the audience of an outreach or a Listing Newsletter: pick A Smart List on Outbound (see Outreach). Ask Gene on Outbound also makes a new smart list from a description of who you want to reach, and it shows up here as a tab like any other. When Push this project is on for your account, one or more smart lists can also be who a property is pushed to: Send to > People in smart lists in the push popup (see Push this project). It can also steer who gets a lead: a routing rule can say "In smart list" or "Not in smart list".
Custom lists have a per-list menu:
- Edit rules. Opens Rules for the list: the Describe the list box prefilled with its description, the rule chips with the live count, and Adjust rules. Rewriting the description reads it into fresh rules. Changes save as you make them; close it with the X. A save that gets no answer within 20 seconds stops and shows "Not saved." with Try again instead of staying on "Saving...".
- Rename. Inline rename.
- Delete list. Opens a confirm dialog. Removes only the list, not any contacts. A routing rule that used the list shows it as Deleted smart list and that condition stops matching.
Bulk actions#
Selecting one or more contacts brings up the selection actions in two places.
At the right of the smart list tabs:
- N selected count.
- "Select all N matching" appears when a full page is selected. It is capped, with a warning toast if the selection is truncated.
- "Clear selection" appears when more than one page is selected.
- Assign. Dropdown. Options: Unassigned, plus each team member. Reassigns the selected contacts.
- Export. Downloads the selected contacts as a CSV (columns: id, first_name, last_name, email, phone, source, original_source, lead_temperature, interested_in, created_at, updated_at). original_source is where a contact brought over by a Transfer came from in the old CRM (such as "JamesEdition"), and is empty for everyone else. interested_in lists the contact's properties, separated by semicolons. A selection that spans several pages exports in full.
- Delete. Opens a confirm dialog, then permanently erases the selected contacts' conversations and messages and removes the contacts from your lists.
In the footer, in place of the page controls (Previous and Next stay on the right):
- N selected count.
- Merge. Appears with 2+ contacts selected. See Merge contacts.
- Gene on and Gene off. Switch Gene on or off for every selected contact (the same switch as the Gene column and each contact's Gene switch).
- Do not contact. Dropdown with Turn on and Turn off, for every selected contact (the same switch as the Do not contact column and each contact's switch).
- Delete. Same confirm dialog as above.
- Cancel. Clears the selection.
You can also ask the AI sidebar to do this in bulk, for example "assign all cold leads to Nick". It counts the contacts it will change and shows that number on the confirmation card before anything happens. Deals work the same way: "assign all deals to Nick" reassigns every open deal (and its conversation) in one confirmation, and you can narrow it to won, lost or abandoned deals, one pipeline or stage, or one current owner ("give Niels's open deals to Sarah").
For one contact ("rename Olivia Lambert to Olivia Test", "give Olivia to Nick", "make Olivia hot"), the card names the contact in its title (Update Olivia Lambert, Reassign Olivia Lambert, Set Olivia Lambert to hot, Delete Olivia Lambert, Add a note to Olivia Lambert) and lists each change with the current value crossed out above the new one, so you can check it before you press Confirm. A delete lists the contact's email and phone, to tell apart two people with the same name.
Merge contacts#
- Pick the survivor. Step one picks which contact survives; the one with the most history is preselected. The others hand over their conversations, messages, tasks and property links and leave the list.
- Resolve conflicts. When the records disagree on a field, a second step lists each conflict with every value and who holds it. The survivor's value is preselected.
- Fields compared: name, assigned to, stage, temperature, source, budget, timeline, motive, role, timezone, or a custom field.
- Pick the phone and email. When the records have different phone numbers or emails, you pick the one the merged contact keeps (a contact holds one of each). The others stay with the merge record, so undoing the merge brings them back.
What else happens:
- The survivor keeps every label either record had.
- People who worked at a merged company now work at the survivor.
- A value only one record has is adopted automatically.
- Nothing is deleted, and every merge is recorded so it can be reversed.
CSV import#
The Import dialog reads an uploaded CSV in the standard format, so quoted fields and embedded commas survive.
Recognised header mappings (case-insensitive):
- First name: first_name, first name, firstname
- Last name: last_name, last name, lastname
- Email: email, e-mail, email address
- Phone: phone, telephone, phone number, mobile
- Source: source, lead source (defaults to "manual" if absent)
- Full name: name, full name, fullname (split into first and last when separate name columns are absent)
What happens to the rest:
- Any column that is not one of the above is preserved on each contact under Miscellaneous, keyed by its original header.
- The preview shows Name, Email, Phone, and an "Other fields" count for the first 10 rows.
- Rows that are entirely empty (no name, email, or phone) are skipped, with a warning toast.
- Duplicates (matching an existing contact or an earlier row by email or normalized phone) are skipped, with a warning toast.
- A phone or email that does not look valid is marked in the preview. The row still imports as typed.
- A row with only an email or phone and no name still imports, as an unnamed contact until someone adds a name.
Create form fields#
The Add contact dialog has these fields. "Optional" below is the default: any field except First name can be taken off the dialog or made required in New contact form. Type and Interested in always show and are never required.
- Type. Pills: Lead (default), Owner, Developer, Agent, Partner, Employee. Saved as the contact's label. The label never keeps a contact off the pipeline board or out of analytics.
- First name. Text. Always on the dialog and always required.
- Last name. Text. Optional.
- Email. Text. Optional. Warns inline if it does not look like a valid email, and Create stays off until it is fixed or cleared. Checked against your other contacts when you leave the field.
- Phone. Text. Optional. Shows a live WhatsApp indicator beside the field as you type. Checked against your other contacts when you leave the field.
- Source. Select. Options: Manual entry (default), Website form, Meta Ads, Google Ads, WhatsApp, Telegram, Referral, API. Unless the field is required, click the chosen source again to clear it.
- Budget. Text. Optional. Reads "Not set" while empty. Lead only, like Timelines, Temperature and Motive.
- Timelines. Text. Optional. Reads "Not set" while empty.
- Temperature. Select. Options: Hot, Warm, Cold; it starts as Not set. Click the chosen option again to clear it back to Not set (not when the field is required). What it shows, Not set included, is what the contact is saved with.
- Motive. Select. Options: Investment, Personal use, Mixed use; it starts as Not set. Click the chosen option again to clear it (not when the field is required).
- Interested in. Optional. Pick from your properties, or type a name to add your own. The field shows what you picked on one line; open it to see those ticked at the top of the list, and untick one to remove it.
- Location (timezone). Text. Optional. Placeholder: Europe/Lisbon.
- Custom fields. Every custom contact field switched on in New contact form (none are, out of the box), below the standard ones. Required ones come first and always show. With more than 8 of the rest, the first 8 show and Show all N fields opens the rest, with a search box from 12 fields.
Create contact saves and opens the new contact's detail page. Creation always happens through this dialog: going to /contacts/new directly just takes you back to the list.
Contact detail page#
The detail page has a header, the contact's stage bar, and five tabs: Details (the default), Notes, Tasks, Files, and Activity. The open tab is kept in the address, so a reload or a shared link lands on it.
Header#
- Avatar. Click it to upload a photo (any image type). Stored as the contact's avatar.
- Name, with a temperature badge beside it, and a purple "Gene Support" badge when the contact is one of Gene's own phone numbers.
- Stage bar under the name: one segment per stage of the contact's pipeline.
- Click a segment to move the deal there. It asks "Move to <stage>?" first.
- The stage name beside it ("stage 2 of 6") opens the pipeline area.
- A won or lost deal shows a Won or Lost badge instead, and a contact on no pipeline reads "Not on pipeline".
- The "Added" date follows.
- Pipeline area (opens from the stage name or badge): the current stage and why the contact got there, the deal value, a View board link, the contact's open tasks (including ones added on the Tasks tab), and Reopen deal when the deal is won or lost. Each stage move shows there with its reason.
- Action buttons:
- Open conversation, whenever the contact has a phone or an email. It opens their conversation in the Inbox, and starts one (on WhatsApp when there is a phone, otherwise on email) when there is none yet.
- A portal invite button, when the client portal is on.
- An email button, when the contact has an email: opens their conversation in the Inbox on the Email channel, and starts one when there is none yet. It never opens your mail app.
- Call (a WhatsApp icon), when a phone exists. It rings the contact on WhatsApp from Gene App. If the number it would call from does not have calling yet, it opens Turn on WhatsApp calling instead. See WhatsApp calls in the browser.
- Phone call (a phone icon), when a phone exists. When CloudTalk is connected under Settings > Communication > CloudTalk, it reads Call with CloudTalk and opens the CloudTalk desktop app with the number ready (see CloudTalk). Otherwise it reads Call by phone and opens your phone app.
Details tab#
The contact's fields in sections. There is no edit mode and no Save button: every field saves on its own. If you try to close or reload the tab while a change is still saving, the browser asks before you leave.
- A field that holds a value reads white and an empty one grey, so what is still missing stands out. Budget, Timelines, Objection, Lack of knowledge and Handover reason read Not set while empty, like the dropdowns.
- Text fields (First name, Last name, Email, Phone, Budget, Timelines, Objection, Lack of knowledge, Handover reason) save as you type, and right away when you click out of the field. Each has its own marker by its label: Saving..., then Saved, or "Not saved. Try again" with a Try again link. A failed save keeps what you typed.
- Dropdowns and pickers save the moment you choose, and flash when they land. If one fails, it goes back to the stored value with a message saying why.
- Identity: First name, Last name, Email, Phone. A contact holds one phone number and one email.
- An email that does not look like an email is not saved. When you leave the field it reads "This doesn't look like a valid email, so it isn't saved." Clearing the field does save.
- Phone shows the flag of the number's country in front of it (for a number that starts with + and its country code) and the WhatsApp indicator after it, and warns when the number may be incomplete. The number still saves.
- Type: each of these fields saves on its own with its own status.
- Company or person: two buttons; new contacts start as Person.
- Labels: any of Lead, Owner, Developer, Agent, Partner, Employee; new contacts start with Lead, or the type picked when they were added.
- Labels are a filter only. They never keep a contact off the pipeline board, away from Gene, or out of analytics. There is no separate audience type to set.
- Works at (for a person): a picker of your Company contacts. A company shows People at this company instead, each linking to that person.
- Developer of, Agent for or Owner of: when the contact is set as the Developer, Agent, or Owner of a property, a dropdown named after that role lists those properties. With more than one role it reads "Developer or owner of" and each row shows its role.
- Its header gives the count ("7 projects, 9 listings"; just "3 properties" when every listing has its own name). Click the header to open or close it. It starts folded when there are more than 5 projects.
- A property the contact is also interested in shows once, under Interested in, with the role beside it.
- Listings that share a name, such as the units of one project, show as one row with the unit count. Click it to list "Unit 1", "Unit 2" and so on, each linking to that listing.
- A single listing links straight to it.
- The list shows up to 200 listings, and says so when it stops there.
- Connected channels (only when present): WhatsApp ID, Instagram handle, Messenger handle. Read-only.
- Ownership: Assigned to (a team member, or Unassigned) and Followers (teammates watching the contact; Add opens a searchable list).
- Qualification: Temperature (Hot, Warm, Cold), Lead source, Interested in (pick from your properties, or type your own), Tags, Budget, Timelines, Motive (Investment, Personal use, Mixed use), Location (a searchable timezone picker), Objection, Lack of knowledge and Handover reason.
- Temperature, Lead source and Motive read Not set while empty. To clear one, open it and click the value that is already chosen; there is no separate Not set option.
- Gene fills Budget and Timelines when the lead gives them in the conversation, on these fields themselves rather than in a custom field, so the card, the Budget filter and the Budget and Timeline sorts all see them. A new answer replaces the old one, and the contact's timeline keeps the change from the old value to the new.
- Gene fills Objection, Lack of knowledge and Handover reason from the conversation: the lead's objections and how Gene handled them, the questions Gene could not answer, and why it handed the lead to your team. Each new answer from Gene replaces the last one, and you can edit them like any other field. Switch Gene fills off for a field in Settings > Data & Fields to keep what your team writes.
- With no properties linked, Interested in is a full-width Add a property field. Once a property is linked, the list shows above a smaller Add a property button, and the header gives the count ("2 properties", or "4 projects, 9 listings"). Click the header to open or close the list; it starts folded when there are more than 5 projects.
- Each row shows where the link came from (such as "Asked in chat") and, when the contact is also its Developer, Agent or Owner, that role.
- Names that match none of your properties fold into one Also mentioned line. Click it to list them, each with an X to remove it.
- Gene links properties itself from portal enquiries, listing references, forms and chat. A name you type that matches none of your properties is added as a note on the contact, not to your Properties.
- Tags show as chips with a remove control, plus a box: type a tag and press Enter. A tag that already exists in any capitalisation is not added twice.
- Custom fields: every custom contact field, editable in place. The fields in no folder come first, then each shown folder under its name (see Folders); a hidden folder's fields are left off. Use the + rail between fields to add a new one, which joins the folder of the field above it. A name another field already uses is refused under the box. A field's name is not edited here: rename it in Settings > Data & Fields > Contacts > Fields.
- To clear a single-select field, open it and click the option that is already picked. The field goes back to empty.
- A folder can't be hidden from the contact. A folder hidden earlier is listed under N hidden folders at the end of the section, with Show, which brings that folder back for the whole workspace (the Hidden button on its row in Settings > Data & Fields > Contacts > Fields does the same).
- With more than 8 custom fields, a folder's name is its dropdown: click it to open or close the folder. Beside the name it says how many fields are filled in, for example "3 of 16", or "16 fields" when none are. Closed, a folder shows the fields that hold a value; open, it shows all of them. A folder with every field filled in has nothing to open, so its name is plain.
- From 12 custom fields, one search box sits above the folders ("Search 40 fields"). It searches every folder at once, open, closed or under N more folders, plus the fields in no folder, matching a field's name, key or type. The matches show under their folder's name, and "No field matches" says when nothing does. Clear the box to get the folders back. Folders have no search box of their own.
- The folders with nothing filled in are grouped under one N more folders line at the end of the list (N folders when no folder holds a value). Click it to list them, then click a folder's name to open it; Show fewer folders folds them again. A folder you start filling in stays in that spot until you open the contact again, so it does not move while you type.
- The fields in no folder show the ones that hold a value, with Show all N fields for the rest. Without folders, the section shows the filled fields topped up with empty ones to 8, and one Show all N fields opens the rest. The + rails in a folder show whenever every field of it is on screen (all of them filled in, or the folder open), and not while a search is typed. See Many fields.
- Opportunity (only while the contact is in a pipeline): the opportunity fields switched to Also show on the contact in Settings > Data & Fields, grouped by folder the same way, each folder with the same dropdown. It is the same value as on the Pipeline, so a change on either side shows on both.
- Gene: one switch for this contact. Off stops Gene replying to and following up with this person.
- Under it, a contact who clicked Unsubscribe in one of your emails reads "Unsubscribed from marketing emails on (date)". Campaigns, newsletters and follow-ups by email skip them. Replies and booking emails still go out. A bounced address or a spam complaint shows the same way.
- Do not contact: one switch, "While this is on, no messages go to this contact." It saves the moment you flip it. See Do not contact for everything it stops.
Blocks around the Details tab#
Possible duplicate (above the sections). Appears when a lead hands Gene a phone or email that already belongs to a different contact and the two names do not match, so joining them would be a guess.
- It says which detail clashed and whose record holds it, and links straight to that record.
- The value the lead gave is kept as a note on this contact rather than saved over the other record.
- When the names do match, Gene joins the two records itself and no block appears. The older record's history, pipeline stage, deal value and owner move onto the contact the lead is talking to, and the merge is recorded so it can be reversed.
From the lead (below the sections). Read-only. Shows the lead's own form answers that arrived at capture (the contact's Miscellaneous data), with internal technical fields and duplicate keys filtered out (the link details below still show).
- Each answer is listed under the question the form asked ("Message: ABC").
- That includes answers from an earlier form the same lead filled in, such as the contact popup's message on a lead whose last form was a brochure request.
- For an older lead, Gene App works this out from the lead's own submissions and the forms registered on that site.
- Where the lead came from, carried in the link (a Gene App form's hidden fields, or the same parameters from any other source), shows by name. The inbox contact panel uses the same names.
| Shown as | Link parameter |
|---|---|
| Ad platform | utm_source |
| Ad type | utm_medium |
| Campaign | utm_campaign |
| Keyword | utm_term |
| Ad version | utm_content |
| Listing | listing_id |
| Referral code | ref |
- An answer it cannot match to a question shows under its field name (for example "Input 6").
- Gene AI reads the answers under the same questions: in its replies to the lead, in the first message it writes, and in the sidebar when you ask about the contact.
- It renders nothing when there is no lead data (for example a manual contact).
Source (below it). Read-only. The lead source name, a Channel headline (for Meta, the platform such as Facebook, Instagram, Audience Network, or Messenger, plus Organic or Paid), and rows for Campaign, Ad, Ad set, and Form when present.
Portal card (when the client portal is on): the contact's portal access and engagement (views, reading time and downloads over the last 30 days). A contact with no portal login yet gets one from the Invite to portal button at the top of the page.
Danger zone: Delete contact opens a dialog that asks you to type the contact's first name (or DELETE) before it removes them.
WarningDeleting a contact permanently erases their conversations and messages and removes the contact from your team's lists.
Notes tab#
A box ("Add a note about this contact...") to post a note, and the list of notes, each editable. The pencil ("Edit note") opens a note for editing: the text saves as you type, with a Saving... / Saved marker, and Done (or Esc) closes it. Emptying a note does not delete it; Done keeps the last saved text. Deleting a note removes it for everyone on the team, and only its author or a Manager can delete it. Empty state: "No notes yet".
Tasks tab#
- Add task reveals a form:
- Title (required), and Description (optional)
- Type: Follow up, Call back, Viewing, Document, Custom
- a due date-and-time
- Assign to: a team member, defaults to you
- a recurrence: No repeat, Repeat daily, weekly, monthly, yearly
- The task list splits into pending and a "Completed" group. Each task has a checkbox to toggle complete, shows its due date and "Repeats" cadence, and a trash icon to delete on hover.
- Empty state: "No follow-ups for this contact" with an Add a task button.
Files tab#
The documents kept on this contact: the ones your team uploaded, and the ones the lead sent with a form's File upload question. It is the same list as the inbox Documents panel.
- Upload file adds a file (max 25MB).
- Each file shows a thumbnail (the picture itself for an image, the file-type icon for anything else), its name, size and date. A file the lead sent reads From the lead and names the question and the form, such as "Passport, sent with Owner valuation request".
- Click a file (its thumbnail, its name or the eye icon) to open it in a new tab, the download icon to save it under its own name, or the trash icon to delete it.
- Files are private to your team. A link copied out of Gene App stops working within the hour; open the file again from the contact for a fresh one. Gene's AI knows the name of a file the lead sent, but never opens it.
- Empty state: "Attach a doc to this contact".
Activity tab#
The contact's timeline, newest first. Empty state: "No activity yet". Above it sit the contact's WhatsApp calls and, where CloudTalk is connected, their CloudTalk calls (with the recording and transcript; see CloudTalk). The timeline includes:
- follow-up decisions, with a Yes, Later, or No badge
- a marker for each note that jumps to the Notes tab
- audit activity: contact created/updated, deal created/updated, task created/completed
- Reassigned by a routing rule, when a rule with Reassign when this matches later moved the contact to a new owner, with the rule, what changed and the old and new owner
- recent messages from the contact's conversations, each tagged Received or Sent with its channel
WhatsApp phone indicator states#
The indicator beside a phone field (on the create form, the contact page and the Contact sidebar in the Inbox) shows whether the number is on WhatsApp, without slowing you down:
- Checking (spinner) while the lookup runs.
- Has WhatsApp (green message icon).
- No WhatsApp (muted struck-through message icon).
- Unknown (faint message icon) when the workspace has no connected WhatsApp session yet.
It is hidden while the field is empty or the number is still being typed, and it never stops you from saving.
Once a number has been checked, the answer is kept on the contact for 30 days. Opening the contact shows the kept answer straight away without checking again. Gene App checks again only when you type a different number, when the contact has never been checked, or when the last check is more than 30 days old. A number that has written to you on WhatsApp counts as Has WhatsApp without a lookup.