Open Core HR 2.0 launches on 15 November 2026. Sales open that day. Until then, explore the features, pricing and docs.
Skip to content
CZ App Studio
All guides

All guidesInstallation

Email, queues and real-time services

Set up outgoing email, the queue worker, the scheduler, webhook delivery and Reverb.

Use this page with AI Open in Claude Open in ChatGPT View as Markdown

Email

After installation, an administrator configures outgoing mail in Settings → Mail: the provider, SMTP credentials and sender address. Use Send a test email there to confirm delivery, and verify the sender domain with your provider. log and array mailers do not deliver email.

Test password recovery and confirm the email link opens the reachable HTTPS application hostname.

Queue worker

For a database queue, apply its migrations and supervise a worker from backend:

php artisan queue:work --queue=default --sleep=3 --tries=3 --timeout=60

Ensure queue retry_after exceeds the worker and job timeout: the default database value of 90 seconds is longer than this 60-second timeout. Run with access to storage/configuration. Use systemd, Supervisor or the host's worker manager to restart on failure and reboot. After code deployment:

php artisan queue:restart
php artisan queue:failed

The sync queue runs jobs inline; it does not demonstrate asynchronous worker health.

Import & Export operations

The standard Import & Export module uses the default queue for confirmed imports and requested exports. Apply its migration through the normal php artisan migrate --force update process, then restart workers. Do not reset the database. Its jobs have a 60-second timeout and imports do not retry automatically, regardless of the worker's general retry setting.

Test with a small permitted export and a harmless import preview after installation. Confirm that preview creates no records, a confirmed job reaches a final result, and the requester can download the completed file. Only test a confirmed import with records intended for that installation.

Uploaded files, validation results and generated downloads use private storage. Give the application and worker access to the same storage, including on hosts with separate worker processes. Do not place transfer storage behind a public web URL. Files expire after seven days; transfer history metadata is retained.

Scheduler

Add a cron entry every minute:

* * * * * cd /srv/open-core-hr/backend && /path/to/php artisan schedule:run >> /srv/open-core-hr/backend/storage/logs/scheduler.log 2>&1

Replace paths, monitor/rotate logs, review php artisan schedule:list and confirm timezones. Modules can contribute additional schedules when enabled.

Confirm that the hourly data-transfers:cleanup task appears in the schedule and runs successfully. It removes expired files and validation content while retaining history metadata. It also marks processing jobs interrupted for more than five minutes as failed so their requester can investigate. It can be run manually from backend:

php artisan data-transfers:cleanup

Webhook delivery

When the optional Webhooks module is enabled, its deliveries use the default queue. Keep the worker and scheduler running. In php artisan schedule:list, confirm that webhooks:retry-failed runs every minute and webhooks:cleanup-logs runs daily at 03:00 in the scheduler's configured timezone.

The delivery service controls its own retries: by default, one initial attempt and up to three retries after 1 minute, 5 minutes and 1 hour. The worker's --tries option does not replace that schedule. Completed, failed and cancelled delivery logs expire after 30 days by default; pending work is retained until it finishes.

Use a harmless test delivery to the configured receiver and verify both its signature check and the delivery result. Deactivating an endpoint or disabling the module cancels pending work. See Webhooks setup for endpoint and signing-secret configuration.

Real-time services

Configure REVERB_* and public VITE_REVERB_* before building assets. Keep private Reverb secrets out of frontend variables. Supervise php artisan reverb:start and configure HTTPS/WSS proxying with WebSocket upgrade headers. Restart long-running services after configuration changes.

Microsoft 365, Firebase and other external providers need customer-owned credentials and separate live acceptance. Do not ship configured service accounts.

Inside Open Core HR

Open full size

Swipe across to explore the screen.