diff --git a/vendor/magento/module-customer-segment/Model/Customer.php b/vendor/magento/module-customer-segment/Model/Customer.php
index 9ac45f6facc..415c2ea9396 100644
--- a/vendor/magento/module-customer-segment/Model/Customer.php
+++ b/vendor/magento/module-customer-segment/Model/Customer.php
@@ -277,6 +277,7 @@ public function processCustomerEvent($eventName, $customerId)
      */
     public function addVisitorToWebsiteSegments($visitorSession, $websiteId, $segmentIds)
     {
+        $segmentIds = array_unique(array_merge($this->getVisitorsSegmentsForWebsite($websiteId), $segmentIds));
         $visitorSegmentIds = $visitorSession->getCustomerSegmentIds();
         if (!is_array($visitorSegmentIds)) {
             $visitorSegmentIds = [];
diff --git a/vendor/magento/module-target-rule/Model/ResourceModel/Index.php b/vendor/magento/module-target-rule/Model/ResourceModel/Index.php
index 4f9a53eb781..7c0cea05baf 100644
--- a/vendor/magento/module-target-rule/Model/ResourceModel/Index.php
+++ b/vendor/magento/module-target-rule/Model/ResourceModel/Index.php
@@ -3,6 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\TargetRule\Model\ResourceModel;
 
 use Magento\Catalog\Model\Product\Visibility;
@@ -22,10 +23,10 @@
 use Magento\Framework\Registry;
 use Magento\Store\Model\Store;
 use Magento\Store\Model\StoreManagerInterface;
-use Magento\TargetRule\Model\Index as TargetRuleIndex;
-use Magento\TargetRule\Model\Rule;
 use Magento\TargetRule\Helper\Data as TargetRuleHelper;
+use Magento\TargetRule\Model\Index as TargetRuleIndex;
 use Magento\TargetRule\Model\ResourceModel\Rule as ResourceModelRule;
+use Magento\TargetRule\Model\Rule;
 
 /**
  * TargetRule Product Index by Rule Product List Type Resource Model
@@ -138,8 +139,8 @@ class Index extends AbstractDb
      * @param CustomerSegmentHelper $customerSegmentData
      * @param TargetRuleHelper $targetRuleData
      * @param Registry $coreRegistry
-     * @param Stock $stockHelper
-     * @param string $connectionName
+     * @param Stock|null $stockHelper
+     * @param string|null $connectionName
      * @param HttpContext|null $httpContext
      * @param StockConfigurationInterface|null $stockConfiguration
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -654,7 +655,10 @@ protected function _getSegmentsIdsFromCurrentCustomer(int $customerId = null, in
             if ($websiteId === null) {
                 $websiteId = $this->_storeManager->getWebsite()->getId();
             }
-            $segmentIds = $this->_customer->getCustomerSegmentIdsForWebsite((int)$customerId, (int)$websiteId);
+
+            $segmentIds = empty($customerId)
+                ? (array)$this->httpContext->getValue(CustomerSegmentHelper::CONTEXT_SEGMENT)
+                : $this->_customer->getCustomerSegmentIdsForWebsite((int)$customerId, (int)$websiteId);
 
             if (count($segmentIds)) {
                 $segmentIds = $this->_segmentCollectionFactory->getActiveSegmentsByIds($segmentIds);
