Cronjob.de › Guides › Contao

Setting up a Contao cronjob: calling _contao/cron from outside

Contao ships a dedicated address for scheduled tasks. This guide shows how to disable visitor-dependent execution and have the address triggered from outside every minute instead.

Why at all

The scheduler runs inside the visitor request

Without a cron from outside, Contao attaches its scheduled tasks to a visitor page view. They only run when somebody drops by, and they cost that visitor waiting time.

This affects, among other things, cleaning up expired sessions and previews, delivery from form and newsletter extensions, and clearing caches.

The Contao documentation names one limitation explicitly: only the tasks designed for this route run through the address. The back end search index, for example, is still only built by a real cron on the command line. For everything else the call from outside is the documented route.

URL to call
https://ihre-domain.de/_contao/cron
Recommended interval
every minute
Tested with
Contao 4.9 bis 5.x
Sufficient Cronjob.de plan
Contao expects a one-minute interval, which requires at least Cronjob.de Plus. On the free plan it runs every five minutes, coarser than intended.

Setup

Step by step

The AI does it faster

You do not have to transfer any of this by hand. Paste this guide – or the one for your own system – into the assistant, and Cronjob.de fills in address, method, schedule and headers. Where something is unclear it asks instead of guessing. At the end you see what was entered and create the job with one click.

Included in the free plan at no extra cost. You will find it after signing in under "Cronjobs" → "Create with AI".

  1. Disable execution inside visitor requests (Contao 5)

    Add the following setting to config/config.yaml. The _contao/cron address is unaffected and stays reachable.

    contao:
        cron:
            web_listener: false
  2. On Contao 4 disable it in the back end instead

    In Contao 4 you find the setting under System, Settings, in the cron job settings section: disable the command scheduler there. Alternatively in the configuration.

    contao:
        localconfig:
            disableCron: true
  3. Check the address

    Open https://your-domain.com/_contao/cron in a browser. An empty response with no content is correct, technically status 204.

  4. Create the cronjob with a one-minute interval

    Create the cronjob at Cronjob.de and select all minutes in the schedule.

    * * * * *

    You can enter this expression at Cronjob.de exactly as it is – the schedule field understands crontab notation. But you do not have to know it: simply click the schedule together instead.

What the five fields of an expression like */5 * * * * mean is explained in the crontab reference – with examples and the most common pitfalls. You can build the expression in the crontab generator. Whether you need an outside service at all is shown in the comparison of the three ways.

Verification

Is it actually running?

The Cronjob.de call log shows status 204 and a very short runtime for every run. That is the correct response, Contao deliberately returns no content here. Whether the tasks actually get done is best seen in the extension you are running with it, for example the delivery log of a newsletter.

FAQ

Common questions about Contao

Does the address need a key?
No. Contao provides no key for _contao/cron. The address only triggers execution and returns nothing.
Does everything really run this way?
No, and the Contao documentation says so too. Only the tasks designed for this route run through the outside call. The back end search index still needs a real cron on the server. For most installations that is not an obstacle.
Is the free plan enough?
It works, but it is coarser than intended. Contao assumes a one-minute interval, the free plan calls every five minutes. For time-critical tasks such as newsletter delivery the one-minute interval from Plus is the right choice.
Is your server rejecting our calls? Error 403 almost always comes from a firewall, a security plugin or directory protection – not from your script. All our calls carry the fixed identifier Cronjob.de in the user agent. Ask your host for an exception for it; that is more reliable than allowing IP addresses, because ours can change. Addresses and details in the FAQ. Other errors such as 401, 404 or 500 are explained in the troubleshooting guide.

Create your cronjob now

Create an account, enter the address, click the schedule. Five cronjobs are free forever, the first 14 days run on the Unlimited plan.

Start for free See pricing

More guides

Official documentation of Contao

The details about Contao come from their own documentation, as of September 2026. Please check there whether anything has changed since. Contao is a trademark of its respective owner. This guide comes from Cronjob.de and has no business relationship with that provider.