Zum Inhalt springen
FFormhook
Zurück zum Blog

Blog

Formular-Einsendungen an Slack senden (ohne Code)

· 4 Min. Lesezeit

Eine Kontaktformular-Einsendung, die in einem gemeinsamen Postfach landet, wird gelesen, wenn jemand zufällig hineinschaut - bei einem kleinen Team kann das Stunden später bedeuten, oder gar nicht, bis sie jemand weiterleitet. Eine Einsendung, die in Slack gepostet wird, wird innerhalb der nächsten dreißig Sekunden gelesen, weil Slack der Ort ist, an dem das Team ohnehin schon ist. Gleicher Lead, gleiche Nachricht, sehr unterschiedliche Reaktionszeit.

E-Mail hat weiterhin ihren Platz - sie ist die Papierspur. Aber als erster Benachrichtigungskanal gewinnt meist Slack: Es ist das Tool, auf das das Team ohnehin schon starrt, niemand muss sich erinnern, ein Postfach zu prüfen, und eine neue Nachricht in einem Kanal wird von allen dort gesehen, nicht nur von demjenigen, in dessen Postfach sie gelandet ist.

Der DIY-Weg

Slack akzeptiert kein rohes HTML-Formular-POST direkt, also bedeutet es, eine Einsendung selbst dorthin zu bekommen, einen kleinen Empfänger dazwischenzuschalten. Typischerweise ist das eine Serverless-Funktion (Cloudflare Worker, Vercel-Funktion, AWS Lambda), die:

  • das POST des Formulars entgegennimmt und prüft, ob es tatsächlich wie eine Einsendung und nicht wie Spam aussieht.
  • Feldnamen und -werte in Slacks Nachrichtenformat umformatiert - entweder eine einfache text-Zeichenkette oder ein blocks-Array, wenn es nativ aussehen soll.
  • Nutzereingaben escapt, damit eine Nachricht mit &, < oder > nicht Slacks mrkdwn-Rendering zerstört.
  • das Ergebnis an eine Slack-Incoming-Webhook-URL sendet und den Fall behandelt, dass dieses POST fehlschlägt oder ein Timeout auftritt - Slack-Webhooks sind nicht unendlich zuverlässig, also verliert eine naive Implementierung bei einem Hänger still und leise Einsendungen.

Nichts davon ist exotisch - es ist ein Nachmittag echter Ingenieursarbeit, und es ist ein weiterer Dienst, den man deployen, überwachen und irgendwann warten muss, wenn sich ein Feldname ändert oder Slack seine Formatierungsregeln anpasst. Vertretbar, wenn Sie die Infrastruktur schon haben und es Ihnen Freude macht, sie zu besitzen; Mehraufwand, wenn alles, was Sie wollten, war: „das Team benachrichtigen, wenn jemand das Formular ausfüllt“.

Der Weg ohne Code

Formhook überspringt den Empfänger komplett. Fügen Sie in den Einstellungen Ihres Formulars einen Webhook hinzu und fügen Sie Ihre Slack-Incoming-Webhook-URL ein (die Sie aus Slacks eigener „Incoming Webhooks“-App erhalten - https://hooks.slack.com/services/...). Formhook erkennt diesen Host und Pfad automatisch und formatiert von da an jede Einsendung als native Slack-Nachricht - kein Code, kein Feld-Mapping, kein Escaping, das schiefgehen kann.

Jede Einsendung kommt als Nachricht mit einer Kopfzeile an, die das Formular benennt, sowie einem oder mehreren Abschnitten, die Name und Wert jedes Felds auflisten - formatiert, als hätte ein Mensch sie selbst dort gepostet. Wenn eine Einsendung mehr Felder hat, als sauber in einen Abschnitt passen, wird sie auf mehrere verteilt - darüber müssen Sie nicht nachdenken.

{
  "text": "New submission to Contact form",
  "blocks": [
    {
      "type": "header",
      "text": { "type": "plain_text", "text": "New submission: Contact form" }
    },
    {
      "type": "section",
      "fields": [
        { "type": "mrkdwn", "text": "*name*\nJane Doe" },
        { "type": "mrkdwn", "text": "*email*\njane@example.com" },
        { "type": "mrkdwn", "text": "*message*\nCan you send a quote for..." }
      ]
    }
  ]
}

Derselbe Trick für Discord und Microsoft Teams

Die URL-Erkennung funktioniert genauso für die beiden anderen Chat-Tools, nach denen Teams häufig fragen. Fügen Sie eine Discord-Webhook-URL ein, und Einsendungen kommen als formatiertes Discord-Embed an; fügen Sie eine Microsoft-Teams-Webhook-URL ein, und sie kommen als native Teams-Karte an. In jedem Fall ist es dasselbe eine Feld im Dashboard - Formhook betrachtet Host und Pfad der URL, um zu entscheiden, wie die Payload formatiert wird, sodass ein späterer Wechsel des Chat-Tools Ihres Teams nur bedeutet, eine andere URL einzufügen, statt irgendetwas neu zu bauen.

Alles, was keines dieser drei ist, funktioniert trotzdem: Fügen Sie eine beliebige andere URL ein, und Formhook fällt auf ein generisches JSON-POST zurück, HMAC-signiert, damit Sie verifizieren können, dass es tatsächlich von Formhook stammt.

Was das nicht tut

Es lohnt sich, beim Umfang präzise zu sein: Das hier postet eine formatierte Nachricht in einen Kanal, wenn eine Einsendung eintrifft. Es erstellt keine Threads, fügt keine interaktiven Buttons und keinen Slash-Befehl hinzu - es ist Benachrichtigung, keine Slack-App. Für die meisten Teams ist genau das der Punkt: eine saubere Nachricht, sofort, ohne dass noch etwas zu konfigurieren wäre.

Loslegen

Wenn Sie bereits ein Formular haben, das auf Formhook zeigt, ist das eine Ergänzung von zwei Minuten: Erstellen Sie in Slack einen Incoming Webhook, fügen Sie die URL in die Webhook-Einstellungen Ihres Formulars ein, und die nächste Einsendung erscheint im Kanal. Wenn Sie bei null anfangen, deckt die Dokumentation die Einrichtung des Formulars selbst ab, und Preise zeigt die Grenzen der kostenlosen Stufe (250 Einsendungen/Monat, keine Kreditkarte nötig), wenn Sie es nur ausprobieren möchten.

Ein funktionierendes Formular in einer Zeile

In der EU gehostet, Einsendungen für immer aufbewahrt, Push-Benachrichtigungen in jeder Stufe.

Kostenlos starten

Keine Kreditkarte · Dokumentation lesen

Weiterlesen