A cold email that shows the prospect's own homepage gets opened and answered more than one that could have gone to anyone. Agencies show the site they'd redesign, SEO and CRO consultants circle what they'd fix, video tools play a scroll of the prospect's site behind the presenter. Doing that by hand caps you at a few prospects an hour. From a list of domains, it's a loop.
Step 1: capture each prospect's site
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","viewport_width":1280,"viewport_height":800,"format":"jpg","image_quality":85,"block_cookie_banners":true,"block_chats":true,"reduce_motion":true,"response_type":"json","cache":true,"cache_ttl":2592000,"fail_if_content_contains":["domain is for sale","under construction","coming soon"]}' \
--fail-with-body -o shot.jsonfail_if_content_contains skips parked domains and placeholder pages, so they never end up in an email. Failed requests don't count toward your monthly screenshots.
Step 2: put it in your own frame
Use the screenshot URL from step 1 inside an HTML template with a browser frame, a short note and your branding:
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"html":"<div style=\"box-sizing:border-box;width:1200px;height:750px;padding:48px;background:#eef2ff;font-family:system-ui\"><div style=\"font:600 30px system-ui;margin-bottom:24px\">3 quick wins for example.com 👇</div><div style=\"border-radius:12px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.2)\"><div style=\"height:32px;background:#e5e7eb\"></div><img src=\"https://example.com/screenshot-from-step-1.jpg\" style=\"display:block;width:100%\"></div></div>","viewport_width":1200,"viewport_height":750,"format":"jpg"}' \
--fail-with-body -o shot.jpgAdd arrows, highlights or a slow-loading badge with plain HTML and CSS. The same template serves every prospect.
Step 3: put it in the email
Use a signed URL with cache=true as the image's src, or upload the file to your sending tool. With a signed, cached URL, the image renders once and every open of the email is a free cache hit.
Video backgrounds
For personalized video tools, record a scroll-through of each prospect's site as MP4 and use it as the background layer:
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","format":"mp4","animation_scroll":true,"animation_duration":15,"viewport_width":1280,"viewport_height":720,"block_cookie_banners":true}' \
--fail-with-body -o shot.mp4Working through a list
- Send requests with
async=trueand awebhook_url, and setexternal_identifierto the lead's ID in your CRM, so each result lands on the right record. - Add
vision_promptwith your OpenAI key to get a one-line observation about each site to start your email with. See AI website analysis.
Frequently asked questions
Will the image show up in the prospect's inbox?
Most email clients show images from HTTPS URLs; some block images until the reader allows them. Keep the email readable without the image, and use JPG to keep it small.
How many prospects can I capture?
One screenshot each, plus one for the framed version if you make one. The free plan covers 100 a month, enough to test a campaign; paid plans cover thousands.
What about sites that block screenshots?
A few sites with strict bot protection may show a challenge. Those requests fail the content check or return an error, and you can skip them or send a text-only email.