Overview
Production-ready n8n architecture that listens for inbound form submissions, fans out enrichment in parallel through Scavio for SERP plus Reddit plus LinkedIn-via-SERP, merges into a single record, and writes back to HubSpot or any CRM. Five focused workflows replace a 30-node tangled mess.
Trigger
Webhook on inbound form submission
Schedule
Webhook-triggered
Workflow Steps
Receive lead webhook
n8n webhook node accepts the form payload.
SERP enrichment
Scavio SERP scoped to LinkedIn returns the best-match profile.
Reddit signal
Reddit search for the company domain returns recent mentions.
Company SERP context
About page and team page lookups via site: filter.
Merge record
Single n8n function node combines all signals into one CRM-ready object.
Write to CRM
HubSpot or Pipedrive node writes the enriched contact.
Python Implementation
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY}
def enrich(email, domain):
name_part = email.split("@")[0]
serp = requests.post("https://api.scavio.dev/api/v1/google",
headers=H, json={"query": f"site:linkedin.com/in {name_part}"}).json()
rdt = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": domain}).json()
return {"linkedin": serp.get("organic_results", [])[:3], "reddit": rdt.get("posts", [])[:5]}JavaScript Implementation
const H = { "x-api-key": process.env.SCAVIO_API_KEY, "content-type": "application/json" };
async function enrich(email, domain) {
const namePart = email.split("@")[0];
const [serp, rdt] = await Promise.all([
fetch("https://api.scavio.dev/api/v1/google", { method: "POST", headers: H, body: JSON.stringify({ query: `site:linkedin.com/in ${namePart}` }) }).then(r => r.json()),
fetch("https://api.scavio.dev/api/v1/reddit/search", { method: "POST", headers: H, body: JSON.stringify({ query: domain }) }).then(r => r.json())
]);
return { serp, rdt };
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit