Skip to main content

Contacts (people)

A contact is a person your team talks to — a website visitor, a lead, or a paying customer. Contacts are the CRM side of ConnectWiz: every conversation can be linked to a contact, so you always know who you are speaking with and what you know about them.

Contacts belong to exactly one workspace and are never visible to another.

Contacts have their own screen in the admin panel. Open Contacts from the left navigation to browse, search, create, edit, view and delete people — all backed by the same /api/contacts rules described below.

Linked conversations

A contact's profile does not yet list the conversations linked to that person. The rest of this page — searching, the profile, custom attributes — works as described; the conversation list on the profile arrives in a later update.

What a contact holds​

Every contact has:

FieldMeaning
Typevisitor, lead, or customer — where the person is in their journey.
First nameOptional. Up to 255 characters.
Last nameOptional. Up to 255 characters.
EmailOptional. A valid email address, up to 255 characters.
PhoneOptional. Up to 32 characters.
AvatarOptional. A picture URL.
AttributesYour own custom fields (any key/value data you want to keep).
External IDsIdentifiers from other systems you connect, keyed by system name.
Last seenWhen the contact was last active (set by the system).

All name, email and phone fields are optional, so you can create a contact from whatever you know — even just a first name, or just an email.

Contact types​

  • Visitor — someone browsing who has not identified themselves yet.
  • Lead — a potential customer you are nurturing.
  • Customer — a confirmed, paying customer.

The type is a free signal for your team; nothing stops you from promoting a visitor to a lead to a customer as the relationship grows.

Custom attributes and external IDs​

Two open-ended fields let you store anything specific to your business:

  • Attributes — a bag of custom fields. For example a plan name, a signup date, a lifetime value, or a preferred contact time.
  • External IDs — links to the same person in other tools, keyed by the system. For example a Stripe customer ID or a CRM record ID.

Both are free-form key/value data, so you decide the shape.

Working with contacts​

Create a contact​

Choose New contact, fill in what you know — a name, an email, a phone, the type — and add any custom attributes as key/value pairs. The form asks for at least one identifier (name, email or phone) so the contact is useful, and checks that an email, if given, is well-formed. The contact is created in your workspace and immediately available to attach to conversations.

Find a contact​

The Contacts screen lists people page by page. Search across name, email and phone with the single search box, and filter by type (visitor, lead, or customer) to focus on, say, just your customers. Your search, filter and page live in the address bar, so you can bookmark or share a filtered view.

Open a contact's profile​

Use a row's actions menu and choose View to open a contact's profile. It shows their type, email, phone, when they were last seen, when they were added, and all of their custom attributes.

Update a contact​

Choose Edit from a row's actions menu. You can change any field: correct a name, add an email, set the type, or add and remove custom attributes. Only the fields you change are sent; the rest are left as they are.

Delete a contact​

Choose Delete from a row's actions menu and confirm. Deleting removes the contact from your workspace.

Only administrators and supervisors can delete a contact. Agents can create, view, search and update contacts, but not delete them. See Roles & permissions.

Importing a list​

Import contacts takes a CSV or Excel file. Download a template first if you want the exact headers; otherwise upload what you have — columns are matched by their header text.

A large file keeps importing after you close the window. The dialog shows the running count, and you can leave.

Columns it does not recognise​

Rather than silently dropping them, the import lists every header it did not recognise, with a sample of that column's values so you can tell what it is. For each one you choose:

  • Add as custom field — name it and pick Text, Number or Date. The field is created as the file imports, and from then on it exists for every contact, shows on their profile, and can be used as a broadcast audience filter.
  • Ignore — the column is not imported.
Decide here, not later

This is the cheap moment. Importing without the extra columns and adding them afterwards means re-importing the same file, which is more work and more room for a mistake.

Adding fields during an import needs permission to manage custom fields. An agent without it still sees the unrecognised columns and is told they will be ignored, so nobody imports half a file believing it was complete.

Tagging everyone in the file​

Tag everyone in this file applies the tags you pick to every contact in it — including people you already had. One tag per import ("June list", "Fair leads") is the simplest way to reach exactly that group later, and it records where each person came from.

You can create a tag from inside the import; you do not have to prepare it first.

What comes out​

When it finishes you are told how many contacts were created, how many were skipped, how many rows had errors, and which tags were applied. Rows with errors are skipped individually — one bad phone number does not stop the file.

Tags, notes & photo​

A contact carries three extra things your team manages directly on the person — these are contact tags and notes, kept separate from a conversation's own tags and notes (a conversation has its own; a person has theirs). You will find all three on the contact's profile and, for the person linked to the open thread, in the inbox contact panel.

Contact tags​

Label a person with the same workspace tags you use elsewhere — for example vip, churn-risk, or newsletter. Open the contact's profile (or the inbox contact panel), then use Add tag to pick from your workspace tags, or the × on a chip to remove one. The list screen shows each contact's tags as small read-only chips next to their name. Any staff member who can edit a contact can change its tags.

Contact tags reuse your workspace's tag list — the same tags you attach to conversations. Tagging a person and tagging a conversation are independent: removing a tag from a contact never touches a conversation, and vice versa.

Contact notes​

Keep internal, staff-only notes about a person — context that should travel with the contact rather than a single thread (for example "prefers WhatsApp", "decision-maker", "renewal in March"). Notes are never shown to the contact. Add a note from the profile or the inbox contact panel; the newest appears first, and yours are marked You. You can delete your own notes; supervisors and administrators can delete anyone's.

Contact photo​

Upload a photo for a contact (JPEG, PNG, GIF or WebP, up to 4 MB). Open the contact for editing — or the profile — and use Upload photo. The image replaces any previous one and shows everywhere the contact appears: the inbox panel, the profile, the list, and the conversation header. You can add a photo once the contact exists, so on the create form it is offered after you save.

Contacts and conversations​

A conversation can be linked to a contact through the contact's identifier. Once linked, the conversation shows who you are talking to, and the contact's profile gives the context behind the thread. A conversation can also exist without a contact (for example an anonymous visitor) and be linked later.

Conversations and calls in your connected CRM​

With a CRM that keeps an activity timeline — such as HubSpot — ConnectWiz can write each finished conversation and each call onto the linked person's timeline over there (Activity sync, on the CRM's settings page; paid plans). It is off until you switch it on, and switching it on asks you to accept a notice first: the CRM's servers are abroad, so this is a transfer of your customers' data that you, as the data controller, instruct.

Only people linked to a CRM record are written, nothing from before you switched it on, never twice, and never an attachment, a call recording or an identity, tax, card or bank number. A clinic CRM that keeps health information never receives a conversation summary.

Sending a marketing message to someone who never agreed is what gets a WhatsApp number restricted and what a KVKK/GDPR complaint turns on. Consent is therefore recorded per contact as evidence, not as a checkbox.

Per channel, per category​

A contact's permission is stored for each channel — All channels (general), email, SMS, phone, WhatsApp, Telegram, Messenger, Instagram — and, underneath each channel, for each category:

CategoryTypical use
All marketingThe channel-wide answer. Set this and everything below follows it.
Order updatesShipping, delivery, appointment reminders.
PromotionsCampaigns, discounts, launches.
RecommendationsSuggestions based on what they bought or browsed.

The most specific answer wins: a channel setting overrides general, and a category setting overrides the channel. That is why a contact can be "yes to WhatsApp, but no promotions" — which is precisely what Meta recommends asking, because a customer given a narrower choice narrows it instead of blocking your business outright.

Open a contact and expand a channel to see and set the categories. Anything you have not set explicitly is marked inherited — it follows the broader answer rather than pretending to be a decision someone made.

What gets stored as proof​

Every grant and every withdrawal appends an immutable record. It is never edited or overwritten, so an answer given two years ago is still answerable today. Each record keeps:

  • When it happened, and which channel and category it covers.
  • Where it came from — widget signup, a web form, a WhatsApp keyword or WhatsApp's own stop control, an SMS reply, an unsubscribe link, the AI assistant, an import, İYS, the API, or a staff member acting manually.
  • The exact wording the person agreed to, plus a short wording revision fingerprint — so two people who ticked the same box can be shown to have agreed to the same text even after you later reword it.
  • IP address, browser and language for anything collected online.
  • Which staff member recorded a manual or bulk change.
  • Structured evidence such as the business name shown and the page the visitor was on when they opted in — or, for an import, which file the list came from and who uploaded it.

Click Show consent history on a contact to read the trail.

Collect it through the widget or a form

When the signup opt-in is enabled in Settings → Marketing, or a form has its consent box turned on, a visitor ticking it is recorded with all of the above automatically — including the business name they agreed to hear from. Consent you collected through us is consent you can prove through us.

Exporting the proof​

  • One contact — the Export button in the consent panel downloads that person's full trail as CSV. This is the shape a KVKK/GDPR subject-access request arrives in.
  • The whole workspace — export the complete consent log from the contacts list. Both files carry every evidence field, so they stand on their own outside the product.

Bulk changes​

Bulk marketing consent applies a grant or withdrawal across a filtered segment (by contact type and tag), for a chosen channel and category. Record what the segment agreed to in the Agreed statement field — for example "Signed paper form, March 2026". A bulk grant with no stated wording is an assertion with nothing behind it, and it is the first thing an auditor asks about.