Publishing from Notion

Make a Notion page public, paste the URL into Linkfor, and know which block types render cleanly.

Linkfor renders Notion pages live — we don't copy your content into our database, we fetch it from Notion every time a visitor hits the URL (with smart caching at the edge so it's fast). For that to work, the page has to be published to web so the unauthenticated Notion public API can read it.

This page covers the publish flow, the URL format we accept, and the list of block types we render today.

1. Make the page public in Notion

Open the page in Notion. Click Share in the top right, then Publish to web. Confirm the toggle is on.

Notion gives you a public URL like:

https://www.notion.so/Your-Page-Title-3e1d7c8b1f4a4c5e9b6e7a8b9c0d1e2f

The trailing 32-character hex string is the page ID. Linkfor accepts either form when you add the route — paste the full URL, the bare ID, or the dashed-UUID form.

Add a screenshot of the Notion Share dialog with Publish to web toggled on.

2. Add a Notion route

In the dashboard, open the site's Routes tab and Add route. Pick type notion, paste the URL or page ID, and click Validate. We hit the Notion API to confirm the page is reachable and grab the title for display in the dashboard.

If validation fails:

  • Page is not public — go back to Notion and confirm Publish to web is on, not just Share with link.
  • Page not found — the ID is wrong, or the page was moved / deleted.

3. Permitted block types

These block types render cleanly today:

  • Headings (H1, H2, H3)
  • Paragraphs (with inline formatting: bold, italic, strikethrough, code, links, color)
  • Bulleted and numbered lists
  • To-do checkboxes
  • Toggles
  • Callouts
  • Quotes
  • Dividers
  • Code blocks (syntax-highlighted via Prism — language picker matters)
  • Tables
  • Columns
  • Images (Notion-hosted or unsplash.com)
  • Videos (Notion-hosted or YouTube / Vimeo embeds)
  • Files and PDFs
  • Math equations (KaTeX)
  • Tweet embeds (when enabled in Settings → Features)
  • Bookmarks
  • Sub-pages (when also published to web)

These render with reduced fidelity:

  • Synced blocks — the content shows up, but real-time sync isn't guaranteed (we cache the record map for ~30 seconds at the edge).
  • Database views — table, gallery, and list views render read-only. Calendar, board, and timeline views fall back to a list.

These don't render:

  • Forms — Notion's form blocks require their own auth flow.
  • AI blocks — non-deterministic output, opt-in only on Notion's side.
  • Comments and discussions — private to the workspace.
  • Page mentions to private pages — they show up as broken links.

4. Updating the page

Edit in Notion as normal. Linkfor caches the rendered record map for about 30 seconds at the edge, so changes appear within half a minute of saving. There's nothing to redeploy and no cache to bust manually.

If you need an instant invalidation (e.g. removing legally-sensitive content), the dashboard's Settings → Cache panel has a Purge button that drops the cached record map immediately.

5. URL format quirks

We accept all of these as input when you add a route:

https://www.notion.so/Your-Page-Title-3e1d7c8b1f4a4c5e9b6e7a8b9c0d1e2f
https://yourworkspace.notion.site/Your-Page-Title-3e1d7c8b1f4a4c5e9b6e7a8b9c0d1e2f
3e1d7c8b1f4a4c5e9b6e7a8b9c0d1e2f
3e1d7c8b-1f4a-4c5e-9b6e-7a8b9c0d1e2f

We don't accept private workspace URLs (/myworkspace/) — those require workspace-level auth that Linkfor never holds.

Performance notes

Notion's public API is rate-limited per page. Linkfor uses a stale-while-revalidate cache layer (Redis SWR with a 30-second fresh window) so a single page-view burst doesn't hammer Notion. A page that gets, say, 10k requests an hour against Linkfor maps to ~120 actual Notion fetches an hour — well below any rate-limit threshold.

Add a screenshot of the route editor with a validated Notion page (title preview, page-icon thumbnail).