Skip to content
Impulse SoftwareDOCS
Get modules

ImpulseNotify

Installation & activation

ImpulseNotify is an addon-only module: it provisions nothing and manages no servers. Upload its three components into your WHMCS root, activate it, register it with ImpulseCore, and add a license key.

Time: ~15 min · Requires: WHMCS 9.0+ · Core: 1.61.13+

ImpulseNotify has no servers, regions or admin proxy, but it runs on ImpulseCore, so Core must be live before you activate it. Confirm each item first:

  • WHMCS 9.0 or later.
  • PHP 8.2 / 8.3 / 8.4 — both the web PHP and the command-line PHP that runs ImpulseCore’s cron runner.
  • ionCube Loader 13+ for both of those PHP binaries. The module’s PHP is ionCube-encoded, including the public callback endpoints and the health endpoint, so the loader must be present before activation.
  • ImpulseCore 1.61.13+ — a hard dependency. ImpulseNotify uses it for licensing, the cron runner, the audit log, and the email delivery the Email channel sends through. Install and activate impulsecore before ImpulseNotify.
  • Public HTTPS with a valid certificate on your WHMCS System URL, if you’ll use WhatsApp, SMS or client-linked Telegram. Delivery receipts, SMS STOP replies and Telegram updates are POSTed to callback URLs on your WHMCS host, so the providers must reach them from the internet.
  • At least one channel account you bring yourself — a WhatsApp Business account (Meta WhatsApp Cloud API), a Telegram bot, an SMS gateway account (Twilio, Vonage, Telnyx, Plivo, MessageBird or AWS SNS), a Slack, Discord or Microsoft Teams webhook, a Pushover application, or any webhook endpoint such as n8n. Email needs no extra account. No message credits are bundled.

Download the release from your license’s downloads in the Impulse Software portal, unzip it, and upload the install payload into your WHMCS root, preserving paths. Three components land:

whmcs/
├── modules/
│ ├── addons/impulsenotify/ ← Addon module (channels, rules, queue, admin UI,
│ │ client-area page, callbacks, health endpoint)
│ └── notifications/ImpulseNotify/ ← WHMCS Notification Provider
└── includes/hooks/
└── impulsenotify_hooks.php ← Billing, order, ticket, login and client-delete hooks

The new files need the same owner and group as the rest of your WHMCS files — on Plesk that’s the subscription user, on cPanel it’s the account’s cPanel user, and on a plain Linux server it’s typically www-data. If you extracted them as root, run this from the WHMCS root to copy the ownership of the existing directories:

Terminal window
chown -R --reference=modules/addons modules/addons/impulsenotify
chown -R --reference=modules/notifications modules/notifications/ImpulseNotify
chown --reference=includes/hooks includes/hooks/impulsenotify_hooks.php

Activation creates the module’s tables, registers it with ImpulseCore, and seeds the stock templates.

  1. In WHMCS admin, go to System Settings → Addon Modules.
  2. Find ImpulseNotify and click Activate.
  3. Set Access Control to the admin role(s) that should see the addon, then click Save Changes.

On success you see “ImpulseNotify activated. Tables created. Registered with ImpulseCore.” Activation is safe to repeat: it creates the twelve mod_impulsenotify_* tables if they’re missing, registers the module manifest with Core (which registers its seven cron tasks and its service-event handlers), and seeds the stock templates without touching template rows that already exist.

Open Addons → ImpulseNotify. The tabs are Dashboard, Channels, Rules, Staff Recipients, Manual Message, Logs, Diagnostics and Settings. The Dashboard’s Module status panel shows the module and schema versions, the ImpulseCore registration (registered), and the license state, which reads dev mode until you add a key.

ImpulseNotify is a single licensed edition: a valid INTFY- license removes every limit. There are no tiers or add-on features to unlock.

  1. Obtain your INTFY- key.
  2. Enter it in ImpulseCore → Modules & Licensing → Licenses. Core owns licensing for every Impulse module; it validates the key and caches the result.
  3. The Dashboard license row changes to licensed — no limits, and Settings → Licence & limits confirms it.

Your WHMCS install’s domain is recorded the first time the key is validated; you don’t enter it anywhere.

Background delivery, retries, delivery receipts, STOP opt-outs, Telegram pairing, fallback hops and the domain and SLA scans run as ImpulseCore cron tasks. ImpulseNotify registers seven:

Task Cadence What it does
queue_drain 1 min Delivers queued messages, retries with backoff, dead-letters after the last attempt
inbound_process 1 min Applies delivery receipts, STOP opt-outs and Telegram pairing
fallback_escalate 5 min Sends fallback hops for failed or undelivered messages
sla_scan 5 min Ticket response-SLA alerts — off in this release, as the admin area has no setting for a response-time limit
domain_expiry_scan daily Emits 60 / 30 / 14 / 7 / 1-day expiry notices for active domains
wa_template_sync hourly Refreshes WhatsApp template approval statuses
log_prune daily Prunes delivery-log and callback rows past their retention window

A task runs only as often as ImpulseCore’s cron runner ticks, so the 1-minute tasks need the runner on a 1-minute crontab. ImpulseCore → Operations → Cron shows the exact line for your install; set its schedule to * * * * *:

Terminal window
* * * * * /usr/bin/php /path/to/whmcs/modules/addons/impulsecore/cron/runner.php

Use the same PHP binary as in step 1. On a 5-minute tick, queued messages and receipts are handled every 5 minutes instead. Rule-routed messages on Telegram, Webhook, Slack, Discord, Teams and Pushover usually go out straight away regardless, on the request that raised the event; on WhatsApp, SMS and Email they always wait for the queue. Diagnostics → Health Checks → Cron heartbeats shows when each task last ran and flags a stale queue_drain.

6. Register the WHMCS Notification Provider (optional)

Section titled “6. Register the WHMCS Notification Provider (optional)”

WHMCS’s own Notification Rules can deliver through ImpulseNotify channels. The provider sends WHMCS’s notification text as it is, so it needs no ImpulseNotify templates or rules — use it alongside the addon’s own rules or instead of them.

  1. Go to System Settings → Notifications, find ImpulseNotify among the providers, and configure and save it. Saving checks that the addon is active and that at least one channel is enabled.
  2. On any WHMCS notification rule, pick ImpulseNotify as the provider, choose a Channel, and set the Recipient: a phone number, Telegram chat id, webhook, Slack, Discord or Teams URL, email address, or Pushover user/group key. A Pushover rule can leave it blank to use the channel’s saved default key.

Once you’ve connected a channel and created a rule (the next guides), prove the pipeline before you rely on it:

  • Channel test: Channels tab → your channel’s row → Test send. It should arrive within seconds and set the channel’s status to ok with a fresh Last test time.
  • Event test: trigger a real event that a rule matches — for example, an admin-audience rule for invoice.created on a Webhook channel and an invoice generated for a test client — or a WHMCS notification rule through the provider.
  • Logs: the Logs tab shows each delivery attempt with a masked recipient. On WhatsApp and SMS, a delivered row appearing after the sent row proves the delivery-receipt callback is wired.
  • Health: Diagnostics → Health Checks should show fresh heartbeats, an empty dead-letter count and the license state.

ImpulseCore’s status checks read the module’s health endpoint, which you can also open directly. It reports counts and ages only — never credentials, recipients or message content:

GET <your WHMCS System URL>/modules/addons/impulsenotify/health.php
{ "module": "impulsenotify", "status": "healthy", "active_services": 2,
"queue": { "pending": 0, "oldest_pending_age_seconds": null, "dead": 0 },
"license_check": "ok", ... }

Deploy a newer ImpulseCore first if the release requires one, then upload the new ImpulseNotify files over the old ones, preserving paths. WHMCS runs the module’s upgrade routine: it re-checks the tables, applies any schema migration, seeds any missing stock templates, and re-registers the manifest with ImpulseCore so new cron tasks are picked up.