Archive legal page compliance snapshots to S3 with Google Sheets and Slack

Go to Workflow
0 views
Built by Snapshot Site Snapshot Site
Created on August 13, 2026

Description

Quick overview
This workflow runs monthly to read a Google Sheets register of legal-policy URLs, capture each page as a PDF via Snapshot Site, archive the evidence to Amazon S3, compare the current page to a reviewed baseline image, log results back to Sheets, and alert Slack when changes are detected

How it works
Runs on a schedule on the 1st of every month.
Reads the list of legal pages (URL, document name, and baseline image URL) from a Google Sheets tab.
For each row, Snapshot Site captures a full-page PDF of the live page with the cookie banner left visible.
Downloads the hosted PDF and uploads it to Amazon S3 using a dated key per document for evidence archiving.
Uses Snapshot Site Compare to measure visual differences between the live page and the stored baseline image.
Appends or updates an audit entry in a Google Sheets log with the capture timestamp, S3 key, mismatch percentage, and diff link.
Posts a Slack alert when the mismatch percentage is greater than 0, and posts a separate Slack alert if any capture, download, compare, or upload step fails.

Setup
Install the n8n-nodes-snapshot-site community node and add Snapshot Site API credentials.
Add Google Sheets OAuth credentials and update the spreadsheet URL/ID used for the Legal Pages and Evidence Audit Log tabs.
Add AWS credentials, set the target S3 bucket name, and ensure the bucket exists (optionally enabling versioning/Object Lock for tamper-evident retention).
Add Slack credentials and set the destination channels for change alerts (#compliance) and failure alerts (#compliance-alerts).
Create and populate the Google Sheets tabs with the required headers, including a baselineUrl for comparisons (seed it initially and update it after reviews).

Nodes Used (5)

AWS S3
n8n-nodes-base.awsS3
Code
n8n-nodes-base.code
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest
Slack
n8n-nodes-base.slack