Automate Notion Screenshots with FreshShots: Keep Your Knowledge Base Current

Notion is perfect for building internal knowledge bases, but keeping screenshots current is a nightmare. Product updates happen daily, but documentation screenshots lag behind by months. FreshShots solves this by automatically capturing and updating screenshots so your Notion pages stay accurate.
Why Notion Screenshot Management is Broken
Notion’s flexibility makes it ideal for documentation, but screenshot management is painful:
- Upload workflow: Capture → drag into Notion → hope it looks good
- No version control: Old screenshots accumulate, causing confusion
- Manual updates: Every product change = hours of screenshot hunting
- Inconsistent quality: Different team members create different styles
- Storage bloat: Notion fills with outdated images
How FreshShots Transforms Notion Documentation
FreshShots automates the entire screenshot lifecycle:
- Automatic capture: Screenshots generate based on your current product
- Direct embedding: Use URLs instead of file uploads
- Always current: Images update automatically when your product changes
- Consistent quality: Same viewport, zoom, and framing every time
- No storage issues: Images hosted on global CDN
Complete Setup Guide: FreshShots + Notion
Step 1: Prepare Your Application
Add data-freshshots-id
attributes to key UI elements:
<!-- Feature overview -->
<div data-freshshots-id="feature-dashboard" class="main-dashboard">
<!-- Dashboard content -->
</div>
<!-- User onboarding -->
<section data-freshshots-id="onboarding-flow" class="welcome-screen">
<!-- Onboarding steps -->
</section>
<!-- Settings interface -->
<form data-freshshots-id="account-settings" class="settings-form">
<!-- Settings fields -->
</form>
Step 2: Create FreshShots Workflows
Basic Documentation Workflow:
[
{
"action": "visit_page",
"url": "https://your-app.com/dashboard"
},
{
"action": "take_screenshot",
"selector": "feature-dashboard",
"save_screenshot_to": "dashboard-overview.png",
"viewport_size": { "width": 1280, "height": 720 }
},
{
"action": "visit_page",
"url": "https://your-app.com/onboarding"
},
{
"action": "take_screenshot",
"selector": "onboarding-flow",
"save_screenshot_to": "user-onboarding.png"
}
]
Advanced User Flow Documentation:
[
{
"action": "visit_page",
"url": "https://your-app.com/login"
},
{
"action": "type_input",
"selector": "email-field",
"input_value": "[email protected]"
},
{
"action": "type_input",
"selector": "password-field",
"input_value": "demopassword"
},
{
"action": "click_element",
"selector": "login-button"
},
{
"action": "take_screenshot",
"selector": "welcome-dashboard",
"save_screenshot_to": "post-login-dashboard.png"
}
]
Step 3: Embed in Notion
Method 1: Direct Image Embedding
- In Notion, type
/image
- Select “Link to image”
- Paste FreshShots CDN URL:
https://cdn.freshshots.io/1/dashboard-overview.png
Method 2: Embed Block (Recommended)
- Type
/embed
in Notion - Paste the CDN URL
- Notion will render the image with better caching
Step 4: Create Notion Templates
Build reusable templates for consistent documentation:
Feature Documentation Template:
# [Feature Name]
## Overview

## Key Components

## User Flow

## Settings & Configuration

Advanced Notion + FreshShots Workflows
Multi-State Documentation
Capture different states of the same feature:
[
{
"action": "visit_page",
"url": "https://your-app.com/dashboard"
},
{
"action": "take_screenshot",
"selector": "notification-center",
"save_screenshot_to": "notifications-empty.png"
},
{
"action": "click_element",
"selector": "add-notification-btn"
},
{
"action": "take_screenshot",
"selector": "notification-center",
"save_screenshot_to": "notifications-with-content.png"
}
]
Error State Documentation
Document error handling and edge cases:
[
{
"action": "visit_page",
"url": "https://your-app.com/form"
},
{
"action": "click_element",
"selector": "submit-button"
},
{
"action": "take_screenshot",
"selector": "form-container",
"save_screenshot_to": "form-validation-errors.png"
}
]
Mobile-First Documentation
Create mobile-optimized screenshots:
{
"action": "take_screenshot",
"selector": "mobile-navigation",
"save_screenshot_to": "mobile-nav.png",
"viewport_size": { "width": 375, "height": 812 },
"image_zoom": 1.5
}
Notion Organization Best Practices
Page Structure
Before FreshShots:
📁 Product Documentation
📄 Feature A (outdated screenshots)
📄 Feature B (missing visuals)
📄 API Docs (manual diagrams)
After FreshShots:
📁 Product Documentation
📄 Feature A ✅ (auto-updated)
📄 Feature B ✅ (always current)
📄 API Docs ✅ (live examples)
📄 Screenshot Library (CDN URLs)
Database Integration
Create a Notion database to track screenshots:
Feature | Screenshot URL | Last Updated | Status |
---|---|---|---|
Dashboard | https://cdn.freshshots.io/1/dashboard.png |
Auto | ✅ Live |
Settings | https://cdn.freshshots.io/1/settings.png |
Auto | ✅ Live |
Onboarding | https://cdn.freshshots.io/1/onboarding.png |
Auto | ✅ Live |
Template Library
Build a collection of reusable documentation patterns:
API Documentation Template:
# API Endpoint: [Name]
## Request Example

## Response Format

## Error Handling

Automation Strategies
Trigger Updates on Deployment
Add to your CI/CD pipeline:
- name: Update Notion Screenshots
run: |
curl -X POST https://api.freshshots.io/v1/run/123 \
-H "x-api-key: ${{ secrets.FRESHSHOTS_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"webhook_url": "https://your-notion-bot.com/updated"}'
Scheduled Documentation Reviews
Weekly screenshot updates:
name: Weekly Documentation Update
on:
schedule:
- cron: "0 10 * * 1" # Monday 10 AM
jobs:
refresh-screenshots:
runs-on: ubuntu-latest
steps:
- name: Trigger FreshShots Workflows
run: |
# Update all documentation workflows
for workflow in 123 124 125; do
curl -X POST https://api.freshshots.io/v1/run/$workflow \
-H "x-api-key: ${{ secrets.FRESHSHOTS_API_KEY }}"
done
Notion API Integration
Automate Notion updates using the Notion API:
// Update Notion page with fresh screenshot
const notion = new Client({ auth: process.env.NOTION_TOKEN });
async function updateScreenshot(pageId, screenshotUrl) {
await notion.blocks.children.append({
block_id: pageId,
children: [{
type: 'image',
image: {
type: 'external',
external: { url: screenshotUrl }
}
}]
});
}
Measuring Impact: Notion Documentation ROI
Before FreshShots
- Time spent: 4-6 hours/week on screenshot management
- Documentation accuracy: 60% outdated screenshots
- Team frustration: High (constant manual work)
- User confusion: Frequent questions about UI differences
After FreshShots
- Time spent: 30 minutes initial setup, then automated
- Documentation accuracy: 100% current screenshots
- Team satisfaction: High (focus on writing, not screenshots)
- User experience: Seamless (docs match product exactly)
Troubleshooting Common Issues
Screenshots not displaying in Notion:
- Verify CDN URL is accessible
- Check image format (PNG recommended)
- Ensure URL is properly formatted
Images appear blurry:
- Increase
image_zoom
parameter - Use higher
viewport_size
resolution - Check Notion’s image compression settings
Authentication problems:
- Add login steps to workflow
- Verify session persistence
- Consider API-based authentication
Implementation Checklist
- Sign up for FreshShots (free plan available)
- Tag 5-10 key UI elements with
data-freshshots-id
- Create first workflow capturing main user flows
- Test embedding in a Notion test page
- Build documentation templates for consistent structure
- Set up automation to trigger updates
- Train team on new workflow
- Monitor and optimize screenshot quality
Advanced Tips for Power Users
Batch Processing
Create workflows that capture entire user journeys in one run.
Conditional Screenshots
Use error handling to capture different states based on page content.
Multi-Environment Support
Create separate workflows for staging vs. production environments.
Custom Integrations
Build webhooks that update specific Notion pages when screenshots are ready.
Ready to revolutionize your Notion documentation? Start your free FreshShots account and never manually manage screenshots again.
Need help integrating FreshShots with your specific Notion setup? Contact our team for personalized assistance.