---
title: Contacts & contact groups
description: Manage the people who receive alerts, bundle them into groups, and understand how groups connect monitors to channels.
canonical: https://watchfor.io/docs/notifications/contact-groups
---

# Contacts & contact groups

Manage the people who receive alerts, bundle them into groups, and understand how groups connect monitors to channels.

Three ideas keep notifications organized: **contacts** (people), **contact
groups** (who gets notified together) and **channels** (where the message
goes). Contacts and groups live under **Alerting → Channels & contacts → Contacts & groups**, in two tabs;
channels under **Alerting → Channels & contacts**.

## Contacts vs. members

A **contact** is an address-book entry — a name, an email and optionally a
phone number. Contacts **receive** notifications; they can't log in, don't
take a seat and don't count toward your member limit. Use contacts for anyone
who should hear about incidents: teammates without accounts, stakeholders, a
client's ops inbox.

A **member** is a person with a WatchFor login (invited under
**Settings → Members** — see [members & roles](/docs/organization)). Members
can acknowledge incidents and take part in
[on-call schedules](/docs/alerting/on-call). If a member should also receive
alert emails, add them as a contact too — the two lists are independent.
Contacts and groups are managed by owners and admins; members can view both
tabs but not change them.

## The Contacts tab

Contacts are managed in a two-pane workspace: the list on the left, the
selected contact's details on the right.

- **The list** is sorted alphabetically and searchable by name, email or
  phone. The badge on each row shows how many groups the contact belongs to.
- **The details pane** edits everything in one place: name, email, phone and
  the contact's group memberships (tick the groups it should be in).
- Nothing is written until you press **Save changes** — an amber
  **Unsaved changes** badge appears as soon as the draft differs from what's
  stored, and **Cancel** restores it. Switching to another contact with
  unsaved edits asks you to confirm the discard first.

### Adding contacts

**Add Contact** creates a single contact (name, email, phone). The new
contact is selected right away so you can assign groups immediately.

Each contact's email must be **unique within the workspace** — it's the
identity notifications are sent to.

### Importing contacts from CSV

The **Import** button (top right of the page) bulk-creates contacts from a
CSV file:

```csv
name,email,phone
Jonas Jonaitis,jonas@example.com,+37060012345
Ona Onaite,ona@example.com,
```

- Columns: `name`, `email` required, `phone` optional. If `name` is empty,
  the part of the email before **@** is used.
- Rows with an invalid or missing email are **skipped with a warning** — the
  valid rows still import.
- Contacts whose email already exists (case-insensitive) are **skipped as
  duplicates**, so re-importing an updated file is safe — you'll see
  "N imported (M duplicates skipped)".
- Up to **1,000 rows** per file. Imported contacts count toward your plan's
  contact limit (see [pricing](/pricing)).

### Deleting in bulk

Every row in the contact list has a checkbox. Ticking one opens a small
action bar with **Select all**, **Clear** and **Delete**. "Select all"
selects the *currently visible* rows — combine it with search to, say,
select everyone `@old-client.com` and remove them in one confirmed action.

## The Contact Groups tab

A **contact group** bundles people who should be notified together — for
example *On-Call*, *Platform team* or *Leadership*. Alerts are routed to
groups, never to individual contacts, so group membership is what decides who
gets emailed when an incident fires.

The tab uses the same two-pane workspace: groups on the left, the selected
group on the right. The right pane edits everything about the group as one
draft — a single **Save changes** applies it all:

- **Name**, **description** and (once you have on-call policies) the
  **escalation policy** are edited inline at the top.
- Below them, the **member list** shows every contact in the workspace:
  current members pinned on top, everyone else under a *Not in group*
  divider. Tick and untick freely, use the search or **Select all / Clear**
  — then save once.

New groups are created with the **New group** button (name + description);
the group opens immediately so you can pick its members.

### The default group

Exactly **one** group is the default — marked with a **Default** badge and
an amber toggle in the group header. It is what new monitors are attached to
when nothing else is chosen, so the first alert of a freshly created monitor
always reaches someone.

- To move the default, open another group and switch its **Default** toggle
  on — it transfers (the default can't simply be turned off, there must
  always be one).
- The default group can't be deleted; make another group the default first.

New organizations start with a group named **On-Call** (the default) that
contains the owner as a contact, wired to the built-in
[default email channel](/docs/notifications/email#the-default-email-channel).
Rename it, add people, or promote a different group — nothing about the name
is special.

### Escalation policy

Setting an **Escalation policy** on a group connects it to
[on-call](/docs/alerting/on-call): critical incidents from monitors routed
through the group also page the on-call chain, on top of the regular channel
notifications. Warnings never escalate. If several of a monitor's groups carry
a policy, the first group by name decides.

## How groups connect monitors to channels

Routing is derived from the groups on both sides — there is no separate rules
table:

1. **Monitor → groups.** Each monitor's **Alerting** tab has a
   **Notification Targets** card where you pick one or more groups. A new
   monitor gets the default group automatically; bulk-imported monitors can
   set a group in the import.
2. **Channel → groups.** Each [channel](/docs/notifications) is attached to
   one or more groups when you create or edit it. A group can be on many
   channels — the same *On-Call* group can get a Slack message, a PagerDuty
   page and an email.
3. **Incident → channels.** When an incident fires, every enabled channel
   attached to any of the monitor's groups is notified, subject to the
   channel's **severity filter**.

Changes on either side apply immediately. Typical layouts:

- **Everything to email, criticals to the pager** — one email channel on
  *On-Call* (both severities) plus a PagerDuty channel on the same group with
  only *Critical* ticked.
- **Per-team rooms** — a *Web* group and a *Mail* group, each on its own
  Slack channel; monitors pick the group that matches their team.
- **Stakeholder digest** — a *Leadership* group on an email channel with only
  *Critical* ticked, added as a second target on the monitors that matter.

> **Email recipients follow group membership**
>
> An email channel addresses each alert to its groups' **current** members,
> so adding or removing a contact takes effect on the next alert — no need
> to re-save the channel. See
> [Email](/docs/notifications/email#recipients-come-from-contact-groups).

Deleting a group removes it from every monitor's Notification Targets and from
every channel; an email channel that only had that group is left with no
recipients until you attach another. A monitor left with no groups — or whose groups reach no
enabled channel — shows up on the dashboard's **Silent Monitors** card. Use
**Test notifications** on a monitor (⋯ menu) to see exactly which channels an
incident would reach.

All contact and group changes — creates, edits, deletions, imports and bulk
deletes — are recorded in the
[activity log](/docs/organization/activity-log).

## Also via API

Contacts and contact groups are fully manageable through the
[REST API](/docs/api/contacts) (`/v1/contacts`, `/v1/contact-groups`), the
[MCP server](/docs/api/mcp) (`list_contacts`, `create_contact`,
`list_contact_groups`, …) and A2A — handy for syncing an on-call roster from
another system. Attaching groups to channels and escalation policies stays in
the dashboard.

---

Canonical page: https://watchfor.io/docs/notifications/contact-groups · All docs: https://watchfor.io/docs · Site guide: https://watchfor.io/llms.txt
