---
title: Choose which rows are public
description: Publication is a table setting, independent of its fields and read access.
sidebar:
  order: 7
---

Publication is a table setting, independent of its fields and read access.
A private table stays private under every rule.

The Database screen lets the owner choose **All rows**, a date field, or a
checkbox field. An agent can make the same choice with `update_table`:

```json
{ "handle": "posts", "publication": { "field": null } }
```

This shows all rows immediately, including undated drafts and future-dated
rows. It changes no saved value. Ask the owner before widening publication.
The site's own filters still apply.

To use a field, declare it first or send the updated `fields` with the setting:

```json
{ "handle": "posts", "publication": { "field": "visible" } }
```

A boolean publishes only when true. A date publishes on that day, at midnight
UTC; a later date is scheduled and a missing date is a draft. The chosen field
does not need to be called `published_at`. That name can itself hold a boolean
when explicitly selected as the publication field. With All rows, the date
field can be omitted entirely. Changing field types does not convert existing
row values, so adding a new field is usually safer than retyping old values.

Omitting `publication` on an update preserves the setting. Setting it to
`null` restores the default: Posts and Portfolio use a date field called
`published_at`; other tables show every row. Existing tables keep those
defaults until explicitly changed. `get_site` reports the effective rule.

Listings, individual row pages, references, sitemaps and feeds follow the same
rule. A date rule also supplies the publication date and default newest-first
order. Boolean and All rows use newest-created-first and supply no publication
date. Portfolio keeps its manually chosen order first. A page can still
display or sort by a separate date.

A public form cannot set the field that publishes its submission. With All
rows, a publicly readable submission appears immediately. Never use All rows
as a way to expose private contact submissions.
