Notion Integration

Every article becomes a page in your Notion blog database, with the title, slug, description, keyword, cover image and the full article body. Use it with a Notion-powered site (Notion Sites, Super, Feather and similar) or as a content library your team works from.

About five minutes

You need a Notion connection, a blog database, and to share the database with the connection. Notion AI can build the database for you from one prompt.

1. Create a connection

  • In Notion, open Developer tools → Connections. If you don't see a Developer section, turn it on under Settings → Developer → Enable developer features.
  • Click New connection, name it SEOLadders, keep API token as the authentication method, and click Create connection.
  • On the Configuration tab, copy the API token with the copy icon.
  • Under Capabilities, keep Read, Update and Insert content ticked. Set user capabilities to No user information: we never read people's profiles.

Why not a personal access token?

A personal access token works too, but it expires (one year at most) and publishing would stop the day it does. A connection's token does not expire.

2. Create the blog database

The quickest way is Notion AI. Open a new chat in Notion, paste this, and send it:

Paste into Notion AI
Create a full-page database called "Blog" with these properties:
- Name (title)
- Slug (text)
- Description (text)
- Tags (multi-select)
- Status (status) with the options "Draft" and "Published"
- Published (date)
- Cover (files & media)
Don't add any rows.

Already have a blog database? Use it. Only the title column is required; any of these columns that exist are filled in automatically, matched by name and type:

ColumnTypeWhat it gets
NameTitleArticle title (the only required column)
SlugTextURL slug
DescriptionTextMeta description
TagsMulti-selectTarget keyword
StatusStatus or select, with a Published optionSet to Published
PublishedDateThe day it was published
CoverFiles & mediaFeatured image (also set as the page cover)

Published: a Status column or a checkbox

Either a Status (or select) column called Status with an option named Published, or a checkbox called Published. Notion's default Status options are Not started, In progress and Done, so add a Published option if you build the column by hand.

3. Share the database with the connection

A connection can only see pages you share with it. Open the database, click ••• → Connections, choose SEOLadders and give it Can edit content: enough to create and edit pages, without changing your database's structure. Or add the database on the connection's Content access tab.

This one is by hand

Notion AI can build the database but cannot grant a connection access to it. Notion keeps permission changes out of its chat, so this step takes a few clicks.

4. Connect in SEOLadders

  • On the database page, click ••• → Copy link.
  • In SEOLadders open Settings → CMS Integration → Notion, paste the API token and the database link.
  • Click Test connection. It names the database and lists which column receives what, so you can check before anything publishes.
  • Save. New articles now go to Notion.

Auto-publish is on by default

With Mark articles as published on, each page is created with Status set to Published (or the checkbox ticked). Turn it off to add pages as drafts. A database with no Published or Status column has no draft state: a page is live as soon as it is added.

What gets published

  • Body: headings, paragraphs with bold, italics and links, bulleted and numbered lists, tables, quotes, images, YouTube videos and the FAQ, as native Notion blocks.
  • Cover: the featured image becomes the page cover.
  • Republishing: the updated article is added as a fresh page and the previous one is archived (it goes to Notion's trash, where you can restore it). The new page is created first, so a failed republish never leaves you without the article. Sites that route by the Slug column keep the same URL.

Troubleshooting

  • “Notion can't see this database” — the database isn't shared with the connection. Do step 3.
  • “Notion rejected the token” — copy the API token again from the connection's Configuration tab. A personal access token may have expired.
  • A column isn't filled in — check its type matches the table above. The test lists exactly which columns were found.

Not on Notion? See all destinations.