Slack

Slack + ScreenshotDEV

Team messaging and notifications

Post screenshots directly to Slack channels using Incoming Webhooks or the chat.postMessage API. Trigger captures from any event and share them with your team — no bot framework needed.

Key features

  • ✓Incoming Webhooks — zero auth setup, just a URL
  • ✓Block Kit image blocks for rich formatting
  • ✓chat.postMessage API for dynamic channel targeting
  • ✓Works with Slack Workflow Builder triggers
  • ✓Post screenshots as embeds with alt text and captions
  • ✓Combine with Make/Zapier for event-driven captures
Step by step

How to set it up

Install, configure, and start capturing.

1

Get a screenshot URL

First, capture a screenshot with ScreenshotDEV. Use store=true to get a persistent CDN URL you can share in Slack.

curl "https://api.screenshotdev.com/v1/screenshot\
  ?url=https://acme.com/pricing\
  &access_key=ak_live_your_key\
  &format=png\
  &store=true"

→ {
    "screenshot_url": "https://cdn.ssdev.io/s/x7k9m2.png",
    "width": 1280,
    "height": 960
  }
2

Create a Slack Incoming Webhook

In your Slack workspace: go to api.slack.com/apps, create an app, enable Incoming Webhooks, and add one to your target channel. Copy the webhook URL.

# Your webhook URL looks like:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
3

Post the screenshot to Slack

POST a JSON payload with a Block Kit image block. The image_url must be publicly accessible (use store=true in the screenshot request).

curl -X POST \
  -H "Content-type: application/json" \
  --data '{
    "text": "New screenshot captured",
    "blocks": [
      {
        "type": "section",
        "text": {
          "type": "mrkdwn",
          "text": "*Screenshot of acme.com/pricing*"
        }
      },
      {
        "type": "image",
        "image_url": "https://cdn.ssdev.io/s/x7k9m2.png",
        "alt_text": "Screenshot of acme.com pricing page",
        "title": {
          "type": "plain_text",
          "text": "acme.com/pricing"
        }
      }
    ]
  }' \
  https://hooks.slack.com/services/T.../B.../XXX...
Full example

Full capture → Slack pipeline

#!/bin/bash
# Capture a screenshot and post it to Slack

SSDEV_KEY="ak_live_your_key"
SLACK_WEBHOOK="https://hooks.slack.com/services/T.../B.../XXX..."
TARGET_URL="https://acme.com/pricing"

# 1. Take screenshot with persistent storage
RESPONSE=$(curl -s "https://api.screenshotdev.com/v1/screenshot\
?url=$TARGET_URL\
&access_key=$SSDEV_KEY\
&format=png\
&store=true\
&block_ads=true")

SCREENSHOT_URL=$(echo $RESPONSE | jq -r '.screenshot_url')

# 2. Post to Slack with Block Kit
curl -s -X POST \
  -H "Content-type: application/json" \
  --data "{
    \"text\": \"Screenshot of $TARGET_URL\",
    \"blocks\": [
      {
        \"type\": \"section\",
        \"text\": {
          \"type\": \"mrkdwn\",
          \"text\": \"*New screenshot captured*\\n<$TARGET_URL|View page>\\nCaptured at $(date -u +%Y-%m-%dT%H:%M:%SZ)\"
        }
      },
      {
        \"type\": \"image\",
        \"image_url\": \"$SCREENSHOT_URL\",
        \"alt_text\": \"Screenshot of $TARGET_URL\"
      }
    ]
  }" \
  "$SLACK_WEBHOOK"

Pro tip: Use store=true in your screenshot request to get a persistent CDN URL. Slack requires publicly accessible image URLs for Block Kit image blocks.

Start with 100 free API calls →

No credit card required

Use cases

What people build with Slack

Deploy notifications

Screenshot your staging site after each deploy and post it to #engineering for visual verification.

Competitor alerts

Schedule hourly captures of competitor pages and post to a monitoring channel when changes are detected.

Design review

Share a URL in Slack and get an automatic screenshot posted back — great for quick visual checks.

Incident documentation

Capture the state of a page during an incident and post it to the war room channel for context.

FAQ

Slack + ScreenshotDEV — Common questions

Do I need a paid Slack plan?
No. Incoming Webhooks work on all Slack plans including free. You just need permission to create a Slack app in your workspace.
Why do I need store=true?
Slack image blocks require a publicly accessible URL. The store=true parameter saves the screenshot to ScreenshotDEV's CDN and returns a persistent URL.
Can I post to multiple channels?
With Incoming Webhooks, each webhook is tied to one channel. For dynamic channel targeting, use the chat.postMessage API with a bot token and the chat:write scope.
What image formats does Slack support?
Slack image blocks support PNG, JPG, JPEG, and GIF. WebP is not supported in image blocks — use format=png or format=jpeg.

Slack + screenshots.
Ready in minutes.

100 free API calls per month. No credit card. No complex setup.

Slack Integration — ScreenshotDEV