A **List** is a static audience: a set of contacts whose membership is **explicit**. A contact is in a List because it was added, and it stays there until it's removed. Lists don't change on their own — contrast that with a [Segment](/audience/segments), whose membership is recomputed automatically from a rule.

Lists live in the **Audience** area of the SendOps dashboard.


  Anyone on your team can view Lists and their members. **Creating, editing, and deleting Lists — and adding or removing members — requires the "manage lists" permission** (`lists.manage`). Without it, the controls described below are hidden and the view is read-only. See [Members & roles](/team/members-and-roles).


## The Lists page

The **Lists** page shows every List in your organization. Each row shows:

- **Name** — the List's display name. Click a row to open its detail page.
- **Key** — a short, org-unique slug that stays stable even if you rename the List. Use it when you refer to a List from your own systems.
- **Source** — how the List was created: `ui` (made in the dashboard), `api`, `import`, or `topic_export` (a point-in-time snapshot of a [topic](/audience/topics)'s subscribers, captured into this List).
- **Members** — how many contacts are currently on the List.
- **Created** — when the List was created.

If you have the manage permission, a **New list** button sits at the top of the page, and each row has a menu to **Edit** or **Delete** the List.



If you don't have any Lists yet, the page explains where they come from and offers shortcuts to create one, read the **API docs**, or — if you haven't connected one — a **Connect a repo** button.

## Creating and editing a List

Click **New list** to create one. A List has just three fields:

- **Name** — the display name.
- **Key** — the stable slug. SendOps suggests one from the name; it must be unique in your org and **can't be changed after creation** (it's what your own systems and the API refer to).
- **Description** — optional notes about who the List is for.

Use a row's **Edit** action to change a List's name or description later. **Delete** removes the List and its membership (the contacts themselves are untouched); you'll be asked to confirm.


  Deleting a List drops its membership and can't be undone. The contacts on it aren't deleted — only the List and the record of who was on it.


## List detail

Open a List to see its full metadata — key, member count, description, and when it was created and last updated — followed by its **Members** table:

- **Email** — the member's email address.
- **Contact ID** — the contact's unique identifier.
- **Added** — when the contact was added to the List.

Members are paginated; use **Previous** and **Next** to move through large Lists.

### Adding members

With the manage permission, the detail page has an **Add contacts** button that opens a dialog with three ways to add people:

- **Paste emails** — type or paste one or more email addresses. Addresses that don't match an existing contact are **created as new contacts** automatically.
- **Upload a CSV** — import a file of email addresses the same way.
- **Pick existing contacts** — search your contacts and select them.

After it runs, the dialog reports a **per-row result** so you can see which addresses were added, which were already members, and which failed.

### Removing members

Each member row has a **Remove** action (manage permission required). Removing a contact takes it off this List only — it doesn't delete the contact or affect any other List or Segment.



## Other ways to manage Lists

Beyond the dashboard, you can manage Lists two other ways:

- **As code, in a connected repository.** Connect a GitHub repository and define your audience alongside your templates. SendOps validates and syncs it on every push. See [GitHub integration](/templates/github-integration).
- **Through the SendOps API.** Read List metadata and members with the [Lists & Segments API](https://developers.sendops.dev/api-reference/lists-segments). List *definitions* are read-only over the API, but you can add or remove a contact's **membership** inline when you create or update that contact — see the [Contacts API](https://developers.sendops.dev/api-reference/contacts) (scope `api.contacts.manage`).

Like Segments, a List has an **Active** or **Archived** status and can move between the two authoring paths: **Promote** a dashboard-managed List into your repository, or **Adopt** a git-backed one back into the app. If a git-backed List's source file is removed from the repo, the List becomes **Archived** — its members are kept, and it returns to **Active** if the file comes back. See [Managed vs git-backed authoring](/audience/managed-vs-git-authoring).


  A **List** here is an audience you target. It is unrelated to the [Undeliverable List](/reports/undeliverable-list) and the AWS SES suppression list, which are deliverability safeguards that hold addresses you should *not* send to.


## What's next?

- [Segments](/audience/segments) — dynamic audiences defined by a rule instead of explicit membership.
- [Topics](/audience/topics) — opt-out consent streams, not to be confused with a List.
- [Attributes](/audience/attributes) — the custom contact fields that power Segment rules.
- [Lists & Segments API](https://developers.sendops.dev/api-reference/lists-segments) — read Lists and their members programmatically.