N8n toolkit skill

Complete n8n GTM toolkit — workflow blueprints for inbound, outbound, signals, CRM sync, and lifecycle.

by LeadMagic·MIT license·★ 62 Stars on the repo·GitHub ↗

Use now

Inside this skill

SKILL.md · the author's own words
# n8n Toolkit

## Overview

n8n is the orchestration layer for GTM when Clay's spreadsheet model or a
single MCP agent isn't enough — multi-branch routing, custom APIs, queue
pause/resume, and cross-tool pipelines with real error recovery. The mistake:
copying a generic "webhook → API → CRM" template without motion-specific
logic, idempotency, or human gates before sends.

This skill is the n8n implementation anchor: **which flows to build** by GTM
motion, **how to build them** node-by-node, and **how MCP fits** (agents
draft/research; n8n executes with guardrails). Load `n8n-automation` for
when to choose n8n vs Clay; load `mcp-setup` for agent-side MCP config.

## When to Use

Word-for-word excerpt, not a result. Read the full SKILL.md ↓

Files of N8n toolkit

LeadMagic/main1 file shown
SKILL.md
Show the full text358 lines

n8n Toolkit

Overview

n8n is the orchestration layer for GTM when Clay's spreadsheet model or a single MCP agent isn't enough — multi-branch routing, custom APIs, queue pause/resume, and cross-tool pipelines with real error recovery. The mistake: copying a generic "webhook → API → CRM" template without motion-specific logic, idempotency, or human gates before sends.

This skill is the n8n implementation anchor: which flows to build by GTM motion, how to build them node-by-node, and how MCP fits (agents draft/research; n8n executes with guardrails). Load n8n-automation for when to choose n8n vs Clay; load mcp-setup for agent-side MCP config.

When to Use

  • "Build an n8n workflow for inbound leads"
  • "n8n outbound enrichment pipeline"
  • "Connect MCP to n8n" / "n8n orchestrate MCP tools"
  • "Signal workflow — funding, job change, hiring"
  • "CRM sync between HubSpot and Salesforce"
  • "Replace Clay export with n8n for complex routing"
  • "n8n reply classification webhook"
  • "Event-driven GTM automation"

Use Clay instead (clay-toolkit, clay-loops-toolkit): spreadsheet enrichment, waterfall columns, recurring signal monitors with credit control.

Use MCP agents instead (mcp-setup, leadmagic-mcp): ad-hoc research, drafting, CRM reads — with human confirmation on writes.

Use n8n when: deterministic pipelines, SLA-bound inbound, bulk batch jobs, multi-system sync, or branching that exceeds Clay formulas.

Authoritative Foundations

  • n8n. Visual iPaaS with 400+ nodes, self-host or cloud. Queue mode for pause/resume. Sub-workflows for reusable modules. Error Trigger workflows for global failure handling.
  • Model Context Protocol (MCP). Standardizes agent tool discovery. n8n sits below agents as execution plane — agents call n8n webhooks to run approved pipelines; n8n does not replace MCP for interactive research.
  • iPaaS Integration Patterns. Webhook (real-time), poll/cron (batch), idempotency keys (dedupe), dead-letter queue (failed records), circuit breaker (stop on API outage).
  • Winning by Design Bowtie. Inbound flows must hand off Marketing → Sales with SPICED fields; closed-won → CS with health score. n8n enforces field requirements at routing gates.
  • ColdIQ Signal-to-Action. One signal → one play. n8n Switch node routes by signal_type; never one generic "signal outreach" branch.

n8n vs Clay vs MCP — Decision Matrix

Need Tool Why
Waterfall email enrichment on a list Clay Column-native, credit-efficient
Recurring funding/job-change monitor Clay Loops Built-in cadence + table UX
Inbound form → enrich → route in <60s n8n Webhook SLA, branching
HubSpot ↔ Salesforce bidirectional sync n8n Custom field mapping, conflict rules
Reply webhook → classify → CRM task n8n Sequencer webhooks + AI node
Agent researches 5 accounts interactively MCP Tool calls with human in loop
Agent triggers approved bulk enrich job MCP → n8n webhook Agent proposes; n8n executes
Complex if/else across 6+ systems n8n Switch, Merge, sub-workflows

Step-by-Step: How to Build a GTM Flow

Phase 1: Flow Selection

Pick blueprint from references/gtm-flow-catalog.md:

Motion Flow ID Trigger Latency Target
Inbound INB-01 Form → enrich → score → route Webhook <60s
Inbound INB-02 Inbound triage + Slack Webhook <30s
Outbound OUT-01 List upload → batch enrich → CRM Manual/Cron 2–4h / 5K rows
Outbound OUT-02 Clay webhook → sequencer Webhook <2min
Signal SIG-01 Funding → enrich → task Cron daily Same day
Signal SIG-02 Job change → champion play Cron daily Same day
Lifecycle LIF-01 Meeting held → nurture branch CRM webhook <5min
Lifecycle LIF-02 Trial signup → onboarding Webhook <2min
RevOps REV-01 CRM hygiene re-verify Weekly cron Batch
RevOps REV-02 Forecast rollup → Slack Cron Weekly
Agent MCP-01 MCP-approved pipeline trigger Webhook On demand
Phase 2: Architecture (5-Layer Stack)

Every production flow uses this stack:

TRIGGER → NORMALIZE → ENRICH/SCORE → ROUTE → ACTION + LOG
              ↓              ↓            ↓
         idempotency    rate limit    human gate (if send)

Layer rules:

  1. Trigger: Webhook, Cron, CRM trigger, or another workflow. Always capture event_id for dedupe.
  2. Normalize: Set node — map to canonical schema (email, domain, company, source, signal_type, icp_tier).
  3. Enrich/Score: HTTP Request (LeadMagic, Clay API), Code node (ICP score), or AI node (classify reply). See references/node-patterns.md.
  4. Route: Switch on icp_score, signal_type, intent, geo.
  5. Action: CRM upsert, sequencer enroll, Slack, task create. Never auto-send cold email without human gate unless pre-approved tier-1 signal play.
Phase 3: Node Implementation

Standard node order — full configs in references/node-patterns.md:

Webhook → Set (normalize) → IF (idempotency check in Redis/Sheet)
  → HTTP Request (enrich) → Code (score) → Switch (route)
    → HubSpot Upsert → Slack → Respond to Webhook

Required on every production workflow:

  • Error Trigger workflow (global) → Slack + log row
  • Wait node between API calls (100–500ms) for rate limits
  • Split In Batches (size 10–50) for bulk
  • Credentials in n8n store — never in exported JSON
  • Workflow name: [PROD] INB-01 Form Enrich Route
Phase 4: MCP Integration

Three patterns — detail in references/mcp-patterns.md:

Pattern A — Agent triggers n8n (recommended)

Cursor/Claude agent (MCP: CRM read, enrichment lookup)
  → Human approves "run enrichment job"
  → HTTP POST to n8n webhook (MCP-01)
  → n8n executes batch pipeline with audit log

Pattern B — n8n calls external APIs (not MCP directly)

n8n HTTP Request → LeadMagic / HubSpot / Clay API
(MCP is for agents; n8n uses REST natively)

Pattern C — n8n AI Agent node + MCP-style tools

n8n LangChain Agent node with Tool Workflow nodes
  → Sub-workflow per tool (enrich, CRM read, classify)
  → Use for reply classification (LIF-03) with bounded tools

Load mcp-setup for agent-side guardrails. n8n webhook auth: HMAC header or secret query param — never expose unauthenticated production webhooks.

Phase 5: Test and Deploy
  1. Test mode: Pin test data; run node-by-node execution
  2. Dry run: Set CRM nodes to read-only branch first
  3. Canary: Route 5% traffic via Switch before full cutover
  4. Activate: Tag [PROD]; enable Error Trigger workflow
  5. Monitor: First 24h — Slack on every error + daily execution count

Run scripts/check-output.py on deliverable before handoff.

GTM Flow Quick Reference

Full node lists in references/gtm-flow-catalog.md.

Inbound (INB-01)
Form webhook (HubSpot/Typeform/Cal.com)
  → Normalize fields
  → LeadMagic: verify email
  → IF invalid → Slack #bad-leads + stop
  → LeadMagic: company enrich
  → Code: ICP score (0–100)
  → Switch:
      ≥70 → Create CRM contact + assign round-robin + Slack #hot-leads
      40–69 → Nurture list + marketing tag
      <40 → Archive + reason code
  → Respond 200 (form UX)

Align fields with inbound-triage and SPICED-lite on CRM create.

Outbound (OUT-01)
Cron weekly OR manual webhook (list_id)
  → Google Sheets / Airtable: get rows where status=queued
  → Split In Batches (25)
    → LeadMagic find email → verify
    → IF verified → HubSpot upsert + status=enriched
    → IF not found → status=manual_review
  → On batch complete → Slack summary

Hand off to sequencer via OUT-02 (Clay or n8n webhook to Smartlead).

Signal (SIG-01 Funding)
Cron daily 6am
  → Source: CRM watchlist OR funding API / Clay export webhook
  → Filter: funding in last 7 days + ICP tier 1–2
  → Enrich contacts at account
  → Set signal_type=funding, why_now, source_url
  → CRM: create task for owner + tag signal:funding
  → Slack: #signals with account link

Route copy from funding-signal-play — not generic outreach in n8n.

Reply handling (LIF-03)
Sequencer reply webhook (Instantly/Smartlead/Outreach)
  → AI node OR HTTP to classification API (ai-prompts-toolkit P08)
  → Switch: positive / objection / OOO / unsubscribe / wrong person
  → positive → CRM task + Slack AE
  → unsubscribe → CRM opt-out + suppression list
  → wrong person → referral extract → new contact create

Maps to reply-handling categories exactly.

MCP trigger (MCP-01)
Webhook POST { job_type, params, requested_by, approval_token }
  → IF valid HMAC + approval_token → route job_type
  → enrich_batch | sync_crm | classify_replies
  → Execute sub-workflow
  → Log to Sheet: timestamp, job_type, rows, status
  → Callback URL optional

Sub-Workflow Library

Extract reusable modules:

Sub-workflow Input Output
sw-enrich-contact email or domain verified_email, company, title
sw-icp-score company fields score 0–100, tier
sw-crm-upsert-contact contact object crm_id, created/updated
sw-slack-notify channel, message ok
sw-idempotency-check event_id skip or continue

Call via Execute Workflow node — keeps main flows readable.

Environment and Credentials

# Self-hosted n8n .env — never commit
N8N_ENCRYPTION_KEY=...
LEADMAGIC_API_KEY=lm_xxx
HUBSPOT_ACCESS_TOKEN=pat-xxx
SLACK_WEBHOOK_URL=https://hooks.slack.com/...
N8N_WEBHOOK_HMAC_SECRET=whsec_xxx

Credential types: Header Auth (API keys), OAuth2 (HubSpot/SF), Predefined (Slack). Rotate keys quarterly; re-link credentials after rotation.

Output Format

Deliverable package:

  1. Workflow blueprint (templates/workflow-blueprint.md) — flow ID, trigger, node diagram, field schema, routing rules
  2. Node configuration — HTTP endpoints, auth, body, response mapping
  3. MCP integration note — if agents trigger this flow (Pattern A/C)
  4. Error handling — Error Trigger workflow, retry policy, dead-letter
  5. Deployment checklist — 8-point pre-activation (see Quality Check)

Quality Check

  • Flow ID assigned from catalog (INB/OUT/SIG/LIF/REV/MCP)
  • Canonical schema on Normalize step (email, domain, source, event_id)
  • Idempotency check before CRM writes
  • Rate limiting between API nodes (100–500ms Wait)
  • Human gate before any cold outbound send
  • Error Trigger workflow linked; failures notify Slack
  • Credentials in store — not in export JSON
  • Webhook authenticated (HMAC or secret)
  • Signal flows map to one play (funding-signal-play, etc.)
  • Inbound captures SPICED-lite fields for CRM
  • Batch flows use Split In Batches with size ≤50
  • Workflow named [PROD] {FLOW-ID} {description}

Common Pitfalls

  1. n8n as spreadsheet. Rebuilding Clay waterfalls row-by-row in n8n costs more to maintain. Fix: Clay enriches; n8n routes and syncs.

  2. Unauthenticated webhooks. Public URL gets spammed; CRM fills with junk. Fix: HMAC verification node first step.

  3. No idempotency. Form double-submit creates duplicate contacts. Fix: event_id or email hash check in Redis/Sheet before create.

  4. Agent auto-sends via n8n. Compliance and brand risk. Fix: MCP-01 requires approval_token; sends stay in sequencer with human review.

  5. One giant workflow. 40 nodes, unmaintainable. Fix: sub-workflows per enrich, CRM, notify.

  6. Silent failures. Error branch empty. Fix: global Error Trigger + row log.

  7. Mixed signal routing. One branch for all signals. Fix: Switch on signal_type; load play skill per type.

Execution Artifacts

  • references/framework-notes.md — Framework anchors
  • templates/output-template.md — Deliverable structure
  • scripts/check-output.py — Validates workflow deliverables
  • references/gtm-flow-catalog.md — Full flow blueprints by motion
  • references/mcp-patterns.md — MCP + n8n integration patterns
  • references/node-patterns.md — HTTP, webhook, batch, AI, error nodes
  • templates/workflow-blueprint.md — Design doc template
  • n8n-automation — When to use n8n vs Clay (decision layer)
  • mcp-setup / leadmagic-mcp — Agent-side MCP configuration
  • clay-toolkit / clay-loops-toolkit — Enrichment and signal loops
  • ai-prompts-toolkit — Prompts for AI nodes (classify, research)
  • crm-toolkit / crm-integration — CRM field requirements
  • inbound-triage — Inbound scoring rules
  • reply-handling — Reply category → action mapping
  • proactive-alerts — Slack alert formatting
  • event-analytics — Track flow executions as events
1---
2name: n8n-toolkit
3description: >-
4 Complete n8n GTM toolkit — workflow blueprints for inbound, outbound, signals,
5 CRM sync, and lifecycle; MCP integration patterns; node design, error handling,
6 and production deployment. Use when building n8n flows for GTM, connecting MCP
7 servers to orchestration, or replacing Clay for complex branching. Triggers on:
8 "n8n workflow", "n8n GTM flow", "n8n inbound", "n8n outbound", "n8n MCP",
9 "build n8n automation", "n8n webhook CRM", "n8n enrichment pipeline".
10license: MIT
11compatibility: Claude Code, Codex, GitHub Copilot, Cursor, Gemini CLI, OpenCode, Goose, Hermes, Windsurf, Zed
12metadata:
13 version: "2.0.0"
14 author: LeadMagic
15 category: tools
16 tags: [n8n, automation, workflow, webhook, mcp, inbound, outbound, enrichment, gtm-flows]
17 related_skills: [n8n-automation, mcp-setup, leadmagic-mcp, leadmagic-toolkit, clay-toolkit, clay-loops-toolkit, ai-prompts-toolkit, crm-toolkit, crm-integration, inbound-triage, reply-handling, proactive-alerts, event-analytics]
18 frameworks:
19 - "n8n — Open-source workflow automation, 400+ integrations, queue mode"
20 - "Model Context Protocol — Agent tool access and orchestration"
21 - "iPaaS Integration Patterns — Event-driven, webhook, batch ETL"
22 - "Winning by Design — Bowtie handoffs (marketing → sales → CS)"
23 - "ColdIQ — Signal-to-action routing"
24---
25 
26# n8n Toolkit
27 
28## Overview
29 
30n8n is the orchestration layer for GTM when Clay's spreadsheet model or a
31single MCP agent isn't enough — multi-branch routing, custom APIs, queue
32pause/resume, and cross-tool pipelines with real error recovery. The mistake:
33copying a generic "webhook → API → CRM" template without motion-specific
34logic, idempotency, or human gates before sends.
35 
36This skill is the n8n implementation anchor: **which flows to build** by GTM
37motion, **how to build them** node-by-node, and **how MCP fits** (agents
38draft/research; n8n executes with guardrails). Load `n8n-automation` for
39when to choose n8n vs Clay; load `mcp-setup` for agent-side MCP config.
40 
41## When to Use
42 
43- "Build an n8n workflow for inbound leads"
44- "n8n outbound enrichment pipeline"
45- "Connect MCP to n8n" / "n8n orchestrate MCP tools"
46- "Signal workflow — funding, job change, hiring"
47- "CRM sync between HubSpot and Salesforce"
48- "Replace Clay export with n8n for complex routing"
49- "n8n reply classification webhook"
50- "Event-driven GTM automation"
51 
52**Use Clay instead** (`clay-toolkit`, `clay-loops-toolkit`): spreadsheet
53enrichment, waterfall columns, recurring signal monitors with credit control.
54 
55**Use MCP agents instead** (`mcp-setup`, `leadmagic-mcp`): ad-hoc research,
56drafting, CRM reads — with human confirmation on writes.
57 
58**Use n8n when:** deterministic pipelines, SLA-bound inbound, bulk batch
59jobs, multi-system sync, or branching that exceeds Clay formulas.
60 
61## Authoritative Foundations
62 
63- **n8n.** Visual iPaaS with 400+ nodes, self-host or cloud. Queue mode for
64 pause/resume. Sub-workflows for reusable modules. Error Trigger workflows
65 for global failure handling.
66- **Model Context Protocol (MCP).** Standardizes agent tool discovery. n8n
67 sits **below** agents as execution plane — agents call n8n webhooks to run
68 approved pipelines; n8n does not replace MCP for interactive research.
69- **iPaaS Integration Patterns.** Webhook (real-time), poll/cron (batch),
70 idempotency keys (dedupe), dead-letter queue (failed records), circuit breaker
71 (stop on API outage).
72- **Winning by Design Bowtie.** Inbound flows must hand off Marketing → Sales
73 with SPICED fields; closed-won → CS with health score. n8n enforces field
74 requirements at routing gates.
75- **ColdIQ Signal-to-Action.** One signal → one play. n8n Switch node routes
76 by `signal_type`; never one generic "signal outreach" branch.
77 
78## n8n vs Clay vs MCP — Decision Matrix
79 
80| Need | Tool | Why |
81|---|---|---|
82| Waterfall email enrichment on a list | Clay | Column-native, credit-efficient |
83| Recurring funding/job-change monitor | Clay Loops | Built-in cadence + table UX |
84| Inbound form → enrich → route in <60s | n8n | Webhook SLA, branching |
85| HubSpot ↔ Salesforce bidirectional sync | n8n | Custom field mapping, conflict rules |
86| Reply webhook → classify → CRM task | n8n | Sequencer webhooks + AI node |
87| Agent researches 5 accounts interactively | MCP | Tool calls with human in loop |
88| Agent triggers approved bulk enrich job | MCP → n8n webhook | Agent proposes; n8n executes |
89| Complex if/else across 6+ systems | n8n | Switch, Merge, sub-workflows |
90 
91## Step-by-Step: How to Build a GTM Flow
92 
93### Phase 1: Flow Selection
94 
95Pick blueprint from `references/gtm-flow-catalog.md`:
96 
97| Motion | Flow ID | Trigger | Latency Target |
98|---|---|---|---|
99| Inbound | `INB-01` Form → enrich → score → route | Webhook | <60s |
100| Inbound | `INB-02` Inbound triage + Slack | Webhook | <30s |
101| Outbound | `OUT-01` List upload → batch enrich → CRM | Manual/Cron | 2–4h / 5K rows |
102| Outbound | `OUT-02` Clay webhook → sequencer | Webhook | <2min |
103| Signal | `SIG-01` Funding → enrich → task | Cron daily | Same day |
104| Signal | `SIG-02` Job change → champion play | Cron daily | Same day |
105| Lifecycle | `LIF-01` Meeting held → nurture branch | CRM webhook | <5min |
106| Lifecycle | `LIF-02` Trial signup → onboarding | Webhook | <2min |
107| RevOps | `REV-01` CRM hygiene re-verify | Weekly cron | Batch |
108| RevOps | `REV-02` Forecast rollup → Slack | Cron | Weekly |
109| Agent | `MCP-01` MCP-approved pipeline trigger | Webhook | On demand |
110 
111### Phase 2: Architecture (5-Layer Stack)
112 
113Every production flow uses this stack:
114 
115```
116TRIGGER → NORMALIZE → ENRICH/SCORE → ROUTE → ACTION + LOG
117 ↓ ↓ ↓
118 idempotency rate limit human gate (if send)
119```
120 
121**Layer rules:**
1221. **Trigger:** Webhook, Cron, CRM trigger, or another workflow. Always capture
123 `event_id` for dedupe.
1242. **Normalize:** Set node — map to canonical schema (`email`, `domain`,
125 `company`, `source`, `signal_type`, `icp_tier`).
1263. **Enrich/Score:** HTTP Request (LeadMagic, Clay API), Code node (ICP score),
127 or AI node (classify reply). See `references/node-patterns.md`.
1284. **Route:** Switch on `icp_score`, `signal_type`, `intent`, `geo`.
1295. **Action:** CRM upsert, sequencer enroll, Slack, task create. **Never auto-send
130 cold email without human gate** unless pre-approved tier-1 signal play.
131 
132### Phase 3: Node Implementation
133 
134Standard node order — full configs in `references/node-patterns.md`:
135 
136```
137Webhook → Set (normalize) → IF (idempotency check in Redis/Sheet)
138 → HTTP Request (enrich) → Code (score) → Switch (route)
139 → HubSpot Upsert → Slack → Respond to Webhook
140```
141 
142**Required on every production workflow:**
143- Error Trigger workflow (global) → Slack + log row
144- `Wait` node between API calls (100–500ms) for rate limits
145- `Split In Batches` (size 10–50) for bulk
146- Credentials in n8n store — never in exported JSON
147- Workflow name: `[PROD] INB-01 Form Enrich Route`
148 
149### Phase 4: MCP Integration
150 
151Three patterns — detail in `references/mcp-patterns.md`:
152 
153**Pattern A — Agent triggers n8n (recommended)**
154```
155Cursor/Claude agent (MCP: CRM read, enrichment lookup)
156 → Human approves "run enrichment job"
157 → HTTP POST to n8n webhook (MCP-01)
158 → n8n executes batch pipeline with audit log
159```
160 
161**Pattern B — n8n calls external APIs (not MCP directly)**
162```
163n8n HTTP Request → LeadMagic / HubSpot / Clay API
164(MCP is for agents; n8n uses REST natively)
165```
166 
167**Pattern C — n8n AI Agent node + MCP-style tools**
168```
169n8n LangChain Agent node with Tool Workflow nodes
170 → Sub-workflow per tool (enrich, CRM read, classify)
171 → Use for reply classification (LIF-03) with bounded tools
172```
173 
174Load `mcp-setup` for agent-side guardrails. n8n webhook auth: HMAC header
175or secret query param — never expose unauthenticated production webhooks.
176 
177### Phase 5: Test and Deploy
178 
1791. **Test mode:** Pin test data; run node-by-node execution
1802. **Dry run:** Set CRM nodes to read-only branch first
1813. **Canary:** Route 5% traffic via Switch before full cutover
1824. **Activate:** Tag `[PROD]`; enable Error Trigger workflow
1835. **Monitor:** First 24h — Slack on every error + daily execution count
184 
185Run `scripts/check-output.py` on deliverable before handoff.
186 
187## GTM Flow Quick Reference
188 
189Full node lists in `references/gtm-flow-catalog.md`.
190 
191### Inbound (`INB-01`)
192 
193```
194Form webhook (HubSpot/Typeform/Cal.com)
195 → Normalize fields
196 → LeadMagic: verify email
197 → IF invalid → Slack #bad-leads + stop
198 → LeadMagic: company enrich
199 → Code: ICP score (0–100)
200 → Switch:
201 ≥70 → Create CRM contact + assign round-robin + Slack #hot-leads
202 40–69 → Nurture list + marketing tag
203 <40 → Archive + reason code
204 → Respond 200 (form UX)
205```
206 
207Align fields with `inbound-triage` and SPICED-lite on CRM create.
208 
209### Outbound (`OUT-01`)
210 
211```
212Cron weekly OR manual webhook (list_id)
213 → Google Sheets / Airtable: get rows where status=queued
214 → Split In Batches (25)
215 → LeadMagic find email → verify
216 → IF verified → HubSpot upsert + status=enriched
217 → IF not found → status=manual_review
218 → On batch complete → Slack summary
219```
220 
221Hand off to sequencer via `OUT-02` (Clay or n8n webhook to Smartlead).
222 
223### Signal (`SIG-01` Funding)
224 
225```
226Cron daily 6am
227 → Source: CRM watchlist OR funding API / Clay export webhook
228 → Filter: funding in last 7 days + ICP tier 1–2
229 → Enrich contacts at account
230 → Set signal_type=funding, why_now, source_url
231 → CRM: create task for owner + tag signal:funding
232 → Slack: #signals with account link
233```
234 
235Route copy from `funding-signal-play` — not generic outreach in n8n.
236 
237### Reply handling (`LIF-03`)
238 
239```
240Sequencer reply webhook (Instantly/Smartlead/Outreach)
241 → AI node OR HTTP to classification API (ai-prompts-toolkit P08)
242 → Switch: positive / objection / OOO / unsubscribe / wrong person
243 → positive → CRM task + Slack AE
244 → unsubscribe → CRM opt-out + suppression list
245 → wrong person → referral extract → new contact create
246```
247 
248Maps to `reply-handling` categories exactly.
249 
250### MCP trigger (`MCP-01`)
251 
252```
253Webhook POST { job_type, params, requested_by, approval_token }
254 → IF valid HMAC + approval_token → route job_type
255 → enrich_batch | sync_crm | classify_replies
256 → Execute sub-workflow
257 → Log to Sheet: timestamp, job_type, rows, status
258 → Callback URL optional
259```
260 
261## Sub-Workflow Library
262 
263Extract reusable modules:
264 
265| Sub-workflow | Input | Output |
266|---|---|---|
267| `sw-enrich-contact` | email or domain | verified_email, company, title |
268| `sw-icp-score` | company fields | score 0–100, tier |
269| `sw-crm-upsert-contact` | contact object | crm_id, created/updated |
270| `sw-slack-notify` | channel, message | ok |
271| `sw-idempotency-check` | event_id | skip or continue |
272 
273Call via **Execute Workflow** node — keeps main flows readable.
274 
275## Environment and Credentials
276 
277```bash
278# Self-hosted n8n .env — never commit
279N8N_ENCRYPTION_KEY=...
280LEADMAGIC_API_KEY=lm_xxx
281HUBSPOT_ACCESS_TOKEN=pat-xxx
282SLACK_WEBHOOK_URL=https://hooks.slack.com/...
283N8N_WEBHOOK_HMAC_SECRET=whsec_xxx
284```
285 
286Credential types: Header Auth (API keys), OAuth2 (HubSpot/SF), Predefined
287(Slack). Rotate keys quarterly; re-link credentials after rotation.
288 
289## Output Format
290 
291Deliverable package:
292 
2931. **Workflow blueprint** (`templates/workflow-blueprint.md`) — flow ID, trigger,
294 node diagram, field schema, routing rules
2952. **Node configuration** — HTTP endpoints, auth, body, response mapping
2963. **MCP integration note** — if agents trigger this flow (Pattern A/C)
2974. **Error handling** — Error Trigger workflow, retry policy, dead-letter
2985. **Deployment checklist** — 8-point pre-activation (see Quality Check)
299 
300## Quality Check
301 
302- [ ] Flow ID assigned from catalog (INB/OUT/SIG/LIF/REV/MCP)
303- [ ] Canonical schema on Normalize step (email, domain, source, event_id)
304- [ ] Idempotency check before CRM writes
305- [ ] Rate limiting between API nodes (100–500ms Wait)
306- [ ] Human gate before any cold outbound send
307- [ ] Error Trigger workflow linked; failures notify Slack
308- [ ] Credentials in store — not in export JSON
309- [ ] Webhook authenticated (HMAC or secret)
310- [ ] Signal flows map to one play (`funding-signal-play`, etc.)
311- [ ] Inbound captures SPICED-lite fields for CRM
312- [ ] Batch flows use Split In Batches with size ≤50
313- [ ] Workflow named `[PROD] {FLOW-ID} {description}`
314 
315## Common Pitfalls
316 
3171. **n8n as spreadsheet.** Rebuilding Clay waterfalls row-by-row in n8n costs
318 more to maintain. Fix: Clay enriches; n8n routes and syncs.
319 
3202. **Unauthenticated webhooks.** Public URL gets spammed; CRM fills with junk.
321 Fix: HMAC verification node first step.
322 
3233. **No idempotency.** Form double-submit creates duplicate contacts.
324 Fix: `event_id` or email hash check in Redis/Sheet before create.
325 
3264. **Agent auto-sends via n8n.** Compliance and brand risk. Fix: MCP-01 requires
327 `approval_token`; sends stay in sequencer with human review.
328 
3295. **One giant workflow.** 40 nodes, unmaintainable. Fix: sub-workflows per
330 enrich, CRM, notify.
331 
3326. **Silent failures.** Error branch empty. Fix: global Error Trigger + row log.
333 
3347. **Mixed signal routing.** One branch for all signals. Fix: Switch on
335 `signal_type`; load play skill per type.
336 
337## Execution Artifacts
338 
339- `references/framework-notes.md` — Framework anchors
340- `templates/output-template.md` — Deliverable structure
341- `scripts/check-output.py` — Validates workflow deliverables
342- `references/gtm-flow-catalog.md` — Full flow blueprints by motion
343- `references/mcp-patterns.md` — MCP + n8n integration patterns
344- `references/node-patterns.md` — HTTP, webhook, batch, AI, error nodes
345- `templates/workflow-blueprint.md` — Design doc template
346 
347## Related Skills
348 
349- `n8n-automation` — When to use n8n vs Clay (decision layer)
350- `mcp-setup` / `leadmagic-mcp` — Agent-side MCP configuration
351- `clay-toolkit` / `clay-loops-toolkit` — Enrichment and signal loops
352- `ai-prompts-toolkit` — Prompts for AI nodes (classify, research)
353- `crm-toolkit` / `crm-integration` — CRM field requirements
354- `inbound-triage` — Inbound scoring rules
355- `reply-handling` — Reply category → action mapping
356- `proactive-alerts` — Slack alert formatting
357- `event-analytics` — Track flow executions as events
358 

Discussion

Alternatives

⚡ NEXUS Quick-Start Guide> Get from zero to orchestrated multi-agent pipeline in 5 minutes.Business & ops · MITclean-cut — the step-1 cut pipelineStep 1 of the AI Video Editor pipeline — turn raw talking-head footage into a clean master cut. Use when the user wants to "clean cut", "cut the raw footage", "remove filler / dead air / bad takes", "tighten the pacing", produce cuts.json, run the cut editor, or render a cleaned preview/master for a video-N project in this repo. Covers audio extraction, AssemblyAI transcription, authoring cuts.json (keeps/cuts/fluff categorized), the cut policy (content-aggressive, pause-natural ~0.5s), QA + review docs, the local cut-editor UI, tight/natural previews, the final 4K60 render, and producing edited-transcript.json as the handoff to /make-tsx. Not for building TSX overlays (that is /make-tsx) or the raw TSX authoring rules (that is vidtsx-2d-generator).Sales & ecommerce · MITVocaloid-style MV pipeline (手書き / 文字PV)Make an original animated music video (MV / PV) for a song from its audio file plus lyrics, in the Vocaloid / J-pop lyric-video tradition: 手書き/tegaki (V家手书, 手描きMV, ボカロPV), 文字PV and kinetic typography (リリックモーション, リリックビデオ, 歌詞動画, 歌词视频, 动态歌词), anime-illustration MVs with an original character — for any mood, from dark ballads to bright upbeat summer pop. Renders to MP4 with a deterministic Canvas2D/WebGL2 engine in a headless browser: JIZURA lyric motion, AI-generated art, optional Blender toon 3D, beat-locked editing, 9:16 vertical/Shorts version. Use it whenever the user wants a music video, MV, PV, lyric video or beat-synced animation for a song, e.g. make an MV for my song", "turn this track into a lyric video", "给这首歌做个MV/PV", "做个V家手书", "この曲のMVを作って", ボカロPV作って", "縦型ショートも" — even if they only give a .wav/.mp3 and say "make a cool video for it". Not for editing existing footage or clip compilations.Sales & ecommerce · MITConstruction Agent — Email → Project Management PipelineConstruction company AI agent — orchestrates email (Google Workspace), project management (JobTread Pave API), and file routing for a construction business. Handles email triage, attachment routing to JobTread, project status, task management, and daily briefings via Telegram. Reference implementation for a construction/trades business with an existing email→Drive→PM pipeline.Sales & ecommerce · MIT