As you know, VeeForm quizzes for eCommerce can recommend products. Let’s see how the recommendation algorithm works.

It is basically a voting system : votes are added to product variants depending on the visitor’s answers and we show the products that have the variants with the highest number of votes at the end.

  • For each choice question, you can specify collections/products/variants to upvote and to exclude.
  • When a visitor picks an answer, we upvote all variants in your “upvote” items and completely remove all variants in your “exclude” items.
  • At the end, we show a list of products who have the variants with the highest number of votes (and at least 1 vote) and that have not been excluded.

By default, no product is upvoted : you need to set up “Question Products” settings for at least one question to see recommendation results.

Want more details?

Let’s get back to the basics first.

In Shopify, you sell products : for instance a “Floral shirt” and a “Business shirt”. Those products can have variants : for instance the size of the shirt can be “S”, “M” or “L”. Those products can be organized into collections : for instance the “Shirts”.

When shopping on your store, customers add variants to their cart (even if your product has no variant, Shopify creates a single default one for it). Indeed, you may not add a “Floral Shirt” in your cart, you need to pick a size : you add the “Floral Shirt – Size M” variant.

In your VeeForm builder, click on the “Question products” icon on any choice question and you’ll see inputs to upvote/exclude products.

Here, you’ll be able to select collections, products and variants (indicated by chips starting with “c”, “p” or “v”) :

  • When a variant is selected, the upvote/exclude will be applied only to the variant.

  • When a product is selected, the upvote/exclude will be applied to all the variants of the product.


  • When a collection is selected, the upvote/exclude will be applied to all the variants of all the products of the collection.

  • A variant can receive multiple votes at the same time.

  • When a variant is excluded, it will NEVER appear in the results, even if it’s upvoted afterwards.


The visitor answers all questions, and for each question, we compute the score/exclusion on the variants, and at the end, we take all the upvoted products that still have non-excluded variants, sort them by the max score of their variants and present the winner products (with the winner variant being focused in the dropdown that lists all non-excluded variants).

If there is an equality between the top variants of 2 different products, we sort them randomly unless there is one product that you have explicitly mentioned in the upvote and not the other.