An Azure service that is used to provision Windows and Linux virtual machines.
Hello Ralph Street
No webhook configured message should not prevent VM auto-shutdown. Webhooks are optional and used for notifications only. When notifications are disabled, hasWebhook=false is expected.
Azure VM auto-shutdown uses Microsoft.DevTestLab/schedules resources, so I recommend checking the underlying schedule rather than relying on the portal.
- Verify the existing schedule
az resource show \
-g <RESOURCE_GROUP> \
-n shutdown-computevm-<VM_NAME> \
--resource-type Microsoft.DevTestLab/schedules \
--api-version 2018-09-15 \
--query "properties"
Confirm these properties:
-
status:Enabled -
taskType:ComputeVmShutdownTask -
targetResourceId: matches the VM's actual resource ID -
dailyRecurrence.timeandtimeZoneId: correct
- Test configuration outside the portal
You can use Azure CLI to configure auto-shutdown without a webhook:
az vm auto-shutdown \
-g <RESOURCE_GROUP> \
-n <VM_NAME> \
--time 2300
This configures shutdown at 23:00 UTC. Adjust the time to your requirement.
Documentation: Configure VM auto-shutdown
- Check a related reported issue
There is an open Azure GitHub issue from September 2026 reporting that the Microsoft.DevTestLab/schedules API does not return notificationSettings.webhookUrl correctly, including when configured through the portal.
This may explain the portal's webhook behavior, but it does not confirm the cause of missed shutdowns.
- If shutdown still doesn't execute
Check the VM's Activity Log around the scheduled time for stop/deallocate operations.
If no operation appears despite a correctly enabled schedule, I would open an Azure Support request to investigate the DevTestLab scheduling backend. Include the schedule resource ID, affected VM IDs, region, and missed shutdown timestamps.
If reliable scheduled shutdown is urgently required, Microsoft's Start/Stop VMs v2 provides an alternative with scheduled execution and monitoring.
The missing webhook itself is not the problem. The important distinction is whether the underlying schedule is correctly configured but fails to execute, or whether the portal is failing to manage the schedule correctly.