TL;DR
Ein Next.js-Kontaktformular muss nicht fünf APIs direkt aufrufen (CRM, Slack, E-Mail, Sheets, Newsletter). n8n als Orchestrator nimmt einen Webhook aus der Server Action, validiert Payload, speichert Lead im CRM, sendet Slack und loggt Fehler — mit Retry und visuellem Flow-Debug. Next.js: Zod-Validierung, Rate Limit, Kopie in PostgreSQL (Branchly), dann fire-and-forget POST an n8n. App auf DevStudioIT Cloud, n8n auf VPS oder n8n.cloud — Webhook-URL nur in Env, nie im Repo.
Für wen
- Unternehmensseiten mit HubSpot / Pipedrive / Notion CRM
- Teams ohne Zapier-Enterprise-Budget
- Next.js-Entwickler mit entkoppelten Integrationen
- B2B mit Slack in 30 Sekunden nach Lead
- Projekte mit Sentry
Keyword
n8n formular nextjs, webhook crm automatisierung, n8n slack lead, server action webhook, kontaktformular hubspot n8n 2026
Architektur
[Nutzer] → [Next.js Server Action]
├→ INSERT lead → PostgreSQL (Branchly)
└→ POST webhook → [n8n]
├→ CRM
├→ Slack #sales
└→ Error → Slack #dev-alerts| Schicht | Aufgabe |
|---|---|
| Next.js | Validierung, Rate Limit, DB-Save |
| Branchly | PostgreSQL, Lead-Backup |
| n8n | Integrationen, Mapping, Retry |
| DevStudioIT Cloud | Runtime, Secrets |
Keine gesamte CRM-Logik in der Server Action — HubSpot-Feldänderung ohne Next.js-PR.
Server Action
'use server';
import { z } from 'zod';
import { db } from '@/lib/db';
import { headers } from 'next/headers';
const contactSchema = z.object({
name: z.string().min(2).max(100),
email: z.string().email(),
message: z.string().min(10).max(5000),
company: z.string().max(200).optional(),
});
export async function submitContact(data: unknown) {
const parsed = contactSchema.safeParse(data);
if (!parsed.success) return { ok: false, errors: parsed.error.flatten() };
const lead = await db.contactLead.create({
data: { ...parsed.data, source: 'website', status: 'new' },
});
const webhookUrl = process.env.N8N_CONTACT_WEBHOOK_URL;
if (!webhookUrl) return { ok: true, id: lead.id };
const h = await headers();
fetch(webhookUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Webhook-Secret': process.env.N8N_WEBHOOK_SECRET ?? '',
},
body: JSON.stringify({
leadId: lead.id,
...parsed.data,
locale: h.get('x-locale') ?? 'de',
submittedAt: new Date().toISOString(),
}),
}).catch((err) => console.error('n8n webhook failed', { leadId: lead.id, err }));
return { ok: true, id: lead.id };
}| Entscheidung | Grund |
|---|---|
| DB vor Webhook | Lead über CRM-Verfügbarkeit |
| fetch ohne await | UX < 300 ms |
| Secret-Header | Auth auf n8n |
| leadId | Idempotenz, Replay |
n8n-Workflow
- Webhook POST, Header Auth
X-Webhook-Secret - IF E-Mail-Validierung
- HubSpot / Pipedrive HTTP Request
- Slack
#sales - Error Trigger →
#dev-alerts
Workflow als JSON in infra/n8n/ versionieren.
Webhook-Sicherheit
| Risiko | Mitigation |
|---|---|
| Spam POST | Secret + Rate Limit Next.js |
| PII in Logs | Retention aus / scrubben |
| Öffentliches n8n | Nie ohne Header Auth |
N8N_CONTACT_WEBHOOK_URL in DevStudioIT Cloud — Staging/Prod getrennt.
CRM-Ausfall
Lead in Branchly (status: new). n8n Error Trigger. Cron-Retry oder manuelles Replay mit leadId. Sentry bei Timeout > 5 s.
Staging
| Umgebung | Slack |
|---|---|
| Staging | #dev-test |
| Production | #sales |
Branchly-Branch staging, n8n-Workflow [STAGING].
n8n vs Hardcoded
| Kriterium | n8n | Server Action |
|---|---|---|
| CRM-Änderung | Workflow edit | PR + Deploy |
| Retry | Eingebaut | Eigenbau |
Für 1–2 Formulare: Sweet Spot zwischen Zapier und Custom Backend.
FAQ
await auf Webhook?
Selten. Erfolg nach DB-Save; CRM async.
n8n hosten?
Eigene VM oder n8n.cloud — nicht auf dem Next.js-Prozess.
DSGVO?
AVV mit n8n (EU). Minimale Payload-Felder; keine sensiblen Messages in Slack.
Make statt n8n?
Ähnlich; n8n bei Self-Host ohne Operations-Limit.
Formular-Automatisierung mit n8n?
- Kontakt — Next.js → Branchly → n8n → CRM → Slack
- Sentry Monitoring
- DevStudioIT Cloud + Branchly
Über den Autor
Wir bauen schnelle Websites, Web/Mobile-Apps, KI-Chatbots und Hosting — mit Fokus auf SEO und Conversion.
Empfohlene Links
Von Theorie zu Produktion — Branchly, Hosting-Stack und Referenzen.
