SnapSharp + Notion
Embed live website screenshots and OG cards inside any Notion database.
Notion is the workspace tool of choice for thousands of product, growth, and ops teams — but its built-in URL preview is famously basic. SnapSharp closes that gap. Combine the official Notion API with SnapSharp's screenshot and metadata-extract endpoints to render a real visual preview for every URL in a database, generate branded OG cards for content calendars, attach PDF snapshots to meeting notes, and run scheduled visual diffs against pages your team owns. There is no Notion-side installation — you wire the two APIs together via Zapier, Make, n8n, or a small backend script. This page walks through the recommended pattern, the few quirks of Notion's `files` and `external` block types, and how this compares to standalone Notion enrichment apps.
How it works
A typical end-to-end flow takes 1–3 seconds.
- 1
New row added to Notion DB
A teammate (or an upstream automation) creates a row containing a URL.
- 2
Webhook or poll fires
A Notion-aware automation step (Zapier/Make/n8n/your backend) detects the new row.
- 3
SnapSharp renders the asset
The automation calls `/v1/screenshot` (or `/v1/og-image`, `/v1/extract`) with the URL from the row.
- 4
Result writes back to Notion
The image is uploaded to Notion via the `external` files API and the row is updated with the live preview.
Setup guide
Follow these steps in order. Each one stands alone, so you can copy code blocks directly without re-reading earlier ones.
1Create a Notion internal integration
In Notion, go to https://www.notion.so/my-integrations → "New integration". Choose "Internal" type, give it a name, and copy the secret. Share the target database with this integration so it can read/write rows.
2Pick your automation layer
Three good options — Zapier (cheapest in dev time, most expensive at scale), Make (cheap and fast), n8n (self-hosted, free at scale), or a small Node/Python script. The rest of this guide assumes Make because it offers the best price/effort balance.
3Add a "Notion → Watch Database Items" trigger
In Make, the Notion trigger polls a database and fires per new row. Map the row's URL property as the trigger output that downstream modules will consume.
4Call SnapSharp to render the image
Drop a SnapSharp "Take Screenshot" module after the Notion trigger. Map the URL property to SnapSharp's `url` input. Set width 1200, full_page false (Notion previews look best at viewport-only), format png.
POST https://api.snapsharp.dev/v1/screenshot Authorization: Bearer ss_live_xxx Content-Type: application/json { "url": "{{notion.url_property}}", "width": 1200, "format": "png", "block_ads": true, "upload_to_s3": true }5Update the Notion row with the preview
Add a Notion "Update Database Item" module. Map the SnapSharp `image_url` into a Files & Media property using the "external URL" upload mode — Notion will fetch and host the file itself.
// Notion API call (auto-generated by Make): PATCH /v1/pages/{{page_id}} { "properties": { "Preview": { "files": [{ "type": "external", "name": "preview.png", "external": { "url": "{{snapsharp.image_url}}" } }] } } }6Schedule it and forget it
Turn on the Make scenario. Every new row gets an auto-generated preview within seconds. Optional follow-up — schedule a daily "refresh" job that re-renders rows older than N days so screenshots stay current.
Trigger examples
Real-world patterns where Notion fires and SnapSharp produces the asset.
Content calendar publishes → OG card
When a row in your editorial database flips to "Ready", auto-generate a branded OG image from a SnapSharp template and attach it.
Vendor list URL added → screenshot
Procurement teams keep a Notion DB of vendors; auto-render every vendor URL so reviewers see the real homepage at a glance.
Meeting notes contain link → snapshot
Render a static screenshot of any URL pasted into a meeting note — the visual stays even if the original URL changes or 404s.
Visual monitor change → Notion comment
Connect a SnapSharp visual monitor to a Notion comment append: every time a tracked page changes by >5%, your incident page gets an annotated diff.
Action examples
Each card shows the operation and the inputs you'd typically map from upstream.
Auto-thumbnail every URL row
One-time backfill — iterate the database, render a screenshot per row, attach as Files property.
url: {{row.url}}
width: 1200
block_ads: trueGenerate OG image for content calendar
For Marketing teams — pull title and author from row, render a templated card, attach as cover.
template_id: editorial-card
variables.title: {{row.title}}
variables.author: {{row.author}}PDF archive of meeting links
Convert every URL pasted into a meeting note to a PDF, attach to the row.
url: {{row.url}}
format: pdfExtract metadata into structured properties
Pull title/description/OG image from a URL and write each into a separate Notion property.
url: {{row.url}}Pricing notes
Notion itself is free for personal use, with team plans starting at $10 per user/mo. None of the SnapSharp integrations live inside Notion's marketplace, so there is no Notion-side surcharge. SnapSharp consumption bills against your SnapSharp plan as usual; the automation layer (Make/Zapier/n8n) bills separately.
Limitations to know
- •Notion has no native screenshot block — every preview must be uploaded as either an external file URL or a hosted Notion file. Both work, both have ~5MB practical limits.
- •The Notion API rate-limits at 3 requests/sec per integration. Bulk backfills should batch and back off accordingly.
- •Notion's "external file" preview occasionally re-fetches the source URL. If the SnapSharp CDN URL ever moves, regenerate via your automation.
How SnapSharp compares to other apps in Notion
Quick reference — every alternative listed below is also available in Notion.
Notion's native preview is OG-tag based and breaks for SPAs, paywalled pages, or sites without OG. SnapSharp renders the actual page reliably.
Read-it-later tools don't expose a programmatic API for batch backfills or scheduled refresh — SnapSharp does.
Bannerbear is OG-only and has no screenshot endpoint, no metadata extract, no PDF export.
FAQ
Do I need to install anything inside Notion?
Only a Notion internal integration (one-time, free) so the automation layer can read and write the database. SnapSharp itself is called from the automation step, not from Notion directly.
Can I do this with just Zapier and no code?
Yes. Zapier has both Notion and SnapSharp apps — connect a "New Database Item" trigger to a "SnapSharp: Take Screenshot" action to a "Notion: Update Database Item" action. Same flow as the Make example above.
How big can the rendered image be?
Notion accepts external files up to ~5MB without issues. Standard 1200x800 PNG screenshots sit at 200–400KB; full-page captures of long pages can hit a few MB. Use WebP if you need smaller files.
Will the preview update automatically when the source page changes?
Notion caches the external URL for some time. Pair the integration with a SnapSharp visual monitor — when the page changes meaningfully, the monitor's webhook re-triggers the automation and writes a new preview.
Can I attach the screenshot to a specific block instead of a property?
Yes — the Notion API supports image blocks with `external` URLs. Use a "Notion: Append Block to Page" step instead of "Update Database Item" to drop the image inline at the bottom of the row's page.
Wire SnapSharp into Notion in under five minutes
Free plan includes 100 requests/mo — enough to build, test, and demo your automation before deciding on a paid plan.