Lazy Webhook Relay for WPForms

Download

You can download the plugin from the WordPress Plugin Directory.

Overview

Are you a lazy developer? Do you love WP-Forms? Are you tired of manually configuring things in the WordPress interface? Do you yearn for an easier way to get the front-end talking to the back-end? Do you want to say “screw it” and just send your data somewhere else?

Lazy Webhook Relay for WPForms quietly sends every WPForms submission from your WordPress site to a remote endpoint of your choice. It doesn’t interrupt WPForms.

It retries failures, signs requests with an HMAC hash, and logs its activities in /uploads/lazy-webhook-relay-for-wpforms.log.

Features

  • Works with any WPForms form (no setup per form)
  • Async background sending (non-blocking)
  • Choose GET or POST
  • Retries with exponential backoff
  • Optional shared secret for HMAC signing
  • Lightweight logger
  • Simple settings screen

Installation

  1. Upload the plugin files to /wp-content/plugins/lazy-webhook-relay-for-wpforms/.
  2. Activate the plugin through the ‘Plugins’ screen.
  3. Go to Settings → Lazy Webhook Relay.
  4. Set your endpoint and method.
  5. Done. Every WPForms submission is now silently sent to your endpoint.

Frequently Asked Questions

Does this work with the free version of WPForms?
Yes. It hooks into the core submission action.

Does it block form submission while sending?
No. It queues asynchronously via WP-Cron.

Where are logs stored?
In /wp-content/uploads/lazy-wpforms-webhook.log.

Will you build me a custom receiver?
Yes. Contact us.

Headers:

X-WPForms-Signature: <HMAC-SHA256>
X-WPForms-Form-ID: 14
X-WPForms-Entry-ID: 478
X-WPForms-Site: https://example.com
X-WPForms-Idempotency: wpforms:478:1730253100

Example Receiver Script

Here’s a no-frills PHP receiver that emails whatever hits it:

<?php
$to = 'you@gmail.com';
$subject = 'Lazy Webhook Relay Delivery';
$body = file_get_contents('php://input');
mail($to, $subject, $body, "Content-Type: text/plain; charset=UTF-8");
echo json_encode(['ok' => true]);

You can download a more comprehensive receiver script here.

Filters & Actions

  • lazy_wpf_webhook_allow_form
    Return false to skip specific forms.
  add_filter('lazy_wpf_webhook_allow_form', function($allow, $form_data) {
      return ($form_data['id'] ?? 0) !== 42;
  }, 10, 2);
  • lazy_wpf_webhook_gave_up
    Fires when a submission fails all retry attempts.

Disclaimer

This plugin will make your life easier today, but probably not tomorrow.

YMMV. Good luck.