Your AI Connector Docs

Custom Fields, Lead Profile & Notes

Every contact has the basics — name, phone, email, channel. But you usually know a lot more about the people you talk to: their company, their birthday, what they bought last time, which conference they came in from. This page covers the extra pieces of information you can attach to a contact, and where each one lives.


Overview

What Best for Where it lives
Custom Fields Short structured facts (company, position, birthday, plan, etc.) A list of key/value pairs on the contact
Notes (= Lead Profile) A free-form description of who this person is and why they matter — read by the AI when personalising replies A single text area on the contact
Status Tracking where a contact is in their journey, including marking them spam A single value on the contact

If you’ve used the app for a while: what used to be two separate things — a long-form “Lead Profile” and a stacking list of dated Notes — are now merged into one field, labelled Notes on the contact’s full record. There’s no longer a separate timestamped notes log with titles; everything you’d write about a contact goes in this one box. See Notes below for what that means in practice.


Defining Custom Fields

Custom fields are reusable across all your contacts. Once you create a field like company, it becomes part of your account’s schema and appears as a suggestion every time you edit another contact.

Field type: Custom fields are free-text only — there are no dropdown, radio-button, or multiple-choice types. If you want a field to only ever hold one of a few set values (like a lead source of “Newsletter”, “Referral”, or “Ad”), type the same value consistently, or bulk-fill it via a spreadsheet export/re-import so every contact uses the exact wording you want.

Naming rules:

  • Field names must use lowercase letters, numbers, and underscores only, and must start with a letter or underscore (for example lead_source, not Lead Source).
  • Unaccented English letters only — spaces, capitals and accented or non-Latin characters are rejected. Even if the rest of your account is in another language, name the field cumpleanos or birthday, not cumpleaños. Only the name is restricted; the value you store in it can be in any language.
  • An account can have up to 50 custom fields.
  • Pick the name carefully — once a field is used in a template or campaign you cannot delete it without first removing those references.

Filling In Custom Fields on a Contact

  1. In the left sidebar, click Contacts.
  2. Click a contact’s row to open the quick-view panel, then click Edit — or click New contact to start a fresh one.
  3. In the contact form, find the Custom Fields section.
  4. Type a name into Add a field (existing field names appear as suggestions — click one to reuse it), click Add, then type the value.
  5. Click Save on the form to store it.

Fields that already have a value show up on the quick-view panel and the full contact record as read-only rows — to change a value, reopen Edit.

Deleting a field from the edit form removes that value from the contact. Removing a field from every contact and your account’s schema entirely still isn’t possible while it’s referenced by a template or campaign.


Letting the AI Fill Custom Fields For You

Your AI Agent can save information straight into custom fields as it comes up in the conversation — a birthday, a partner’s name, a dietary requirement, a table preference — so you can use it later in a broadcast or a follow-up. This is off by default, and it only ever writes into fields you have explicitly picked.

Two things have to be in place, and both are needed — this is the most common reason people find that nothing was saved:

1. Create the fields first. The AI can only write into fields that already exist on your account. Add them the normal way (see Filling In Custom Fields on a Contact above) — for example customer_birthday, partner_name, dietary_notes. Remember the naming rules: lowercase letters, numbers and underscores only.

2. Give the Agent permission and pick the fields.

  1. Click AI Agents in the sidebar and open the Agent.
  2. Go to the AI abilities tab.
  3. Under Contact updates, turn on Allow AI to collect extra info.
  4. A card titled Collect extra info during booking appears, listing your custom fields. Turn on the toggle next to each field the AI is allowed to fill in — creating a field is not enough on its own, and any field left off is silently ignored. (If the card says you have no custom fields yet, go back and create them first.)
  5. Click Save, then Publish the Agent. Changes sit in the draft until you publish, so an unpublished change won’t affect live conversations. Publishing pushes every pending draft change live, not only this one, so glance over the other tabs first if you’ve been editing.

Good to know:

  • It works throughout the conversation, not only when booking. Despite the card’s wording — bookings are where the feature started — the AI saves a value the moment the contact mentions it, whether or not an appointment is involved. You don’t need bookings switched on at all.
  • Each field can be marked required. Required only means “must be collected before the AI confirms an appointment” — it never blocks a normal conversation, and it does nothing on an Agent that doesn’t take bookings.
  • The AI saying it “noted” something is not the same as saving it. If the field isn’t created and switched on, the AI can still reply politely that it has taken note, but nothing lands on the contact. Check the contact record to confirm a value actually saved.
  • Tell the Agent when to ask. In the Agent’s instructions, describe when each field applies (“if the guest mentions an allergy or diet, save it to dietary_notes”). The AI reads that in plain language, so it won’t interrogate everyone with the same list.
  • Nothing is backfilled. Only conversations from the moment you publish are captured — details already mentioned in past chats are not filled in retroactively.
  • Set this up on the account that owns the contacts. Custom fields belong to a single account, so on an agency setup create them inside the sub-account whose Agent is doing the talking, not on the parent agency account.
  • Free-form notes belong in a field too. The conversational AI cannot write into a contact’s Lead profile / Notes box (see below) — that one is for you and your team, though Automations and the API can write it. If you want the AI itself to record something like “asked for a coeliac dish”, make it a custom field such as dietary_notes.

What the AI Can Read During a Conversation

If you’re deciding where a piece of information should live so the AI can act on it while chatting, this is the difference that matters:

  • Custom fields: the AI reads them on every reply. All of a contact’s custom field values are available to the AI throughout the conversation — however the field was filled in (by you, by the AI earlier, through an import or the API). So a rule in your Agent’s instructions like “greet returning customers by their preferred_barber” works, because the AI can see the value at that moment.
  • Tags: the AI does not see them while chatting. Tagging runs as a separate step after the AI’s reply is sent — the AI applies tags based on your descriptions, but it is not shown which tags a contact already carries during the conversation. Instructions like “if the contact has the VIP tag, offer the discount” will not work.

The rule of thumb: anything the AI should read and act on mid-conversation goes in a custom field. Tags are for everything that happens around the conversation — filtering and segmenting contacts, targeting broadcasts, and firing tag webhooks into your other systems the moment the AI applies one.


Bulk-Loading Custom Fields

The import wizard’s column mapping only recognises first name, last name, phone, email, tags, and notes — there’s no “map this spreadsheet column to a custom field” step (tags, by contrast, do import as real tags). To bulk-load custom field values today, use the API — which route you take depends on whether the contacts already exist.

Adding brand-new contacts? The API’s bulk contact-import endpoint takes custom field values right in the same call, so you don’t need a second pass. Include a custom_fields object on each record alongside the name, phone and email, and the contacts arrive with their custom fields already filled in. The request format is documented in the Contacts section of the API reference.

Filling in contacts you already have?

  1. List your contacts through the API to get each contact’s ID. The CSV export does not include a contact ID column or any custom-field columns. See API Access for how to get a key and call the endpoint.
  2. Fill in the values in your spreadsheet.
  3. Use the API’s contact-update endpoint (see API Access) to write them back per contact, since the import wizard itself doesn’t have a custom-field column mapping yet. Each update only touches the keys you send — any custom fields you leave out keep their current values.

Notes (= Lead Profile)

On a contact’s full record (click Open full record from the quick-view panel), the Notes panel is a single free-text box — the same underlying field also referred to as “Lead Profile” elsewhere. In the contact’s Edit form the very same box is labelled Lead profile, described as “Internal notes about this contact”, so don’t go hunting for a second field. Write anything relevant to the conversation: business type, pain points, company size, recent activity, anything that helps personalise outreach.

How the AI uses it: in a message template — a broadcast message, a follow-up, an AI Agent’s instructions — you can include a placeholder like {{personal_context|write a one-line opener that references their business}}. When that template is sent to a specific contact, the AI reads their Notes and writes a personalised line using what’s there. If a contact has no Notes, the placeholder is simply removed from the message.

The AI does not write this for you — you or your team fill it in. Think of it as the cheat sheet you’d want a sales rep to read before picking up the phone. If you want the AI itself to record something it learns in a conversation, use a custom field instead — see Letting the AI Fill Custom Fields For You.

Editing is straightforward: type in the box, then click Save note (or Discard to drop unsaved changes). There’s no separate title or date per entry — it’s one running text block per contact, so if you want a dated log, prefix each addition with the date yourself.


Status

Every contact has a Status badge showing where they are in their journey:

Status What it means
New Just came in, not yet engaged.
Engaged Actively in conversation.
Lead Showing buying interest.
Customer Converted.
Churned Was a customer, no longer active.
Spam Hidden from your main lists; the AI bot will not engage with them, Do Not Disturb is turned on, and they’re excluded from campaigns.

Click the Status badge directly in the contacts table to change it inline — for any status except Spam, which you set through the bulk Mark as spam action (and its confirmation) since it has those extra side effects. Unmarking spam is available the same way, as Unmark as spam.


Assigning a Contact to a Team Member

Ownership assignment — giving one teammate a contact so others don’t reply by accident — is set from the Chats screen rather than the Contacts page: open the conversation and use the assignee control there. See Chat Interface for the full walkthrough. Only account owners and users with the right permission can change an assignment.


Using Custom Fields in Broadcasts and Templates

Custom fields earn their keep inside outgoing messages. Anywhere you can write a message — broadcast messages, WhatsApp templates, AI Agent instructions — you can drop in a placeholder like:

Hey {{first_name}}, hope things are going well at {{company}}!

When the message goes out, {{first_name}} and {{company}} are replaced with the values from each contact. If a contact doesn’t have that field filled in, the placeholder is left blank.

Some tips:

  • Use lowercase, underscore-style names — the placeholder must match the field name exactly ({{company}}, not {{Company}}).
  • Built-in fields work too{{first_name}}, {{last_name}}, {{email}}, and {{phone_number}} work without setting them up as custom fields.
  • Combine with Notes — for AI-personalised lines, use {{personal_context|your instruction}} instead of a fixed custom field; the AI writes something fresh based on the contact’s Notes.
  • You can’t delete a field that’s in use — if a template uses {{company}}, the system blocks deleting company until you remove it from those templates.

Need Help?

A good rule of thumb for what goes where:

  • A short, structured fact you’ll filter or merge on → custom field.
  • A paragraph of context for the AI or your team to read → Notes.
  • Who owns the conversation → the assignee, set from Chats.

Still stuck? Reach out to support and we’ll help you set it up.


Next Steps