You're monitoring a small set of pages for visual regression — a landing page, a checkout flow, a marketing experiment — and you want a snapshot in your downloads folder every time the page is updated. Manual Cmd+Shift+4 cropping gets old. This template opens two URLs in separate tabs, captures each as a PNG, and saves both to disk. Tabs stay open so you can keep reviewing. Useful for design QA, marketers tracking competitor landing page changes, or anyone who wants a low-effort visual archive.
How this workflow works
Nine blocks arranged as two parallel "open, wait, shoot, save" pipelines. The template ships with two URLs but the pattern scales.
manual_trigger— Sidepanel Run,targetTab: "new".new_tab— Openshttps://example.comin a fresh tab.wait_for— Waits for<h1>to be visible. This is your "page settled" signal; for a real monitoring set you'd point this at whatever element appears late on the page (e.g..checkout-buttonor[data-loaded]).take_screenshot— Captures the visible viewport as a base64-encoded PNG. Theas: "shot_a"field is metadata (helps with debugging) but the actual data is exposed as$('Capture example.com').dataUrl.save_file— Writes the data URL toexample.pngin your Downloads folder. Chrome's native download bar appears.new_tab— Openshttps://example.orgin another fresh tab. The first tab stays open in the background.wait_for— Same wait pattern,timeoutMs: 15000for the slower second site.take_screenshot— Captures that tab.save_file— Writesexample-org.pngto disk.
Both PNGs end up in your default Downloads location. The workflow doesn't close any tabs — you can compare them visually after the run.
Customising it for your case
This template is a "monitoring set" starter; the URLs and filenames are placeholders.
- Real URLs. Edit the
data.urlon eachnew_tabto point at the pages you actually monitor. Updatesave_file.filenameto match —homepage.png,pricing.png,signup-flow.png. For date-stamped history, add ajavascript_codeblock early in the flow that writesnew Date().toISOString().slice(0,10)to a variable, then usehomepage-{{vars.today}}.pngin the filename. - Viewport, not full page.
take_screenshotin v1 captures the visible viewport area. Full-scrolling-page capture isn't a built-in option yet — workaround is to scroll the page (viajavascript_codecallingwindow.scrollTo) and take a second screenshot. - Wait for a specific element. Replace the
wait_for selector: "h1"with whatever signals "page loaded" on your target. For SPAs, that's usually the main content container appearing or a loading spinner disappearing.
Common gotchas
Three things to watch. First: take_screenshot captures the viewport, not the full page. If your hero section is fine but the below-the-fold content is what changed, you'll miss it — scroll the page first (via javascript_code running window.scrollTo(0, document.body.scrollHeight)) and snapshot again, or split a long page into two screenshots. Second: PNG files for large screen captures can be 2-5 MB each — over a few weeks of daily snapshots, downloads pile up. Add date-stamped filenames so old snapshots are easy to identify and prune. Third: pages that use lazy-loading images may snapshot before images load, leaving blank placeholders. Add a delay block (or a longer wait_for) between page settle and screenshot to give images time to swap in.
FAQ
Where do screenshots get saved? Chrome's default Downloads folder, with the filename you specify. The browser asks for permission the first time you run a save_file block — grant it for the extension origin.
Can I email or upload the screenshots? Not from save_file directly — that block writes to disk only. Chain a http_request block with body.content: "{{$('Capture example.com').dataUrl}}" to POST to a webhook (Discord, Slack, S3 presigned URL). The data URL format is data:image/png;base64,... — most upload endpoints accept this.
How is this different from a browser extension like "Awesome Screenshot"? Those tools are interactive one-shot captures. This template is a scheduled, reproducible batch — same URLs every time, no clicks needed. Automa, Browserflow, and Bardeen all have screenshot blocks; the file-save flow is the differentiator.