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

# Notion

## Synced Objects

Notion supports the following Synced Objects:

* [Files](/managed-sync/api/file-schema)
  <p>
    Notion pages are synced as Markdown files.
  </p>
  * All child pages (including entries of a database) will be synced as distinct files with their `parentId` set to the ID of the parent page or database.
  * Page properties (including database entry properties) are synced to the file's [`customFields`](/managed-sync/api/file-schema) object and are also prepended to the Markdown content as a YAML frontmatter block, so they are available both as structured metadata and as searchable text.
  * The Title property is used as the file name.
  * Pages that have no title will produce a synced file with an empty `fileName`.
  * Attachments and images are represented as links within the page Markdown and must be downloaded separately.

### Page properties

When a Notion page has properties (for example, a database entry with `Status`, `Tags`, or `Owner` columns), each property is extracted into `customFields` on the synced [File](/managed-sync/api/file-schema) and rendered as YAML frontmatter at the top of the Markdown content.

Supported property types include `title`, `rich_text`, `number`, `select`, `multi_select`, `status`, `date`, `checkbox`, `url`, `email`, `phone_number`, `people`, `files`, `created_by`, `created_time`, `last_edited_by`, `last_edited_time`, `formula`, `unique_id`, `relation`, `rollup`, and `verification`. Values are normalized to plain strings, numbers, booleans, or arrays.

Example Markdown content for a database entry with `Status`, `Priority`, and `Owner` properties:

```markdown theme={null}
---
Status: In Progress
Priority: High
Owner: Jane Doe
---

# Page content goes here...
```

## Files

Send a request to [Enable Sync](/managed-sync/api/enable-a-sync) to start a file sync.

Syncs for Notion can be created with one of the following configurations:

* **Global Sync**: All pages and databases that are granted to the integration at time of authentication will be synced.

  <Warning>
    **Note:** Due to [limitations with Notion's search API](https://developers.notion.com/reference/search-optimizations-and-limitations#limitations), Global Sync is not guaranteed to be exhaustive; newly created or recently modified pages may be missing after the initial sync.

    Any pages not captured will be included when they are updated by the user or in the next scheduled [periodic full sync](/managed-sync/sync-api#sync-lifecycle), which runs every 24 hours.

    You can alternatively use a **Sync of specific pages** to explicitly designate page root(s) based on a user selection, which will guarantee that those pages and their descendants will always be fully synced.
  </Warning>
* **Sync of specific pages**: Only a group of specific pages and their descendants will be synced. Use this option when your users will select pages in your UI to sync from Notion.

  Page-specific syncs use Notion's hierarchy traversal API from the roots specified in `configuration.pageIds`, so all pages under the specified roots are always synced completely.

<Tabs>
  <Tab title="Global Sync">
    ```json Example theme={null}
    {
        "integration": "notion",
        "pipeline": "files",
        "configuration": {}
    }
    ```

    **Configuration options:**

    No configuration options are required for a global Sync.
  </Tab>

  <Tab title="Sync of specific pages">
    ```json Example theme={null}
    {
        "integration": "notion",
        "pipeline": "files",
        "configuration": {
          "pageIds": ["12345678-1234-1234-1234-1234567890ab"]
        }
    }
    ```

    **Configuration options:**

    <ParamField path="pageIds" type="string[]" required>
      A list of Notion Page IDs to limit the Sync scope to. All specified pages and their descendants will be synced.

      **Warning:** The Sync will fail if any of the specified pages were not granted access to your integration when the user connected their account.
    </ParamField>
  </Tab>
</Tabs>
