Microsoft Teams Notificationsfor WHMCS · Documentation
v1.3.0

Requirements & Install

Upload one folder, create a Teams webhook and save the provider. No activation, no database changes and no theme edits.


Requirements

ItemRequirement
WHMCS8.13 or later, or 9.x. Developed and tested on WHMCS 9.
PHP8.1 or higher, with cURL, JSON and mbstring.
NetworkOutbound HTTPS on port 443. Redirects are not followed, so the webhook URL must be final.
Microsoft 365A Teams channel where you can add a Workflows webhook. Legacy Incoming Webhook URLs are also accepted.
WHMCS cronRunning, otherwise cron-driven notifications never fire.
DatabaseNo module tables. WHMCS stores provider settings and rules in its own tables.

1. Create the Teams webhook

Microsoft retired Office 365 connectors in Teams in May 2026. For a new integration, use the Workflows app:

  1. Open the target Teams channel and choose Workflows.
  2. Create a workflow from the template Post to a channel when a webhook request is received, or start from the When a Teams webhook request is received trigger.
  3. Choose the team and channel, then create the workflow.
  4. Copy the generated HTTP POST URL. It looks like https://prod-12.westeurope.logic.azure.com/workflows/.../triggers/manual/paths/invoke?api-version=1&sp=...&sig=....

If your tenant still has a legacy connector, the Incoming Webhook URL looks like https://contoso.webhook.office.com/webhookb2/.../IncomingWebhook/.../.... Both URL styles are supported.

Treat the URL as a password. The query string of a Workflows URL contains a signature, and a legacy URL ends in a token. Anyone holding it can post to the channel.

2. Upload the module

Copy the whole MicrosoftTeams folder into your WHMCS installation:

WHMCS_ROOT/modules/notifications/MicrosoftTeams

You should end up with:

WHMCS_ROOT/modules/notifications/MicrosoftTeams/
    MicrosoftTeams.php      provider class
    whmcs.json              module metadata
    logo.png                provider card logo

3. Configure the provider

  1. Go to Configuration → System Settings → Notifications.
  2. Find the Microsoft Teams card and click Configure.
  3. Paste the webhook URL. Leave Request Timeout at 10 unless your network is slow.
  4. Optionally enter a Card Header Name and Card Icon URL to brand the card. These do not change the Teams sender, which remains Workflows.
  5. Leave Strict Delivery unticked unless you want a rejected View action to fail the notification.
  6. Click Save Changes.

Saving runs a connection test immediately. The test is always strict: a success message in the dialog and a Microsoft Teams notifications are working. card in the channel mean the URL, tenant policy and outbound HTTPS path are all correct.

4. Create a notification rule

  1. Open the Notification Rules tab and click Create New Notification Rule.
  2. Name the rule, tick the events and add any conditions.
  3. Choose Microsoft Teams under Notification Method.
  4. Optionally enter a Webhook Override to target a different channel, pick a message format, set a theme colour, and save.

See Notification Rules for event categories and routing examples.

5. Verify delivery

  • Confirm the card appears in the Teams channel.
  • Enable module logging under Configuration → System Logs → Module Log, trigger a test event, then look for module Microsoft Teams and action execute webhook.
  • The logged URL ends in [redacted]; the response shows the HTTP status and any error text.
  • Turn module logging off again after testing.

Upgrading from 1.2.0

  1. Back up modules/notifications/MicrosoftTeams/.
  2. Replace the folder with the 1.3.0 release, keeping the name MicrosoftTeams.
  3. Open the provider configuration and save once. The existing webhook is preserved; the new timeout and strict-delivery defaults are applied.
  4. Existing rules keep their themeColor value, default to the Message + Card format, and use the provider webhook until a Webhook Override is set. No rule edit is required.

Provider settings and rules live in tblnotificationproviders and tblnotificationrules; no migration script is needed.

Rollback

Restore the previous folder and clear OPcache or restart PHP. Settings written by 1.3.0 are additive, so the older class ignores them. Open and save the provider once, then confirm delivery.