Contacts & Custom Fields

Manage customer data across tickets and conversations.

Overview

Contacts represent the people who submit tickets and start conversations. Every ticket has a contact (the requester). Contacts are workspace-scoped — each workspace has its own contact list with no data shared between workspaces.

Managing Contacts

Contacts can be created manually from the Contacts page or auto-created when an inbound email arrives from a new sender. Each contact has a name, email address, and optional organization. The Contacts page shows a table layout with bulk delete support.

Organizations

Group contacts by company or team. Organizations are nested inside the Contacts page as a tab with modal create/edit forms. A contact can belong to one organization. Organizations help you see all contacts from the same company in one place.

Contact Lists

Contact Lists are workspace-scoped, many-to-many groupings of contacts. Unlike organizations, a contact can belong to any number of lists, and a list can contain any number of contacts. Each list has a name and an optional description.

Lists live alongside Organizations and Custom Fields as a tab inside the Contacts page. The list detail page at /dashboard/{slug}/contacts/lists/{id} shows the member table with bulk-remove and a picker modal to add contacts. Every contact's detail page also surfaces a Contact Lists panel in the left column so you can see and edit memberships without leaving the contact.

The main use of a list is as a condition in inbound automations — for example, route any email from a "VIPs" list straight to a senior agent, or auto-tag senders in a "Trial Users" list. Sender list memberships are pre-resolved once per rule run, so the check is O(1) per evaluation.

Only workspace owners can create, edit, or delete lists. There is no plan quota on Contact Lists. Deleting a list returns 409 Conflict when it's referenced by any automation rule, so a removal can't silently break a live workflow — remove the condition first, then delete the list. Membership is manual today; smart lists, CSV import, and per-list colors are planned.

Custom Fields

Define custom fields to store additional data on contacts. 7 field types are supported:

TypeDescription
textFree-form text
numberNumeric values
dateDate picker
selectDropdown with predefined options
booleanYes/no toggle
urlURL with validation
emailEmail with validation

Each field is workspace-scoped. Fields have a multiple flag (allow multiple values for select fields) and a featured flag (show on ticket/conversation detail sidebar). Values are edited inline on the ticket detail page.

Contacts in Tickets & Conversations

Every ticket is linked to a contact (the requester). When an email creates a ticket, the sender becomes the contact automatically. Conversations have an optional contact — set via a contact selector in the inbox detail sidebar. All tickets and conversations for a contact are listed on the contact's detail page.

API Access

All contact operations are available via the REST API — create, update, delete, list with filtering. Custom field definitions and values have their own endpoints. See the API Reference for details.

Frequently Asked Questions

How many custom field types does GoPimi support?

Seven: text, number, date, select, boolean, url, and email. Select fields support multi-value, and any field can be marked as featured to surface on the contact's sidebar.

Can a contact belong to multiple organizations?

No. Each contact has at most one organization. Use tags or custom fields if you need to associate a contact with multiple groupings.

What happens when an inbound email matches an existing contact?

The new message is attributed to that contact by exact email match. If no contact exists, one is created automatically and linked to the ticket or conversation.

Can I bulk import contacts?

Yes. Use POST /contacts for API-based import, or the CSV importer on the contacts page. Both respect the workspace's contact quota.

What are Contact Lists for?

Contact Lists are workspace-scoped, many-to-many groupings of contacts (name + optional description). The primary use is as a condition in inbound automations — for example, route any email from a VIP list straight to a senior agent. Owners can create and edit lists; there is no plan quota on lists. Membership is manual today; smart lists and CSV import are planned.

Can a contact belong to multiple lists?

Yes. Contact Lists are many-to-many — a contact can be in any number of lists, and a list can contain any number of contacts. This is the main difference from Organizations, where each contact belongs to at most one.

Related