Check new HubSpot contacts for GDPR cold email compliance with Precleared
Go to WorkflowDescription
Quick overview
This workflow runs every weekday morning to check new HubSpot contacts with Precleared for GDPR/PECR-style cold email compliance, then writes the verdict, rule/source, next steps, footer requirements, and receipt back to HubSpot, optionally setting a legal basis, adding allowed contacts to a list, and creating follow-up tasks.
How it works
Runs every weekday at 8am on a schedule trigger.
Searches HubSpot for the newest contacts that have an email address and do not yet have a “Precleared checked at” value, up to the configured per-run limit.
Builds a Precleared check request for each contact using sender country, recipient country (or fallback), lifecycle stage, unsubscribe status, and address source (including HubSpot form submissions).
Sends each contact to the Precleared API (one request per second) and interprets the response as a compliance verdict with supporting rule/source text, next-step guidance, footer text, and a signed receipt link.
Updates the HubSpot contact with the Precleared fields and routes outcomes so out-of-quota or failed checks are left unchanged for the next run.
For contacts marked “ok_to_email”, optionally sets the HubSpot legal basis and adds the contact to a specified HubSpot list, and for non-allowed verdicts optionally creates a HubSpot task for the contact owner.
Generates a run summary and can optionally post it to a Slack channel.
Setup
Create a HubSpot private app (or token) with permissions to read and write contacts (and list access if you use the list step) and add it in n8n as a HubSpot App Token credential.
Run the manual “Run once to set up HubSpot” path to create the Precleared property group and contact properties in HubSpot.
Get a Precleared API key and configure the HTTP Header Auth on the Precleared request with Authorization: Bearer .
Update the “Your settings” values (sender country, default/fallback country, max checks per run, optional legal_basis, optional list_id, and task settings) before activating.
(Optional) Enable the Slack node and connect Slack credentials, then set the target channel for posting the daily summary.
This workflow was created by Gabe and shared publicly on the n8n community template library. n8nFind indexes it for discovery — the workflow remains the property of its original creator.