diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
index c65e894562b66d5914299653cecde8c8710479dd..87e2e78bf12ce52f5600570df99fbdad6a163f49 100644
--- a/src/Form/SettingsForm.php
+++ b/src/Form/SettingsForm.php
@@ -246,6 +246,7 @@ class SettingsForm extends ConfigFormBase {
         4838400 => $this->t('1 month 3 weeks'),
         9676800 => $this->t('3 months 3 weeks'),
         31536000 => $this->t('1 year'),
+        34214400 => $this->t('13 months'),
       ],
       '#description' =>
       $this->t('Older visitors log entries (including referrer statistics) will be automatically discarded. (Requires a correctly configured <a href="@cron">cron maintenance task</a>.)',
@@ -273,6 +274,7 @@ class SettingsForm extends ConfigFormBase {
         4838400 => $this->t('1 month 3 weeks'),
         9676800 => $this->t('3 months 3 weeks'),
         31536000 => $this->t('1 year'),
+        34214400 => $this->t('13 months'),
       ],
       '#description' =>
       $this->t('Control how long or if visits by bots are logged.'),
diff --git a/visitors.module b/visitors.module
index 86c4f3f060fb9b0d49efae2ac73fc92925a32799..153f4913c84c7541a7c887f2137d632439ddfaa2 100644
--- a/visitors.module
+++ b/visitors.module
@@ -22,13 +22,17 @@ use Drupal\Core\Render\BubbleableMetadata;
 function visitors_cron(): void {
   try {
     $settings = \Drupal::config('visitors.settings');
+    $connection = \Drupal::database();
 
     $flush_log_timer = $settings->get('flush_log_timer') ?? 0;
     if ($flush_log_timer > 0) {
       $delete_since = (string) time() - $flush_log_timer;
       // Clean up expired access logs.
-      \Drupal::database()->delete('visitors')
-        ->condition('visitors_date_time', $delete_since, '<')
+      $connection->delete('visitors_view')
+        ->condition('created', $delete_since, '<')
+        ->execute();
+      $connection->delete('visitors_visit')
+        ->condition('exit_time', $delete_since, '<')
         ->execute();
     }
 
@@ -39,10 +43,20 @@ function visitors_cron(): void {
       if ($bot_retention_log == 1) {
         $delete_since = '0';
       }
+
       // Clean up expired access logs.
-      \Drupal::database()->delete('visitors')
+      $subquery = $connection->select('visitors_visit', 'visit')
+        ->fields('visit', ['id'])
+        ->condition('visit.bot', 1)
+        ->condition('entry_time', $delete_since, '<');
+      $connection->delete('visitors_view')
+        ->condition('visit_id', $subquery, 'IN')
+        ->condition('created', $delete_since, '<')
+        ->execute();
+
+      $connection->delete('visitors_visit')
         ->condition('bot', 1)
-        ->condition('visitors_date_time', $delete_since, '<')
+        ->condition('exit_time', $delete_since, '<')
         ->execute();
     }