Notifications

Form notifications for email, Slack, Discord, and webhooks.

Deliver an accepted submission to the people and systems that need it. FormsFort queues delivery, exposes a request ID for diagnosis, and keeps notification credentials out of your static site.

Set up form notifications

Choose a destination for each kind of work.

Email is the durable baseline for a contact or lead owner. Slack and Discord are useful team signals when a fast alert matters. A generic webhook is the flexible path when an automation platform, CRM, ticket system, or private receiver needs the structured payload.

Configure the destination and recipient permissions before launch, and keep the browser form focused on collecting the submission. FormsFort can deliver accepted submissions to email, Slack, Discord, and webhooks; the destination still owns its own access controls, formatting rules, rate limits, and outage behavior.

  • Email provides a durable notification and delivery record for the owner.
  • Slack and Discord fit team triage; a webhook fits custom routing and enrichment.
  • A static HTML form needs no notification server or chat token in browser code.
  • Check plan availability and destination limits before promising a high-volume alert path.

Acceptance comes before notification.

Validation and spam checks run before normal notification work is queued. A rejected submission should not create an ordinary email, Slack, Discord, or webhook alert. Treat an accepted browser response as the start of delivery, not proof that every downstream destination has processed the event.

Use the request ID from the response or delivery record as the correlation key. Record it with the event in your receiver logs. If a receiver returns a transient failure, retries may deliver the same request more than once, so make webhook and automation handlers idempotent before production traffic arrives.

  • Log request IDs alongside receiver status, response time, and any downstream event ID.
  • Return a 2xx response quickly after durable receipt; do slow enrichment asynchronously.
  • Deduplicate by request ID or another stable event key before creating a ticket or CRM record.
  • Inspect rejection and delivery status separately when an expected notification is missing.

Static-site setup with a safe webhook handoff.

The example below is ordinary accessible HTML: labels point to controls, the fieldset provides a group name, and native constraints catch empty or malformed values. The access key is intended for the public form action; never place Slack, Discord, CRM, or webhook authentication tokens in the page.

The hidden webhook value illustrates a form-level routing value used by this setup. If your project configures destinations in the FormsFort dashboard instead, omit that field and keep the destination secret there. Test the receiver with a non-production endpoint first, then use the webhook tester to inspect status, body, and timing.

  • Verify the recipient and allowed domain before publishing the form.
  • Exercise one accepted request and one rejected request, and save both request IDs when available.
  • Confirm email, Slack, Discord, and webhook formatting with a realistic payload.

Use automation paths for Telegram and Google Sheets.

Telegram and Google Sheets are not native notification destinations on this page. Send the accepted payload through the webhook path to an automation platform or your own handler, then call the Telegram Bot API or Sheets workflow there. This keeps bot tokens and spreadsheet permissions out of the browser and gives you one place to retry and deduplicate.

Implementation

From form markup to delivery.

01

Choose the destination

Start with email, then add hosted Slack or Discord or a generic webhook for custom routing.

02

Post from the static site

Send standard form data to the FormsFort endpoint with an access key, accessible controls, and a honeypot.

03

Check acceptance

Let validation and spam checks decide whether the submission is accepted before expecting a normal notification.

04

Trace and retry safely

Store the request ID, inspect delivery status, and make receivers idempotent before transient failures trigger retries.

Code

Accessible static-site form with webhook routing

<form action="https://api.formsfort.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
  <input type="hidden" name="subject" value="New website notification" />
  <input type="hidden" name="webhook" value="https://automation.example.com/forms" />

  <fieldset>
    <legend>Send us a message</legend>

    <div>
      <label for="name">Name</label>
      <input id="name" name="name" type="text" autocomplete="name" required />
    </div>

    <div>
      <label for="email">Email</label>
      <input id="email" name="email" type="email" autocomplete="email" required />
    </div>

    <div>
      <label for="message">Message</label>
      <textarea id="message" name="message" rows="6" minlength="10" maxlength="4000"
        aria-describedby="message-help" required></textarea>
      <p id="message-help">Tell us what you need help with.</p>
    </div>
  </fieldset>

  <input type="checkbox" name="botcheck" tabindex="-1" autocomplete="off"
    aria-hidden="true" style="display:none" />
  <button type="submit">Send message</button>
</form>

Fit boundaries

When FormsFort is not the right tool.

  • Use a dedicated incident or customer-support platform when notifications need on-call escalation, ticket state, or long-term conversation history.
  • Use a custom worker when each event needs private enrichment, strict ordering, or transactional writes before a notification is sent.
  • Use the destination's native event system when you need guaranteed ordering or domain-specific audit controls that a form notification cannot provide.
  • Do not treat a browser success message as proof that every downstream destination accepted the delivery; inspect the delivery record and receiver logs.

FAQ

Common questions.

When are form notifications sent?

FormsFort queues normal notifications after a submission is accepted and passes validation and spam checks. Rejected submissions do not create ordinary notification delivery.

Which destinations can receive a form notification?

FormsFort supports email, Slack, Discord, and webhook delivery. Telegram and Google Sheets use a webhook plus an automation platform or your own handler.

How do request IDs help troubleshoot notifications?

Use the request ID from the form response or delivery record to match the browser event with FormsFort status and your webhook receiver logs.

Are webhook notifications retried?

Transient delivery failures can be retried. Return a 2xx response quickly, make the receiver idempotent, and inspect delivery status before retrying manually.

What should I do when a notification is missing?

First determine whether the submission was rejected or accepted. For an accepted request, use its request ID to inspect delivery status, recipient configuration, plan availability, receiver logs, and any retry outcome.

Which plan includes Slack, Discord, and webhooks?

Availability is plan-aware and can change. Check current pricing and integration documentation before launch; higher-volume or advanced destinations may require a paid plan.

Ship the form workflow.

Start with a static form endpoint, then add the delivery path your team needs.

Set up form notifications