Coder Social home page Coder Social logo

nosto / nosto-magento Goto Github PK

View Code? Open in Web Editor NEW
27.0 28.0 23.0 3.22 MB

Magento extension for Nosto

Home Page: https://marketplace.magento.com/nosto-nosto-tagging.html

License: Open Software License 3.0

PHP 93.35% HTML 4.66% JavaScript 1.36% Dockerfile 0.59% Shell 0.05%
magento magento-extension magento-module magento-plugin personalization

nosto-magento's Introduction

Personalization for Magento

Increase your conversion rate and average order value by delivering your customers personalized product recommendations throughout their shopping journey.

Nosto allows you to deliver every customer a personalized shopping experience through recommendations based on their unique user behavior - increasing conversion, average order value and customer retention as a result.

http://nosto.com

Getting started

How it works

The extension automatically adds product recommendation elements to the store when installed. Basically, empty "div" placeholder elements. These elements will appear on the home page, product pages, category pages, search result pages and the shopping cart page. These elements are automatically populated with product recommendations from your store.

This is possible by mining data from the store when the user visits the pages. For example, when the user is browsing a product page, the product information is asynchronously sent to Nosto, that in turn delivers product recommendations based on that product to the store and displays them to the user.

The more users that are visiting the site, and the more page views they create, the better and more accurate the recommendations become.

In addition to the recommendation elements and the real time data gathering, the extension also includes some behind the scenes features for keeping the product information up to date and keeping track of orders in the store.

Every time a product is updated in the store, e.g. the price is changed, the information is sent to Nosto over an API. This will sync the data across all the users visiting the store that will see up to date recommendations.

All orders that are placed in the store are also sent to Nosto. This is done to keep track of the orders that were a direct result of the product recommendations, i.e. when a user clicks a product in the recommendation, adds it to the shopping cart and places the order.

Nosto also keeps track of the order statuses, i.e. when an order is changed to "payed" or "canceled" the order is updated over an API.

All you need to take Nosto into use in your store, is to install the extension and create a Nosto account for your store. This is as easy as clicking a button, so read on.

Documentation

For more information, please see our exhaustive wiki

License

Open Software License ("OSL") v3.0

Dependencies

Magento Community Edition v1.6.x.x - v1.9.x.x or Magento Enterprise Edition v1.11.x - v1.14.x

nosto-magento's People

Contributors

dependabot[bot] avatar liangde-chen avatar mridang avatar olsi-qose avatar phizab avatar supercid avatar vmlintu-nosto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nosto-magento's Issues

Adding Products in Magento do not automatically add them to Nosto Database

When Nosto App is installed on Magento, all products are indexed from the get-go. However when adding products after installation, products will still need to be indexed through page views - especially for customers with heavy product rotation and high number of products, this can lead to delays in product recommendations.

Support for picking the correct image type e.g. base, thumbnail, etc.

There should be a setting to choose which product image to use (Base, Small, Thumbnail). One of our customers uses tall rectangular images for his base image but square, better cropped images for his small and thumbnail images because they look better in small squares in a grid.

THis needs to be in an advanced configuration section and not a part of the IFrame UI.

Update recommendation slots and tagging

Make sure all recommendation slots and tagging match the newest recommended implementation.

Things to check:

  • Embed script version
  • Slot names
  • Slot positions
  • Slot amounts
  • Tagging information
  • Tagging positions

Allow overriding the API call product object

The API call currently only sends the tags1 field but some merchants need custom tags2 and tags3 field. With a bit of work, the merchant should be able to customise the values of the other tag fiels probabaly by overriding the Product object.

Add support for multi-currency environment and exchange rates

The implementation of the multi-currency no longer relies on variant tagging but instead uses the new exchange-rates API.

Right after the account-creation API call has been made or the account has been connected using OAuth, we will make an API call to Nosto to push the exchange-rates over the API.

  1. In order or access the exchange rates API, we will need to change the OAuth scopes to include the exchange-rates scope and similarly for the account-creation API call.
  2. We would also be adding an observer for the exchange-rates inside Magento to push the exchange-rates over the API, every time the exchange-rates are updated.
{
         "rates": {
             "SEK": {
                 "rate": 9.3,
                 "price_currency_code": "SEK"
             },
             "USD": {
                 "rate": 1.3,
                 "price_currency_code": "USD"
             }
         },
         "valid_until": "2015-02-27T12:00:00Z"
    }
  1. All the tagging across the site should also list the current currency in use while all the prices should be in the base currency. <div class="nosto_price_variation" style="display:none">EUR</div>.
  2. The product-tagging must include a new attribute that identifies the base variant <span class="variation_id">EUR</span>

All the orders (via the API and the order-confirmation page), the cart tagging and the will always be reported in the base-currency.

Also the product and order-import will be reported in the base-currency.

Right after the account-creation API call is made, all the exchange rates should be posted to the exchange-rates API so the merchant can preview his site.

Also, the exchange rates should be available as a front-controller with the API_* token so we can periodically pull it.


In the event that the merchant is using exchange rates with a expiration timestamp, then the recommendation template should be updated to always reference the product price as $!product.price instead of `$product.price.

New admin UI

Refactor the admin UI to work completely inside an iframe and communicate with Magento via Window.postMessage().

At the same time the UI will be completely re-done.

Add SHA256 checksum to the tagging on each page load.

In order to safeguard against the Magento third-party full-page caching extensions, we should add some tagging to the page to identify that the tagging in fact did come from the same visit and not a cached one.

Along with the tagging we should render a new field called nosto_checksum. The checksum should be the SHA256 of the 2c.cid cookie. If no cookie is found i.e. first visit using Nosto, then we should still render the tagging but it should be empty.

<div class="nosto_checksum" style="display:none">value</div>

Order confirmations through Nosto API

Add support for confirming orders through the Nosto Api. This feature is used as a fallback to the normal order tagging on the order confirmation page shown to the user after completing a successful order. This is needed as some payment gateways does not necessarily redirect back to the page after order is payed. It also helps against users that close their browser window after payment is done.

The orders need to be linked to the "nosto" user for a successful order confirmation. This link isa made by connecting the order to the nosto user id found in a cookie. If this link cannot be created, we need to do un-matched order confirmations.

Localization

Translate the extension in the following languages:

  • English
  • French
  • German
  • Spanish

Add support for the link to restore a cart

The cart-tagging on Magento will also include the restore-cart link if the user is logged in, so that we may send out abandoned-cart emails with the link to restore the cart.

Send settings periodically along with the exchange rates

To make it easier, we could also periodically send the account-settings (i.e. currency formats) when we send the exchange rates.

Merchants often make changes to the currency settings and need to be told to explicitly click the button..

This wouldn't cause any harm and would reduce the number of support requests pertaining the mismatch of currency formats in the Nosto recommendations and the Magento backend.

Product after save observer does not handle store context correctly

The store context is currently all stores regardless of the scope the product is modified in. This results in sending a re-crawl request to all existing Nosto accounts (i.e. for all stores).

How do we get only the stores a product has been modified for in the event observer for catalog_product_save_after?

Add backend menu item and configuration page

Add a menu item in the backend main menu that shows a config page for the extension. This page should replace the current one found under "System->Configuration->Services->Nosto Tagging".

Also add initial configuration wizard to setup nosto accounts for all shops.

  • menu item
  • config page
  • wizard
    • shop scope selector
    • create new account through the Nosto API
    • connect an existing account from Nosto using OAuth 2
    • iframe with account configuration when an account is associated with the selected shop scope
    • option to remove account associated with the selected shop scope

Adding more data to the product tagging

Add the full description and a tag called ?? to identify products that can be added to cart directly.
Also add the full-description of the product to the short description.

Order/Product history export

When creating a new Nosto account through the extension, we will want to fetch all order/product history data from the shop in order to create better recommendations right from the start.

For this we need a publicly available url that exports this information when Nosto calls it. The Info needs to be encrypted (AES) as anyone could theoretically call the url. All keys needed for the encryption should be transferred during account creation through the API.

We wan't to avoid "pushing" the info during the account creation as it might take a while to collect all data and send it to Nosto, which would lead to bad user experience.

Product re-crawl notification through Nosto API

When a product is changed, stock reduced, price updated etc. We want to send a notification to Nosto that the product needs to be re-crawled for the recommendations.

Catch the "product update" event from Magento and send a API request to Nosto with the product identifier so it can be re-crawled.

Add support for account-specific subdomains for the IFrame

First the SSO API call needs to be made to /hub/{platform}/load/{email}

Instead of making the SSO authorization call to my.nosto.com/auth/sso/{username}/{code}, the call should be made to my.nosto.com/hub/{platform}/{merchant}/{username}/{code} (without the r parameter) which will automatically redirect you to the correct subdomain.

Enhance the order and product export controller

The controller should sort orders by descending order. The order and product controllers should also be able to accept an extra parameter called id and ids which when specified only list the order and products pertaining to those identifiers.

Missing order status label causes crashes

If the Magento order status is missing a label, which has sometimes been the case for the historical statuses, the module throws a "not found" exception which is not caught.

Add a check for missing label and use the status code as label as a fallback.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.