diff --git a/core/ArchiveProcessor/Loader.php b/core/ArchiveProcessor/Loader.php
index 4079f6923f97a77def644515ae4905d06861efd1..e6c5015aabb3e51d299eb493fcfed6e2d0c9c14e 100644
--- a/core/ArchiveProcessor/Loader.php
+++ b/core/ArchiveProcessor/Loader.php
@@ -73,7 +73,7 @@ class Loader
         list($visits, $visitsConverted) = $this->prepareCoreMetricsArchive($visits, $visitsConverted);
         list($idArchive, $visits) = $this->prepareAllPluginsArchive($visits, $visitsConverted);
 
-        if ($this->isThereSomeVisits($visits)) {
+        if ($this->isThereSomeVisits($visits) || PluginsArchiver::doesAnyPluginArchiveWithoutVisits()) {
             return $idArchive;
         }
         return false;
diff --git a/core/ArchiveProcessor/PluginsArchiver.php b/core/ArchiveProcessor/PluginsArchiver.php
index ae0198b58bfc698cb90e36921c5b360cf0ac70ec..bcfeb9cc8b3d8a27b1e2dedbd8b0557d8473f336 100644
--- a/core/ArchiveProcessor/PluginsArchiver.php
+++ b/core/ArchiveProcessor/PluginsArchiver.php
@@ -101,7 +101,7 @@ class PluginsArchiver
 
         $this->archiveProcessor->setNumberOfVisits($visits, $visitsConverted);
 
-        $archivers = $this->getPluginArchivers();
+        $archivers = static::getPluginArchivers();
 
         foreach ($archivers as $pluginName => $archiverClass) {
             // We clean up below all tables created during this function call (and recursive calls)
@@ -166,12 +166,28 @@ class PluginsArchiver
         return $this->archiveWriter->getIdArchive();
     }
 
+    /**
+     * Returns if any plugin archiver archives without visits
+     */
+    public static function doesAnyPluginArchiveWithoutVisits()
+    {
+        $archivers = static::getPluginArchivers();
+
+        foreach ($archivers as $pluginName => $archiverClass) {
+            if ($archiverClass::shouldRunWithoutVisits()) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
     /**
      * Loads Archiver class from any plugin that defines one.
      *
      * @return \Piwik\Plugin\Archiver[]
      */
-    protected function getPluginArchivers()
+    protected static function getPluginArchivers()
     {
         if (empty(static::$archivers)) {
             $pluginNames = \Piwik\Plugin\Manager::getInstance()->getActivatedPlugins();
diff --git a/core/CronArchive.php b/core/CronArchive.php
index bac5aabcda926660cc80169959186e7b03816acb..cc8a1de71c85a459f103d7ab90930ccc81977b22 100644
--- a/core/CronArchive.php
+++ b/core/CronArchive.php
@@ -9,6 +9,7 @@
 namespace Piwik;
 
 use Exception;
+use Piwik\ArchiveProcessor\PluginsArchiver;
 use Piwik\ArchiveProcessor\Rules;
 use Piwik\Archiver\Request;
 use Piwik\Container\StaticContainer;
@@ -816,9 +817,11 @@ class CronArchive
         $this->requests++;
         $this->processed++;
 
+        $shouldArchiveWithoutVisits = PluginsArchiver::doesAnyPluginArchiveWithoutVisits();
+
         // If there is no visit today and we don't need to process this website, we can skip remaining archives
         if (
-            0 == $visitsToday
+            0 == $visitsToday && !$shouldArchiveWithoutVisits
             && !$shouldArchivePeriods
         ) {
             $this->logger->info("Skipped website id $idSite, no visit today, " . $timerWebsite->__toString());
@@ -827,7 +830,7 @@ class CronArchive
             return false;
         }
 
-        if (0 == $visitsLastDays
+        if (0 == $visitsLastDays && !$shouldArchiveWithoutVisits
             && !$shouldArchivePeriods
             && $this->shouldArchiveAllSites
         ) {
diff --git a/core/Plugin/Archiver.php b/core/Plugin/Archiver.php
index c9a083c80919c784d30aba974e32fde3aa0f932b..366ffbc3259ad6f933c99f6a9135b014c6568500 100644
--- a/core/Plugin/Archiver.php
+++ b/core/Plugin/Archiver.php
@@ -147,7 +147,7 @@ abstract class Archiver
      *
      * @return bool
      */
-    public function shouldRunWithoutVisits()
+    public static function shouldRunWithoutVisits()
     {
         return false;
     }
diff --git a/tests/PHPUnit/Integration/ArchiveProcessor/PluginsArchiverTest.php b/tests/PHPUnit/Integration/ArchiveProcessor/PluginsArchiverTest.php
index eaadfefe4508f296f5772895c1245f4dea72e280..3c22fd934c5efa6dc01e8119ab63d0a9c75e82fb 100644
--- a/tests/PHPUnit/Integration/ArchiveProcessor/PluginsArchiverTest.php
+++ b/tests/PHPUnit/Integration/ArchiveProcessor/PluginsArchiverTest.php
@@ -37,7 +37,7 @@ class CustomArchiver extends Archiver
 
 class CustomPluginsArchiver extends PluginsArchiver
 {
-    protected function getPluginArchivers()
+    protected static function getPluginArchivers()
     {
         return array(
             'MyPluginName' => 'Piwik\Tests\Integration\Archive\CustomArchiver'
diff --git a/tests/PHPUnit/Integration/ArchiveWithNoVisitsTest.php b/tests/PHPUnit/Integration/ArchiveWithNoVisitsTest.php
index fcc86c9ba6898ef6e164e21d9b973de1450e1a33..e0f9157de0d9c485f9ca078e168522be285270b6 100644
--- a/tests/PHPUnit/Integration/ArchiveWithNoVisitsTest.php
+++ b/tests/PHPUnit/Integration/ArchiveWithNoVisitsTest.php
@@ -32,7 +32,7 @@ class ArchiveWithNoVisitsTest_MockArchiver extends Archiver
         self::$methodsCalled[] = 'aggregateMultipleReports';
     }
 
-    public function shouldRunWithoutVisits()
+    public static function shouldRunWithoutVisits()
     {
         return self::$runWithoutVisits;
     }