graph LR
A[Make.com Scenario] --> B[Router Node]
B --> C1[Whale Path]
B --> C2[VIP Path]
B --> C3[New Customer]
D[n8n Workflow] --> E[Switch Node]
E --> F1[Whale Path]
E --> F2[VIP Path]
E --> F3[New Customer]
style A fill:#e0e7ff
style D fill:#fce4ec
| Feature | Make.com | n8n |
|---|---|---|
| Interface | Drag-and-drop modules | Node-based canvas |
| Code in nodes | Code module (limited) | Function node (full JS/Python) |
| Self-hosting | No (cloud only) | Yes (Docker/npm) |
| Enterprise scale | Good | Better (more control) |
You know Make.com deeply. n8n is the same logic, different UI + more code-friendly.
Same concepts as Make.com: Trigger → Logic → Action. Just different UI.
graph TD
A[Stripe Webhook] --> B[HTTP Request: Lookup Customer]
B --> C[Switch Node: Check Buyer Type]
C -->|Whale| D1[AWeber: Add to Whale List]
C -->|VIP| D2[AWeber: Add to VIP Drip]
C -->|Repeated| D3[AWeber: Add to Retention]
C -->|New| D4[HubSpot: Create Contact + AWeber]
D1 --> E[Slack: Notify Whale Purchase]
D2 --> F[Wait 2 Days] --> D2
style A fill:#e0e7ff
style C fill:#fce4ec
style D1 fill:#d1fae5
Your WagerBird Make.com router logic, recreated in n8n:
// In n8n Function node (JavaScript)
const items = $input.all();
const results = [];
for (const item of items) {
const purchase = item.json;
if (purchase.amount > 100) {
results.push({ json: { ...purchase, segment: 'whale' }});
} else if (purchase.history_count > 5) {
results.push({ json: { ...purchase, segment: 'vip' }});
}
// ... more logic
}
return results;
Make.com "Code" module vs n8n "Function" node — same concept, more power in n8n.
// This is what you'll write in n8n Function nodes
// Similar to Make.com's Code module, but pure JavaScript
const items = $input.all();
const threshold = 0.50;
// Transform campaign data (like your RPE calculations)
const processed = items.map(item => {
const revenue = item.json.revenue || 0;
const clicks = item.json.clicks || 1;
const rpe = revenue / clicks;
const fatigue_score = (item.json.peak_ctr - item.json.current_ctr) / item.json.peak_ctr;
return {
json: {
...item.json,
rpe: Math.round(rpe * 100) / 100,
fatigue_score: Math.round(fatigue_score * 100),
needs_pause: fatigue_score < -0.30
}
};
});
return processed;
This is different from Make.com: more code-heavy, but same data transformation logic you already understand.
Recreate your WagerBird 4-way Stripe → AWeber/HubSpot sync in n8n instead of Make.com.
"Generate n8n JSON export for this flow:
Stripe webhook → Switch (check amount + history) →
Whale (> $100): AWeber API call
VIP (>5 purchases): AWeber API call
Repeated: AWeber API call
New: HubSpot + AWeber API calls