{"id":192979,"date":"2024-07-01T07:02:31","date_gmt":"2024-07-01T07:02:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/recently-viewed-products-woo\/"},"modified":"2026-06-26T18:10:56","modified_gmt":"2026-06-26T18:10:56","slug":"recently-viewed-products-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/id.wordpress.org\/plugins\/recently-viewed-products-for-woocommerce\/","author":14380293,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.3.0","stable_tag":"2.3.0","tested":"7.0.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Recently Viewed Products for WooCommerce","header_author":"Mahesh Patel","header_description":"This plugin displayed Recently Viewed Products in detail page or you can use a Shortcode to display  anywhere in the site.","assets_banners_color":"281637","last_updated":"2026-06-26 18:10:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/in.linkedin.com\/in\/maheshvajapara","header_author_uri":"https:\/\/in.linkedin.com\/in\/maheshvajapara\/","rating":4.7,"author_block_rating":0,"active_installs":1000,"downloads":6913,"num_ratings":3,"support_threads":1,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"maheshpatel","date":"2024-12-12 08:41:32"},"2.0.0":{"tag":"2.0.0","author":"maheshpatel","date":"2024-12-12 09:01:31"},"2.2.0":{"tag":"2.2.0","author":"maheshpatel","date":"2026-06-23 09:48:57"},"2.3.0":{"tag":"2.3.0","author":"maheshpatel","date":"2026-06-26 18:10:56"}},"upgrade_notice":{"2.3.0":"<p>Adds a no-jQuery carousel, sidebar widget, Gutenberg block, Elementor widget, most viewed products, cross-device history, and follow-up emails. Fully backward compatible \u2014 all existing settings and the shortcode are unchanged.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":1,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3595886,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3595886,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3595808,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3595808,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"rvpw\/recently-viewed":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"rvpw\/recently-viewed","version":"2.3.0","title":"Recently Viewed Products","category":"woocommerce","icon":"visibility","description":"Display a visitor's recently viewed WooCommerce products.","keywords":["recently viewed","products","woocommerce","rvpw"],"textdomain":"recently-viewed-products-for-woocommerce","supports":{"html":false,"align":["wide","full"]},"attributes":{"title":{"type":"string","default":""},"limit":{"type":"number","default":4},"columns":{"type":"number","default":4},"layout":{"type":"string","default":"grid"},"sort":{"type":"string","default":"recent"},"showImage":{"type":"boolean","default":true},"showTitle":{"type":"boolean","default":true},"showPrice":{"type":"boolean","default":true},"showRating":{"type":"boolean","default":false},"showCart":{"type":"boolean","default":true}},"editorScript":"rvpw-block-editor","editorStyle":"rvpw-block-editor-style"}},"tagged_versions":["1.0.0","2.0.0","2.2.0","2.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Recently viewed products carousel on a single product page.","2":"Recently viewed products grid layout.","3":"Recently viewed products list layout.","4":"Tabbed settings screen with layout, placement, and engine options.","5":"Most viewed products analytics screen.","6":"Gutenberg block with live preview in the editor.","7":"Elementor widget settings.","8":"Follow-up email with viewed products and a single-use coupon."}},"plugin_section":[],"plugin_tags":[269043,33766,52958,7126,269042],"plugin_category":[45],"plugin_contributors":[83641],"plugin_business_model":[],"class_list":["post-192979","plugin","type-plugin","status-publish","hentry","plugin_tags-most-viewed-products","plugin_tags-product-carousel","plugin_tags-recently-viewed-products","plugin_tags-recently-viewed","plugin_tags-woocommerce-recently-viewed","plugin_category-ecommerce","plugin_contributors-maheshpatel","plugin_committers-maheshpatel"],"banners":{"banner":"https:\/\/ps.w.org\/recently-viewed-products-for-woocommerce\/assets\/banner-772x250.png?rev=3595808","banner_2x":"https:\/\/ps.w.org\/recently-viewed-products-for-woocommerce\/assets\/banner-1544x500.png?rev=3595808","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/recently-viewed-products-for-woocommerce\/assets\/icon-128x128.png?rev=3595886","icon_2x":"https:\/\/ps.w.org\/recently-viewed-products-for-woocommerce\/assets\/icon-256x256.png?rev=3595886","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Recently Viewed Products for WooCommerce<\/strong> shows each customer the WooCommerce products they recently viewed \u2014 and turns that browsing interest into more sales. Display recently viewed products in a responsive grid, list, or product carousel automatically on single product pages, and anywhere else via the shortcode, sidebar widget, Gutenberg block, or Elementor widget.<\/p>\n\n<p>If you want a fast, lightweight, cache-friendly recently viewed products plugin for WooCommerce that also surfaces your <strong>most viewed products<\/strong> store-wide and sends automated <strong>follow-up emails<\/strong>, this is it. It works as a lightweight product recommendations \/ cross-sell helper that is HPOS-compatible, translation-ready, RTL-friendly, multisite-aware, and passes the WordPress Plugin Check rulesets.<\/p>\n\n<h3>\ud83d\ude80 Why choose this recently viewed products plugin?<\/h3>\n\n<ul>\n<li><strong>\ud83d\uddbc\ufe0f Three layouts<\/strong> \u2014 recently viewed products grid, list, or carousel slider.<\/li>\n<li><strong>\u26a1 No jQuery<\/strong> \u2014 the carousel is dependency-free, lightweight, and fast.<\/li>\n<li><strong>\ud83e\udded Five display surfaces<\/strong> \u2014 shortcode, automatic single-product placement, sidebar widget, Gutenberg block, and Elementor widget.<\/li>\n<li><strong>\ud83d\udc65 Guest + logged-in tracking<\/strong> \u2014 cookie tracking for guests, optional cross-device database history for signed-in customers.<\/li>\n<li><strong>\ud83d\udd25 Most viewed products<\/strong> \u2014 surface your store's most popular products automatically.<\/li>\n<li><strong>\u2709\ufe0f Follow-up emails<\/strong> \u2014 win back inactive customers with the products they viewed and a single-use coupon.<\/li>\n<li><strong>\ud83e\udde9 Cache friendly<\/strong> \u2014 works with WP Rocket, W3 Total Cache, LiteSpeed Cache, and CDNs.<\/li>\n<li><strong>\ud83d\uded2 HPOS compatible<\/strong> \u2014 fully tested with WooCommerce High-Performance Order Storage.<\/li>\n<\/ul>\n\n<h3>\ud83d\udccd Display recently viewed products anywhere<\/h3>\n\n<ul>\n<li><strong>Single product pages<\/strong> \u2014 automatic placement with a position you choose: before the product summary, after the product summary, or after the product tabs.<\/li>\n<li><strong>Shortcode<\/strong> \u2014 drop <code>[rvpw_products]<\/code> into any page, post, or widget area to show WooCommerce recently viewed products on the shop, cart, checkout, or any other location.<\/li>\n<li><strong>Sidebar widget<\/strong> \u2014 a recently viewed products widget that works in classic and block-based widget areas.<\/li>\n<li><strong>Gutenberg block<\/strong> \u2014 a recently viewed products block with a live, server-side-rendered preview right in the editor.<\/li>\n<li><strong>Elementor widget<\/strong> \u2014 a native Elementor recently viewed products widget that loads only when Elementor is active.<\/li>\n<\/ul>\n\n<h3>\ud83c\udfa0 Carousel, grid &amp; list layouts<\/h3>\n\n<ul>\n<li><strong>Product carousel<\/strong> \u2014 autoplay, configurable autoplay speed, navigation arrows, pagination dots, infinite loop, and responsive items-per-view, with no jQuery.<\/li>\n<li><strong>Grid layout<\/strong> \u2014 clean, responsive recently viewed products grid.<\/li>\n<li><strong>List layout<\/strong> \u2014 compact vertical list.<\/li>\n<li><strong>Compact variant<\/strong> \u2014 add the <code>rvpw-compact<\/code> CSS class for a tighter style ideal for narrow sidebars.<\/li>\n<li><strong>Per-device columns<\/strong> \u2014 mobile (1\u20132), tablet (1\u20134), and desktop (1\u20136).<\/li>\n<li><strong>Toggle card elements<\/strong> \u2014 show or hide product image, title, price, star rating, and add-to-cart button.<\/li>\n<li><strong>Equal-height cards<\/strong> \u2014 a modern, responsive card design that adapts to any theme or page builder.<\/li>\n<\/ul>\n\n<h3>\ud83e\udde0 Smart tracking engine<\/h3>\n\n<ul>\n<li><strong>Cookie tracking for guests<\/strong> \u2014 cache-friendly, stores only product IDs in a first-party cookie (<code>rvpw_recently_viewed_{site_id}<\/code>).<\/li>\n<li><strong>Cross-device history<\/strong> \u2014 optional database history so recently viewed products follow signed-in customers across devices, merged from the guest cookie at login and pruned daily by a configurable retention period.<\/li>\n<li><strong>History sources<\/strong> \u2014 automatic, browser cookie only, saved account history, or most viewed (store-wide popularity, cached top-N query).<\/li>\n<li><strong>Flexible sorting<\/strong> \u2014 recently viewed, most viewed, price low-to-high, price high-to-low, newest products, or random.<\/li>\n<li><strong>Configurable limits<\/strong> \u2014 cookie expiry from 1\u2013365 days (default 30) and 1\u2013100 max stored products.<\/li>\n<li><strong>Smart filters<\/strong> \u2014 show in-stock only, exclude already-purchased products (signed-in customers), hide free products, and exclude specific categories.<\/li>\n<\/ul>\n\n<h3>\ud83d\udcc8 Marketing, analytics &amp; follow-up emails<\/h3>\n\n<ul>\n<li><strong>Analytics screen<\/strong> \u2014 see your most viewed products and an orders proxy (from the WooCommerce Analytics order-product lookup table when available) with a 7\/30\/90-day attribution window.<\/li>\n<li><strong>Follow-up emails<\/strong> \u2014 automatically email signed-in inactive customers the products they viewed, with an optional auto-generated single-use coupon (percentage or fixed cart discount), configurable validity, and a one-click unsubscribe link. Uses Action Scheduler when available, with a WP-Cron fallback, plus a Send-test-email button.<\/li>\n<li><strong>Dedicated page<\/strong> \u2014 a \"Recently Viewed\" page is created automatically on activation.<\/li>\n<li><strong>Custom styling<\/strong> \u2014 a Custom CSS box and a custom CSS class field to fine-tune styling without editing theme files.<\/li>\n<\/ul>\n\n<h3>\ud83d\udee0\ufe0f Built right<\/h3>\n\n<ul>\n<li>WooCommerce dependency check and full HPOS compatibility.<\/li>\n<li>Conditional asset loading \u2014 CSS and JS load only on pages where the section renders.<\/li>\n<li>Cache-friendly and CDN-friendly (WP Rocket, W3 Total Cache, LiteSpeed Cache).<\/li>\n<li>Custom tables created via dbDelta with a versioned migration; no order data is touched.<\/li>\n<li>Translation-ready (text domain <code>recently-viewed-products-for-woocommerce<\/code>, <code>\/languages<\/code>) and RTL-compatible CSS using logical properties.<\/li>\n<li>Multisite-aware cookie (scoped by site ID) and an accessible (WCAG), tabbed admin UI.<\/li>\n<li>Passes the WordPress Plugin Check (PHPCS) rulesets.<\/li>\n<\/ul>\n\n<h3>\ud83d\udd27 Shortcode<\/h3>\n\n<pre><code>[rvpw_products]\n<\/code><\/pre>\n\n<p><strong>Shortcode attributes:<\/strong> <code>title<\/code>, <code>limit<\/code>, <code>columns<\/code>, <code>layout<\/code> (grid|list|carousel), <code>sort<\/code> (recent|most_viewed|price_asc|price_desc|date|random), <code>source<\/code> (auto|cookie|db|most_viewed), <code>show_image<\/code>, <code>show_title<\/code>, <code>show_price<\/code>, <code>show_rating<\/code>, <code>show_cart<\/code>, <code>hide_current<\/code>, <code>class<\/code>.<\/p>\n\n<p><strong>Example \u2014 recently viewed products carousel:<\/strong>\n    [rvpw_products layout=\"carousel\" limit=\"8\" columns=\"4\" sort=\"recent\"]<\/p>\n\n<p><strong>Example \u2014 most viewed products grid:<\/strong>\n    [rvpw_products layout=\"grid\" source=\"most_viewed\" limit=\"6\"]<\/p>\n\n<h3>Privacy &amp; Cookies<\/h3>\n\n<p>This plugin remembers the products a visitor has viewed by storing their IDs in a single first-party cookie in the visitor's own browser.<\/p>\n\n<ul>\n<li>Cookie name: <code>rvpw_recently_viewed_{site_id}<\/code> (the site ID keeps multisite installs separate).<\/li>\n<li>Cookie contents: a list of WooCommerce product IDs only (for example <code>42|17|8<\/code>). No names, emails, IP addresses, or other personal data are stored.<\/li>\n<li>Lifetime: a configurable cookie expiry in the plugin settings (1\u2013365 days; 30 by default).<\/li>\n<li>Scope: the cookie is read and written on your own site only. The plugin does <strong>not<\/strong> transmit any data to external services, does <strong>not<\/strong> include third-party trackers, and does <strong>not<\/strong> write to the database for guest tracking.<\/li>\n<li>Control: you can disable guest tracking and\/or logged-in tracking in the plugin settings. Turning the plugin off stops all tracking.<\/li>\n<\/ul>\n\n<p>Optional database storage (off by default): if you enable logged-in history storage in the plugin settings, the plugin stores rows of (user ID, product ID, timestamp) for signed-in customers so their history follows them across devices. This still contains only product IDs and the customer's existing account ID \u2014 no new personal data. Rows are pruned automatically after the configured retention period. A store-wide view counter records per-product totals (no user identifiers).<\/p>\n\n<p>Optional follow-up emails (off by default): if enabled, the plugin emails signed-in inactive customers about products they viewed, with an optional single-use coupon, and every email includes a one-click unsubscribe link.<\/p>\n\n<p>Because the core feature stores only non-personal product IDs, it is generally outside the scope of GDPR personal-data processing. If you enable database history or follow-up emails, review your privacy policy accordingly. If your site shows a cookie consent banner, you may also wish to list this functional cookie for completeness.<\/p>\n\n<p>When the plugin is deleted, enable the uninstall cleanup option in the plugin settings to also drop the plugin's custom tables and options. Visitor cookies expire on their own according to the configured lifetime.<\/p>\n\n<!--section=installation-->\n<h3>Automatic installation<\/h3>\n\n<ol>\n<li>Go to <strong>Plugins &gt; Add New<\/strong> in your WordPress dashboard.<\/li>\n<li>Search for <strong>Recently Viewed Products for WooCommerce<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>Recently Viewed &gt; Settings<\/strong> to configure layout, placement, tracking engine, filters, and emails.<\/li>\n<li>Open <strong>Recently Viewed &gt; Analytics<\/strong> to view your most viewed products and the orders proxy.<\/li>\n<\/ol>\n\n<h3>Manual installation<\/h3>\n\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Recently Viewed &gt; Settings<\/strong> to configure, and <strong>Recently Viewed &gt; Analytics<\/strong> for reporting.<\/li>\n<\/ol>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.0 or higher.<\/li>\n<li>WooCommerce 6.0 or higher.<\/li>\n<li>PHP 7.4 or higher.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20show%20recently%20viewed%20products%20in%20woocommerce%3F\"><h3>How do I show recently viewed products in WooCommerce?<\/h3><\/dt>\n<dd><p>Use the <code>[rvpw_products]<\/code> shortcode on any page or post, enable automatic placement on single product pages (choose before summary, after summary, or after tabs), or add the sidebar widget, Gutenberg block, or Elementor widget. Several can be combined at once.<\/p><\/dd>\n<dt id=\"how%20do%20i%20display%20recently%20viewed%20products%20on%20the%20shop%20or%20homepage%3F\"><h3>How do I display recently viewed products on the shop or homepage?<\/h3><\/dt>\n<dd><p>Drop the <code>[rvpw_products]<\/code> shortcode into any page, post, or block \u2014 including the shop page, the homepage, cart, or checkout. Pick a grid, list, or carousel layout and the number of columns, and the section will render WooCommerce recently viewed products wherever you place it.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20recently%20viewed%20products%20in%20a%20sidebar%20or%20footer%3F\"><h3>How do I show recently viewed products in a sidebar or footer?<\/h3><\/dt>\n<dd><p>Add the bundled sidebar widget to any widget area, including classic sidebars, footers, and block-based widget areas. Alternatively, place the <code>[rvpw_products]<\/code> shortcode in a footer or sidebar block. For narrow columns, add the <code>rvpw-compact<\/code> CSS class and use a list or carousel layout with one or two columns on mobile.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20recently%20viewed%20products%20carousel%3F\"><h3>How do I add a recently viewed products carousel?<\/h3><\/dt>\n<dd><p>Set the layout to carousel \u2014 either in the settings for automatic placement, or with the shortcode: <code>[rvpw_products layout=\"carousel\"]<\/code>. The carousel supports autoplay, configurable autoplay speed, arrows, pagination dots, infinite loop, and responsive items-per-view, with no jQuery dependency.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20recently%20viewed%20and%20most%20viewed%20products%3F\"><h3>What is the difference between recently viewed and most viewed products?<\/h3><\/dt>\n<dd><p>Recently viewed products are personal to each visitor \u2014 the items that specific shopper browsed, tracked via cookie or saved account history. Most viewed products are store-wide: the items most popular across all customers, drawn from a cached top-N popularity query. Use recently viewed for personalised recommendations and most viewed as a store-wide cross-sell.<\/p><\/dd>\n<dt id=\"can%20i%20show%20most%20viewed%20%28most%20popular%29%20products%20instead%3F\"><h3>Can I show most viewed (most popular) products instead?<\/h3><\/dt>\n<dd><p>Yes. Set the source to most viewed to display your store's most popular products store-wide: <code>[rvpw_products source=\"most_viewed\"]<\/code>. You can also sort any list by most viewed.<\/p><\/dd>\n<dt id=\"my%20recently%20viewed%20products%20are%20not%20showing%20%E2%80%94%20how%20do%20i%20fix%20it%3F\"><h3>My recently viewed products are not showing \u2014 how do I fix it?<\/h3><\/dt>\n<dd><p>First, make sure WooCommerce is active and that you have viewed at least one product (the current product is excluded, and the cookie is written after the page loads, so a product only appears on later page views). If you placed the shortcode, confirm the layout and column settings, and check whether a smart filter (in-stock only, hide free, exclude categories, exclude purchased) is removing the products. On heavily cached pages, a view may not be recorded until the cache is bypassed.<\/p><\/dd>\n<dt id=\"where%20are%20recently%20viewed%20products%20displayed%20and%20tracked%3F\"><h3>Where are recently viewed products displayed and tracked?<\/h3><\/dt>\n<dd><p>They can appear on several surfaces at once: automatically on the single product page (in a position you choose), plus the <code>[rvpw_products]<\/code> shortcode, the sidebar widget, the Gutenberg block, and the Elementor widget. For tracking, the first-party cookie stores only product IDs; you can optionally enable logged-in tracking and cross-device database history for signed-in customers.<\/p><\/dd>\n<dt id=\"is%20this%20recently%20viewed%20products%20plugin%20free%3F\"><h3>Is this recently viewed products plugin free?<\/h3><\/dt>\n<dd><p>Yes. Recently Viewed Products for WooCommerce is a free plugin you can download and use on your store. It includes all display surfaces (shortcode, automatic placement, sidebar widget, Gutenberg block, and Elementor widget), grid, list, and carousel layouts, most viewed products, smart filters, analytics, and follow-up emails.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%20or%20hurt%20performance%3F\"><h3>Will it slow down my site or hurt performance?<\/h3><\/dt>\n<dd><p>No. The plugin is built to be fast and lightweight: the carousel is dependency-free with no jQuery, and CSS and JavaScript load only on pages where the section actually renders (conditional asset loading). It is also cache-friendly, working with WP Rocket, W3 Total Cache, LiteSpeed Cache, and CDNs.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. Display works normally with WP Rocket, W3 Total Cache, LiteSpeed Cache, and CDNs. Because views are recorded server-side, a product viewed on a fully cached page may not be recorded until the cache is bypassed \u2014 this is inherent to cookie-based tracking.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20any%20wordpress%20theme%3F\"><h3>Does it work with any WordPress theme?<\/h3><\/dt>\n<dd><p>Yes. The product cards use a modern, responsive, equal-height design that adapts to any theme, and the CSS uses logical properties so it is RTL-compatible. You can set per-device columns for mobile, tablet, and desktop, and add the <code>rvpw-compact<\/code> class for a tighter variant in narrow areas. A Custom CSS box and custom CSS class field let you match your theme exactly without editing theme files.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%20like%20elementor%2C%20divi%2C%20beaver%20builder%2C%20bricks%2C%20and%20oxygen%3F\"><h3>Does it work with page builders like Elementor, Divi, Beaver Builder, Bricks, and Oxygen?<\/h3><\/dt>\n<dd><p>Yes. A native Elementor widget is included and loads only when Elementor is active. For Divi, Beaver Builder, Bricks, Oxygen, and any other builder, drop the <code>[rvpw_products]<\/code> shortcode into a shortcode\/text element, or place the sidebar widget in any widget area the builder exposes. The responsive card design adapts to whatever container the builder renders it in.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20gutenberg%20and%20block%20themes%20%28fse%29%3F\"><h3>Is it compatible with Gutenberg and block themes (FSE)?<\/h3><\/dt>\n<dd><p>Yes. The plugin ships a dedicated Gutenberg block with a live, server-side-rendered preview right in the editor, so you see real products as you build. The sidebar widget also works in block-based widget areas, so it fits classic and modern block themes alike.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20woocommerce%20hpos%3F\"><h3>Is it compatible with WooCommerce HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully compatible with WooCommerce High-Performance Order Storage (HPOS). Custom tables are created via dbDelta with a versioned migration, and no order data is touched.<\/p><\/dd>\n<dt id=\"does%20it%20support%20all%20product%20types%2C%20including%20variable%20products%3F\"><h3>Does it support all product types, including variable products?<\/h3><\/dt>\n<dd><p>Yes. It displays your standard WooCommerce product cards (image, title, price, star rating, and add-to-cart button, each toggleable) for the products a customer has viewed, regardless of product type, including variable products. Smart filters let you show in-stock products only, hide free products, exclude already-purchased products for signed-in customers, and exclude specific categories.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%20and%20rtl-compatible%3F\"><h3>Is the plugin translation-ready and RTL-compatible?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully translation-ready with the text domain <code>recently-viewed-products-for-woocommerce<\/code> and a bundled <code>\/languages<\/code> folder, so you can translate every string. All front-end CSS uses logical properties, making the layouts RTL-compatible out of the box for right-to-left languages.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20wordpress%20multisite%3F\"><h3>Does it work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. Tracking is multisite-aware: the first-party cookie is scoped per site using the site ID (<code>rvpw_recently_viewed_{site_id}<\/code>), so each site in a network keeps its own separate recently viewed history.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr-friendly%20and%20what%20personal%20data%20does%20it%20store%3F\"><h3>Is it GDPR-friendly and what personal data does it store?<\/h3><\/dt>\n<dd><p>By default it stores only non-personal WooCommerce product IDs in a single first-party cookie, transmits nothing to third parties, and writes nothing to the database for guest tracking, so the core feature is generally outside the scope of GDPR personal-data processing. If you turn on optional database history or follow-up emails, the plugin additionally stores product IDs against existing account IDs only \u2014 no new personal data, with daily pruning by a configurable retention period and a one-click unsubscribe link. If you enable those options, review your privacy policy accordingly. See the Privacy &amp; Cookies section below.<\/p><\/dd>\n<dt id=\"will%20a%20product%20appear%20in%20its%20own%20recently%20viewed%20list%3F\"><h3>Will a product appear in its own recently viewed list?<\/h3><\/dt>\n<dd><p>No. The current product is excluded (\"Hide current product\" is on by default), and the cookie is written after the page is requested, so a product only appears on subsequent page views.<\/p><\/dd>\n<dt id=\"can%20recently%20viewed%20products%20follow%20customers%20across%20devices%3F\"><h3>Can recently viewed products follow customers across devices?<\/h3><\/dt>\n<dd><p>Yes. Enable database history in the plugin settings so a signed-in customer's recently viewed products follow them across devices. The guest cookie history is merged in at login.<\/p><\/dd>\n<dt id=\"how%20do%20i%20send%20follow-up%20emails%20to%20inactive%20customers%3F\"><h3>How do I send follow-up emails to inactive customers?<\/h3><\/dt>\n<dd><p>Enable follow-up emails in settings. The plugin emails signed-in inactive customers the products they viewed, with an optional auto-generated single-use coupon and a one-click unsubscribe link. It uses Action Scheduler when available, with a WP-Cron fallback, and includes a Send-test-email button.<\/p><\/dd>\n<dt id=\"how%20do%20i%20customize%20the%20styling%2C%20colors%2C%20and%20columns%3F\"><h3>How do I customize the styling, colors, and columns?<\/h3><\/dt>\n<dd><p>Go to <strong>Recently Viewed &gt; Settings<\/strong> to toggle card elements (image, title, price, rating, add-to-cart) and set per-device columns for mobile (1\u20132), tablet (1\u20134), and desktop (1\u20136). Use the built-in Custom CSS box and the custom CSS class field to change colors and spacing without editing theme files, and add the <code>rvpw-compact<\/code> class for a denser layout in narrow sidebars.<\/p><\/dd>\n<dt id=\"where%20do%20i%20configure%20the%20plugin%20and%20how%20do%20i%20get%20support%3F\"><h3>Where do I configure the plugin and how do I get support?<\/h3><\/dt>\n<dd><p>After activating, go to the dedicated top-level <strong>Recently Viewed<\/strong> menu and open <strong>Settings<\/strong> to configure layout, placement, tracking engine, filters, and emails; the <strong>Analytics<\/strong> submenu shows your most viewed products and an orders proxy. For help, use the plugin's support forum on WordPress.org, where you can ask questions and report issues.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>New: Carousel layout with autoplay, arrows, pagination dots, loop, and responsive items-per-view (dependency-free).<\/li>\n<li>New: Sidebar widget (classic + block widget areas).<\/li>\n<li>New: Gutenberg block with live server-side preview.<\/li>\n<li>New: Elementor widget (loads only when Elementor is active).<\/li>\n<li>New: Sorting \u2014 recently viewed, most viewed, price, newest, or random.<\/li>\n<li>New: \"Most viewed\" store-wide popularity source, with a cached top-N query.<\/li>\n<li>New: Optional database-backed history for signed-in customers (cross-device), merged from the guest cookie at login, with daily pruning.<\/li>\n<li>New: Smart filters \u2014 in-stock only, exclude already-purchased, hide free products, exclude categories.<\/li>\n<li>New: Analytics screen with most-viewed products and an orders proxy (from WooCommerce Analytics when available).<\/li>\n<li>New: Optional follow-up emails to inactive customers with their viewed products and a single-use coupon, plus one-click unsubscribe (Action Scheduler when available, WP-Cron fallback).<\/li>\n<li>New: Dedicated \"Recently Viewed\" page created on activation, and a custom CSS box.<\/li>\n<li>Improved: All display surfaces (shortcode, placement, widget, block, Elementor) now share one renderer\/provider, so output and behaviour are always consistent.<\/li>\n<li>Compatibility: Custom tables are created via dbDelta with a versioned migration; no order data is touched (HPOS-safe).<\/li>\n<li>Backward compatible: all existing settings, the shortcode, the cookie format, and placement hooks are unchanged; every new setting defaults to the previous behaviour.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Fixed: saving one settings tab no longer resets the other tabs to defaults (all settings now submit together).<\/li>\n<li>Fixed: responsive column settings are now respected for automatic product-page placement (output is no longer re-filtered, which could strip the layout CSS variables).<\/li>\n<li>Fixed: the product count is now resolved before the display limit is applied, so hidden or removed products no longer shrink the visible list.<\/li>\n<li>Fixed: the empty-state message is no longer printed on product pages when a visitor has no history (shortcode behaviour unchanged).<\/li>\n<li>Added: List layout option alongside Grid.<\/li>\n<li>Added: support for multiple space-separated custom CSS classes.<\/li>\n<li>Added: \"Requires Plugins: woocommerce\" header and WooCommerce version headers.<\/li>\n<li>Improved: redesigned, accessible (WCAG) admin UI with single-page tabbed settings, toggle switches, help text, status sidebar, and a sticky save bar.<\/li>\n<li>Improved: shortcode copy now uses the modern Clipboard API with a live shortcode preview.<\/li>\n<li>Improved: front-end stylesheet is enqueued in the head for placed output to prevent a flash of unstyled content.<\/li>\n<li>Improved: centralized default\/settings handling to a single source of truth.<\/li>\n<li>Fixed: removed UTF-8 byte order marks and normalized line endings in core files (a BOM before the opening PHP tag can cause \"headers already sent\" warnings on some servers).<\/li>\n<li>Verified: passes the WordPress Plugin Check PHPCS rulesets (plugin-check and plugin-review) with zero errors.<\/li>\n<li>Docs: added Privacy &amp; Cookies and Frequently Asked Questions sections to the readme.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added modern settings architecture and admin tabs.<\/li>\n<li>Added shortcode generator UI.<\/li>\n<li>Added secure settings save flow (capability + nonce + sanitization).<\/li>\n<li>Improved tracking and rendering logic.<\/li>\n<li>Added uninstall conditional cleanup.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"WooCommerce recently viewed products in a grid, list or carousel via shortcode, widget, block, Elementor, plus most viewed and follow-up emails.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/192979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=192979"}],"author":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/maheshpatel"}],"wp:attachment":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=192979"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=192979"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=192979"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=192979"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=192979"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=192979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}