# Manage contacts

Source: https://kirora.io/docs/guides/contacts/manage-contacts

Find, add, edit, merge, export and delete contacts, set a contact's time zone, and change many contacts at once.

A contact is one person in your workspace: their email address, phone number or your own ID for them, with their details, consent and history. You manage contacts on the **Contacts** page, under **Audience** in the sidebar.

## Find contacts

**Contacts** lists everyone in your workspace. Each row shows the contact's **Email**, **Phone**, **Email consent**, **Lists** and when they were **Added**. Sort by **Contact**, **Email** or **Added** by choosing the column heading.

- Search by name or email in the search box. Search covers every contact, not just the page you're on.
- Filter with the row of filters under the search box:
  - **Consent**: **Email consent**, **Push consent**, or **Email and push consent**
  - **Suppression**: **Email stopped, any reason** or **Email not stopped**
  - **List** and **Segment**: members of one list, or contacts in one segment as of its last count
  - **Added on or after**: a date
- Choose **Clear filters** to see everyone again.

The count above the table shows how many contacts match. Past 10,000 it reads *10,000+*. Filters are kept in the page's address, so you can bookmark or share a filtered view.

A contact whose email is stopped has a badge beside their address: **Unsubscribed**, **Bounced**, **Marked as spam** or **Blocked**. See [Suppression](https://kirora.io/docs/guides/contacts/consent-and-unsubscribes#suppression).

## Add a contact by hand

Members, admins and the owner can add contacts. To add one person, for example a customer who signed up in person or a teammate for a test:

1. On **Contacts**, choose **Add contacts**, then **Add one contact**.
2. Enter at least one way to identify them: **Email**, **Phone** or **External ID** (your own ID for them). The other fields are optional.
3. Optionally, set **Time zone**, **Country** and **Language and region**, and add **Custom attributes** such as `loyalty_tier`.
4. Under **Marketing consent**, tick only what they agreed to: **This person agreed to receive marketing email** or **This person agreed to receive push notifications**.
5. If you tick either, say **How did they agree?**: **They opted in** or **They're existing customers**, then describe **Where and how**. Optionally, add **When they agreed** and **What they agreed to**.
6. Choose **Create contact**.

Consent comes only from these boxes: adding a contact doesn't give it. Allowing notifications on a device isn't consent either, and consent doesn't lift suppression.

A phone number without a country code is read as a number in your workspace's country. An email address at `example.com` is a test contact: it goes through every step of a campaign or journey, but nothing is delivered to it.

**Add contacts** also offers **Import a CSV**, **Collect with a signup form** and **Send from your app**. See [Import contacts](https://kirora.io/docs/guides/contacts/import-contacts) and [Create a signup form](https://kirora.io/docs/guides/forms/create-a-signup-form).

If the email, phone or external ID already belongs to another contact, the contact isn't created and you see *A contact with this email already exists in this workspace* (or *phone* or *externalId*). Open the existing contact instead.

## Edit a contact

1. Open the contact from **Contacts**.
2. Choose the more actions button (⋯) at the top of their profile, then **Edit**.
3. Change what you need, then choose **Save changes**.

Members, admins and the owner can edit contacts. Each change is recorded on the contact's timeline, and changing an attribute can start journeys that begin when it changes. To remove an attribute, remove its row under **Custom attributes**.

If an admin or the owner has hidden an attribute, members don't see its value and their edits keep it as it is. See [Hide sensitive attributes](https://kirora.io/docs/guides/contacts/attributes#hide-sensitive-attributes).

**Granting consent.** Ticking a consent box asks **How did they agree?**, as when you add a contact. Unticking one withdraws consent at once. For an existing customer whose consent is still held, **Restate how they agreed** records it again. In Canada, existing-customer consent lapses two years after it was last stated, so restate it after a new purchase.

**Country.** Left blank, Kirora works it out from the phone number, otherwise from the time zone. Country decides which privacy rules apply.

## Set a contact's time zone

A contact's time zone decides when time-based messages reach them. It's set in one of these ways:

- **By hand**: edit the contact and pick a **Time zone**.
- **By import**: map a column to **Time zone**. Use a time zone name such as `Europe/London` or `America/Toronto`; anything else fails the row with *Invalid IANA timezone*.
- **From your app**: a developer sets `timezone` when they create or update the contact through the API.

**Workspace default** means the contact has no time zone of their own, and your workspace's time zone is used instead. It follows the workspace's setting if that changes later. Keep the default unless you know where the person is.

Kirora uses the contact's time zone for:

| What | How it's used |
| --- | --- |
| Date-triggered journeys | A birthday or renewal journey starts at its set time in the contact's time zone. See [Date triggers](https://kirora.io/docs/guides/journeys/how-journeys-work#date-triggers). |
| Journey waits | Working days, set hours and **Until a date** are counted in the contact's time zone. See [Add steps](https://kirora.io/docs/guides/journeys/build-a-journey#add-steps). |
| Campaigns sent in each contact's time zone | Each person gets the campaign at the same clock time where they are. Contacts without a time zone use the zone you choose under **For contacts without a time zone**. See [Schedule for later](https://kirora.io/docs/guides/campaigns/schedule-and-send#schedule-for-later). |
| Quiet hours | Marketing email and push due in quiet hours wait until they end where the contact is. See [Sending rules](https://kirora.io/docs/guides/messaging/overview#sending-rules). |
| Times in merge tags | A time is shown in the contact's time zone, or UTC when they have none. See [Format numbers, prices and dates](https://kirora.io/docs/guides/email-designer/merge-tags-and-personalisation#format-numbers-prices-and-dates). |

## Change many contacts at once

Tick contacts on **Contacts** to open the actions bar. To tick everyone on the page, use the checkbox in the table's heading.

| Action | What it does | Who can |
| --- | --- | --- |
| **Add to list** | Adds them to a list. Existing members are kept | Members, admins and the owner |
| **Remove from list** | Removes them from a list. The contacts and their consent are kept | Admins and the owner |
| **Set an attribute** | Gives each contact the same attribute value, replacing any they had | Admins and the owner |
| **Suppress email** | Stops marketing email to them. Transactional email still sends, and consent is unchanged | Admins and the owner |
| **Undo manual suppression** | Lifts only blocks added by hand. Unsubscribes, bounces and spam complaints stay | Admins and the owner |
| **Export** | Downloads them as a CSV file | Admins and the owner |
| **Delete** | Deletes them for good (see below) | Admins and the owner |

Adding contacts to a list doesn't give consent, but it can start journeys that begin when someone joins the list. Setting an attribute works as an edit does, so journeys that start when that attribute changes start for these contacts.

For ticked rows, one suppression change covers up to 100 contacts and one export up to 500. Changing the search, filters or page clears the selection.

### Select every matching contact

Admins and the owner can act on more than one page. Tick every contact on the page and, when more match on later pages, choose **Select all matching** (or **Select all contacts** when no search or filter is set). The action then covers every contact that matches the search and filters, including those on later pages, and **Export** becomes **Export all matching**.

These actions run in the background. A progress window shows how many contacts have been processed; you can close it and the work carries on. When it finishes, it says how many contacts changed, for example *1,180 of 1,200 contacts deleted*. Contacts added while it runs may be included.

Members can act only on the contacts ticked on the current page.

## Delete contacts

Only admins and the owner can delete contacts. Deleting can't be undone.

**To delete one contact**, open their profile, choose the more actions button (⋯), then **Delete**, then **Delete contact**.

**To delete many**, tick them on **Contacts** (or use **Select all matching**), choose **Delete**, tick the box to confirm you want to delete them permanently, then choose **Delete contacts**.

When a contact is deleted:

- They leave every list and journey, and their events, consent history, topics and devices are deleted.
- Messages already sent to them, and conversions credited to your campaigns and journeys, are kept without their details, so totals and revenue stay correct.
- Their form submissions are kept, but no longer linked to them.
- An address that bounced, marked your email as spam or unsubscribed stays blocked. If you add the same person again, Kirora still won't send them marketing email.

A contact with a message being sent to them at that moment can't be deleted. Deleting one shows *A message to this contact is being sent right now and cannot be recalled.* Try again once delivery finishes. When you delete many, those contacts are skipped and not counted.

> [!TIP]
> To answer a request for someone's data before you delete them, open their profile and choose **Export data**. See [Export a contact's data](https://kirora.io/docs/guides/contacts/contact-profile#export-a-contacts-data).

## Merge a duplicate contact

If one person ends up as two contacts, merge them rather than deleting one. Only admins and the owner can merge. Open the contact to keep and choose **Merge a duplicate**, then pick the **Duplicate to merge in** and choose **Merge and delete the duplicate**.

- Where both have a value, the contact you opened keeps its own. The duplicate fills in what it lacks, attributes included.
- The duplicate's messages, events, devices and consent history move across, and its lists and suppressions are added.
- The duplicate is then deleted, which ends its journeys. A merge can't be undone.

## Export contacts

Admins and the owner can export contacts as a CSV file.

1. Choose **Export CSV** on **Contacts** (everyone, or those matching your filters), on a list or on a segment. For contacts you've selected on **Contacts**, choose **Export** in the actions bar.
2. Pick only the columns you need, so the file holds less personal data.
3. Choose **Request export**. The export's page updates by itself while the file is prepared.
4. Choose **Download CSV**. If the export failed or has expired, choose **Request it again**.

## Frequently asked questions

### Why didn't a contact get a campaign at 9:00 their time?

Check their **Time zone** on their profile. **Workspace default** means they got it at 9:00 in the zone chosen for contacts without a time zone. Quiet hours can also hold a message until they end.

## Next steps

- [A contact's profile](https://kirora.io/docs/guides/contacts/contact-profile) — see everything that's happened to one person
- [Import contacts](https://kirora.io/docs/guides/contacts/import-contacts) — add many people from a CSV
- [Lists](https://kirora.io/docs/guides/contacts/lists) — keep contacts you choose together