Requirements & Install
Upload one folder, create a Teams webhook and save the provider. No activation, no database changes and no theme edits.
Requirements
| Item | Requirement |
|---|---|
| WHMCS | 8.13 or later, or 9.x. Developed and tested on WHMCS 9. |
| PHP | 8.1 or higher, with cURL, JSON and mbstring. |
| Network | Outbound HTTPS on port 443. Redirects are not followed, so the webhook URL must be final. |
| Microsoft 365 | A Teams channel where you can add a Workflows webhook. Legacy Incoming Webhook URLs are also accepted. |
| WHMCS cron | Running, otherwise cron-driven notifications never fire. |
| Database | No 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:
- Open the target Teams channel and choose Workflows.
- 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.
- Choose the team and channel, then create the workflow.
- 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.
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
- Go to Configuration → System Settings → Notifications.
- Find the Microsoft Teams card and click Configure.
- Paste the webhook URL. Leave Request Timeout at 10 unless your network is slow.
- Optionally enter a Card Header Name and Card Icon URL to brand the card. These do not change the Teams sender, which remains Workflows.
- Leave Strict Delivery unticked unless you want a rejected View action to fail the notification.
- 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
- Open the Notification Rules tab and click Create New Notification Rule.
- Name the rule, tick the events and add any conditions.
- Choose Microsoft Teams under Notification Method.
- 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 Teamsand actionexecute 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
- Back up
modules/notifications/MicrosoftTeams/. - Replace the folder with the 1.3.0 release, keeping the name
MicrosoftTeams. - Open the provider configuration and save once. The existing webhook is preserved; the new timeout and strict-delivery defaults are applied.
- Existing rules keep their
themeColorvalue, 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.