Marketing teams ship template edits frequently. Engineering teams have visual regression for their product UI and nothing equivalent for email. The screenshot API closes that gap: run a placement test on every template change, diff the rendered output, block the release if something broke.
What the API returns
- Screenshot URLs per provider (Gmail, Outlook.com, Outlook desktop, Yahoo, Mail.ru, Yandex, iCloud, ProtonMail, GMX).
- Desktop + mobile viewports.
- Dark + light variants.
- Perceptual-hash per image for diffing against the previous run.
- Placement verdict and auth verdict alongside the screenshot.
CI example (GitHub Actions)
- name: Email visual regression
run: |
TOKEN=$(curl -s -X POST https://check.live-direct-marketing.online/api/tests \
-H "Authorization: Bearer $INBOX_CHECK_TOKEN" \
-d @template.json | jq -r .token)
sleep 60
curl -s https://check.live-direct-marketing.online/api/tests/$TOKEN \
-H "Authorization: Bearer $INBOX_CHECK_TOKEN" \
> result.json
./scripts/diff-screenshots result.json baseline/Use cases
- Every PR that edits
email/*.htmltriggers a regression. - Block release if any provider diff > N% perceptual change.
- Post screenshot diffs as PR comments for designer review.
- Nightly baseline refresh for accepted templates.
Cost and limits
- Screenshots are included in the free tier of every placement test.
- Rate limits: same as normal testing (3/email/24h, 10/IP/24h anonymous; higher with OAuth).
- For CI scale (10+ runs/day): OAuth-authenticated API with paid tier recommended for priority queueing.
Try the screenshot API
Grab a token and wire up your email CI. Free tier sufficient for most teams.
FAQ
Can I use my own Puppeteer for the desktop Outlook render?
You can, but our rendering worker handles it at scale and you don't want to maintain a Windows CI runner. Included free.
How fast is the screenshot ready after test submission?
30–120 seconds per provider, parallelised.
Is the perceptual hash stable enough for diffing?
pHash + dHash combined; tolerant to small anti-aliasing differences, strict on structural changes. Default threshold tuneable per client.
Related reading