Skip to content
Impulse SoftwareDOCS
Get modules

ImpulseCore

Installation & activation

Install first · Required for every module

ImpulseCore is the shared addon every Impulse module depends on. Install it first — modules don’t work until Core is present and active.

Time: ~5 min · Requires: WHMCS 9.0+ · Cost: Free

  • WHMCS 9.0 or later on PHP 8.2, 8.3 or 8.4.
  • ionCube Loader 13+ for your PHP version. Core’s PHP files are ionCube-encoded.
  • A cron job on the WHMCS server — you’ll add one Core cron line (crontab, or your panel’s scheduled tasks).
  • MySQL or MariaDB — whatever WHMCS is already using. Core uses the WHMCS database connection and creates its own mod_impulsecore_* tables.

Core needs no provider credentials, SSH keys or DNS provider to install. Modules that create servers can later share one set of VPS provider credentials that you enter once under Operations → VPS Providers in Core.

Download ImpulseCore from the license portal — it is listed as a required download once you have an active module license. Extract the release archive into the WHMCS root:

Terminal window
cd /path/to/whmcs
unzip /tmp/impulsecore-<version>.zip

You’ll get this layout:

whmcs/
└── modules/addons/impulsecore/
├── impulsecore.php ← Addon entry point
├── impulse_module.json ← Core's self-manifest
├── hooks.php ← WHMCS hooks Core listens to
├── cron/runner.php ← Cron runner entry point
├── lib/ ← Facade, licensing, cron, audit, security
└── templates/ ← Client-area templates

Make sure the WHMCS web user can read everything — on Plesk that’s the subscription owner; on cPanel the cPanel user; on a vanilla LAMP typically www-data.

  1. Log in to WHMCS Admin.
  2. Go to System Settings → Addon Modules.
  3. Find ImpulseCore in the list and click Activate.
  4. Set Access Control → Full Administrator (or whichever admin role(s) should see the addon).
  5. Click Save Changes.

ImpulseCore runs its own cron runner that dispatches every registered module’s tasks (provisioning polls, usage syncs, lifecycle grace windows, the Security & Maintenance pipeline, audit retention). One crontab line covers everything:

# ImpulseCore — cron runner (every 5 minutes)
*/5 * * * * /usr/bin/php /path/to/whmcs/modules/addons/impulsecore/cron/runner.php

Replace /usr/bin/php with your PHP 8.x CLI binary (Plesk: /opt/plesk/php/8.3/bin/php; cPanel: /opt/cpanel/ea-php83/root/usr/bin/php; generic LAMP: usually /usr/bin/php) and /path/to/whmcs with your WHMCS install dir. Add it to the crontab of the user that owns the WHMCS files. The exact line for your server, with the PHP binary detected, is shown in Core under Operations → Cron → Automation & Setup.

Open the addon (Addons → ImpulseCore). The Overview tab shows:

  • Stat cards — modules registered and active, projects, services tracked, hook subscriptions and cron tasks. On a fresh install ImpulseCore itself is the one registered module.
  • Recent failures — unacknowledged error and critical events from the audit log. Empty on a healthy install.
  • Activity (last 24h) — cron runs by status and audit entries by level. After the first cron tick you’ll see Core’s own tasks running.

Then check:

  • Operations → Cron → Automation & Setup reads “Cron is running” with a recent last tick.
  • Operations → Audit has the activation event.
  • Security → CVE feed health — once the hourly feed task has run, this shows the freshness of the three upstream feeds (Ubuntu USN, CISA KEV, NVD).

With Core in place, you can activate the modules you bought. Each module’s activation:

  1. Points Core at its impulse_module.json manifest with ImpulseCore::registerModule(), which records it in mod_impulsecore_modules.
  2. Has Core check the module’s minimum Core version — a module that needs a newer Core is held until you update Core.
  3. Activates it with Core, which installs the module’s hook handlers, cron tasks and lifecycle handler from its addon directory.
  4. Leaves its SecurityCollector / SecurityActuator classes in lib/Security/ for Core to find when the Security pipeline runs.

The module then shows as active under Modules & Licensing → Modules. Paste its license key under Modules & Licensing → Licenses — see Licensing.