If you ever faced the challenge of processing massive amounts of data in Umbraco, you know that every bit of performance counts.
When I migrated and published over 805,000 documents after moving from an old CMS, the task took days.

Huge Umbraco database tables overview - where performance optimization is critical
That’s when I realized – turning off anything unnecessary is key.
One such thing? Webhooks. If you’re not using them, disabling them can give you a noticeable performance boost.
Webhooks in Umbraco 13.6.0 – Default Settings
Here’s what the default webhook configuration looks like:
"Umbraco": {
"CMS": {
"Webhook": {
"Enabled": true,
"MaximumRetries": 5,
"Period": "00:00:10",
"EnableLoggingCleanup": true,
"KeepLogsForDays": 30
}
What these settings do:
-
Enabled – Turns webhooks on.
-
MaximumRetries – Sets how many times a webhook will retry if it fails.
-
Period – How often does Umbraco check for pending webhooks (every 10 seconds by default).
-
EnableLoggingCleanup – Handles cleanup of old webhook logs.
-
KeepLogsForDays – Determines how long logs are kept.
The Hidden Polling Problem
Now, you’d think the setting Enabled: false would stop everything, right? Not quite.
Even with webhooks disabled, Umbraco keeps querying the umbracoWebhookRequest table every 10 seconds.
You can see this in SQL Profiler:

Cyclic SQL queries to umbraco Webhook Request table
I couldn’t find a way to stop this entirely, but I found a practical workaround – slowing it down as much as possible.
My Recommended Performance Settings
If you want webhooks entirely out of the way, here’s what worked best for me:
"Webhook": {
"Enabled": false,
"MaximumRetries": 1,
"Period": "1.00:00:00",
"EnableLoggingCleanup": false,
"KeepLogsForDays": 30
}
Why these values?
-
Enabled: false – Turns webhooks off.
-
Period: 1 day – Reduces the polling from every 10 seconds to once a day (the max allowed).
-
EnableLoggingCleanup: false – Disables the cron job that cleans up logs (fewer background processes).
After applying these, you should also notice that the CRON task has been disabled:
WebhookLoggingCleanup task will not run as it has been globally disabled via configuration.
Final Thoughts
Reviewing your configuration is necessary if you’re pushing Umbraco to its limits with heavy data processing. Turn off what you don’t need – webhooks are a great place to start.
While you can’t entirely eliminate polling, you can slow it down enough that it will not bother you.