All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Add category parent id to tagging and product data
- Replace deprecated Zend_db_select usage
- Update Yotpo compatibility to > 4.1 and remove < 3.3
- Add db_schema_whitelist.json to ensure database schema changes are applied correctly
- Log error in order builder when failing to convert from base price
- Replace Zend_Uri_Http with Laminas\Uri (@piotrkwiecinski)
- Fix issue with category export where default categories were not exported correctly
- Update tagging with category listing support
- Add category export
- Convert price in cart tagging item to avoid rounding errors
- Restore
nosto_product_sync.delete
message queue consumer to handle product deletion
- Add null check in order observer to allow for orders overriding
- Update PHP-SDK to fix an issue that would cause category id's to be removed by the crawler
- Fixes an issue with Zend_Validate that would cause the admin to not connect to a Nosto account
- Add store filter to the DefaulCategoryService to generate categories for specific store
- Remove
nosto_product_sync.delete
message queue consumer
- Remove unreffered system configuration for enabling 'Indexer full reindex' for Nosto indexers
- Fix query filter format. Uses
IN
instead ofOR
when filtering attributes (by @TzviCons)
- Add category ids to product tagging
- Removes queue processor indexer. Now there is a single indexer, which simply sends product ID's to the message queue with an action to either update or delete products that will be consumed by SyncService
- By removing the indexer, fixes an issue with duplicated rows, which caused the indexer to run multiple times for the same product
- By removing the indexer, also fixes an issue with out of memory when trying to index large catalogs
- By removing the indexer, also fixes an issue with MassProductAttributeUpdate operations, which would cause the index queue to be over populated when indexer was on save mode
- Fix iteration on API sync service
- Remove check for duplicate batch entries in the product update queue table
- Remove factories from ProductCollectionBuilder and QueueCollectionBuilder to reduce indexer memory footprint
- Generate visitor checksum only if the CID cookie exists
- Remove installation id and unique id from Magento module
- Remove false success message after account reconnection
- Add current account info to admin view
- Fix recobuy.js from crashing the cart on storefront
- Remove Iframe. Nosto account connection is now configured externally and redirects back to the Magento 2 admin
- Remove preview URLs that were used in the iframe.
- Add system notification for missing API tokens
- Add guard to customer reference when multi-channel order tracking is enable but customer is not logged in
- Fix issue with product builder when products have null prices
- Fix call to undefined warn logger method
- Fix issue where nosto_tagging_customer would get a lot of entries
- Indexer - Prevent insertion of duplicated rows to be delete
- Indexer - Reduces completed queue cleanup time to 1 hour instead of 8
- Indexer Sync Service - Uses Magento Product repository to fetch product data in bulk, reducing amount of database queries
- Indexer - Prevent insertion of duplicated rows to be upsert
- Move currencies building process to a cronjob, reducing admin loading time in setups with a large amount of currencies and storeviews
- Add support for both version 2 and 3 of phpseclib/phpseclib library (for compatibility with Magento versions 2.3.x and 2.4.x)
- Remove customer visitor checksum generation when 2c.cid cookie does not exist
- Compatibility with Magento 2.4.4
- Bump minimum PHP version to 7.4
- Use of XML schemas and data patches
- Remove personally identifiable information from the module
- Add page-type tagging for checkout page
- Send all active currencies formating to Nosto only when multi-currency is enabled
- Fix failing product data tagging for configurable product with no SKUs
- Fix product availability building for products with OOS threshold
- Add functionality to send disabled products to Nosto
- Add ttl for nosto_product_cache
- Refactor BuilderTrait into service classes
- Improve exception during product build by passing previos exception
- Fix to use placeholder thumbnail image if product has no image
- Index products to Nosto after bulk updates
- Improve message text for mixed nosto accounts
- Remove old changelog tables when upgrading to v5
- Upgrade sdk version to update phpseclib dependency
- Fix simple products not being reindex issue
- Add configuration to reload recs after adding product to cart
- Get the correct product data by emulating the store
- Fix product update consumer running out of memory issue
- Fix order tagging rendering in case variation tags were missing
- Pass correct product id when adding grouped product to cart
- Fix bug where disabled parent product ids are added to reindex queue
- Sort categories inside breadcrumb based on their level
- Remove synchronous product indexing
- Improve queue consumer message
- Update PHP-SDK dependency version for better http exception logging
- Check that order payment is instance of payment interface
- Fix addMultipleProductsToCart issue happening in M2 cloud
- Bump dependencies to be compatible with Nosto CMP module
- User serializer provided by the PHP SDK to keep the module compatible with Magento EQP
- Add Content Security Policy (CSP) whitelist
- Fix an issue where if deleted user with ID 1, the indexer will throw foreign keys constraints errors
- Fix an issue with incorrect prices when different base currencies are used in websites and taxes are included in display prices
- Bump the PHP SDK version to be compatible with Nosto CMP module (no functional changes)
- Fix an issue where custom tags (tag1) were overridden by default tags
- Fix an issue with configurable product prices being zero in Nosto product data when taxes are included in display prices
- Refactor the indexing logic to use batched queues & decouple the caching logic from product updates
- Use Magento's built-in caching logic for caching Nosto product data
- Add google category as customisable attribute
- Change the namespaces to comply with PHP SDK 5.0.0
- Add check for an empty array before trying to get min price for bundled product price
- Remove mview subscription / trigger to catalog_product_entity_media_gallery
- Fix an issue with configurable product prices not being set when using MSI
- Add null guard for caching product service in case the product data building fails for dirty product
- Handle empty / invalid product cache entries and possible failures in product data building gracefully
- Fix issue with non-generated proxy classes during di compilation
- Fix an issue where product cache table was not created during upgrade
- Store cached Nosto product data as a base64 encoded string in database to avoid problems with character sets and collations
- Alter the type of cached product to be longtext to allow saving large product data sets
setup:upgrade
for customer now saves only customer reference instead of entire customer object
- Fix an issue where setup:upgrade could crash if customer migration is faulty
- Make the new order detection more fault tolerant by comparing also updated at and created at timestamps
New features (performance improvements)
- Introduce cache for Nosto product data to speedup the product tagging added to the product pages
- Introduce Nosto product data change detection to avoid redundant API calls to Nosto
- Utilize bulk operations for product updates
- Add support for indexing in parallel mode
- Introduce caching for building product attribute values
- Introduce caching layer for building categories
Bug fixes and improvements
- Generate customer reference for all registered customers automatically during setup upgrade
- Cleanup the change log database table after indexer run
- Prevent redundant full reindex on Nosto indexers when running
setup:upgrade
- Fix GTIN attribute being set with margin value
Removed features / functionalities
- Remove logic for sending cart updates to Nosto from server side
- Hide Nosto customer reference for registered customers in account edit view
- Bump SDK version to 4.0.10 to fix OrderStatus Handlers throwing exceptions
- Fix an issue where product url contains the category breadcrumbs if shortest url is not first entry in database table
- Fix an issue where the indexer page size was not set properly (Credit goes to
Deepak Upadhyay
(https://github.com/dupadhyay3))
- Fix an issue with sending order confirmations via API when customer details could not be resolved
- Speed-up sku collection building by using native magento method to fetch configurable product SKU's
- Speed-up category name building by using Magento's category collection
Credits also goes to Ivan Chepurnyi
(https://github.com/IvanChepurnyi) for his performance improvement feedback
- Remove category personalization features (separate plug-in)
- Use graphql for sending order confirmations and order status updates
- Speedup the SKU price lookups by using price index table (catalog_product_index_price)
- Speedup the inventory level lookups by using
StockRegistryProvider
- Add constraint for minimum supported Magento version (2.2.6)
- Fix the compatibility issue with Magento 2.3.3 in ratings & reviews building
- Fix product availability when in single store mode
- Fix add to cart array comparison
- Remove proxy classes from constructors to be in accordance with Magento marketplace code review
- Fix Nosto indexer's full reindex logic
- Fix parent product resolving for SKUs in product service
- Fix redirect_uri for multi-store setup with different domains
- Fix version comparison on data upgrading
- Use mock product in category personalisation when preview mode is enabled
- Generate customer_reference value automatically when new customer is created
- Create command line to generate customer_reference value for all customers missing it
- Add inventory level data to SKUs
- Remove product cache flushing after upsert to avoid failures in altering product categories
- Fix issue with trying to call method on null when order confirmation observer fails
- Fix issue with add to cart controller where product from request could be null
- Fetch the customer group directly from the session since the logged in check seems to fail when full page cahce is enabled
- Get current store from store code param when connecting existing Nosto account
- Fix unclosed javascript method when Nosto autoload is enabled
- Fix issue in setting the marketing permission in customer tagging
- Add customer reference field when installing the extension
- Ignore non-numeric product ids in Graphql responses
- Use sections for active variation tagging when price variations are enabled
- Exclude base variation from variation collection
- Add support for persistent customer reference
- Enrich the customer tagging to contain more fields
- Refactor console commands to use proxy dependencies to avoid redundant dependency injection chain reaction
- Remove redundant injected dependencies from block classes
- Enrich the category tagging to contain url, image, etc.
- Fix issue with price variations in case catalog rules are specified
- Add category personalisation for sorting products
- Fix issue with sending orders when user is not logged in
- Fix issue with sending unmatched orders
- Add date published to product tagging
- Fix issue with redirect url
- Fix issue with reconnecting same account for same scope
- Fix an issue with configurable products that were added to cart had no link or image
- Handle exceptions in line cart line item building and order line item building
- Remove support for PHP < 7.0.0
- Fix issue with scope when saving the domain
- Fix issue with missing storefront domain when upgrading module
- Fix issue calculating bundle product price with no options
- Disable price variation when multicurrency is enabled
- Skip product attributes that contains arrays with non-scalar values
- Exclude non-scalar arrays from tags selector
- Refactor method being called many times
- Define percentage of PHP memory that indexer is allowed to use
- Prevent indexing in case Nosto is not connected
- Improve memory usage during indexing proccess
- Encode HTML characters automatically
- Save storefront domain when creating or connecting Nosto account
- Display warning in case of mismatching live domain with stored domain
- Include active domain and Nosto account in API calls
- Display Nosto tokens in store configuration
- Fix issue populating custom fields from Nosto product tags
- Fix error that may happen when order and cart items has no parent product associated
- Bump Nosto SDK version to fix the double encoded Oauth redirect URL
- Remove redundant module manager dependency from rating helper
- Bump Nosto SDK version to support HTTP 2
New features
- Add support for using customer group pricing in Nosto recommendations
- Introduce a cli command for connecting Nosto account via command line
- Support using Yotpo ratings and reviews in Nosto recommendations
- Support using same nosto email widget snippet for multiple Nosto accounts
- Update marketing permission to Nosto in real-time when newsletter subscription is changed
- Support adding multiple products to cart from Nosto recommendations
Fixes & improvements
- Improve performance for generating tagging (@hostep)
- Fix the issue with product building when no custom fields are found (@hostep)
- Improve error handling for Nosto dashboard in store admin area
- Code style fixes & refactoring
- Fix an issue that could prevent the extension to be installed in Magento 2.3
- Fix wrong category translation
- Add batching for scheduled indexer
- Fix bundled product throwing exceptions when option has no selections
- Improve the stock status check for Nosto prouducts and SKUs
- Fix check causing all SKU’s to have invisible availability
- Ensure that the product is available in given store scope before building Nosto product object
- Use IframeTrait for URL building in order to make the possible errors more visible
- Add possibility to remove “/pub/” directory from product image URLs
- Add possibility to define quantity for Nosto’s add to cart
- Obey the alternative image tagging feature flag
- Fix add to cart (Recobuy) javascript errors when Magento 2 is configured to minimize, merge or bundle javascript files
- Fix product availability check for non visible products in the website
- Fix issue that send null prices when configurable product has no available SKU
- Fix Nosto product prices to obey the tax display setting
- Fix product indexer database issue with large catalogs
- Add fallback for product URL builder in case the rewrites are missing
- Fix issue with product service not handling model filter when Nosto product builder returns null
- Add possibility to disable Nosto's multi currency features
- Fix Nosto iframe loading bug
- Add advanced setting to disable sending customer data to Nosto servers
- Add marketing permission for customer tagging and for buyer (GDPR compatibility)
- Fix the Nosto account installation screen if no products are attached in a store view
Improvements
- Prefix order numbers to avoid collision with already used order numbers when migrating from Magento 1 to Magento 2
- Add possibility to exclude products from Nosto index
- Improve the add to cart popup trigger
Bug fixes
- Fix the list price for bundled products when all selections are optional
Refactoring
- Use repositories instead of factories where applicable
- Render Nosto tagging programmatically without templates
- Improve add to cart popup trigger
- Add support for removing / discontinuing products in Nosto
- Apply catalog price rules for product API calls
- Add support for sending cart updates to nosto when product is added to the shopping cart
- Add setting for hiding store codes from URLs
- Add a button links to the nosto configuration page
- Add sku id in the cart and order tagging
- Add custom fields tagging to product
- Fix the issue that order and product importing to nosto did not work in php strict mode
- Add CI definitions
- Fix doc blocks & coding standard issues
- Clear page cache and layout cache after Nosto account is installed, reconnected or removed
- Introduce repository for Nosto Customer
- Fix infinite redirect loop on Nosto admin page
- Rename price helper methods to avoid confusion whether the taxes are included or not
- Fix the issue with sku availability being always in stock
- Remove debug logging for database queries
- Fix the issue that current currency tagging is missing
- Enable sku tagging by default
- Update related products by indexer if catalog price rule, review and rating or inventory level get updated
- Update parent product by indexer if its child product has been deleted
- Fix indexer bugs
- Fix tracking issue of adding sku to cart
- Fix exception handling bug
- Fix Nosto customer saving
- Define arguments for custom logger
- Handle non-existent categories in product category builder
- Move the second recommendation slot under the search results on search results page
Improvements
- Introduce update queue and custom indexer for Nosto product updates
- Add cron job to update advanced scheduled pricing (Community edition only)
- Add a feature flag for low stock notifications
- Report Nosto exception to New Relic if available
- Send more contact details to Nosto during the order confirmation
- Omit inventory level and margin determination when product model is used for tagging
Bug fixes
- Ignore disabled variations from price calculation and SKU tagging
Bug fixes
- Fix the discount calculation in order items
Bug fixes
- Fix the price handling for configurable products with no SKUs
- Fix product observer to fetch the parent configurable product
- Check if product is scheduled / staged before calling Nosto API
Improvements
- Fix deprecated layout definitions
- Display more descriptive errors when account opening fails
- Rename restore cart controller to avoid routing issues with case sensitive setup
- Add missing positioning attributes to layout definitions
- Add "Do not edit" notifications to template files
- Send product updates to Nosto when ratings and reviews are updated or added
Bug fixes
- Fix Nosto product handling in multi-store setup
- Recover from invalid account opening requests
- Remove default variation id from account opening if multiple currencies are not used
Improvements
- Add support for restore cart link
- Add possibility to add product attributes to Nosto tags
- Add support for indicating low stock for a product
- Add support for using thumb url
- Include Magento's object for events dispatched by Nosto
Bug fixes
- Set area code outside constructor in product sync command
- Remove multi-currency check from product template
- Check Nosto account before rendering the javascript stub
- Add null checks item builders
- Fix the multi-currency variation issue when only single currency is used
- Add possibility to use following attributes in Nosto
- GTIN
- brand
- inventory level
- supplier cost
- rating
- review count
- alternative image URLs
- Add possibility to extend / override product data
- Add support for multi-currency stores
- Add possibility to choose which image version is tagged
- Add support for handling the qualification UI
- Add check if Nosto account is installed before outputting Nosto tags & scripts
- Add page type tagging
- Add support for customer reference
- Implement support for "Add to cart" button for recommendations
- Update account settings over the API to Nosto
- Fix product price issue with special prices
- Fix product price to obey tax rules
- Fix product URL sent via API to Nosto
- Fix list price issue configurable products
- Update to the latest Nosto PHP SDK
- Stable release
- Stable release
- Updated the composer lock
- Removed the minimum stability flag
- Bump to SDK version 2.5.2
- Make compatible with MEQP
- Fix the errors when running Magento compiler
- Change the block definition of referenceContainer to referenceBlock
- Use Knockout.js for dynamic cart and customer tagging in order to handle full page cache correctly
- Add "js stub" for Nosto script
- Fix issue with orders when Nosto module is installed but Nosto account is not connected
- Make the plug-in compatible with Magento 2.1.0
- Remove variation tagging
- Fix store resolving issue(#18)
- Fix javascript include issue (#16)
- Fix multi store issue (#15)
- Rename the package to nosto/module-nostotagging
- Dispatch event after Nosto product is loaded
- Improve exception handling
- Fix acl issues
- Fix the composer files to autoload Nosto PHP SDK correctly
- First implementation of Magento 2 extension