---
title: "Documentation — PageWeave"
---

> For the full documentation index, see [PageWeave Documentation](https://pageweave.dev/docs) or fetch [llms.txt](https://pageweave.dev/llms.txt).

# Deleting & Restoring Content

Pages, snippets, and components are **discarded**, not destroyed immediately. A discarded item disappears from the website at once and remains restorable for **30 days**. Redirects are different: they are permanent routing metadata and are never soft-deleted.

## Discard tools

| Item | Discard | Restore |
|---|---|---|
| Page | `discard_page` | `restore_discarded` |
| Snippet | `discard_snippet` | `restore_discarded` |
| Component | `discard_component` | `restore_discarded` |

All discard tools require confirmation. Use `list_discarded` to find discarded items by type; it returns the `id` and original path. Restore by `type` + `id`:

```
list_discarded(website: "my-site", type: "page")
restore_discarded(website: "my-site", type: "page", id: "...")
```

`list_discarded` and `restore_discarded` require editor access.

## What happens when content is discarded

- The item stops serving immediately: discarded pages and snippets return 404; discarded components drop out of the rendered chrome.
- Sitemaps, feeds, and `llms.txt` exclude discarded content.
- The original path is freed. A replacement page or snippet can use the same path immediately; multiple discarded rows may share a path.
- Versions and content are retained until the 30-day retention job hard-deletes the row.

Redirects are not discardable. A redirect whose target page is discarded stops serving until the page is restored. `delete_redirect` is permanent and requires confirmation.

## Restoring and path conflicts

If the original path is still free, restore puts the item back there. If a live page, redirect source, or snippet now uses that path, restore fails with a conflict and a suggested path. Retry with `path`:

```
restore_discarded(website: "my-site", type: "page", id: "...", path: "/about-2")
restore_discarded(website: "my-site", type: "snippet", id: "...", path: "css/style-2.css")
```

Page paths start with `/`. Snippet paths are relative; a leading slash is accepted and stripped. `path` is not valid for components.

## Releases

Releases pin exact versions. If an older release still pins a discarded item, that release returns 404 for the item until it is restored; restoring it heals the release.

A release created **while** the item is discarded does not contain it. Restoring the item does not heal that release — create a new release with `scope: all` or an explicit selection to include it. The default `scope: mine` can answer `no_changes` after a restore because restoring does not author a new version.

## Retention and permanent deletion

Discarded pages, snippets, and components are hard-deleted after **30 days** by the retention job. There is no manual purge tool and no dashboard purge action.

Deleting a website or erasing an account hard-deletes its discarded rows with the website.

