WebHookARM WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA
WebHookARM is a lightweight WordPress plugin that listens for ARMember profile update events and securely sends the user data to a webhook endpoint (Google Apps Script Web App or Make.com).
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/renatobo/webhookarm/releases/download/v2.2.0/WebHookARM-2.2.0.zipSend ARMember profile updates to a secure JSON webhook for Google Apps Script, Make.com, or custom integrations.
Features
- Hooks into ARMember
arm_update_profile_externalprofile update event - Sends payload as
application/jsonviaPOST - Signs requests with timestamped HMAC-SHA256 authentication
- Queues delivery outside the profile request and retries transient failures
- Redacts credential-like fields and caps serialized payloads at 256 KiB
- Configurable from a tabbed WordPress admin screen: Settings -> ARMember WebHook
- Git Updater-compatible release assets published automatically from GitHub Actions
Requirements
- WordPress 7.0+
- PHP 8.0+
- ARMember plugin installed and active
- A webhook endpoint URL (Google Apps Script, Make.com, or custom API)
Quick Start
- Install and activate the plugin.
- Open Settings -> ARMember WebHook.
- Configure:
- Webhook URL
- Secret Key
- Enable webhook for profile updates =
Yes
- Update an ARMember profile and verify your endpoint receives a
POSTpayload.
Installation
- Copy the plugin to
/wp-content/plugins/WebHookARM. - Activate WebHookARM in Plugins.
- Go to Settings -> ARMember WebHook.
- Save your webhook URL and secret key.
Endpoint Configuration
Google Apps Script + Google Sheets
Use the sample script in assets/webhookarm_appscript.gs.
- Open your Google Sheet.
- Go to Extensions -> Apps Script and paste/adapt the script.
- In Project Settings -> Script properties, set:
WA_AUTH_SECRETWA_SHEET_NAME
- Deploy as a Web App:
- Execute as:
Me - Who has access:
Anyone
- Execute as:
- Copy the Web App URL into plugin settings.
Make.com
- Create an HTTP/Webhook scenario module.
- Receive a
POSTwithapplication/jsonbody. - Validate the HMAC signature using your shared secret over
<delivery id>.<timestamp>.<raw request body>. - Process/store incoming fields as needed.
Request Format
WebHookARM sends a POST request with:
- Query params:
action=profile_updatedelivery=<uuid>signature=<hmac>timestamp=<unix timestamp>
- Headers:
Content-Type: application/jsonX-WebhookARM-Delivery: <uuid>X-WebhookARM-Signature: sha256=<hmac>X-WebhookARM-Timestamp: <unix timestamp>
- JSON body:
{
"user_id": 123,
"user_login": "johndoe",
"user_email": "john@example.com"
}
ARMember form fields are included in the same payload when available.
Credential-like keys (passwords, tokens, nonces, authentication secrets, and payment-card fields) are removed recursively before queueing. Developers can further restrict or reshape the payload with the bono_arm_webhook_payload filter. Queued payloads expire after one day; successful and permanently failed deliveries are removed immediately.
Delivery uses WP-Cron with retry delays of 1, 5, and 15 minutes for transient failures. Sites that disable WordPress's request-driven cron must invoke wp-cron.php from a system scheduler.
Security
- Use a strong secret key.
- Always validate the secret at the receiving endpoint.
- Use HTTPS for the webhook URL.
- Avoid logging sensitive data in production.
- Treat the delivery UUID as an idempotency key so retried requests are not processed twice.
For security reporting, see SECURITY.md.
Automatic Updates (GitHub)
This plugin includes Git Updater-compatible headers and release assets. To receive dashboard updates:
- Install Git Updater.
- Keep this repository configured as your plugin source.
- Use published GitHub releases as the update source; the repository automation builds the versioned zip asset automatically when a new version is tagged.
Releases
Releases are generated automatically with GitHub Actions:
- Update the version in
webhookarm.phpandreadme.txt. - Push the change to
main. - The
update-stable-tagworkflow creates the matchingvX.Y.Ztag. - The
package-pluginworkflow builds the plugin zip and publishes the GitHub release asset.
Release packaging keeps only WordPress runtime files:
- Keeps
README.md - Removes all other
.mdfiles - Removes
.shscripts that are not used by WordPress at runtime
Latest planned release: 2.0.1
- Maintenance release fixing release automation, uninstall cleanup under nested include scopes, and static analysis errors. Webhook delivery is unchanged from 2.0.0.
Troubleshooting
- No requests arriving: confirm plugin toggle is enabled and ARMember profile update event is firing.
- 401/403 at endpoint: verify secret key and validation logic.
- Invalid payload format: ensure receiver accepts
application/json. - Debugging: enable
WP_DEBUGto inspect webhook send logs.
FAQ
Does this work without ARMember?
No. WebHookARM is triggered by ARMember profile update hooks.
Can I send to something other than Google Sheets?
Yes. Any endpoint that accepts authenticated JSON POST requests is supported.
Where do I get help?
- Open an issue: https://github.com/renatobo/WebHookARM/issues
- Repository: https://github.com/renatobo/WebHookARM
Related repositories
License
GPLv2 or later. See LICENSE.
Releases
11 releases. Each count is every asset in that release; expand a row for the breakdown.