Get started for free Login

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:

  1. Automatic capture: Screenshots generate based on your current product
  2. Direct embedding: Use URLs instead of file uploads
  3. Always current: Images update automatically when your product changes
  4. Consistent quality: Same viewport, zoom, and framing every time
  5. 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

  1. In Notion, type /image
  2. Select “Link to image”
  3. Paste FreshShots CDN URL: https://cdn.freshshots.io/1/dashboard-overview.png

Method 2: Embed Block (Recommended)

  1. Type /embed in Notion
  2. Paste the CDN URL
  3. 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
![Feature Overview](https://cdn.freshshots.io/1/feature-overview.png)

## Key Components
![Component Details](https://cdn.freshshots.io/1/component-details.png)

## User Flow
![User Journey](https://cdn.freshshots.io/1/user-flow.png)

## Settings & Configuration  
![Settings Panel](https://cdn.freshshots.io/1/settings-panel.png)

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
![API Request](https://cdn.freshshots.io/1/api-request.png)

## Response Format  
![API Response](https://cdn.freshshots.io/1/api-response.png)

## Error Handling
![Error States](https://cdn.freshshots.io/1/api-errors.png)

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.

No credit card required

Get started for free

Save time and avoid manual screenshot hassle — keep your docs and helpdesk perfectly up to date with automated, consistent visuals that impress users and cut support requests.

Get started now