This guide applies to Laravel 10 or 11 and PHP 8.1 or higher. You need a live24h account, a workspace and an API key with write permission – see the shared steps .

Install

The package is a Composer package with auto-discovery – the ServiceProvider is registered automatically:

composer require live24h/laravel-adapter
php artisan vendor:publish --provider="Live24h\LaravelAdapter\LaravelServiceProvider"

The second command publishes the configuration config/live24h.php. There, set api_key and api_base_url (default https://api.live24h.eu) – or enter the key later on the settings page. The package is obtained via direct download from live24h; a marketplace listing will follow.

Step by step

The package provides an auth-gated route group (middleware: web, auth): the Health Center under /live24h/health, a settings page and the setup wizard. The illustrated flow is shown in the overview ; the steps for Laravel are:

  1. As a signed-in user, open /live24h/health.
  2. On the settings page, test the connection (“Test connection”). The API key is always shown masked.
  3. Start the analysis of the app.
  4. Review the Website Health Score and the recommendations.
  5. Select the checks – locked suggestions stay visible and are marked “From Pro”.
  6. Create the checks with one click.

The scan covers four areas: SEO (robots.txt, sitemap), SSL/domain/DNS (TLS certificate, apex domain), mail deliverability (MX, SPF, DKIM, DMARC of the sender domain from the MAIL_* configuration) and background processing (Scheduler schedule:run and queue worker as a heartbeat).

Policy presets for rollouts

For multiple apps there are three presets that determine the scope of the created checks:

  • essential – only the most important checks (reachability, SSL).
  • recommended – the standard including SEO, domain and mail DNS.
  • all – additionally the Scheduler and queue heartbeats.

This way you bring the same monitoring standard reproducibly into every Laravel project.

Troubleshooting and tips

The route /live24h/health is not reachable. The route group uses the web and auth middleware – so you must be signed in. Also check whether the configuration was published (php artisan vendor:publish) and, if needed, clear the cache with php artisan config:clear and php artisan route:clear.

“Test connection” fails. Check api_key (write permission required), api_base_url (https://api.live24h.eu) and whether the server is allowed to connect outbound.

The wrong mail domain or no mail domain is checked. The sender domain is derived from the MAIL_* configuration. Set MAIL_FROM_ADDRESS correctly so that MX, SPF, DKIM and DMARC of the right domain are checked.

A heartbeat check stays on “Waiting”. This is normal and not an error: a heartbeat waits for the first signal from the monitored process (the ping to the heartbeat URL). As long as the Scheduler run or the queue worker has not reported in yet, the check stays on “Waiting” – not on “Down”. With the first run, the status switches to “Operational”.

The Scheduler heartbeat does not report in. Make sure that php artisan schedule:run is actually executed every minute via cron and that the queue worker (php artisan queue:work) is running. Without a running process, the associated heartbeat stays on “Waiting”.

Frequently asked questions

Do I have to enter routes by hand? No. The scan derives the relevant checks from the app – SEO, SSL/domain, mail DNS as well as Scheduler and queue heartbeats. You only select them and create them with one click.

Is anything measured or stored in my app? The package scans read-only and creates checks. The ongoing 24/7 checks are then handled by the live24h platform – the package itself is not a monitoring engine.

Is it suitable for multiple apps? Yes. With the policy presets essential, recommended and all, the same monitoring standard can be rolled out reproducibly across all Laravel apps.

← Back to the plugin overview