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-3e1d7c8b1f4a4c5e9b6e7a8b9c0d1e2fThe 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.
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 confirmPublish to webis on, not justShare 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-7a8b9c0d1e2fWe 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.