How to Use n8n with ._Template 39 Webinar Attended Score Sales

Your webinar just ended. Two hundred people registered, ninety showed up, and now those ninety names sit in a spreadsheet next to a "attended: yes" flag. Sales asks who to call first. You don't have a

How to Use n8n with ._Template 39 Webinar Attended Score Sales

Your webinar just ended. Two hundred people registered, ninety showed up, and now those ninety names sit in a spreadsheet next to a "attended: yes" flag. Sales asks who to call first. You don't have an answer — because "attended" tells you nothing about intent. The person who joined for four minutes and dropped looks identical to the one who stayed the full sixty, asked two questions, and clicked your pricing link. By the time someone manually sorts this out, the buying window has cooled. This is the exact gap Template 39 (Webinar Attended → Score → Sales) closes with n8n: it turns raw attendance data into a ranked, scored, sales-ready list the moment your webinar ends.

The Problem: Attendance Is Not Intent

Most webinar-to-sales handoffs fail for the same reason — they treat attendance as a binary. Your webinar platform (Zoom, Demio, WebinarJam, GoTo) hands you a flat list: registered, attended, duration. Sales treats every attendee the same, works the list top to bottom alphabetically, and burns hours on people who were never going to buy while genuinely hot leads go cold.

The signal you actually need is engagement-weighted. Time in room, poll responses, questions asked, CTA clicks, and whether they showed up live versus watched the replay are all predictive of buying intent — and none of them live in a single field. Worse, this data expires fast. A lead scored and routed within an hour of the webinar converts at a materially higher rate than the same lead touched two days later. Manual scoring can't move at that speed, and it isn't consistent between reps. You need a rule that runs identically every time, automatically, in minutes.

The Solution: An Automated Scoring Pipeline in n8n

Template 39 wires your webinar platform directly to your CRM through n8n, applying a deterministic lead score to every attendee and routing the hot ones to sales instantly. The flow is simple to reason about: ingest the attendee list, enrich each record with engagement signals, compute a numeric score, segment into tiers, and push each tier to the right destination — a Slack alert for hot leads, a CRM update for everyone, and a nurture sequence for the cold tail.

Because the scoring lives in a single Code or Set node, the logic is transparent and versioned. Every rep gets the same score for the same behavior, and when you learn that "clicked pricing CTA" predicts closing better than "asked a question," you change one weight and the whole pipeline updates. No spreadsheets, no copy-paste, no rep guesswork.

Step-by-Step Setup in n8n

1. Trigger the workflow. Use a Webhook node as the entry point if your platform can POST a "webinar ended" event, or a Schedule Trigger node set to fire 15 minutes after your typical end time to pull the finalized attendee report. The Schedule Trigger is more reliable because most platforms finalize attendance data a few minutes after the session closes.

2. Pull the attendee list. Add an HTTP Request node calling your webinar platform's reporting API (for Zoom, GET /report/webinars/{webinarId}/participants). Set authentication to your stored credential, method to GET, and paginate if you have large audiences. If your platform has no clean API, export a CSV to a cloud folder and use the Read Binary File + Spreadsheet File nodes to parse it.

3. Normalize the records. Follow with a Split Out (or Item Lists) node so each attendee becomes a single item, then a Set node to standardize field names: email, duration_minutes, joined_live, poll_answered, questions_asked, cta_clicked. Consistent field names keep the scoring node clean.

4. Compute the score. Add a Code node (JavaScript) that turns behavior into a number. A pragmatic starting formula:

const d = $json.duration_minutes;
let score = 0;
if ($json.joined_live) score += 20;
if (d >= 45) score += 40;
else if (d >= 20) score += 25;
else if (d >= 5) score += 10;
if ($json.poll_answered) score += 10;
score += Math.min($json.questions_asked * 8, 24);
if ($json.cta_clicked) score += 30;
return { json: { ...$json, lead_score: score } };

5. Segment into tiers. Use a Switch node with three outputs on lead_score: Hot (≥70), Warm (40–69), Cold (<40). This branches the flow so each tier gets a different action.

6. Route each tier. On the Hot branch, add a Slack node posting the name, email, score, and one-line summary to your #sales-hot-leads channel, plus an HubSpot/Pipedrive/Salesforce node that upserts the contact and sets a webinar_score property and an "assign owner" task. Warm leads get the CRM update plus enrollment in a follow-up sequence; Cold leads get a CRM tag and drop into a long-term nurture list. Close the loop with a No Operation or a Google Sheets "append" node logging every scored record for later analysis.

The Benefits: Speed, Consistency, and a Feedback Loop

The immediate win is speed. Sales sees a ranked list of hot leads in Slack within minutes of the webinar closing, while intent is at its peak. Reps stop working alphabetically and start working by likelihood to buy — the same effort produces more meetings booked.

The second win is consistency. Every attendee is scored by identical rules, so the pipeline is auditable and improvable. Because you log every scored record to Google Sheets or a database, you can compare lead_score against actual closed deals after a few webinars and recalibrate the weights with evidence rather than intuition. That turns a static rule into a learning system — the score that predicted nothing in month one predicts real revenue by month three.

The third win is that it scales to zero marginal effort. Whether ninety people attend or nine hundred, the workflow runs the same. Your team spends its time selling to qualified leads instead of triaging a spreadsheet.

Common Pitfalls to Avoid

Pulling data before it's final. The most common failure is triggering the pull too early — webinar platforms often finalize participant duration a few minutes after the session ends. If your scores look suspiciously low, add a buffer to your Schedule Trigger or a Wait node before the HTTP Request.

Duplicate attendees. People who drop and rejoin often appear as multiple rows. Add an Item Lists → Remove Duplicates (keyed on email) or aggregate durations in your Code node before scoring, or a single person will be scored several times and spam your CRM.

Hardcoding score weights you'll never revisit. Keep the weights in a single Set or Code node — not scattered across Switch conditions — so recalibration is a one-place change. Teams that bury thresholds in five different nodes stop tuning them entirely.

No idempotency on the CRM upsert. Run the same webinar twice (a re-trigger, a retry) and you can double-create contacts or stack duplicate tasks. Use your CRM node's "upsert" mode keyed on email, and gate task creation so a lead isn't reassigned every run.

Silent failures. If the HTTP Request errors and the workflow stops, sales never gets the list and no one notices. Turn on n8n's error workflow, or add an error-branch Slack node so a failed pull pages you instead of vanishing. A scoring pipeline sales relies on must fail loudly.

Wire these five safeguards in from the start and Template 39 becomes a durable part of your revenue engine: every webinar you run ends with a ranked, scored, correctly-routed list of buyers — automatically, in minutes, every single time.