> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revyops.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Archiving and Deleting

> The difference between deleting a record, marking it Do Not Contact, and status values like bounced or blocked.

## Overview

RevyOps has three separate ways to say "stop treating this record as active," and they're not interchangeable. This page explains what each one does and what a customer sees as a result.

## Deleting

`DELETE /public/contacts/{contact_id}` and `DELETE /public/companies/{company_id}` permanently remove the record. There is no undo and no archive: once deleted, the record is gone and a later `GET` for that ID returns a 404.

Delete a record when it shouldn't exist in your workspace at all, for example a duplicate or a record created by mistake. Don't use delete to stop outreach to someone you still want to keep on file, use **Do Not Contact** or a **status** change instead.

## Do Not Contact

A contact can be marked **Do Not Contact** independently of its status. This is the right tool when you want to suppress a contact from future outreach while keeping their record, history, and any activity intact.

* A contact marked Do Not Contact is excluded from future outreach.
* Marking Do Not Contact does not change the contact's `contact_status` and does not delete anything.
* You can filter contacts (and companies, by whether they have a Do Not Contact contact) on this flag. See [Companies](/data-model/companies#filtering-by-contacts) for filtering companies by their contacts' Do Not Contact state.

## Status Values

Contacts and companies each carry a `contact_status` / `company_status` field that reflects where the record stands in outreach, separately from Do Not Contact.

For contacts, statuses like `bounced` and `blocked` mean the last outreach attempt failed or was rejected, not that the record was deleted:

| Status         | What the customer sees                                                                                          |
| -------------- | --------------------------------------------------------------------------------------------------------------- |
| `active`       | The contact is currently in an active campaign.                                                                 |
| `replied`      | The contact has replied to at least one email.                                                                  |
| `interested`   | The contact is marked as interested.                                                                            |
| `unsubscribed` | The contact opted out.                                                                                          |
| `bounced`      | The contact's email bounced. RevyOps can set this automatically when your connected sequencer reports a bounce. |
| `blocked`      | The contact is blocked from further outreach.                                                                   |

For companies, `company_status` reflects the state of the account: `active`, `replied`, `interested`, `not-interested`, or `customer`. See [Companies](/data-model/companies) for what each means.

A status change is also tracked: `previous_status` and `status_changed_at` are read-only fields that show the prior status and when it changed, so you can see the transition without needing a separate history record.

## Choosing Between Them

| If you want to...                                             | Use              |
| ------------------------------------------------------------- | ---------------- |
| Remove a record entirely (duplicate, mistake)                 | `DELETE`         |
| Stop outreach to someone but keep their record and history    | Do Not Contact   |
| Reflect that a contact bounced, unsubscribed, or replied      | `contact_status` |
| Reflect where an account stands (active, customer, not a fit) | `company_status` |
