> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lekalao.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Commands

> Lekalao's Artisan commands.

They all run from the application's folder: `php artisan <command>`. The scheduled ones run on their own; running them by hand is safe.

## Operating

| Command                                          | Role                                                                                                                                |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `lekalao:diagnose`                               | Checks the scheduler, the queues, failed jobs, providers and campaigns. Code 1 when something is wrong.                             |
| `lekalao:smtp`                                   | Starts the SMTP relay. Options: `--host=127.0.0.1`, `--port=2525`, `--hostname=lekalao`.                                            |
| `lekalao:purge`                                  | Deletes the old detail (opens, clicks, transactional e-mails, webhook calls). `--days=` for another period than the configured one. |
| `lekalao:retention`                              | Applies the teams' retention limits. `--pretend` says what would happen without doing it.                                           |
| `lekalao:retry-pending-sends`                    | Queues again the e-mails that have waited too long. `--minutes=15`.                                                                 |
| `horizon`, `horizon:terminate`, `horizon:status` | The workers.                                                                                                                        |

## Scheduled

| Command                                  | When             | Role                                                       |
| ---------------------------------------- | ---------------- | ---------------------------------------------------------- |
| `lekalao:heartbeat`                      | every minute     | Records that the scheduler ran.                            |
| `lekalao:send-scheduled-campaigns`       | every minute     | Sends the campaigns whose time has come.                   |
| `lekalao:calculate-campaign-statistics`  | every minute     | Refreshes the counters of recent campaigns.                |
| `lekalao:select-ab-winners`              | every minute     | Sends the winning version of the A/B tests that are ready. |
| `lekalao:run-automations`                | every minute     | Moves the automations forward.                             |
| `lekalao:retry-pending-sends`            | every 10 minutes | Picks up sends that got stuck.                             |
| `lekalao:feeds`                          | every hour       | Creates the campaigns of the RSS feeds.                    |
| `lekalao:verify-domains`                 | 2:30             | Checks the DNS of the sending domains.                     |
| `lekalao:delete-unconfirmed-subscribers` | 3:00             | Deletes the unconfirmed, as each team decided.             |
| `lekalao:delete-old-exports`             | 3:15             | Deletes exports older than 7 days.                         |
| `lekalao:delete-old-webhook-calls`       | 3:30             | Deletes old provider feedback.                             |
| `lekalao:purge`                          | 3:45             | Purges the old detail.                                     |
| `lekalao:retention`                      | 4:15             | Retention limits.                                          |
| `lekalao:engagement`                     | 4:30             | Each subscriber's engagement score.                        |
| `lekalao:send-list-summaries`            | Monday 8:00      | The weekly summary of the lists.                           |
| `lekalao:licence:check`                  | Tuesday 4:00     | Checks that the licence has not been revoked.              |

The times are UTC.

## Licence

| Command                          | Role                                                                                                                                       |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `lekalao:licence:activate {key}` | Saves the installation's licence key.                                                                                                      |
| `lekalao:licence:check`          | Asks the licence server. Without a network, nothing changes.                                                                               |
| `lekalao:licence:keys`           | On the seller's side: generates the signing key pair.                                                                                      |
| `lekalao:licence:issue`          | On the seller's side: signs a key. Options `--name`, `--email`, `--plan=self-hosted`, `--subscribers`, `--months=12`, `--installations=1`. |

See [Licence](/self-hosting/licence).

## Data

| Command                          | Role                                                                            |
| -------------------------------- | ------------------------------------------------------------------------------- |
| `db:seed --class=PlanSeeder`     | Creates the default plans (Découverte, Essentiel, Professionnel, Grand volume). |
| `db:seed --class=DemoDataSeeder` | Demonstration data. Never in production.                                        |
