Share your feature requests anytime
Search icon Our Plugins

Delivery channels

Every submission is saved in the admin first. Then Forms RB sends it through the channels you turned on, in the Delivery channels section of the form’s Delivery tab. A form has one channel of each kind, and can use them all at once.

Sending happens in the background, within about a minute of the submission, so the visitor does not wait for it.


Email

Turned on for new forms.

  • Send to — the address that receives the submission. Left empty, it goes to the site’s admin email.

The email lists the answers and has a button that opens the form in the admin. The sender is the name and address from Settings → General.

Emails go out through WordPress. If they do not arrive, the cause is usually the site’s mail setup, and an SMTP plugin is the common cure. The submission stays safe in the admin either way.


Telegram

Sends each submission to a Telegram chat.

  1. In Telegram, create a bot with @BotFather and copy its token.
  2. Add the bot to the chat or group that should receive submissions.
  3. Find the chat’s ID. A group’s ID starts with a minus, for example -1001234567890.
  4. Paste the token into Settings → Advanced → Bot token, so all forms can use it.
  5. Turn on Telegram in the form and enter the Chat ID.

A form can use its own bot: fill in the Bot token field of its channel.


Webhook

Sends each submission to a URL of your choice, for your own system or a service such as Zapier or Make. Enter the address in the channel’s URL field.

The request is a POST with a JSON body:

{
  "form_id": 12,
  "form_title": "Contact form",
  "record_id": 345,
  "date": "2026-11-01 10:30:00",
  "data": {
    "name": "Anna",
    "email": "[email protected]",
    "message": "Hello"
  }
}

The keys of data are the field names. Any 2xx answer counts as delivered.

Signing requests

To prove a request came from your site, set a Signing secret in Settings → Advanced. Each request then carries the header:

X-RBForms-Signature: sha256=<HMAC-SHA256 of the JSON, with your secret>

Your endpoint computes the same value and compares.

Internal addresses

A webhook cannot point at the site’s own server or a local network address. A site that needs this can allow a host with WordPress’s http_request_host_is_external filter.


When sending fails

A channel that fails is tried again by the next two background runs, three times in all. Channels that already delivered are not sent twice.

Each submission shows the outcome:

Status Meaning
Awaiting to be sent It is in the queue, or being tried again
The message has been sent Every channel delivered
Sent through some channels; the others failed Part of the delivery failed after three tries
Sending is not configured in WordPress or is not possible for other reasons No channel delivered after three tries
Turned off in the settings No channel is on

Background runs rely on WP-Cron, which WordPress starts when someone visits the site. On a site with few visitors, sending can take longer; a real server cron job fixes that.


Next steps

Simplify your WordPress workflow!

Build faster, cleaner, and more reliable WordPress websites using lightweight plugins designed for real-world workflows.

Get started now