Inbound website leads land in HubSpot with just an email. Sales teams want LinkedIn, company size, and recent news before the SDR reaches out. Most enrichment stacks need three vendors and break every two weeks. This tutorial wires Scavio into n8n for SERP, Reddit, and LinkedIn-via-SERP under one credit pool.
Prerequisites
- n8n self-hosted or cloud
- Scavio API key in n8n credentials
- HubSpot or Pipedrive credentials
Walkthrough
Step 1: Webhook trigger
n8n webhook node accepts the form payload (email + domain).
// Trigger node config: webhook URL exposed publicly
// Payload shape: { email: string, domain: string }Step 2: SERP enrichment
HTTP node calls Scavio with site:linkedin.com filter.
// HTTP node:
// URL: https://api.scavio.dev/api/v1/google
// Body: { "query": "site:linkedin.com/in {{$json.email.split('@')[0]}}" }Step 3: Reddit signal
HTTP node for Reddit company-mention check.
// HTTP node:
// URL: https://api.scavio.dev/api/v1/reddit/search
// Body: { "query": "{{$json.domain}}" }Step 4: Merge into one record
Function node combines all enrichment data.
// Function node:
const enriched = {
email: $input.first().json.email,
linkedin: $('Scavio SERP').first().json.organic_results?.[0],
reddit_mentions: $('Scavio Reddit').first().json.posts?.slice(0, 5)
};
return { json: enriched };Step 5: Write to CRM
HubSpot node creates or updates the contact.
// HubSpot node config: operation=create or update
// Properties mapped from $jsonPython Example
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def enrich(email, domain):
serp = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'site:linkedin.com/in {email.split("@")[0]}'}).json()
rdt = requests.post('https://api.scavio.dev/api/v1/reddit/search',
headers={'x-api-key': API_KEY},
json={'query': domain}).json()
return {'linkedin': serp.get('organic_results',[])[:3], 'reddit': rdt.get('posts',[])[:5]}
print(enrich('jane@acme.com', 'acme.com'))JavaScript Example
const API_KEY = process.env.SCAVIO_API_KEY;
export 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:{'x-api-key':API_KEY,'Content-Type':'application/json'}, 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:{'x-api-key':API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({ query: domain }) }).then(r => r.json())
]);
return { serp, rdt };
}Expected Output
Each inbound form submission produces an enriched HubSpot contact with LinkedIn URL, recent Reddit mentions of the company, and SERP brand context — all in under 10 seconds.