32 Best WooCommerce Plugins for Your Store (Most are FREE)

Are you looking for the best WooCommerce plugins for your store?

Plugins are the best part of making an online store using WooCommerce. They allow you to add new features and grow your business.

There are tons of free and premium plugins that you can use but not all of them are good. How do you find out the best WooCommerce plugins for your eCommerce business?

In this article, we have hand-picked some of the best WooCommerce plugins for your store to increase sales and grow your business.

Must have WooCommerce plugins for online stores

If you haven’t started your online store yet, then we have a step by step guide on how to start an online store. It walks you through how to choose the best WooCommerce hosting, install WooCommerce, select a theme, and everything that you need.

Having that said, let’s take a look at the best WooCommerce plugins for WordPress.

1. OptinMonster

OptinMonster

OptinMonster is the most powerful conversion optimization software in the market. It helps you convert abandoning website visitors into subscribers and customers.

You can use it on your eCommerce website to reduce cart abandonment, increase sales conversion, grow your email list, show targeted website messages, onsite retargeting, and more.

While the main website doesn’t show the free plan, you can get the free version of OptinMonster by installing and activating their WordPress plugin. Inside the plugin, you will see the option to create your free account.

Here are some examples of WooCommerce popups that you can create with OptinMonster:

Floating header or footer bars

Header bar in WooCommerce

These floating bars are perfect to announce on-going sales, new product launch, free shipping and any other special offer. They are hard to miss and highly effective in keeping customers engaged.

Countdown timers in header or footer bars

Countdown timer header

Add a bit of FOMO effect (fear of missing out) to your banners with countdown timers. You can use these countdown timers as header bar, light box popup, full screen popup, or a slide-in popup.

Geo-targeted popups

GeoTargetted Popups in WooCommerce

OptinMonster comes with powerful display rules that allow you to show popups based on a ton of options. This geo-targeted banner shows a popup only to users in certain regions.

Spin the Wheel Popup

Spin the wheel popup

Spin the Wheel popups are full screen popups that bring in gamification to your WooCommerce store. You can set discounts and other special offers to collect emails and increase sales.

If you’re serious about boosting sales, growing email list, and recovering those abandoned cart sales, then you need this conversion optimization toolkit.

2. All in One SEO for WordPress

All in One SEO

All in One SEO is the best SEO plugin for WooCommerce stores on the market. Used by over 2+ million users, it is the most comprehensive SEO toolkit that helps you improve your search rankings without learning SEO.

Note: There’s a free version of AIOSEO that you can use as well when you’re getting started.

You can set it up to dynamically generate SEO title and description for all your products. You can also easily add SEO title and description for individual products while adding them.

Product SEO title and description

It automatically generates XML sitemaps including Product and Product Categories sitemaps. These help search engines easily find and index your products more efficiently.

It supports rich snippets schema markup out of the box, which helps search engines display your products with rich snippets. These helps products stand out in search results and brings in more traffic.

Product schema type example in search results

All in One SEO also includes Local SEO, Product Image SEO, and other features. All of them help your WooCommerce store compete in the search results and rank higher.

3. MonsterInsights

MonsterInsights

MonsterInsights is the best Google Analytics plugin for WooCommerce stores. It comes with enhanced eCommerce tracking which allows you to easily track eCommerce data in Google Analytics reports.

Many beginners find it hard to make sense of Google Analytics reports. MonsterInsights makes it easier by showing you all the information you need inside your WordPress dashboard.

WooCommerce conversion report in MonsterInsights

This helps you make data-driven decisions to grow your business and increase sales. You can see your cart activity, top performing products, and other important data without leaving your website.

Cart reports in MonsterInsights

You can use it to find your most viewed products and improve product pages. You can also track WooCommerce customers in Google Analytics and create a more personalized experience for your users.

For more details, see our beginner’s guide on conversion tracking in WooCommerce.

4. Constant Contact

Constant Contact

Constant Contact is the best email marketing service for eCommerce businesses. It is also the most beginner friendly, which allows you to easily add it to your store and start building your email list.

It comes with dozens of professionally designed email templates for various niches. You can also create multiple lists and create custom funnels to send personalized emails to selected audiences.

To learn more, see our complete tutorial on how to create an email newsletter.

Alternative: Drip and SendinBlue are also both great options.

5. Advanced Coupons

Advanced Coupons

Advanced Coupons is the best WooCommerce coupon code plugin on the market. It extends the limited WooCommerce coupon functionality and allows you to create better coupon offers.

It integrates tightly with WooCommerce and offers features like BOGO offers (buy one get one offer), coupon URLs, scheduled coupons, auto-apply coupons, shipping coupons, and more. It is easy to use and helps you boost sales on your online store.

There’s a free version of Advanced Coupons available as well.

6. SeedProd

SeedProd

SeedProd is the best WordPress page builder plugin on the market with built-in support for WooCommerce.

IF you ever wanted to quickly launch a landing page, create a sales page, or a product landing page, then SeedProd is for you.

SeedProd helps you easily create pages on-demand using an intuitive drag and drop page builder.

Editing landing pages in SeedProd

It comes with dozens of professionally designed templates that are fully compatible with WooCommerce. Simply select a template as your starting point and make it your own with point and click tools.

SeedProd also comes with built-in WooCommerce blocks that allow you to easily add products, cart, check out form, and more to any landing page on your site.

WooCommerce blocks in SeedProd

It works with any WooCommerce theme and doesn’t rely on it. This means you can create stunning product pages, sales pages, and other landing pages without any limitations.

Note: There is a free version of SeedProd available as well which lets you create beautiful landing pages. However the advanced WooCommerce blocks are only available in their Pro version.

7. WP Mail SMTP

WP Mail SMTP

WP Mail SMTP is the best WordPress SMTP plugin on the market. It helps ensure that all your WooCommerce emails are delivered to customers inboxes.

WooCommerce store sends email notifications for various actions to the store owner as well as customers. It uses the PHP mail() function to do that.

However, most WordPress hosting companies don’t have this function setup properly and some even block it. In that case, your store’s email features will not work.

WP Mail SMTP fixes this problem by allowing you to use an SMTP service provider to send emails. This ensures that your WooCommerce emails are delivered to users inbox and don’t end up in spam.

Over 2 million WordPress websites use WP Mail SMTP to improve their email deliverability.

There is a free version of WP Mail SMTP available which should work for most online stores. The paid WP Mail SMTP Pro version gives you premium support, more features, and white glove setup service.

8. Uncanny Automator

Uncanny Automator

Uncanny Automator is the best WordPress automation plugin that allows your WordPress plugins to talk to each other. For instance, you can use it to automatically create a new customer account when someone submits a contact form on your website.

WooCommerce store owners spend a lot of their time performing repetitive tasks. Wouldn’t it be nice if you can automate all those tasks and focus on growing sales and business?

Uncanny Automator allows you to automate WooCommerce tasks, save time, and offer a better user experience to your customers. You can create recipes that can be run when a user or WooCommerce triggers an event (for instance, user adds product to cart).

After that, you can choose an action to perform based on that trigger (for instance, send user an email with similar products they may like). There are dozens of recipes that you can create and save hundreds of hours while running your online store more efficiently.

You can also use Uncanny Automator to send notifications to Slack, send WooCommerce SMS notifications, and more.

9. LiveChat

LiveChat

Did you know that on average, more than 67% of customers abandon their carts before completing a purchase? That’s because customers want instant answers to their questions.

LiveChat is the best live chat support software on the market. It allows you to easily add live chat to your WooCommerce store and answer user queries instantly.

It allows you to convert users into customers before they abandon their carts. LiveChat works with Google Analytics, all top email marketing, CRM software, and more.

To learn more see our guide on how to add LiveChat to your WooCommerce store and boost sales.

Alternative: If you’re looking for a chatbot software, then take a look at ChatBot.com because it can help automate a lot of eCommerce livechat.

10. TrustPulse

TrustPulse

TrustPulse is the best FOMO and social proof notifications app that helps you skyrocket conversions and sales.

People like it when they see other people making the same choices before making their own mind. By adding social proof, you allow them to see it right there on your website and give them the nudge to complete a purchase.

TrustPulse makes this insanely easy. You can install it on any website (no coding required) and customize badges to match your store colors.

You can smartly target pages or products where you want to run a campaign, and add on-fire notifications showing how many people are taking action in a given period. For best results, run multiple campaigns targetting customers viewing different products or pages.

You also get a full live stream of actions taken by users and detailed analytics reports to help you optimize your campaigns.

For detailed instructions see our guide on how to use FOMO to increase conversions.

11. WooCommerce Wholesale Suite

WooCommerce Wholesale Suite

WooCommerce Wholesale Suite is a suite of three plugins that allow you to easily set wholesale pricing in WooCommerce for bulk buyers and other businesses.

You can easily show wholesale pricing to wholesale customers. You can also set minimum quantity they need to order to avail the wholesale discount. At the same time, you can keep showing your regular prices to the retail customers.

For details, see our tutorial on how to easily add wholesale pricing in WooCommerce with step by step instructions.

12. YITH WooCommerce Wishlist

YITH WooCommerce Wishlist

YITH WooCommerce wishlist plugin allows your customers to save products to their wishlist. They can use the wishlist to make the purchase later or share their wishlist with friends and family.

This is a perfect addon for your online store during busy holiday seasons when people are making their shopping lists and purchasing gifts.

13. WooCommerce Multilingual

WooCommerce Multilingual

Non-English WordPress websites surpassed the English WordPress websites in 2014. Since then more WooCommerce stores are created in languages other than English. WooCommerce Multilingual adds compatibility layer with the popular WPML WordPress multilingual plugin.

This allows you to translate your product and other WooCommerce pages in multiple languages. Your customers can choose to browse your website in their preferred language.

14. WooCommerce Products Slider

WooCommerce Products Slider

WooCommerce Products Slider allows you to easily create beautiful product sliders and carousels and add them anywhere on your WooCommerce store.

15. RafflePress

RafflePress

RafflePress is the best contest and giveaway plugin for WooCommerce stores. It allows you to grow your email list, get more website traffic, and social media followers with viral contests and giveaways.

Your users can participate in the giveaway by performing social actions like tweeting, watching a video, following a social media profile, and more. It has actions for all popular social media platforms, CRMS, and more.

RafflePress Actions

For best results, it includes verified social actions and fraud prevention. This ensures that your viral campaign produces real engagement and growth in your business.

There’s also a free version of RafflePress available that you can use for basic giveaways.

16. StoreCustomizer

StoreCustomizer

StoreCustomizer allows you to customize WooCommerce store using the live customizer. It comes with an easy to use interface to adjust store settings with a live preview.

You can edit your shop page, product pages, product categories, and more. You can change the number of products, product columns, edit text for buttons, and more.

The plugin also comes with an Ajax powered product search that you can use with any theme.

17. WooCommerce Subscriptions

WooCommerce Subscriptions

WooCommerce Subscriptions allows you to easily add subscriptions to your WooCommerce store. This enables you to sell subscription plans and other products that require scheduled recurring payments.

The easiest way to sign up for WooCommerce Subscriptions is by signing up for Bluehost WooCommerce hosting. Aside from free WooCommerce subscriptions, this Bluehost plan also comes with close to $1000 worth of premium extensions for free including Online Bookings & Appointments, Jetpack Premium, and more.

18. WooCommerce EU VAT Compliance

WooCommerce EU VAT Compliance

As the name suggests, this simple plugin makes your WooCommerce shop compliant with the new EU VAT. It will automatically detect your customer’s location and will display prices with correct VAT from the first page.

19. Order Delivery Date for WooCommerce

WooCommerce Order Delivery Date

This plugin allows users to choose a delivery date for products during the checkout. WooCommerce store owners can see the desired delivery date on their orders page in the admin area.

20. YITH WooCommerce Quick View

YITH WooCommerce Quick View

WooCommerce Quick View allows your customers to peek into product details by simply taking their mouse over a button. This enables customers to quickly get the product information without leaving the product listings or shop page.

Users will be able to see a larger product image, product description, and an add to cart button in a lightbox popup.

21. YITH WooCommerce Compare

WooCommerce Compare

As the name suggests, this plugin allows your customers to compare two or more WooCommerce products side by side. You can choose which fields users will see in the comparison table and reorder them as needed.

Ajax Product Search

Speed is crucial for the success of any website, particularly for online stores. A single second delay in page load can significantly increase cart abandonment and lower user engagement.

YITH WooCommerce Ajax Search offers a powerful search feature to instantly display products as users start typing. It uses Ajax to fetch the results which means your users can search without leaving the page they are currently viewing.

23. PW WooCommerce Gift Cards

PW WooCommerce Gift Cards

PW WooCommerce Gift Cards makes it super easy to sell gift cards on your store. Customers can purchase gift cards and share them with friends or family to redeem at your online store.

The plugin comes with a beautiful gift card email template and an admin section to view your gift card liabilities. Your customers can specify the gift card amount, recipient, and add their own personal message during the purchase.

24. WooCommerce Currency Switcher

WooCommerce Currency Switcher

As the name suggests, this plugin allows your customers to easily switch currencies and get real-time conversion rates in their local currency. You can add the currency switcher by using the shortcode or a sidebar widget.

25. WooCommerce Colors

WooCommerce Colors

WooCommerce Colors adds a WooCommerce section to the theme customizer where you can change the color of buttons and other WooCommerce elements. It is simple and highly useful if you want to customize WooCommerce elements without adding any custom CSS.

26. WooCommerce Products Filter

WooCommerce Products Filter

WooCommerce Products Filter allows your site customers to filter products by categories, attributes, product tags, product custom taxonomies, and price. You can add the filter anywhere using the shortcode or the sidebar widget.

27. WooCommerce Shortcodes

WooCommerce Shortcodes

WooCommerce comes with a bunch of shortcodes that you can use throughout your website to add products, buttons, and more. The WooCommerce Shortcodes plugin adds a drop down in your WordPress visual editor, allowing you to easily select and insert shortcodes in content areas like post, page, or products.

28. Booster for WooCommerce

WooCommerce Booster

Booster for WooCommerce allows you to add several useful features to your WooCommerce website that allow you to run your online store more efficiently. It uses a modular approach similar to Jetpack and acts like a plugin suite with tons of features.

29. Custom Product Tabs for WooCommerce

Custom Product Tabs for WooCommerce

Normally, product pages require users to scroll down to view more information. Custom Product Tabs for WooCommerce allows you to divide product descriptions and details into tabs. This helps users switch to the section they want to view while making sure that your website looks neat and organized.

30. Variation Swatches for WooCommerce

Variation Swatches for WooCommerce

Variation Swatches for WooCommerce allows you to easily add product variation swatches to WooCommerce product attributes. Customers will then see beautiful color swatches, images, and labels, instead of dropdown menus.

This makes it easier for users to select product colors, sizes, styles, and more. It also makes these options easily noticeable and improves customer experience.

31. YITH WooCommerce Zoom Magnifier

WooCommerce Zoom Magnifier

YITH WooCommerce Zoom Magnifier let’s your customers zoom in and magnify the product images without leaving the page. It also adds a product image gallery slider below the featured image.

This helps your customers look into product images with more details visible. This increases customer engagement in your store, which brings in more sales.

32. WPForms

WPForms

Every website needs a contact form. WPForms is the best drag & drop form builder plugin for WordPress. It lets you create any type of form including contact forms, online surveys, polls, and more.

Over 4 million websites use WPForms including many WooCommerce store owners because it’s both easy and powerful.

WPForms free version lets you create a simple contact form and has all the essential features.

WPForms Pro comes with advanced features like form landing pages, conversational forms, form abandonment, smart conditional logic, etc. that you can use to really improve your form conversions.

Bonus – 33. Nextiva

Nextiva

Having a phone number for your online store can help boost trust and credibility. Nextiva is the best business phone service that works seamlessly with WooCommerce.

It’s a virtual business phone app, so you can use it to receive calls on your mobile phone, iPad, desktop and laptop computers. It comes with advanced features like call-routing, auto-attendant, and others, so your store can easily compete with the big enterprises without the high costs.

Once you have setup your business VOIP, you can then use the free WordPress Call Button plugin to add a click to call button on your online store.

We hope this article helped you find some of the best free WooCommerce plugins for your online store. You may also want to see our expert pick of the best WooCommerce themes for your eCommerce website, and our comparison of the best online course platforms to sell online courses.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post 32 Best WooCommerce Plugins for Your Store (Most are FREE) appeared first on WPBeginner.

MuleSoft 4: Invoke REST API

Problem Statement

Recently, while working with MuleSoft 4 (AnyPoint Platform - 7.3.1), I had come across a scenario that requires invocation of another REST API, which is also implemented on MuleSoft. This API requires input in the form of URI parameters. This API works well when invoked from an external client like Postman, however, exceptions are observed when the same API is invoked from MuleSoft.

Implementation Details

App - Currency Conversation is implemented for providing currency conversion details in real-time , this APP can be invoked by URL  -http://<<hostname>> /api/ currenyconversion /baseCcy /<<value>> /targetCcy/<<value>>

Introduction to RedisGears

At RedisConf19, we officially released a new module called RedisGears. You may have already seen some other modules by either Redis Labs or the community at large, but Gears will defy any expectations you have. It really pushes the limits of what is possible with modules.

Gears scripts

At first glance, RedisGears looks like a general-purpose scripting language that can be used to query your data in Redis. Imagine having a few hashmaps in your Redis database with user-related information such as age and first/last name.

Using AI to Track Emotional Experiences

Companies around the world are striving to deliver exceptional customer experiences and elicit positive and exciting emotions that prompt the customer to return time after time.  Being able to measure our emotional response to things is not always easy, but a team from the Rotterdam School of Management at Erasmus University (RSM) believe they’ve developed a system that does just that.

In a newly published paper, the team describes how their electroencephalography (EEG) based technology tracks how we feel from moment to moment.

API Use Cases

To gather insights on the current and future state of API management, we asked IT professionals from 18 companies to share their thoughts. We asked them, "What are some real-world problems APIs are solving?" Here's what they told us:

Applications

  • Our main focus has been using APIs to integrate across applications and with business partners. Organizations are modernizing IT systems by replacing legacy systems with SaaS applications. These new applications need to integrate with other enterprise systems whether modern or legacy. For instance, we frequently work with customers who are modernizing their ERP system, and they need to integrate that new ERP with other systems.

    The legacy system was likely a tangle of file-based integrations. With the new ERP, a published API set is the integration point of choice for connecting to all of the other enterprise systems such as general ledger and warehouse management solutions. Additionally, these modernized ERP solutions are able to provide real-time access to enterprise information through their APIs.

    We also work with our customers to take advantage of publishing APIs to their partners that provide limited access to this information. For example, a partner wanting to check inventory or check the status of their order can use an API that provides a view into their data directly from the ERP. This can augment the traditional EDI process with API queries for certain transactions that benefit from real-time responses. 
  • Put APIs on top of legacy systems built without APIs in mind. Write code and put API on top to make it easier for customers to interact with them like a CSV file. APIs automatically determine what the file has inside. 
  • Six use cases: 1) Mobile, 2) IoT devices, 3) building out ecosystems – SaaS offering or partner, 4) content or transaction offering (media or ecommerce), 5) APIs as a business (tend to be smaller, the value of the company is monetized via the API), 6) internal agility (80% of API use is internal by large companies how to reuse code more effectively, this is the new SOA, using web APIs to improve internal reuse to achieve agility).

Industries

  • One client building applications owning the development of the API is Hawaiian Airlines. They build APIs for complex legacy systems that are not API-friendly. Creating APIs required thinking about how to expose and secure the data in the most efficient way. Another good example is in the automotive industry in Europe and U.S. challenge is fragmentation of systems to maintain and new car owners have to go through those systems of onboard and connect cars that are more connected than ever. Register all seven new services at once. Create APIs for systems that did not expose APIs before and also contains PII. 
  • Schiphol Airport started on one use case, improve passenger experience of going through the airport. Thought holistically to make the experience better. There is so much data that’s useful, it became an integration problem. Expanded boarding pass, tracking flights, arrival departure information, flier alerts, to achieve internal agility, they decided to make an API-focused effort to enable the integration of different applications. Opened internal APIs to build a partner ecosystem. Start with the mindset APIs will be open and control access rights.

Other

  • As a company, we try to be cloud-neutral. On the backend, we can store content in different public object stores. Customers want to maintain their own keys. With key management services from large cloud providers, we can integrate with them as well and give customers a choice of what data they want where.
    • 1) Capital One, one of the world’s largest banking institutions, offers a variety of online financial services including API products. Third-party developers and partners can provide a first-class digital experience for their customers as well as create new revenue streams by using Capital One’s external APIs to open bank accounts, generate personalized credit card offers, and track customer rewards. NGINX technology has enabled Capital One to scale its applications to 12 billion operations per day with peaks of 2 million operations per second at latencies of just 10-30 milliseconds.

      2) Adobe, a large software company that develops multimedia and creativity software solutions, uses internal APIs as the primary means of data exchange and communication across various software applications used within the enterprise. Adobe uses NGINX as an API gateway for managing API traffic across all these internal systems.

      3) A large technology-focused market research company uses an internal API hub so that its analysts can easily use internal applications to compile, submit, and manage all content they produce. The company is transforming its internal application profile to be more services based and NGINX is providing the required resilience and performance given the mission-critical nature of the applications.
    • Northwoods need to integrate customer data sources. API-led development and API-led integration are about the more SaaS applications being launched still need to take their data and connect with them. Still an integration use case there, APIs aren’t standard, there’s a variety of ways to connect and integrate. Take advantage of Business Works to consume, connect to a data source and connect to a more common set of services to use with applications.

      More easily access information and reduce time to market by 25%. My favorite use case is Netflix. They need to connect with more than 500 client devices, iPhone, Android, X-Box, etc. They have well-normalized APIs that serves metadata from movies, handles search requests, image serving, actual streaming of the movies. But constrained devices over tight networks. They created a middleware backend for front end (BFF) to consume base APIs, contains the majority of the business logic the client needs to use and then opens interface to their own APIs that just serves that client.

      When a new client comes on, all they have to do is create a new BFF in the client code and they’re good to go. If the client for one device is no longer needed, they just kill that code off and it doesn’t break anything.
    • The fundamental problem APIs solves, is answering technical needs with the absolute best solution, in the smallest amount of time, for the smallest cost possible. We provide the best in class Search Experience in the form of APIs. In a matter of minutes — registration time included — customers can answer their Search Experience needs in the best possible way. Doing search right is actually a daunting task; yes, it is possible to spawn up a Solr instance, tune it to best fit a use case, install it on dedicated servers, deal with multi-cluster issues, monitor/operate them...

      But at what upfront cost? At what cost in the long run? How many experts will be required for this — how many site reliability engineers, natural language processing engineers? How much time will be necessary for even starting up? For what level of quality? Our customers can just discard these questions. That is what APIs solve in the real world; that is what we do for Search Experience.
    • Stoplight provides a suite of products to help organizations manage their API design workflows at scale. A critical part of this is building on top of the development workflows that already exist at most organizations. This means integrating with existing tools like GitHub. To do this, we integrate against the APIs that these tools expose.

      This allows us to do things like automatically pull information from GitHub into our product, and push information from our products into GitHub. The end result is a much better experience for our customers, and it's made possible because of the rich APIs that GitHub exposes.
    • Customers are powering use cases from orchestrating real-time integration between endpoints to composing entire business solutions using the Jitterbit Harmony API Integration platform.

      1) For example, Odyssey Logistics has orchestrated WIN Logistics — a no-cost, no-fee web-based transportation management solution, powered by Jitterbit to automate the on-boarding of new clients. So when a client registers with WIN, all of their customized configurations are migrated over automatically through an order send and receive API. This means that product lists, shipping origins/destinations, and equipment types are all brought into WIN in real-time.

      If a client makes a change in their ERP system, that change is automatically reflected in their WIN environment, in real-time. Additionally, Jitterbit’s API integrations streamline the broker-shipper relationship. So when brokers submit quotes, WIN automatically alerts those shippers without them having to constantly monitor their email. This allows brokers to quickly respond to requests and shippers to easily react to the quote of their choosing.

      2) Intellifo, a UK-based company that offers business management software to financial advisers and wealth managers, has connected to over 30 REST APIs of popular endpoints such as Salesforce, NetSuite, JIRA, Aha, Eventbrite, etc. via Jitterbit. One use case they have powered is the Salesforce-JIRA integration through RESTful APIs and webhooks that automatically raises defect tickets from Salesforce and updates bug tracking within JIRA.

      Keeping both systems up to date enables easy communication between Dev and Support and has enabled Intellifo to provide multi-channel support to their customer base. Intellifo has also designed a Production Incident slackbot powered by Jitterbit Harmony API Integration platform that consolidates information from systems such as JIRA, Confluence, Salesforce and NewVoiceMedia as it sends appropriate Slack notifications.
    • 1) Most of my customers are security first and foremost.
      2) Second is observability to know what’s going on. Now the state of the application is all spread around.
      3) People are paying for rate-limiting to prevent hacker from loading your app with requests.
      4) The canary deployment releasing update every day.
    • We built our Mass Customization Platform to allow all Cimpress businesses to leverage the best technologies developed in each.  For example, Vistaprint has spent over 20 years building market-leading technologies to solve all the problems involved in sending user uploads to printing presses (from obvious stuff like “is this image high enough resolution?” to more inside baseball like “will the ink in this image bleed together if printed on a particularly glossy surface?”).

      Over the past decade, we’ve turned this functionality into a fleet of microservices we call our Prepress APIs. No longer the sole possession of Vistaprint, they are now used millions of times a day across a dozen Cimpress businesses.
    • Most banks have figured that they have to have APIs. No one really challenges that, and they are in a state of either planning API programs, implementing them or even launching first API products. What we found our clients to struggle with — how do they monetize their API efforts? So FI.SPAN’s approach to that problem is — figure out your client’s use case first and then see what APIs would be needed to solve it.

      We spend a lot of time and research effort figuring that out. To give you an example — while some banks were trying out that new API thing via some harmless and non-critical “/GET ATM-locations” kind of APIs we were looking into their most profitable corporate customers’ need and found plenty of use cases which require fairly sophisticated APIs to support account payables as well as receivables, data reconciliation and numerous business automation scenarios. Almost every API we have today is powering some customer facing product.
    • For data access, we improve security and utility over traditional APIs by supporting newer protocols like GraphQL and SPARQL. Security is improved by embedded the data security rules with the data itself, so any data consumer or other apps don’t need to duplicate security rules and keep them maintained.
    • Our main customers are marketers and Marketing Technology companies, who used to build software solutions completely in-house. However, the main problem is that getting the data you’d need to build a marketable product would require awfully a lot of time and money.

      Marketing requires vast amounts of data in order to be effective, but the costs of collecting and analyzing all this data on own capacities are ridiculously high. And because obviously not every company is able to allocate the required amount of resources to get the software project off the ground, the technological threshold to entering the market was unreasonable.

      When the first APIs became available for the marketing community, it was a major game-changer. You can now build a simple keyword research tool in a matter of weeks.

Here's who shared their insights:

Turning an Excel Table Into a Web Workflow

Introduction

Hi there. Today, I’d like to share a bit of code I made to turn a repetitive Excel task into an automated web application. We have so many time-consuming processes that are easy to automate and make easier.

Our administrative staff deals with contractors and suppliers. We have the usual system in which every single company working with us needs to provide its administrative information through the vendor registration form. Being added to the approved vendor list is a necessary step before we can order services or supplies from them.

CSS :not() with Multiple Classes

Say you want to select an element when it doesn't have a certain class. That's what the :not() selector is for.

body:not(.home) {
  
}

But what if there are multiple classes you want to avoid?

There are no logical combinators with :not(), like and or or, but you can chain them, which is effectively like and.

body:not(.home):not(.away):not(.page-50) {
  
}

The :not() selector doesn't add any specificy by itself, but what is inside does, so :not(.foo) adds the same weight as .foo does.

The post CSS :not() with Multiple Classes appeared first on CSS-Tricks.

Trading Strategies Using Deep Reinforcement Learning

The purpose of this post is to expose some results after creating a trading bot based on Reinforcement Learning that is capable of generating a trading strategy and at the same time to share a possible architecture for an agent and the features of the dataset that was used, furthermore to share detail about the problems faced.

First, we need to understand the problem, so let’s talk about Trading.

Tips for How to Create an AI App for Your Business

We are entering the age of “Software 2.0,” where artificial neural networks (ANN) are already in use and appreciated by those who are from a development background. Even, there, however, technologies like artificial intelligence, deep learning, machine learning, and advanced analytics changing the way developers create intelligent software entities through computers and in collaboration with human intelligence.

Today all of the smartphones, smart TVs, cars, and video games use artificial intelligence. Like you can use Siri to give you directions to the nearest petrol pump. Tesla is using AI and big data to make the idea of self-driving vehicles into reality. According to a post published in Fortune, AI can now read our thoughts and convert them to images by interpreting brain signals.

How To Make Quality Voronoi Diagrams

What Are Voronoi Diagrams?

Voronoi Diagrams are an essential visualization to have in your toolbox. The diagrams structure is a data-driven tessellation of a plane and may be colored by random or to add additional information.

Learn the Lingo

The set of points that generate the Voronoi diagram are called seeds or generators for they generate the polygon shapes; in practice, the seeds are your cleaned data. Each seed generates its own polygon called a Voronoi cell, and all of 2-dimensional (2D) space is associated with only one cell. A Voronoi cell, or Voronoi region denotes all of the space in the plane that is closest to its seed. Cell boundaries shared between two regions signify the space that is equally distant, or equidistant, to the seeds.

Formal Definition

Given a distance metric dist and a dataset D of n 2-dimensional generator coordinates, a Voronoi diagram partitions the plane into n distinct regions. For each seed k in D, a region Rk is defined by the Region equation.

region_eq.png

In English, the equation is This region is equal to the set of points in 2D space such that the distance between any one of these points and this generator is less than the distance between the point and all other generators. To fully understand the math, be sure to map the words to every symbol in the equation. Its important to recall that a generator, Dk, comes from the input data, whereas points in its region, Rk, is the output.

The Voronoi Diagram is the concatenation of n regions generated by the seeds. Importantly, note that if the regions generator is on the edge of the seed space and has no possible intersections, it will extend to infinity. This extension occurs because regions are defined as all points nearest to a single seed and not the others so, since 2D space has infinite coordinates, there will always be infinite regions.

How to Make Voronoi Diagrams

With an idea of what Voronoi diagrams are, we can now see how to make your own in Python. While we wont cover the algorithms to find the Voronoi polygon vertices, we will look at how to make and customize Voronoi diagrams by extending the scipy.spatial.Voronoi functionality.

Before, Voronoi diagrams were defined as the concatenation of regions (Region Eq.) generated by the seeds. Regions were polygonal subsets of 2D space, i.e. a collection of points with a boundary, composed of points closest to the regions seed. In practice, Voronoi cells are usually represented through their polygon vertices (Voronoi vertices) rather than by a collection of points; this makes sense if you consider the inefficiency of directly storing points.

Easy Examples

To illustrate what Voronoi diagrams are and how to make them, lets start with a very simple dataset: the four corners of the unit square. Each corner will be a seed, so there will be four Voronoi cells.

square.png

Seeds are colored as blue dots at the corners of the unit square, dotted lines represent edges of an infinite polygon, and orange dots are Voronoi vertices. As for an interpretation, this diagram labels all of 2D space into two categories: any point on the plane is either closest to one of four corners in the unit square (i.e. within a square), or it is equally distant to at least two corners (i.e. along a line or on an orange dot). Since all of the cells are on the edge with no possible intersections, there are no finite polygons.

Before we add one more point to the square to get a finite region, lets show the Python code to generate these simple diagrams.

from scipy.spatial import Voronoi, voronoi_plot_2d
import matplotlib.pyplot as plt
%matplotlib inline

# Calculate Voronoi Polygons 
square = [(0, 0), (0, 1), (1, 1), (1, 0)]
vor = Voronoi(square)

def simple_voronoi(vor, saveas=None, lim=None):
    # Make Voronoi Diagram 
    fig = voronoi_plot_2d(vor, show_points=True, show_vertices=True, s=4)

    # Configure figure 
    fig.set_size_inches(5,5)
    plt.axis("equal")

    if lim:
        plt.xlim(*lim)
        plt.ylim(*lim)

    if not saveas is None:
        plt.savefig("../pics/%s.png"%saveas)

    plt.show()

simple_voronoi(vor, saveas="square", lim=(-0.25,1.25))

Conveniently, scipy.spatial utilizes an optimized computational geometry library to compute Voronoi tessellations, so we wont have to worry about those details. All you need to know is the Voronoi object vor contains all of the Voronoi information (regions, ridges, vertices, etc.) for plotting diagrams. And scipy.spatial.voronoi_plot_2d plots this information into a Voronoi diagram.

The only required input to plot a diagram through simple_voronoi is a list of coordinate tuples or the seeds that generate the Voronoi cells. So, by adding a single point in the center of the unit square we can make a finite region.

five.png

The legend is the same as before except there are now filled lines, Voronoi ridges of a finite region. In the center lies the only finite Voronoi cell, the unit diamond. Any point within this diamond is closest to the center seed (0.5, 0.5) and no other. Notice that the addition of a single generator produced three more Voronoi vertices, but the number of cells always equals the number of generators.

Looking only at the two figures so far, you may think that Voronoi diagrams are always symmetrical. But if the seed space is more complicated, then its Voronoi representation will become less ordered. Lets add five random points (n_randoms) to the unit diamonds seeds and see the resulting diagram; four separate random additions are done.

import numpy as np 

n_randoms = 5

for i in range(4):
    randos = five + np.random.rand(n_randoms, 2).tolist()
    vor = Voronoi(randos)
    simple_voronoi(vor, lim=(-1.5,2.5), saveas="rand%s"%i)

Produces the following:

rands.png

Adding random seeds produces an asymmetrical Voronoi diagram, which better simulates what you may see for real-life data. However, our current visualization procedure for irregular generators is lackluster and complicated-looking, especially for greater than 10 seeds. The clearest way to better the images would be to remove any unnecessary features (e.g., dots on vertices) and to color the cells.

In the next section, we modify the Voronoi object to later improve our Voronoi visualization to produce more attractive images.

Finitize Voronoi Polygons

In scipy.spatials Voronoi object, a finite region is enumerated as a list of Voronoi vertices. And, recall that the outermost regions of any Voronoi diagram may extend infinitely. To represent these infinite regions, the Voronoi object uses a -1 instead of a coordinate to denote an open-faced polygon.

While its more accurate to have infinite regions be defined as an open-faced polygon, there must be a finite cutoff somewhere to be able to visualize the diagram. In our earlier diagrams, we simply limited the image frame to a square that included enough information; in some sense, this is like closing the infinite regions open face with the edge of the image. Although the limitation of the image itself works fine, if you want to color the Voronoi regions, the regions data structure must be finite.

Luckily, a function has already been made to finitize scipy.spatials Voronoi polygons. The function, voronoi_finite_polygons_2d, receives the Voronoi object and adds a far-away vertex to each infinite region to close its open-faced polygon; star it on GitHub if you find it useful.

Generate n Random Seeds

Its now time to code a method to generate our input seeds. Since were only concerned with visual customization, a function to make n random Voronoi polygons will suffice.

def voronoi_polygons(n=50):
    random_seeds = np.random.rand(n, 2)
    vor = Voronoi(random_seeds)
    regions, vertices = voronoi_finite_polygons_2d(vor)

    polygons = []
    for reg in regions:
        polygon = vertices[reg]
        polygons.append(polygon)
    return polygons

Numpy.random.rand(n, m) produces an n by m array of uniformly-distributed random numbers (random_seeds); in our case, it will contain n 2D coordinates with values between 0 and 1. A Voronoi object is created from random_seeds and then passed to voronoi_finite_polygons_2d. The finite polygons are listified, so each element in polygons is a list of vertices.

How to Randomly Color

The now finite Voronoi cells are ready to be colored. Remember that colors can be encoded as a "rgba" vector specifying degrees of red, green, blue, and alpha. Alpha is the opacity parameter where more alpha yields more opacity; 0 is fully transparent, 1 is fully opaque. We can create a function to randomly generate rgba vectors by simply returning 4 random numbers.

import random
def random_color(as_str=True, alpha=0.5):
    rgb = [random.randint(0,255),
           random.randint(0,255),
           random.randint(0,255)]
    if as_str:
        return "rgba"+str(tuple(rgb+[alpha]))
    else:
        # Normalize & listify
        return list(np.array(rgb)/255) + [alpha]

The as_str keyword determines the return type since some libraries use different conventions for rgba vectors. To test and demonstrate random_color, test_random_color plots randomly-colored slits with an increasing alpha (left to right).

def test_random_color(gridsize=(5,100), figsize=(12,8)):
    fig, axarr = plt.subplots(*gridsize, figsize=figsize)
    for i, ax in enumerate(axarr.flatten())
        # Remove ticks
        ax.axes.get_xaxis().set_visible(False)
        ax.axes.get_yaxis().set_visible(False)

        # Calculate alpha as normlized column # 
        alpha = (i % gridsize[1]) / (gridsize[1] - 1)
        ax.set_facecolor(random_color(as_str=False, alpha=alpha))

    plt.subplots_adjust(hspace=0, wspace=0)
    plt.savefig("../pics/test_random_color.png")
    plt.show()

test_random_color()

Produces the following:

test_random_color-crop.png

Plot Colored Polygons

Now that we have a list of polygons and a coloring mechanism, it's time to bring it all together on Matplotlib.

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

def plot_polygons(polygons, ax=None, alpha=0.5, linewidth=0.7, saveas=None, show=True):
    # Configure plot 
    if ax is None:
        plt.figure(figsize=(5,5))
        ax = plt.subplot(111)

    # Remove ticks
    ax.set_xticks([])
    ax.set_yticks([])

    ax.axis("equal")

    # Set limits
    ax.set_xlim(0,1)
    ax.set_ylim(0,1)

    # Add polygons 
    for poly in polygons:
        colored_cell = Polygon(poly,
                               linewidth=linewidth, 
                               alpha=alpha,
                               facecolor=random_color(as_str=False, alpha=1),
                               edgecolor="black")
        ax.add_patch(colored_cell)

    if not saveas is None:
        plt.savefig(saveas)
    if show:
        plt.show()

    return ax 

In summary, plot_polygons configures the axis to plot on, adds the colored polygons, then saves/shows the diagram. Notably, there are two alpha parameters: one in random_color, the other in Polygon. To avoid unintended results, setting random_color's alpha to 1 ensures that the parameterized Polygon alpha behaves properly.

The function is designed to easily visualize the Voronoi diagram from the input polygons. Therefore, only one line of code is required to get the good-looking plot.

plot_polygons(voronoi_polygons())

Produces the following:

test_voro.png

While the image is exactly what we wanted, let's demonstrate the capabilities of plot_polygons like we did with random_color_test. Each plot in the grid will be a randomly- seeded, randomly-colored Voronoi diagram at a certain seed number and alpha value.

def test_plot(gridsize=(5,5), figsize=(12,8)):
    fig, axarr = plt.subplots(*gridsize, figsize=figsize)
    for i in range(axarr.shape[0]):
        for j in range(axarr.shape[1]):
            ax = axarr[i,j]

            # Calc. alpha
            alpha = (j % gridsize[1]) / (gridsize[1] - 1) 
            if alpha==0: alpha+=0.1  # Set lower bound

            num_seeds = 4**(i+1)

            plot_polygons(voronoi_polygons(n = num_seeds), 
                          ax, 
                          alpha = alpha,
                          show = False)
            ax.set_aspect("equal","box")

            if j == 0: ax.set_ylabel("%d"%(num_seeds), size="large", rotation=90)
            if i == 0: ax.set_title("%.2f"%(alpha))

    fig.text(x=0.5, y=0.95, s="Alpha", size=20)
    fig.text(x=0.1, y=0.50, s="# of Seeds", size=20, rotation=90)

    plt.savefig("../pics/test_plot.png")
    plt.show()

test_plot()

Produces the following:

test_plot.png

As the axis labels explain, the rows have an increasing number of seeds where columns have an increasing alpha.

In Closing

After learning what Voronoi diagrams are, we learned how to create them. Then, we finitized the data structure to improve its visualization. Since data in this tutorial was randomly-generated, it might be difficult to conceive of practical applications. However, the functions outlined here were designed to be adaptable to new applications. I encourage you to build from here.

Getting Started With the MongoDB Connector for Apache Kafka

Together, MongoDB and Apache Kafka make up the heart of many modern data architectures. Integrating Kafka with external systems like MongoDB is best done through the use of Kafka Connect. This API enables users to leverage ready-to-use components that can stream data from external systems into Kafka topics, as well as stream data from Kafka topics into external systems.

The official MongoDB Connector for Apache Kafka is developed and supported by MongoDB engineers. It is also verified by Confluent, following the guidelines set forth by Confluent’s Verified Integrations Program. The connector, now released in beta, enables MongoDB to be configured as both a sink and a source for Apache Kafka.

How to Choose a Color Scheme for your WordPress Project

Choosing a Color Scheme for WordPress & the Best Color GeneratorsChoosing a color scheme for your WordPress project can be a very difficult and time-consuming task. The right colors will help create a beautiful and attention grabbing website, appealing to your visitors and encouraging them to return again and again. But get it wrong and your repeat visitors numbers, sales, conversion rates, and business may […]

The post How to Choose a Color Scheme for your WordPress Project appeared first on WPExplorer.

Introducing NEuler — The Graph Algorithms Playground

It’s been almost two years since the release of the Neo4j Graph Algorithms library, which allowed developers to run algorithms like PageRank, Louvain Modularity, and Weighted Shortest Path on their graph data.


In January my colleague Irfan and I were chatting, and we thought it’d be cool if we could open up the power of graph algorithms to users that don’t want to spend their days writing Cypher code.

We presented our initial efforts building the Neo4j Euler (NEuler) Graph App (aka the Graph Algorithms Playground) in episode 54 of the Neo4j Online Meetup and showed how the app could be used to analyze the Game of Thrones universe.

Feature Flags in React

Feature flags allow you to roll out a feature gradually rather than all at once. At Optimizely, we commonly use feature flags to reduce the risk of complicated deploys like rebuilding UI dashboards.

However, building a feature flagging system is usually not your company’s core competency and can be a distraction from other development efforts.

Moving Data From Cassandra (OLTP) to Data Warehousing

Overview

Data should be streamed to analytics engines in real-time or near real-time in order to incrementally upload transnational data to a data warehousing system. In my case, my OLTP is Cassandra and OLAP is Snowflake. The OLAP system requires data from Cassandra on a periodic basis. Requirements pertaining to this scenario are:

  1. The frequency of the data copy needs to be reduced drastically. 
  2. Data has to be consistent. Cassandra and Snowflake should be in sync.
  3. In a few cases, all mutations have to be captured
  4. Currently, production cluster data size is in petabytes; hourly at least 100 gigabytes of data is generated.

With such a granularity requirement, one should not copy the data from an OLTP system to OLAP, as it would be invasive to read the path, and writing the path of Cassandra would result in an impinge on TPS. Thus, we are required to provide a different solution for copying the Cassandra data to Snowflake.