{"id":342665,"date":"2026-07-24T13:45:18","date_gmt":"2026-07-24T13:45:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smartvitrines\/"},"modified":"2026-07-24T13:45:09","modified_gmt":"2026-07-24T13:45:09","slug":"smartvitrines","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/smartvitrines\/","author":23535173,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.2","stable_tag":"2.0.2","tested":"7.0.2","requires":"6.7","requires_php":"8.2","requires_plugins":null,"header_name":"SmartVitrines","header_author":"AGTI","header_description":"AGTI Analytics behavioral recommendations \u2014 SDK, conversion, shelves, and order endpoint.","assets_banners_color":"142f79","last_updated":"2026-07-24 13:45:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/analytics.agti.eng.br","header_author_uri":"https:\/\/agti.eng.br","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.2":{"tag":"2.0.2","author":"agti","date":"2026-07-24 13:45:09"}},"upgrade_notice":{"2.0.2":"<p>Plugin Check: drop Domain Path header; remove unused SDK CDN helper.<\/p>","2.0.1":"<p>WordPress.org compliance: class prefix and translation packaging fixes.<\/p>","2.0.0":"<p>Requires SmartVitrines API v2 (pageview_id contract). Update the API before upgrading this plugin.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3621370,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3621370,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3621370,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3621370,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3621370,"resolution":"1","location":"assets","locale":"","width":1536,"height":1024},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3621370,"resolution":"2","location":"assets","locale":"","width":1536,"height":1024},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3621370,"resolution":"3","location":"assets","locale":"","width":1536,"height":1024}},"screenshots":{"1":"Settings page: connect your SmartVitrines public and secret keys.","2":"Product recommendations on the single product page.","3":"Cross-sell recommendations on the cart page."}},"plugin_section":[],"plugin_tags":[232,13788,282,3669,286],"plugin_category":[36,45,53],"plugin_contributors":[273169],"plugin_business_model":[],"class_list":["post-342665","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-cross-sell","plugin_tags-ecommerce","plugin_tags-recommendations","plugin_tags-woocommerce","plugin_category-analytics","plugin_category-ecommerce","plugin_category-ratings-and-reviews","plugin_contributors-agti","plugin_committers-agti"],"banners":{"banner":"https:\/\/ps.w.org\/smartvitrines\/assets\/banner-772x250.png?rev=3621370","banner_2x":"https:\/\/ps.w.org\/smartvitrines\/assets\/banner-1544x500.png?rev=3621370","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smartvitrines\/assets\/icon-128x128.png?rev=3621370","icon_2x":"https:\/\/ps.w.org\/smartvitrines\/assets\/icon-256x256.png?rev=3621370","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smartvitrines\/assets\/screenshot-1.png?rev=3621370","caption":"Settings page: connect your SmartVitrines public and secret keys."},{"src":"https:\/\/ps.w.org\/smartvitrines\/assets\/screenshot-2.png?rev=3621370","caption":"Product recommendations on the single product page."},{"src":"https:\/\/ps.w.org\/smartvitrines\/assets\/screenshot-3.png?rev=3621370","caption":"Cross-sell recommendations on the cart page."}],"raw_content":"<!--section=description-->\n<p>SmartVitrines shows personalized product recommendations on your product and cart pages, tracks anonymous browsing and purchase events, and syncs order line items with the SmartVitrines service for attribution.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li>Recommendation shelves on the single product page and cart<\/li>\n<li>Anonymous visitor\/session tracking for behavioral recommendations<\/li>\n<li>Optional shortcodes for block themes: <code>[smartvitrines_recommendations]<\/code>, <code>[smartvitrines_cart]<\/code><\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS)<\/li>\n<\/ul>\n\n<p><strong>Account required<\/strong><\/p>\n\n<p>You need a <a href=\"https:\/\/analytics.agti.eng.br\/\">SmartVitrines account<\/a> (free tier available) and store API keys. After install, open <strong>WooCommerce \u2192 SmartVitrines<\/strong> and paste your Public Key and Secret Key from the AGTI Analytics dashboard.<\/p>\n\n<p><strong>Catalog feed<\/strong><\/p>\n\n<p>For catalog sync, install the companion <a href=\"https:\/\/github.com\/agtiengbr\/aggoogleshopping-woocommerce\">AG Google Shopping Feed<\/a> plugin (or any feed that matches your tenant <code>sku_field<\/code>) and paste the feed URL in the AGTI Analytics Dashboard.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the SmartVitrines \/ AGTI Analytics service (SaaS). After you save your keys, the store and browsers contact:<\/p>\n\n<ul>\n<li><code>https:\/\/api.analytics.agti.eng.br<\/code> \u2014 recommendations and event ingestion<\/li>\n<li><code>https:\/\/analytics.agti.eng.br<\/code> \u2014 account, terms, and privacy documentation<\/li>\n<\/ul>\n\n<p><strong>Data sent to the service<\/strong><\/p>\n\n<ul>\n<li>Public API key<\/li>\n<li>Product identifiers (SKU \/ product ID \/ GTIN, as configured)<\/li>\n<li>Random visitor and session identifiers<\/li>\n<li>Event type (view, click, add-to-cart, conversion)<\/li>\n<li>Order reference (order ID) for attribution<\/li>\n<\/ul>\n\n<p><strong>Data not sent<\/strong><\/p>\n\n<ul>\n<li>Customer name, email, phone, or address<\/li>\n<li>Payment details<\/li>\n<li>Visitor IP address (not included in plugin payloads)<\/li>\n<\/ul>\n\n<p><strong>Cookies and storage (front-end)<\/strong><\/p>\n\n<p>The bundled SDK may set first-party cookies and localStorage entries: <code>sv_visitor_uid<\/code>, <code>sv_session_id<\/code>, <code>sv_session_at<\/code>, <code>sv_pageview_id<\/code>. These are anonymous UUIDs used for recommendations and analytics.<\/p>\n\n<p><strong>LGPD \/ GDPR<\/strong><\/p>\n\n<p>SmartVitrines is designed to minimize personal data: anonymous IDs and product\/order references only. Store owners remain responsible for their privacy policy, legal basis, and any consent \/ cookie banner tools required in their jurisdiction (including Brazil\u2019s LGPD and the EU GDPR). Suggested policy text is also offered under <strong>Settings \u2192 Privacy<\/strong> via the WordPress Privacy Policy Guide.<\/p>\n\n<p>The SmartVitrines worker may call your store\u2019s authenticated REST route <code>GET \/wp-json\/smartvitrines\/v1\/order\/{id}<\/code> with <code>Authorization: Bearer {secret_key}<\/code> to fetch order line items (no customer PII). Without a configured secret key, that route denies access.<\/p>\n\n<p>Terms of Use: https:\/\/analytics.agti.eng.br\/termos-de-uso\/\nPrivacy Policy: https:\/\/analytics.agti.eng.br\/politica-de-privacidade\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce (compatible with current WooCommerce releases; see plugin header for tested version).<\/li>\n<li>Install and activate SmartVitrines.<\/li>\n<li>Create an account at https:\/\/analytics.agti.eng.br\/ and copy your store keys.<\/li>\n<li>Go to <strong>WooCommerce \u2192 SmartVitrines<\/strong>, paste Public Key and Secret Key, choose the product identifier, and save.<\/li>\n<li>(Recommended) Install the aggoogleshopping companion plugin, generate the XML feed, and set <code>xml_feed_url<\/code> in the AGTI Analytics Dashboard.<\/li>\n<li>Set the tenant <code>platform_url<\/code> to your store URL so the service can reach the order REST endpoint when needed.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paid%20plan%3F\"><h3>Do I need a paid plan?<\/h3><\/dt>\n<dd><p>No. A free SmartVitrines tier is available. Paid plans increase catalog and recommendation quotas. Billing is handled on the SmartVitrines site, not through this plugin.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20without%20woocommerce%3F\"><h3>Does the plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce must be installed and active (<code>Requires Plugins: woocommerce<\/code>).<\/p><\/dd>\n<dt id=\"what%20is%20the%20order%20rest%20endpoint%3F\"><h3>What is the order REST endpoint?<\/h3><\/dt>\n<dd><p>GET \/wp-json\/smartvitrines\/v1\/order\/{id} with <code>Authorization: Bearer {your secret key}<\/code> returns order totals and line items for the SmartVitrines worker. It does not expose customer billing or shipping personal data. Requests without a valid secret are rejected.<\/p><\/dd>\n<dt id=\"how%20do%20i%20handle%20cookie%20consent%3F\"><h3>How do I handle cookie consent?<\/h3><\/dt>\n<dd><p>Configure your store\u2019s consent \/ CMP tool as required by law. SmartVitrines does not replace a cookie banner. Document the <code>sv_*<\/code> cookies in your privacy policy (see Privacy Policy Guide content added by this plugin).<\/p><\/dd>\n<dt id=\"why%20is%20there%20an%20api%20url%20field%3F\"><h3>Why is there an API URL field?<\/h3><\/dt>\n<dd><p>Leave it empty in production (defaults to the official API). Only advanced or local development setups should override it.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20support%3F\"><h3>Where do I get support?<\/h3><\/dt>\n<dd><p>Use the <a href=\"https:\/\/analytics.agti.eng.br\/\">SmartVitrines site<\/a> or the WordPress.org support forum for this plugin after it is published.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Remove unused Domain Path header (no bundled languages folder; translations via translate.wordpress.org).<\/li>\n<li>Remove unused get_sdk_script_url() (SDK is enqueued from local assets).<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>WordPress.org review: remove bundled .po\/.mo\/.pot (translations via translate.wordpress.org).<\/li>\n<li>WordPress.org review: rename PHP classes from SV_* to SmartVitrines_* (prefix length requirement).<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Pageview-centric tracking: a <code>pageview_id<\/code> is generated per page load and carried on every event and recommendation request, matching SmartVitrines SDK v2.<\/li>\n<li>Automatic <code>page_view<\/code> event on each page open; add-to-cart and server-side recommendations now correlate to the current pageview.<\/li>\n<li>Bundled SDK updated to v2.0.0.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial WordPress.org release.<\/li>\n<\/ul>","raw_excerpt":"Behavioral product recommendations for WooCommerce. Requires a free SmartVitrines (AGTI Analytics) account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=342665"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/agti"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342665"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342665"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342665"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342665"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342665"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}