Magento Product Types Setup – The Ultimate Guide


What kind of product attributes are there in Magento?

There are 6 different product types in Magento:

  • Simple product
  • Configurable product
  • Grouped product
  • Bundle product
  • Virtual product
  • Downloadable product


What are the different product types good for?


Simple product:

This is the simplest product type, normally this is used the most frequently. These products are simple products because they have characteristics that make them unique, e. g. board games, TV, paintings. These products may be sold by themselves or as parts of grouped, configurable or bundle products.

Example: There is a black cap below where the customer cannot choose the colour of the cap. In case the product is available in several colours and you would like the customer to be able to choose the desired colour on the data sheet of the product, you need to create the product as a configurable product.

Magento simple product


Configurable product:

These products have variable characteristics e.g. shoes, T-shirts (colour, size).

  Example: The customer can purchase the shoes below in various colours and sizes (sizes e.g. 39, 40, 41, colours, for example: blue, black).

Magento configurable product

Configurable products consist of several simple products. Let’s presume that you have a configurable product that can be chosen in 2 colours and 3 sizes. In this case, you actually made 6 simple products (which are usually not displayed in the store, so they do not appear by themselves) and you made 1 configurable product that covers these 6 products.


Grouped product:

Grouped products are similar to configurable products. At this type of product the user can choose which items to buy among the items of a grouped product and also can decide how many of the individual items he or she wants to buy. E. g.: knife set, bed-linen etc.

Example: You can see below a bedroom furniture set with several simple products in it, which can also be purchased separately. However, this way we offer the customer the possibility of buying several products that belong together more easily and without searching further.

Magento grouped product


Bundle product:

In case of bundle products, the customer can set which items or parts the product to be purchased should consist of. There is a camera in the picture for which we can buy parts or accessories like e.g. lens, strap etc. Accessories or parts of bundle products may be simple or virtual products.

Magento bundle product

Virtual product:

These products do not have physical or downloadable forms, they are physically undeliverable (as there is nothing to be delivered). In general, these are some kinds of services e.g. subscription, licence etc. The data sheet of a virtual product is exactly like that of a simple product, just no delivery address has to be entered during the purchasing process. This VIP membership offer in the picture serves as an example of a virtual product.

Magento virtual product

Downloadable product:

These products do not have physical forms, only downloadable forms, e.g. downloading of a piece of software or an e-book. You can buy the user’s manual of a BMW car below, which is a downloadable PDF.

Magento downloadable product

After purchase and payment of the product, the customer receives an e-mail containing the download link. But if the customer logs in to the online store, the product can also be found under “My downloadable products” and it can be downloaded from there, too.


How can a specific product type be created?


Simple product

It is simple to create a simple product!

    1. Log in to admin, and go to menu Catalog -> Manage Products.
    2. Here, go to menu Add Product on the right.
    3. At the first part of product creation
      1. Choose Attribute Set (attribute group)
      2. Choose Simple Product at Product Type and click on the Continue


Magento simple product setting


4) After this, you will receive a new data sheet where you need to enter specific data of the product. It is important at the beginning that if you have several online stores and store views, you can access or modify its own settings by switching to the desired Store view in the drop-down menu Choose Store View, located at the top on the left.   Note: I detail all the necessary settings only in case of the simple product, I describe only the changes concerning the other product types.


Fill in the General tab according to the following:

Name: Enter the name of the product, it will show everywhere under this name.

Description: Add the long description of the product. This will appear on the product data sheet.

Short Description: The short description will appear in the lists.

SKU or item number, where you should enter a unique identifier.

Weight: Weight of the product, which is necessary for the shipping calculations (provided you have a carrier who takes into account weight).

Set Product as New from Date: This is the start date of a new product (optional).

Set Product as New to Date: This is the end date of a new product (optional).

Status: If you would like to allow this, set this to “Enabled”.

Url Key: If you leave it blank, it will be automatically generated from the name of the product.

Visibility: If you would like the product to appear everywhere, set this to “Catalog, Search”. “Not visible individually” means that it does not figure by itself on the page, which is relevant in case of the bundle or configurable products.

Country of Manufacture: not obligatory, rarely used

Size: optional

Color: optional


Magento simple product general setting


Prices tab

Price: You enter the price of the product here.

Group Price: This is where you can add customer group prices (optional).

Special Price: Promotional price (optional).

Special Price From Date: Start date for the special price (optional).

Special Price To Date: End date for the special price (optional).

Tier Price: Here you can set how much the price of a product should be after adding a certain quantity of it to the cart. It can be separately set for customer groups and websites, e.g.: the price of 1 product is 1000, but if 10 or more is bought, the price per piece is only 800, so if 10 are bought, the total price will be only 8000 instead of 10,000.

Apply MAP: Application of Minimum Advertised Price for this product.

Display Actual Price: Where the actual price should be displayed.

Manufacturers Suggested Retail Price Tax Class: Set the tax class here.

Magento simple product prices setting


Meta Information

These parts are all important from the point of view of SEO.

  1. Meta Title: This will be the title in the browser. If you leave it blank, the browser title will be the name of the product.
  2. Meta Keywords: These will be the meta keywords. If you leave it blank, the name of the product will be added.
  3. Meta Description: This will be the meta description. If you leave it blank, again the name of the product will be added.


Magento simple product meta information setting



This is where the images belonging to a product should be uploaded. You have to select the images with the Browse Files button, then upload them with Upload Files. After uploading, you have to choose

  • which image should be the Base Image that will show on the product data sheet,
  • which should be the Small Image that will show in the product lists,
  • and which image should be the Thumbnail that will show on the product data sheet in the gallery at selection.

Label can also be set, which will be the title of the product image. You can set with check-box exclude which image should not appear (this is useful if you do not want to delete the image, only to, say, disable it temporarily). Obviously, remove deletes the selected image after saving.

Magento simple product images setting


Recurring Profile

Recurring profiles are most frequently used for subscriptions or for purchase of a product in instalments. If the customers buy such products, they can pay for them only through PayPal (payment through PayPal has to be enabled and set).

Example: There is a newspaper that you have subscribed to and you pay for it in monthly instalments, so you pay once a month.


Enable Recurring Profile: Set it to yes if you want to enable it.



Customer Can Define Start Date: Whether you allow the customer to define the start date.

Schedule Description: Short description that appears on the “successful payment” page.

Maximum Payment Failures: After how many unsuccessful payments should it be suspended.

Auto Bill on Next Cycle: Set it to yes if you would like the system to automatically initiate the missed (unsuccessful) payments in the next billing cycle.

Example: there was not enough money on your (PayPal) account on the day of payment, so the payment was suspended. But later you put enough money on your account, so at the next payment the system withdraws the missed amount, too, if this is set to yes.



Billing Period Unit: Set the billing period (weekly, monthly etc.)

Billing Frequency: How frequent the billing should be.

Maximum Billing Cycles: Maximum number of cycles, so how many times should the billing take place (infinite number of cycles happen if left blank). Take a newspaper for example, the price of which is 1000, the Billing Period Unit is weekly, the Billing Frequency is 3, Maximum Billing Cycles is 5. This means that the payment takes place every 3 weeks and you pay 5 times in total, thus you pay 1000 every 3 weeks, totally spending 5000.


Trial Period

Settings of the Trial period has to be done the same way as described at the Billing section. The only difference is that here there is a Trial Billing Amount, which is the price during the trial period. I will show it through an example what this is really good for.

Example: Let’s presume that a new magazine is published that the customers are completely unfamiliar with, so it is possible that not so many people will be interested in it. This is when it is worth having an “Introductory” period and selling the product at a lower price (introductory price) and after this period is over, the product can again be sold at the original price.


Initial Fees

Initial Fee: This is a one time fee that has to be paid at the first occasion, provided it is set enabled.

Allow Initial Fee Failure: It cancels the subscription when set to yes if the initial one time fee is not paid. When it is set to no and the initial one time fee is not paid, the system will take this initial amount the next time when there is enough money in the account.


Magento simple product recurring profile setting



This is where you can set what kind of theme a specific product should appear in.

Custom Design: This is where the design pack can be selected.

Active From: From when the individual appearance shall be active (if left blank, it will be active from the date of setting, so the system ignores this option in this case).

Active To: End date of individual appearance (when blank, it is active for an indefinite time, if a certain date is set, the design will be reset for the original after its expiry).

Custom Layout Update: Custom Layout xml modification (Requires programming knowledge!)

Page Layout: Modification of page layout (e.g. the present one is 1 column layout and you would like to modify it to 2 columns).

Display Product Options In: Where to display the selectable options of a product (this is interesting in case of products that have selectable options, e.g. configurable, bundle etc. products).

Product Info column usually appears under the product price next to the image on the right hand side, Block after info column appears under the whole info block, so usually under the image.


Magento simple product design setting


Gift Options

You can allow here for the user to be able to enter a gift message during the purchase. If this is set to Yes, the system will ask the user during the purchase to enter the gift message (from whom, to whom, message). At the system settings it can be determined whether it should be possible to set individual messages concerning separate products or set a message for the whole order.

Magento simple produc gift options setting



Inventory management can be set here. Where User Config Settings is enabled, the system gets the values from the system settings.

Manage Stock: Whether inventory management should be allowed concerning this product.

Qty: How many pieces are in stock.

Qty for Item’s Status to Become Out of Stock: Beyond this number of pieces the product will be in “Out of Stock” status.

Minimum Qty Allowed in Shopping Cart: Minimum quantity that can be purchased.

Maximum Qty Allowed in Shopping Cart: Maximum quantity that can be purchased.

Qty Uses Decimals: Is it possible to use decimals in quantities, e.g. 1.5 litres.

Can be Divided into Multiple Boxes for Shipping: This option pops up after setting Qty Uses Decimals option to yes. This is where it can be set whether the product can be shipped in separate boxes.

Backorders: “No backorders” means that the product cannot be purchased if it is not in stock, “Allow Qty Below 0” means the product can be purchased (backordered) even if it is not in stock. ”Allow Qty Below 0, and Notify Customer” means the same as “Allow Qty Below 0”, but here the customer is also notified.

Notify for Quantity Below: Below what quantity should the system make a report on the stock of the product. (You can take a look at this under Reports -> Products -> Low Stock menu).

Enable Qty Increments: If this is enabled, the user can add the product to the cart only if it is added in the quantity entered in the Qty Increments options.

Stock Availability: Whether the product is in stock. If this is set to Out of Stock, the product cannot be purchased even if backorders are enabled. Qty and Stock Availability cannot be interpreted as the same, it is misleading for a lot of people that no matter if there are 3 pieces available of a product (Qty), it cannot be purchased if Stock Availability is set to Out of Stock.

Magento simple product inventory setting



This is where you can set in which online stores your product should appear.

Magento simple product websites setting



This is where you can select in which categories the product should appear.

Magento simple product categories setting


Related Products

This is where the related products can be selected. If you want to see the complete list, you have to click on the Reset Filter button on the right. Then you should pick out (tick the check-box) the related products. These products appear in the left or right sidebar on the data sheet of the actual product (of course this may differ depending on design).

Magento simple product relate -products setting



These are set the same way as Related Products. These are products that the ecommerce store offers to the customer. They appear at the bottom of the product data sheet.  


This has to be set the same way as the Related Products. These products appear on the cart side. The aim of this function is to encourage the customer, still before purchasing, to buy even more products.  

Product Reviews

Product reviews that arrived on the product figure on this tab. The reviews can be modified (accepted or maybe their texts can be modified a little or deleted) by clicking on the Edit button.

Magento simple product product reviews setting


Product Tags

This is where the tags of a product appear. The logged in customer can put tags on a product on the product’s data sheet and that is also where the accepted, approved tags appear. The newly arrived (thus not yet accepted) tags can be approved or modified in admin under Catalog -> Tags -> Pending tags menu.

Magento simple product product tags setting


Customer Tagged Product

The list of the customers who tagged this product appear here.

Magento simple product customer tagged product setting


Custom Options

These are the custom options of a product, which are a little bit similar to the options of the configurable product, but they are, after all, different.

This custom option setting allows you to create selectable custom options and thus avoid the creation and use of attributes.



Let’s take the earlier used example of the black cap. You would like to have the possibility of printing different stickers, logos, etc. on the cap. You have to do the settings in this case according to the following:

You have to click on the Add New Option button and enter the name of the option e.g. Printing stickers in the Title field then you should select at Input Type what type the option should be. Is Required – whether it should be obligatory to fill in this blank, Sort Order – this is for sorting the order.


Text – Field: this is a simple text field that is filled in by the customer, e.g. “I would like to have a BMW logo”. Enter into the Price field how much more expensive the product will be compared to its original price. Price Type means whether the price will be a certain amount higher or by a percentage of the original price. You can enter the eventual individual item number at SKU, at Max Characters you can put a character limit indicating how many characters can be entered by the customer at most.


Text – Area: text field, the customer can enter longer texts here. Further settings of it are the same as those of Text – Field.


File – File: The customer can upload different files, e.g. the BMW logo can be uploaded here.

At the further settings, at Allowed File Extensions you can enter – separated by commas or space – the allowed file extensions e.g. jpg, gif, png.

Enter to Maximum Image Size the maximum size of the images that can be uploaded. If the file is not an image, you should leave this field blank.


Select – Drop-down: in this case the administrator will fill in the offered options (see the attached image for such an example).

To add new options, you need to click on the Add New Row button. At the further settings the fields have to be filled in the same way as at Text – Field, the only difference is that here you have to enter in the title the name of the option that the customer will select. The customer can select one option.


Select – Radio Buttons: This has to be set the same way as Select – Drop-down, but these will be radio buttons. The customer can select one item.


Select – Check-box: This has to be set the same way as Select – Drop-down, but these will be check-boxes that can be ticked. The customer can select several items.


Select – Multiple Select: This is the same as Select – Drop-down, the only difference is that the customer can select several items.


Date – Date: The customer can select the date here.

Date – Date & Time: This is where the date and time can be selected.

Date – Time: This is where only the time can be selected.


Magento simple product custom options setting   Magento simple product custom options setting


Thus the setting of the simple product is finished. Save the product by clicking on the Save button.


Configurable product

Before creating a configurable product, there must be an attribute or attributes that you can use for configuration (I will write about that in detail in the attributes section).

  1. As the first step when creating the product, select type Configurable.
  2. Then you have to choose which attributes you would like to use for configuration, so what the customer will be able to choose from.


Magento configurable product setting


3) After that, enter everything the same way as you did in the case of the simple product except for the Inventory, because here it depends on the simple products associated to it whether it will in stock.

4) The associated simple products can be found on the Associated Products  tab.

The associated products can be created in two different ways. You either create them as the simple products or by using the Quick simple product creation section. I suggest the latter one because it is faster.

When choosing the latter one, fill in the fields, then the associated product is created by clicking on the Quick Create button. You will find the preselected attributes here that the customer will be able to select (e.g. Size, Colour).

If you would like to quickly modify the product after the Quick Create, click on the Edit button in the list below where a window pops up. You can modify here what you need to.


Magento configurable product setting quick


Below, there are a couple of options with which you can make a product or products more expensive than others (e.g. you would like to raise the price of Size 39 by 500 compared to the other sizes. Either a fixed price or a price expressed in the percentage of the original price can be set. This setting may also pop up when filling in the above form, provided there is no product yet in this size or colour, namely: if this option is not included in the Super product attribute configuration section.

You can enter the text under Attribute Name that the customer will see. If Use default is checked, the original text will appear.

Magento configurable product setting super


Grouped product

Settings of the grouped product are similar to those of the configurable product.

  1. As the first step when creating the product, select Grouped Product.
  2. You have to tick the products associated to it on the Associated Products You can set the Default Qty in the list, namely the default quality that will be set by default on the product data sheet (of course, this can be modified by the customer). You can reach the complete list at Reset Filter in case you would like to add associated products.


Magento grouped product setting


Bundle product

  1. As the first step when creating the product, select Bundle Product.
  2. The difference here on the General tab, compared to the simple product settings, is that the item number (SKU) and weight can be set to dynamic (this will be visible in the order, if set to dynamic the item numbers are aggregated e.g. test-1 and test-2 will be test-1-test-2).
  3. On the Prices tab the price field is dynamic, so you cannot enter the price because it is calculated from the sub-product.

In the Price View field you can set how the price should appear on the product data sheet and in the lists. As Low As means the initial price, the minimum price of the bundle product. At Price Range the price is expressed as a “from-to” value, so the minimum and maximum prices appear (the minimum in this case means the price when the customer buys the least, usually 1 item, from the bundle product, the maximum means the price when the customer buys the whole package, so all items of it).


  1. Items of the bundle product appear on the Bundle Items


You have to add here the products that are to be part of the bundle product.

It has to be set in the following way:

It has to be set at Ship Bundle Items whether the product items may be shipped Separately or Together.

The Bundle Items part is below this, where new options may be added with Add New Option on the right side.

When adding a new option, title of the selection e.g. Camera Objective has to be entered to Default Title.

Type of the selection should be chosen at Input Type, whether it shall be Drop-down, Radio buttons, Check-box or Multiple select.

Is Required means whether it is obligatory for the customer to choose from this section.

Position means in which position it should be if there are several choices.

Products can be added to this selection with the Add Selection button.

The complete list can be reached at Reset Filter where you have to select the product. Qty to Add is the default quality to be selected.

Then you have to click on the Add Selection Product(s) to Option button above.

When this is done, you will see the added products. In case it is Drop-down or Radio Button type, you can set beside Default Qty whether the customer may modify the quantity of the added product (User Defined Qty). That is not an option in case of the other types and it is always the quantity set in the Default Qty field that will be added to the cart.

With the Default switch, it can be set whether the given option should be enabled on the product data sheet by default.


Magento bundle product setting


Virtual product

Virtual products have to be set the same way as simple products.

  1. As the first step when creating the product, select Virtual Product at the product type.
  2. The only difference on the General tab is that no weight needs to be entered here as virtual products do not have any weight. The rest is the same as with the simple product.
  3. Stock management is usually not used at this type since it is not likely that these products run out of stock, so set Manage Stock to no on the Inventory tab in this case.

The customer does not have to enter a shipping address when purchasing a Virtual product since this type of product cannot be shipped.


Downloadable product

Downloadable products have to be set almost exactly the same way as simple products only here there is an extra Downloadable Information tab.

  1. As the first step, select Downloadable Product at the product type.
  2. Just like in case of the virtual product, you do not need to enter the weight of the product on the General tab as there isn’t any, and usually stock management is not used with this type either (of course you still have the option).
  3. The following has to be set on the Downloadable Information tab:

At the Links section:

Title: Title of the downloadable products should be entered (e.g. Documents).

Links can be purchased separately: This is where you can set whether the downloadable products can be purchased separately.

Then by clicking on the Add New Row button below, you can add further items.

Title has to be set here, which will be the title of the item (e.g. BMW e46 manual)

Price may only be entered if it is allowed that the downloadable items be purchased separately, because in this case prices of the items have to be entered here. If the product can be purchased only as a whole, the original price that appears on the Price tab will apply.

Max. Downloads: This is where you can set how many times the user can download the purchased product. If you do not wish to limit this, tick the Unlimited check-box.

Shareable: If you would like it if the customer, who bought the downloadable product, could share it with others, set this to Yes. In this case the product can be viewed by anyone by sending, sharing its link. If this is set to No, only the logged in customer can view the product who actually bought it.

Sample: This can be either a file or a link, which is a preview that appears on the product data sheet (e.g. in case of a book, usually the summary on the back-cover of the book is uploaded in some form that may be an image, PDF etc.).

File: This is where the complete version of the downloadable item is uploaded, which may be a file or a link (the link may point to a downloadable file etc.).

Sort Order: Should there be several downloadable items, the order of appearance is set here.


There is a Samples section (rarely used in my opinion) above the Link part. If you upload items here, too, they will also appear on the product data sheet the same way as in case of Sample in the Links section. This (Sample) is actually the preview of the whole downloadable product, while in the Links section separate previews may be uploaded for each downloadable item.


Magento downloadable product setting

Creation and setting of the products is completed now.


What is a product attribute and what is an attribute set (attribute group)?


What is a product attribute?

Product attributes define the characteristics of the products, e.g. the colour of a product, its weight, its size, its description etc. In my opinion, this has been very well elaborated in Magento and can be nicely used both by developers and online store administrators.

Product attributes can be filtered very well in the search engines, e.g. if someone is only interested in black coloured size M T-shirts. It is important from the point of view of customer experience that the users are able to easily and successfully search in an ecommerce store. For this reason, attributes and attribute sets of the store must be designed very thoroughly.


What is an attribute set (attribute group)?

An attribute set (attribute group) is, as its name suggests, the grouping of attributes.

Example: Let’s assume that you sell T-shirts and laptops in your online store. In this case you create two attribute sets with the appropriate attributes. Why? Because, for example, the T-shirt does not have memory size, processor frequency, hard drive size, the same way as the computer does not have a colour (though this would even be possible in some cases). Because of this, you create an attribute set for the T-shirts, let’s call it Clothing, and another one for the computer, e.g. IT Equipment.

It is not advisable to create separate attribute sets for each and every product type as you should simplify as much as possible, but make sure that a logical concept is followed (shown in the above example of the T-shirts and laptops).


How to create product attributes and attribute sets (attribute groups)?


Creating an attribute

In admin go to menu Catalog -> Attributes -> Manage Attributes.

There click on Add New Attribute above on the right.

The form needs to be filled in the following way:


1) On the Properties tab:


Attribute Properties

Attribute Code:

Unique identifier of the attribute (no space or accents are allowed in it and it cannot be longer than 30 characters) e.g. colour, size, memory_size.



This defines at what level the values of the attributes can be modified.

Global: equal, everywhere the same value.

Website: its value may vary by online store (so if you have 2 ecommerce stores, the product will be on sale from 1 February in one of them and from 1 March in the other).

Store View: This may be different by store view (for example you have two store views, one of them is in Spanish, where the URL key is producto-muy-bueno, and the other is in English, where it is very-good-product).


Catalog Input Type for Store Owner:

This is where the input type of the attribute has to be selected.

Text Field: simple text field

Text Area: text area field

Date: date format

Yes/No: Yes/No type

Multiple Select: multiple choice type

Drop-down: drop-down type

Price: price type

Media Image: image type, lots of settings disappear if selected

Fixed Product Tax: fixed tax type, lots of settings disappear if selected


Default Value:

This is where you can set the default value to be filled in at the creation of each product (this is useful when this value is frequently repeated at the products because you have to type less).


Unique Value:

This is where you can set whether a given value should be unique. Let’s say there is already a product in the store, with a memory capacity of 8 GB. However, there is another product in case of which you would like to set the same value. If the unique value is set to yes, the system indicates that this value is already in use. So in this case two products cannot have the same value.


Values Required:

Whether it is obligatory or optional to fill in the field.


Input Validation for Store Owner:

Whether the system should verify at the input whether the given data is adequate.

Decimal Number: whether it is a decimal number

Integer Number: whether it is an integer number

Email: whether it is of e-mail type

URL: whether it is of URL type

Letters: whether it is made up of letters

Letters (a-z, A-Z) or Numbers (0-9): whether it is made up of letters or numbers



Apply To:

Which product types the attribute should apply to, if to all, then All Product Types.


Front-end Properties

Use in Quick Search:

Whether the value of the product attribute should be searched in a quick search engine. If yes, then searching for, say, the word “red”, the system will find the products with which this value is set.


Use in Advanced Search:

Whether this attribute should appear in advanced search.


Comparable on Front-end:

Whether the product could be comparable based on this attribute.


Use In Layered Navigation:

Whether it should be used in layered (also called narrow-down) navigation. If yes, then this attribute will appear and will be able to be searched for by the customer. Only drop-down, multiple select and price type attributes can be used for this.


Use In Search Results Layered Navigation:

This is almost the same as the previous one above, only this sets whether the attribute should appear in layered navigation following the search.


Use for Promo Rule Conditions:

If you would like to use the attribute among the conditions of the promotion rules, set this to yes. For example, if there is a rule that gives 10% discount from the price of the red coloured T-shirt, this has to be set to yes at the colour attribute in order to be able to set the rule.



In which position should it appear in the layered navigation.


Allow HTML Tags on Front-end:

This can be set only in case of Text Field, Text Area. This defines whether HTML tags may be used when entering an attribute value.


Visible on Product View Page on Front-end:

Available only in case of Simple and Virtual Products. This sets whether the attribute should appear at the Additional Information on the product data sheet.


Used in Product Listing:

Whether the attribute should appear at the summary part on the product list pages. In other words, whether this value should be displayed in the list. This also depends on the theme.


Used for Sorting in Product Listing:

Whether it may be used for sorting in product listing. This, too, depends on the theme.


Magento product attribute create setting


2) On Manage Label / Options tab:

Manage Titles

This will be the name of the attribute by store view (provided there are several) that will appear on the page.

Admin: This is how it will appear in admin.

Default Store View (note: its name might have been changed by an administrator): this is how it will appear in the default view that the customer sees.

If there are several, all of them will be listed here. If the fields are left blank, the system will always get the values from the admin field.


Manage Options (values of your attribute):

As the text in brackets suggests, these are the attribute values.

This has to be entered only in case of drop-down and multiple select.

You can add a new one with Add Option.

It has to be filled in the same way as at Manage Titles, only here there is the position of the attribute values in addition. If Is Default is ticked, this will be selected by default at the creation of the product.


Magento product attribute setting


Creating attribute sets

In admin go to Catalog -> Attributes -> Manage Attribute Sets menu then click on the Add New Set button.

Creating an attribute set is quite easy.

  1. As the first step, you need to enter its name and then in Based On you have to define based on what should it be created. It is advisable to use the Default (if there is one).
  2. After this, you will arrive on a new page by clicking on the Save Attribute Set button where you can add the desired attributes.

The name of the group can be modified in the left column.

The attributes on the right have to be put in the middle column. They are divided into several sub-groups here, which is useful from the point of view of transparency. Also, e.g. the memory_size attribute should not be on the prices tab as it does not belong there. Of course you can create a new sub-group by clicking on the Add New button.

On the right, the attributes that are not yet part of this attribute set are listed.

Attributes may be removed if you would not like them to belong to the attribute set.


Magento product attribute set create setting



12 proven tips that can raise ecommerce store conversion in 2016

1. Make your visitors feel welcome

If someone visits your website for the first time, obviously you cannot greet them with a broad smile. But still you can make something appealing: you can greet them with a pop-up window. Here you can show a special offer right away, a small discount or free shipping, for example, going with the first purchase.

Online store conversion welcome

Since achieving the very first conversion is the hardest, and customer retention requires a lot less effort, it is well worth enriching your visitors with a positive experience right at the first time. Needless to say, it is wise to ask for a subscription or email address in return because you will be able to reach your new customers later via newsletters or electronic direct mails.


2. Don’t let your visitors leave you!

One of the major challenges with online stores is that even if visitor numbers are high, conversion rates can be really low. Reasons for it may be that visitors simply abandon their carts, just look around without buying anything or make shopping lists (and not purchases) by putting products in the cart.

If you want to get hold of those who consider making a purchase, you have an immense number of options in online marketing that help you do that. Remarketing is one of them. If the user takes a look at a product, but does not buy it, you can offer him or her that same product via AdWords, even with a discount.

You can also show a special offer to your visitor just at the moment when he or she tries to leave your store. It can be an attractive, one-time-only discount deal in a pop-up window. It is best when you tailor your message, focusing on that particular product or category, which the customer has just viewed.


3. Simplify your checkout process

Many case studies mention that lots of customers abandon their shopping cart in the last moment, just before they are about to pay for the products. There can be several reasons for this. A complex checkout process is a typical case.

If too many click-though’s to other pages are necessary or too many customer details are to be given, the chance of rejection is quite high. Don’t make registration necessary for the customer if he or she wants to make a purchase.

You can encourage him or her to do so with deals or discounts, but don’t make it compulsory. Minimize the number of steps so that the purchase process takes only a few clicks and as little time as possible. Place the shopping cart and the CTA (Call to Action) payment button in a very visible spot, for example in the upper right corner or in the sidebar where people usually look for it.

Always show the number of products in the cart and the subtotal. Never hide any additional costs. Indicate the cost of shipping right on the product page.  A vast number of customers decline their purchases at the very end because they see the charges for shipment, as an “unpleasant surprise”, only on the last page of the checkout process.


4. Always run A/B tests

That moment when you can lay back and say “Finished at last!” will never come. You need to optimize your online store on a continuous basis, watching all the time how your customers use it.

A B test conversion

Conversion rates can largely depend on where you place different buttons, what colour they have or what kind of text they show. By guessing, you will never be able to tell which will generate the best results. Therefore you need to monitor the data of your pages, in terms of changes in efficiency, proportion of visitor types, how much time they spend on a page, what they click and what they don’t (ignored sections of pages).

When you have specified the fields that need to be improved, prepare two (or more) new versions of the page in question and show the different versions to your audience in a random way. Try to gather as much information as possible that shows you which version performs better and from then on use the winner page.

For further tips read: A/B testing in ecommerce: 10 things you really need to test


5. Use many good quality images

Your credibility increases considerably if you make the effort to display your customers the items that they are about to buy as precisely as possible. So the first thing you need to do is get or take pictures of your products.

Online store image use

Forget about copying or importing low resolution images from other websites. You’ll need professional photos that show the products from every angle, so that the customers can have the experience similar to holding the products in their hands, inspecting them closely and viewing their details.

Make your design clear and make it focused on the products, grab your users’ attention with high quality images. Your written content and videos are perfectly suitable for directing your visitors to your site or help answer different questions. But in the case of your home page or additional product offers, you will definitely need eye-catching pictures. You may ask: why is it SO important?

According to a survey by Oneupweb, 70% of visitors are more likely to make a purchase if images of products are shown on the home page of a website. A very effective approach can be presenting your most popular products on your main page. At first thought, it may seem controversial: why should you promote those items that are doing fine, why not trying to sell more of the less popular ones? Because popular products have proven their worth and thus will more probably win the masses.


6. Let your shopper customize the product

Of course, this possibility largely depends on what you offer on your online store. If you have the opportunity, give a chance to your customer, whenever you can, to choose the product which most satisfies his or her needs.

Offer options to select colour, style, shape, size etc., ideally on a product page with a nice user interface where only a few clicks are needed to get the desired product displayed. Also, make it possible for the users to add some extras to the product.

For example, if a customer spends half an hour to configure his or her ideal laptop computer on a state-of-the-art page of an electronics ecommerce store, he or she will feel that it is his or her own creation. It is now more likely that he or she will buy this product, even if this custom product is more expensive than a standard one (maybe with similar performance qualities).


7. Be reliable and show that you truly are

Although there is nothing really revolutionary with online shopping nowadays, a large portion of customers still have doubts about it. They are afraid of data abuse, theft or failed delivery. If you want these doubts to disappear, there are a couple of things you can do.

In the first place, publically available reviews and ratings can significantly strengthen trust. It gives confidence if the shoppers can rate the seller and the products, can ask questions, send complaints (which are answered) on the dedicated pages of the online store.

The users can give “rating stars”, write opinions, send questions seen by other users etc. When visitors can read useful information sent by other visitors has a massive advantage: an opinion sent online by a “real human being” can almost have such influence on others just as if some friend made that remark or recommendation.

This is especially relevant in such cases when the customer has some doubts about online shopping right from the start. E.g. the costume won’t fit, the facial cream won’t work as expected etc. In the case of those types of products that we would normally try and test in a brick-and-mortar store, you should leave the opportunity open for the online shopper to step back if he or she wants to, after making a purchase.

If you have faith and confidence in your products, if product quality is truly high, if you do everything in your capacity to help your customers choose the right thing for themselves, there won’t be a lot of returned products. And, on the other hand, you will have more and more shoppers because they will feel secure with your e-store. Using some additional visual elements is also recommended. Show the certificates you have or the payment options the customer can select from, display the store’s business address and phone number.

Communicate that your online store is not some “obscure money-sucking” business, but a responsibly operating company, to which customer satisfaction is the highest priority. Another useful hint is that you display your phone number on every page in a highlighted spot so that users of mobile devices can call you immediately just by tapping on the number.


8. Use weather-based segmentation

Most online stores monitor whether the visitors arriving to the website are new or returning ones, where they have come from, what their previous history is, and so on. In addition, of course you may know geographically where the visitor is located by city and country. Still, there is a trick that few ecommerce stores apply: segmentation based on actual weather.

Online store conversion weather based segmentation

Since you know the geographic position, with a minimum effort you may as well check the weather at the location where your visitor lives. And you can make use of that in lots of different industries in order to make shopping more personal.

If you sell cars, you can emphasize the advantages of their use in cold weather for those who live in locations where it is winter. You can grant discounts in case of various articles of clothing if there is a rainy period at your visitors’ location, you can offer them raincoats, umbrellas in addition to their actual carts. If you also sell wine, you can draw your visitors’ attention to this in case the weather is not nice at their locations, in which case they are not likely to go out, but would prefer having a drink at home.

It is only your fantasy that may limit the possibilities: you can use weather-based segmentation in case of medicinal products, DIY items, garden products, cosmetics etc.


9. Shoot videos that convert

Video content may be of good use for you not only in acquiring new visitors, but it may also help you increase the conversion rate.

Shoot video online store

It is worth measuring what the customers are most curious about in case of each product. It is worth monitoring what questions they send in or what keywords they enter in the search fields. Make a list of the most frequently asked questions and make short videos showing how to use the product based on those questions.

It takes only some little effort to produce these, you can shoot even a dozen different videos a day and all you have to do is to give information to the users in a concise and comprehensible manner about what they are interested in, to present the product features, how to use it, give tips etc. This substitutes the experience when one asks the shop assistant in a store how a certain product should be used, whether it has this or that function and so on.


10. Launch a blog, write a lot!

We will write about this in detail in a later article, but let us have a few words here about the importance of a company blog. What plus does written content give you when you operate an ecommerce store? Online store blogging Content marketing can help you answer the users’ questions even before they ask them. Likewise, you may blow away their doubts in connection with a product: simply with text that describe how to use a product, who it is important to, why it is worth buying it (honestly, though, not with an aggressive sales objective), and you have immediately won over lots of users who would not have asked questions otherwise, they would have simply rejected the purchase.

You can have links to relevant content on the product pages, too, like a sort of FAQ-teaser mixture. And speaking about products – do not skimp on the characters here either. Try to include all significant details in a well-structured description of the product including the characteristics, the available options as well as the potential types of uses.

However, do not write the text as a list – rather as an interesting article with subheadings, dynamics and a message. Typically the most popular advertisements on the advertising pages are those with superbly written copy next to them.


11. Follow your customer!

Remember the advertisements in the movie Minority Report? The ones that called the customer by name and asked how the product, purchased the previous week, worked out? If you are smart, you need to strive to achieve a similar experience and concept only without the pushiness.

Monitor your customers, their habits and grab them discretely! You can lead someone much more easily towards conversion if they have already purchased from your online store especially if they “left” with a pleasant experience. Send them an e-mail offering different products of the same category they previously selected.

Promote similar products to them on other platforms with remarketing. If they visit you, greet them with a personal pop-up window, offer them some kind of a discount if they purchase again. It is also important to keep track of who bought what in your store. If you sell for example premium mattresses with a ten-year guarantee, there is no sense in promoting the same kind of mattress to the customer the next time – this is simply useless. What can you do instead?

You can offer them relevant things even on the product page – e.g. bed linen that is ideal for the given mattress type. You can present, in an email, other products of the manufacturer that they may very likely need. Furthermore, you can monitor who purchased in your store and when he or she made that purchase.

If you sold a product that the given customer probably uses for, let’s say, two years, send him or her a personalized (automated) e-mail after two years. Ask whether the product worked out and make a personalized offer to him or her to get a new piece of the same product with some discount.


+1. Forget about your own “e-merchant mindset”

You should always focus on the things that are good for your customers. Think with the head of your customer. Think about what makes you feel good during a purchase and what makes you frustrated. How do you look for information? How do you decide what to choose? What would make you happy in the long run?

Conversion: abandon e-merchant mindset


tips It does not matter if you personally do not like some of the solutions, focus on efficiency: Choose a system for your ecommerce store that is flexible and cost-effective, with which you can make different changes to optimize the website – into which you can easily integrate e-mail marketing tools or even different kinds of content if these prove to be the most efficient way to achieve better results.

Do not be afraid to change even your most cherished solutions because there is always some extra little thing that can increase conversion by a few percent – bringing you additional income.



Preparing for the Magento Developer Certification exam

The Past

During my secondary and primary education I had a great deal of possibilities to participate in different competitions. I always liked taking part in these competitions, since I enjoyed comparing my knowledge to that of, let’s say, the students of another school. My teachers also urged that more and more of us go, get experience and thus prepare for the secondary school final exam.

When it came up here at AionHill that it would be good if we, developers, passed the Magento Developer Certification exam, I immediately indicated that I would be happy to take this challenge. By that time already two of my colleagues had passed the Magento Developer Certification exam. Before coming to AionHill I had Magento experience, so I had already heard about the exam. Of course, this exam seemed too distant and unattainable for me back then.


How i prepared for Magento Developer Plus Exam

This goal became more and more realistic as my experience in Magento increased.

Preparing for the Magento Dev. exam

I started preparing for the exam approximately two months in advance while also going to work every day as usual.

After I checked the exam requirements I realized that only the practical and some theoretical experience gained during my work would not be enough. It was inevitable for passing the exam to prepare particularly for the topics of the study guide. The exam requirements can be found here: Magento Certified Developer Exam Study Guide (PDF)

If you take a look at the document, you will find that the questions are built around 10 topics:

  • Basics − 6% of the exam
  • Request flow − 7% of the exam
  • Rendering − 7% of the exam
  • Working with database in Magento − 13% of the exam
  • Entity-Attribute-Value (EAV) Model − 10% of the exam
  • Admin html − 7% of the exam
  • Catalog − 10% of the exam
  • Checkout − 16% of the exam
  • Sales and customers − 11% of the exam
  • Advanced features − 13% of the exam

The highest number of questions were about the checkout process. You need to know the classes that are responsible for the shopping cart, the management of the address, for the total of the cart, for the payment and delivery methods. The second highest number of questions were related to database operations. Here, one also had to have a deep knowledge of the operations of the classes in connection with the database, operation of install and upgrade scripts, and the methods that can be used within them.

Magento Developer Exam Preparation

After I learned about the exam requirements, I started thematically preparing for the exam. I always selected a topic and tried to get to know it as deeply as possible. I installed a test Magento in my own developer environment where I could test the newly acquired knowledge.

In addition, there is a very good video series (in English) that describes thoroughly the operation of Magento, through examples, while still focusing on theory. The training material named Fundamentals of Magento development, which is no longer free of charge, is available here: Fundamentals of Magento Development I learned a lot from this forty-hour video series!

You can find some other links below that helped me during my preparation:

Some Advice

Besides the training materials and videos listed above, I put a great deal of emphasis on testing and experimenting during preparation. I always tried out the examples in the study guides and I even tried modifying them so that I got to know the operation of Magento better. Since I use public transportation on a daily basis, I uploaded most of the materials above on my phone so I could prepare for the exam when I had a little time while commuting to work.

Another perfect preparation strategy may be writing modules as similar as possible to the core structure of Magento. What I mean is that you should use the models, collections in the modules and that you should get ACL (Access Control List) and external JavaScript and CSS files from xml. Of course, when developing a Magento module you can also choose solutions that are a bit further from the basic concept of Magento.

This method speeds up the development, but it makes the code complicated and since I work in a team, the clear code is indispensable. When we go through each other’s codes with the eyes of a developer, the solutions that are far from the core structure of Magento, pop up very quickly. This is when the developer has to rewrite the functioning, but “ugly” code to a coherent, clear, logical one that does not go against the core structure of Magento. You can read more about this issue on Zend Framework Coding Standard for PHP


Magento Developer Plus Exam Preparation

The Exam

I applied for the exam at IQSoft. It was a great advantage for me that there was an exam centre in Budapest where I could take the Magento Certificate exam. I know this is a little thing, but I know myself and I am sure that the travelling and the new environment would have tired me so much that I could not have concentrated one hundred percent on the exam.

The exam took place on 23 June 2015, whose date I could schedule myself, of course depending on seat availability. I already knew the exact date more or less a week before the exam. The exam fee was 260 US dollars, which is quite a lot if you take into account that no textbook or trial exam was provided. I was lucky because I got a voucher code from AionHill, so I could take the exam for free. The voucher is granted when you buy Magento Enterprise.

There was strictness during the exam at IQSoft. The camera was continuously on in the room recording me and the others taking the exam. All personal belongings had to be left outside, I could have no watch, no phone, not even tissues on me. The examiner gave me tissues and had me sign a declaration of liability that explained of course in much more detail (and in English) the principles of conduct that I had to follow during the exam.

The exam was taken by using a computer and it was immediately evaluated. Only multiple choice questions were asked, however, several answers could be checked in case of many questions and the score was only given if I knew all of them, so no partial points or scores were granted. There were 85 multiple choice questions, 70 of which you had to give correct answers to in order to pass the exam. When I came out of the room, the evaluation was printed immediately, but unfortunately the results per topic were figured on it only in percentages. As a consequence, I did not find out which questions I answered incorrectly and which correctly.

Finally, this is my Magento Certification Profile link.


I would like to encourage everyone who feels aptitude for it to take the Magento Developer Certification exam because it is worth it. The main advantages that I would highlight are the broadening of your competence and the deepening of your knowledge. I hope I have managed to encourage those to take such an exam who are still hesitating to do so. Really, the only negative aspect of the whole thing was the strictness, but that is kind of understandable if you take into account what is at stake at the exam.


Good luck to everyone!



Magento vs. PrestaShop – tools for professionals and beginners

Before starting the detailed discussion of the two software solutions, it is worth examining an entirely different aspect first: your enterprise. You will see that the two pieces of software are for businesses of different sizes, of different profiles and ambitions and this will be the main factor that may facilitate the decision.

The two open-source code software solutions, which can be freely used and developed or modified by anyone, primarily show similarities at first sight rather than differences. However, you may find after the first steps that there is actually a great deal of differences between them. We will go through the following aspects in this article so you will definitely find everything here in one place:

  • Pricing: how much will you have to spend on the systems and how much do they cost in the long run? How cost-effective are they?
  • Support and community: who can you ask for help, what can you expect when you have a problem?
  • Manageability and functions: can you cope yourself or you will need professional help?
  • Customizability: how freely can you shape the functions, appearance or operation?
  • Compatibility: about the basic needs of the systems
  • SEO: a good system gives you the chance to rank high in the search hit lists
  • What does PrestaShop offer?
  • What does Magento offer?

Let’s start with one of the most important aspects.


Pricing of PrestaShop and Magento

PrestaShop is a quite simple application for free and is of open-source code. In order to be able to use it, you only have to download it and install it on the server.

The same is true for Magento Community Edition: we are also talking about an open-source code software that is available free of charge. Enterprise Edition of Magento is also available, but that is really for the biggest players since its yearly subscription fee is quite large (starts at $18,000).


Magento PrestaShop price


What you have to take into account in the long run in both cases is mainly the fee of the hosting service.

It is necessary to roll an appropriate hardware infrastructure under the system, otherwise it will hardly be able to handle higher traffic.

It will also be shown how the basic software can be extended or modified – this is important from the point of view of the costs, too, as you have to pay for most of the professional themes, designs and extensions.

It also has to be mentioned here that in case of Magento the inexpensive themes are not perfect, they will make front-end development or back-end correction necessary, should you wish to customize them hundred percent.

Customization and error correction often involves almost as much work as if you had the design built from scratch.

Generally, purchasing is much cheaper than developing your own system (provided that you find one that perfectly meets your demands), and the overall experience of Magento e-commerce store owners is that these investments will abundantly return in case there is an already existing customer basis and an elaborated sales strategy in place.

It is important that you allocate a constant budget following the activation, since functionality will certainly have to be continuously optimized according to the user feedback and your own measurements.

This is necessary because the online store is capable of satisfying customer needs only if it can adapt to changes in market trends.

This is the only way it can generate more profit: if it offers the customer what the customer truly needs. Consequently, the real work begins only after going live – this is true for all e-commerce store systems that can be optimized this way.

The budget may, of course, vary depending on the industry.


[bctt tweet=”An online store can meet customer needs only if it can quickly adapt to changes in market trends.” username=”aionhill”]


Support and community


The two platforms are significantly different when it comes to having questions to answer or problems to solve.

In case of PrestaShop, you can join a smaller online community of quite enthusiastic users and professionals. Possibilities of official support are quite restricted though.


PrestaShop Community Support


Another disadvantage of PrestaShop is that you may come across a lot of smaller bugs when using it, as experiences show, so the developers have to publish corrections frequently.

These on the other hand are not automatic and their installation imply some technical knowledge. However, the corrections generally arrive quickly and the latter statement is also true for Magento: you will really be able to benefit from the installation of the corrections and extensions only if you rely on a specialist.

Regarding Magento, you will receive official support only if you are using the quite expensive Enterprise Edition tailored for the large enterprises.

But users of the free Community Edition will not be left alone either, since there is a community of a large number of users behind Magento including a lot of talented and enthusiastic web developers who can be contacted any time on the different online forums.


Magento Support Forums


And of course you can find Magento developer partners if needed, who are capable of solving problems and to shape the system according to the demands.

The reason for this, among others, is that Magento is at the moment one of the most popular e-commerce platforms among the medium-sized and multinational commercial enterprises, it covers nearly 30 percent of the market.

Although the system itself is more complex, there is still a bigger chance to solve the eventual problems due to that very fact.


Manageability and functions


Installation itself is relatively simple in both cases, it does not demand particularly deeper knowledge from the user and it usually takes only a few minutes.

In case of Magento however, a developer is needed for this and you also have to make sure that the development environment is adequate. Regarding Magento, it is advisable to decide at the installation whether you want to operate a single online store or a multi-store system.

You also have to consider that installation of the extensions of Magento – which you will definitely need sooner or later – is a more complex task calling for a specialist. Unless you have relatively significant experience in handling more complex systems, you have a good chance of facing obstacles.

In order for the e-commerce store to operate appropriately, professional assistance is usually inevitable. Differences also appear regarding handling.

Handling Magento is a more serious task, it takes more time to get to know where to find the different functions – or what kind of functions whatsoever the system has. Yet

Magento is famous for already having a great deal of functions by default, even without extensions. PrestaShop has great potentials for those who want to operate a simpler online store.

Simplicity here does not refer to the number of products, as PrestaShop is theoretically able to handle anything which the physical infrastructure, the server itself can. At the same time, problems may occur with scalability.

Earlier, the system has not even contained the multi-store feature but from version 1.5 up, similar to Magento’s solution, you can manage from a single administrative interface several e-commerce stores that are hosted on different domains and have different designs.

Magento is rather the engine of the more complex online stores, it is the tool of those companies that would like to work with continuous optimization, endless number of options for functions, detailed possibilities of customization and targeting – thus ensuring in the long run to be able to always shape their system according to the actual requirements and market needs.

This entails that its handling will be most comfortable for the users with a technical orientation.

PrestaShop also remains at a disadvantage in not being able to collect statistical data and to make reports as effectively as Magento – of course the capabilities of both systems may be increased with extensions.




Both platforms are open-source code systems, so certainly lots of different plugins and extensions are available for them – amounting to several hundreds in both cases.

The real difference is that PrestaShop is simpler in this regard, too: installation and handling of the modules is not too difficult even for beginners, while for the appropriate installation of a Magento extension, you will need an expert with specific competence in the use of the system who also has development experience.


PrestaShop Customization Modules


The enthusiastic communities, including a great deal of talented developers, are continuously making newer and newer extensions. For this reason, it is given in case of both pieces of software that you find the exact solutions tailored for your needs.

Should you have unique needs, it is worth persistently looking for extensions with favourable user opinions and choosing based on those opinions.

As for Magento, however, it is worth searching for a competent developer team for the installation of such extensions (or even for the development of individual extensions).

PrestaShop offers less possibilities in the first place to customize your store.

Even if the system of Magento is more complex, that is because it includes much more features.

So one makes a fair deal if they are willing to sacrifice more of their time to get to know the system in exchange for the great deal of options that they can thus freely use.


Magento Connect


It is also worth becoming familiar with the setting options since individual development is not necessary in case of a lot of things that you would assume would need that – and this way you can save money, time and trouble if you properly know your own system.




It is important to touch upon this issue as, according to the experiences, it may cause problems in certain cases.

In case of both systems it may happen that they cannot work together with another piece of software – for this very reason, it is by all means worth checking the possible consequences before installation or when preparing for a more significant modification. It is best to consult professional developers in such cases.

In order to be able to use PrestaShop, your system will have to meet the following requirements: Apache web server 1.3 or newer version, Nginx or Microsoft IIS, PHP 5.2 or newer version, MySQL 5.0 or newer version, and Linux, Unix or Windows operating system.

The following requirements will have to be met in order to be able to use Magento: Ubuntu 10 or higher version, and CentOS 6, Apache 2.x, nginx 1.7.x, PHP 5.4 and the necessary extensions, MySQL database.




If you want the e-commerce store to attract sufficiently high traffic, you also have to pay attention to search engine optimization.

The unanimous opinion of the professionals is that even though PrestaShop includes some basic optimization possibilities, Magento is much stronger in the field of SEO, it offers so many opportunities that search engines “favour” as no other e-commerce platform does.


Magento PrestaShop SEO


The issue of responsiveness also belongs here since Google’s algorithm nowadays also monitors whether your website is mobile-friendly or not. If it is not, you might as well give up on the good results on the hit lists regarding searches, launched from a mobile device.

Magento has been responsive since 2014, it may be optimized superbly to any kind of platform, it offers an easily manageable interface for the users – and thus even the algorithm does not rank it lower in the searches.

PrestaShop did not feature responsive layouts by default earlier, but by now it does.

At the moment one of the most important factors for reaching higher Google rankings, besides such factors like page speed and relevant back links to your website, is responsiveness, since it is crucial for users with mobile devices.


What does PrestaShop offer?


PrestaShop offers an open-source code software solution with several useful functions, lots of features, for free – at the same time, to be able to exploit its possibilities appropriately, you will need extensions, templates and so on.


PrestaShop offers


PrestaShop is also a mobile friendly system. Although with versions 1.4 and 1.5, a separately developed theme was needed to be installed for making it responsive, from version 1.6 it is a responsive system by default. (In the case of Magento CE, 1.9 and later versions handle responsiveness “automatically”.)

PrestaShop was established in 2007 by Igor Schlumberger and Bruno Lévêque, with the explicit aim of making e-commerce more available for the average users.

It is not by chance that the target audience of this simpler system mainly consists of small and medium-sized enterprises.

Because of the complex features that lie in Magento, it is worth considering using it for the medium-sized and large enterprises, while for the smaller ones, the fresh starters, the simpler and more easily predictable PrestaShop may be a better choice.


What does Magento offer?


It is an open-source code, free of charge software solution with a lot of features.

Its real strength is customizability – of course you will need extensions in this case, too, however, several thousands of these are available, among which you will most likely find the ideal one for you.

It is worth choosing a hosting provider that has specific experience in this field with Magento and also has provided service for Magento stores with heavier traffic. Previous work references show well how strong the hosting is, even if there is not yet such a big traffic of thousands of visitors per day.


Magento Enterprise Edition


It is also important that the provider undertakes the individual configuration as well, so you do not need to adapt to global settings as in case of big-name hosting companies.

It can be nicely optimized for search engines, its biggest strength, narrow-down search, is holding it back though a little in this respect – however, this, too can be easily corrected with the help of a developer company.

It is a more complex system, but for a reason, as it provides the user with much more possibilities. It is ideal mainly for the mid- or large size companies that build their business model particularly on e-commerce selling several thousands or even several tens of thousands of products.




Purchasing process of PrestaShop is more easily adjustable, Magento, on the other hand, offers much more features.

It is the perfect tool for those who like to control as many factors as possible and who are planning deep integration with external ERP systems (SAP, Microsoft Navision, Dynamics). More significant expertise is necessary for the installation of Magento, while even beginners can use PrestaShop without trouble.

Similarly to WooCommerce, PrestaShop is for those who would like to test the online market as e-commerce storekeepers who have just started or have recently started.

And once the business picks up according to the feedback from the market, introduction of an ERP system and deep integration with the online store is inevitable for growth, and that is when it becomes definitely worth seriously considering switching to Magento.

The two systems target two completely different audiences so the decision is not particularly difficult.

It may cause a dilemma only for some of the medium-sized enterprises that are not completely aware of how serious they are about ecommerce: should they build their future upon that or not? Therefore, you need to be clear on that before making the choice.



Magento discount system, Magento coupon use

The use of the Magento price rules can be a powerful promotion tool in your hands since your customers like experiencing a special approach. Obviously, a shopper buys an item more happily if it is discounted. Magento discounts can be managed in the admin panel under the Promotions menu. A basic difference between the Magento catalog price rules and the Magento shopping cart price rules is that with the catalogue price rule, shoppers see the discount as soon as they open the store page, while with the shopping cart price rule they see it only at the shopping cart and during the checkout process.

Magento catalog price rule

In the Rule Information tab you can set the basic properties of the rules. Here you can define the time intervals and customer groups to which the rules may apply. In the Conditions tab you can narrow down the conditions under which the discount should be valid. You can define a group, a category and other attributes. You also have “exclude” options when setting the conditions, which means that if you select a group or category, the rule will NOT apply to these. Magento discount catalog price rule   In the Actions tab you can define the value of the discount either by giving a percentage or a fixed sum of money. By default, more than one discount can be used by the shopper in a single online store. In order to eliminate this, you need to select YES under the Actions tab at Stop Further Rules Processing.

IMPORTANT You can apply the catalog price rules by clicking the Save and Apply button, however, if cronjob is operational, it is automatically started by Magento every day at midnight.


Magento shopping cart price rule

IMPORTANT Here the options are similar to the catalog price rule settings. The difference is that in this case the total of the shopping cart (and not the product’s price) or the delivery cost will change. Under Conditions, in addition to the conditions of the catalog price rules, you can define delivery and invoicing settings as well as the total weight of the cart.


Magento coupon information

You can also create coupons under shopping cart price rules. You can generate an infinite number of random coupons, but if you want to create each coupon manually, then you need to assign a different price rule to each one. Magento discount shoppig cart price rule

Real life examples for Magento discounts


1 − Now each product delivered to the UK can be purchased at a 10% discount

Here you can see how you can give a discount on the basis of the delivery address.   Setting the conditions: Click on the Conditions tab and then on the “+” icon. From the dropdown menu select Shipping Country and after clicking “…”, choose United Kingdom. Magento discount shoppig cart price rule shipping   Select Percent of product price discount in the Actions tab at Apply and then type 10 at Discount Amount. Magento discount shoppig cart price rule actions

2 − You save 50% if your total is over GBP30 and if you pay with PayPal Express

In this example we want to set a shopping cart price rule which applies to shopping cart totals exceeding GBP30 and the customer has selected PayPal Express as a payment method.   Setting the conditions: Click on Conditions and then on the “+” icon. In the dropdown menu select Subtotal. Click on the “is” link and select the equals or greater than option. Then click on the “…” link and type the value of 30. Now that you have set the shopping cart total, click on the “+” icon again and define the Payment method, which is Paypal Express Checkout, after clicking on the “…” link. Finally, select the Percent of product price discount option at the Apply tab under the Actions tab. Set 50 for the Discount amount.   Magento discount shoppig cart price rule conditions

3 − 10% discount for a product over GBP15

Here you will set the 10% discount using a coupon code for a product which costs more than GBP15.   Setting the conditions: Click on the General Information tab and select the Specific Coupon option under the Coupon option. Then type 10OFF in the Coupon Code field. Thus if a customer gives the 10OFF coupon code on the shopping cart page, he or she will get a 10% discount. In the next step, instead of defining the GBP15 limit on the Conditions tab, you will set it at the Apply the rule only to cart items matching the following conditions (leave blank for all items) section on the Actions tab. Click on the “+” icon, then select Price within the Product attribute option group. Click on the “is” link and define the sum of 15 at the greater than option. On this same tab select Percent of product price discount at the Apply option. Then type 10 in the Discount Amount field and type 1 in the Maximum Qty Discount is Applied To field.   Magento discount shoppig cart price rule coupon

4 − 5% discount on the total if UPS (Next Day Air) shipping is selected

In this example you will set the 5% discount using the coupon code method.   Setting the conditions: Click on the General Information tab and select the Specific Coupon option under Coupon. Then type 5OFF at the Coupon Code field appearing below it. Thus if a customer gives the 5OFF coupon code on the shopping cart page, he or she will get a 5% discount on the total order. Now click on the Conditions tab, then on the “+” icon and select the Shipping Method option and after clicking on the “…” link, select [ups] Next Day Air. Finally, at the Apply tag, on the Actions tab, select Percent of product price discount and type 5 in the Discount Amount field. Magento discount shoppig cart price rule coupon conditions

More Complex Cases of Magento discount solutions

In many cases, the default functions of Magento cannot fulfil more sophisticated business needs. These requirements can be met by Magento development. Let us see some examples.

1 − Discount for female/male shoppers according to age

Say, you want to do give a discount on the total purchase price for men over 50 years of age. Although you can set the birth date and gender in Magento, you CANNOT use these data as conditions with the catalog or shopping cart price rules. However, with programming it can be solved that these data are taken into account by price rules.

2 − We’d like to give a coupon code for one specific person

In this example we want to give a coupon code to a predefined person so that he/she will be able to shop at a discounted price. It can be determined that a coupon code is to be used only once, but Magento development is needed if you want to define which person can use exclusively this coupon code. But, well, with a little trick even programming is not necessary: you put the shopper, you want to give the coupon to, in a separate user group and then set the price rule to apply to only that specific user group.

3 − Discount for returning customers

Here you would like to reward your loyal shoppers. Unfortunately you cannot see at the price rules by default how many times a customer has shopped at your online store and how much he/she has spent. With the help of Magento development, it can be solved that the sums of all the purchases of a given shopper are added up and then a specific discount is given to that customer.

tips +1 Solution: We also have developed such a solution where the checkout process was complemented with a form. The fields of the form were shown in accordance to the price rules. For example, if Computer Configuration was present in the shopping cart, a checkbox appeared during the ordering process. By clicking this checkbox, the customer could ask for the configuration of the computer completed in the shop.

These examples are just a few out of many that we have come across or can manage flawlessly. Do you have specific problems in Magento you would like to solve? Contact us right away.   If you think this article can be useful to other readers as well, please share it. You can also write your comments below. So if you have any questions or queries, don’t hesitate to comment!



Magento product import: 4 excellent solutions that definitely work

One of the greatest advantages of Magento is that shoppers can search for nearly an endless number of parameters and terms and browse among the products. This makes shopping easier and also increases the chance of conversion because it is more likely that they will find the most desired product, even out of thousands of options. To be able to accomplish this, obviously, you need to fill up your store with products. No one stops by an empty shop window. Simple as that. Luckily, a number of different solutions are available for such a project.


The basics: via the Magento admin panel

The most trivial and simple way is to import the products manually into the Catalog. In the admin panel, under Catalog, you can find the Add Product button on the Manage Products page. With Magento’s CMS (Content Management System) you can easily and quickly modify the product database.

You can assign different parameters to the products so that customers not only can search the products with better results, but can also activate intelligent filters. Additionally, thanks to the parameters, you can also set up different user groups that will see specific offers. This all makes your life easier while managing your online store, however, throughout the database building process, you will need a more effective way.


1. Simple importing in Magento

It is a basic function of Magento with which, after only a few clicks, you can import your products from a .csv file. This method is quite simple after you have got the hang of it, like where to find the items and what sequence you should follow during the process. It offers a rather limited number of possibilities though.


Default Magento Product Importer


If the file contains parameters that are not set included in the system (because you have not yet created the specific attributes), then importing will fail and the process will get stuck during the data check. Thus such a process is needed where the attributes contained in the .csv file are identical to the ones that the system holds.

This can be done on this page: System -> Import/Export -> Import. Since you can also upload customer data here, you need to select whether you want to do this or upload product data instead. You also need to choose from the following:

  • add new data of the .csv file to the existing database,
  • change the existing database to the imported one,
  • or delete the items from the database that are present in the import file.


2. Bulk import with some extra steps

Of course, Magento’s admin panel provides the option to import more products at a time. Let’s see how bulk product import works that contains product attributes set beforehand.


Magento bulk product import


First you need to create a category in the admin panel. This can be done in Catalog -> Manage Categories. Create all the categories you need at the moment, then, after filling out the required information panels, save them.

It is recommended to save the IDs of the newly created categories in a text file. The ID is shown by the system when you save the newly created category. Here it is also worth giving or creating those attributes that you want to use later on.

It is understandable that the Magento system cannot comprise all the things you may need, but it certainly provides the features to be able to add whatever you want. So you can add the attributes in Catalog -> Attributes -> Manage Attributes. Having this done, the “sample product” is created, which can be used as a “template” for the rest of the product imports. After saving it, it appears in the product list.

The next step seems a little more complicated, but in fact it is a simple process as well. The goal is to have access to the parameters of the sample product on your own computer so that you can modify the parameters in a simple way and then reload them up to the store. This can be done the following way: Go to System -> Import/Export -> Dataflow – Profiles and select the Export All Products option.

You need to define the online store where you wish to import the products under Profile Information (logically, this store must be the same where the sample product was created). Under the Data Transfer drop down menu select Local/Remote Server and make sure that CSV is selected with the format.

Next, save the profile and then export all the products again and click the button Run Profile in Popup. Thus you will get a file “export_all_products.csv” (whose name you can change if you wish), which is saved in Magento’s installation directory. You can download this file to your computer with the help of an FTP client, containing the columns with the previously defined attributes. If you open the file in a spreadsheet program (e.g. Microsoft Excel), you can easily fill out the fields and thus you can add the products you want to import. You need to add the category IDs here as well, make sure you place the proper products in the correct categories.

Finished? Now go to System -> Import/Export -> Dataflow – Profiles -> Import All Products and select Upload File and then choose the modified .csv file. After the upload, go to Import All Products again and select Run Profile in Popup and then click the uploaded file in the dropdown menu. Now all you have to do is check the product list to see if the upload has been successful.


3. Using Magento Mass Importer, aka Magmi

If you want to have a clear and easy-to-use solution with several other options, the free Magmi application may be the answer.  This is basically an external user platform which offers you a number of import/export functions that are originally not included in the Magento system.


Magmi import for Magento


Based on our experience, it is simpler to import products with the use of Magmi, however, you will still need to create the necessary .csv files. So the database needs to be created by you, but with Magmi it can be easier to upload it to your system. The only initial drawback may be that you have to learn how to use a new admin area, but before you start worrying, it is not such a big deal.

There is a lot of documentation which guides you through the process step by step, even a dedicated Wiki page has been set up to help users get every bit of information they need. Its huge advantage is that such tasks as mass import of images or automatic category creation with the importing process can be accomplished.


4. Paid Magento extensions

The “capabilities” of Magento can be broadened by buying and adding special extensions to it. Most users employ the Magmi application because it has a great variety of functions and can be downloaded for free. But if you need a special feature, you can find extensions fulfilling your requirements.


Magento Store Manager


It is good to know that such extensions cost approx. USD50-100 per extension, so if you want to have some custom extensions to maximize efficiency, obviously, you will need to spend a certain amount of money and it is wise to allocate a portion of your budget to such developments for the future.


tips Useful Tips:


Appropriate Software

As you could see above, in the case of Magento, one of the major challenges is to make the basic templates that you can later use for importing the products. If you do not pay special attention to this process, problems with compatibility may arise even because of some minor missing attributes. Therefore the template should be created within the online store itself and thus the system will be able to read it afterwards. This file needs to be exported to your computer and edited in such a way that it contains the detailed information of every product you want to offer.

To Magento, however, it is very important what kind of program you use to manage the .csv files. We have seen that Excel is not suitable to handle such tasks flawlessly, so we recommend using other software. You can find the free-to-download Calc program in the Libre Office software package, which is easy to use for Excel users and has all the functions you need for your files.

Special Characters

When saving CSV files, use UTF-8 formatting. It is probably the safest way to avoid any problems in the future, but it is still not a 100% problem-free solution. You have to be careful with special characters, for example. If a product attribute contains special characters that the given format is incompatible with, it may cause difficulties when importing.

The error usually manifests in the way that the product field is left empty. If you really need to use special characters, e.g. line breaks or commas, place the content of the field between quotation marks (see examples below where we describe attributes), thus it will likely appear properly. This mainly applies to product descriptions, with the rest of the attributes it is better not to use special characters at all.

Put the images you would like to import in the /media/import directory

The system needs to process every single image during importing. Upload the raw images to the /media/import directory before importing the product database. It is also crucial how you set the names of the images. In order to avoid unpleasant surprises, make sure to set the same names and extensions as the table includes.

Do not change the columns of the table

The essence of the process mentioned above is to use the same attributes that the engine of your ecommerce store can recognize and handle. If you change these even just a little while editing the file, it may cause unforeseen errors. Most likely the import process will fail.

The columns (/attributes) that you must set

We have already described thoroughly what compatibility problems you may encounter if you upload your products in an inappropriate format. Now let us see which columns or attributes you definitely need to include in your source .csv file.

  • websites – the website entity which has a “base” value by default.
  • store – the online store assigned to the product, has an “admin” value by default.
  • type – the type of the product.
  • attribute_set – default, or another group of attributes, you can check this in the admin panel on the following page: Catalog -> Attributes -> Manage Attributes
  • tax_class_id – the tax type assigned to the product, you can find its features in the admin panel at Sales -> Tax
  • status – the status of the product, its value can either be “Enabled” or “Disabled”.
  • weight – the weight of the product; if you do not need it, simply type 1 here.
  • sku – the unique identifier of the product.
  • name – the name of the product.
  • price – the price of the product.
  • description – the detailed description of the product, which will appear on the product page.
  • short_description – the short description of the product, it can appear in different places (e.g. on search result pages) depending on the settings.
  • visibility – the visibility of the product, it may have values such as “Not Visible Individually”, “Catalog, Search”, “Catalog” and “Search”.
  • category_ids – category identifiers (ID); we have already mentioned it.
  • qty – the quantity of the product.
  • is_in_stock – the inventory value assigned to the product, where 1 means that the product is in stock and 0 that it is not. Those products that are not in stock are not shown on the main page of the online store and cannot be purchased either.
  • image, small_image, thumbnail – here we can define the paths and file names of the images assigned to the products. You need to know that the system makes a difference to letter case, i.e. small and capital letters. You should avoid using spaces all together. You can use the same larger image file for displaying the three different  image types (image, small_image, thumbnail), the system will automatically resize it.


Potential errors

Magento import errors

“Image does not exist”

You may see this message if you have given the names of the image files in the .csv file inappropriately. You should check the names again carefully not to have any problematic characters in them.

Products fail to appear

The imported products do not appear on the main page if you do not properly define certain attributes. Properties that are needed for making images appear:

  • websites = base
  • store = admin
  • status = Enabled
  • visibility = Catalog, Search
  • category_ids = # (it must be an existing category identifier!)
  • qty > 1
  • is_in_stock = 1



The basic functions of the Magento system give you the opportunity to create very useful properties such as products, attributes, product groups, and other entities. However, successful importing from pre-set databases may be a challenge when relying only on built-in options.

Thanks to the previously described methods and Magento’s flexible system, with the use of .csv files you can easily upload databases containing even tens of thousands of products in a way that the software can manage them without any problem. Consequently, you save a lot of time as you do not have to upload every single product or manually set every parameter. Just think of how much it would cost you to get such a lengthy work process done. Also, this means that there is a simpler way to successfully migrate databases to Magento from other systems.

Having said all these, if you still feel you need any further assistance, we are happy to offer you our Magento Project Rescue service which helps you solve basically any problem that you experience at the moment with your Magento ecommerce store.




Magento vs. Shopify – Which should you choose? Here’s some help.

Regarding global popularity, let us take a look at what Google Trends show.

Interest towards Magento started soaring in 2009 and it has brought constantly high search numbers since 2011.


magento vs shopify google trends


On the other hand, Shopify, as a Software as a Service (SaaS) ecommerce platform, has been growing remarkably over the past year or so, now (mid 2017) serving over 500,000 merchants globally.

Shopify’s curve started to more considerably increase only in 2013 and it became half as strong in terms of the searches by 2015.

In February 2017 Shopify managed to surpass Magento, and since then it has been gaining better results in terms of search volume.

Taking a look at the regions of the world, Shopify (red) now seems to be more popular in the English speaking countries (except for the UK) and Magento (blue) is preferred by the rest of the world.


magento vs shopify regions


However, popularity by itself does not mean anything, it does not show anything about which system is better for you personally. Therefore, it is worth taking a close look at which platform is the more optimal choice for different user groups.

Next, we will go through the following aspects, talking over everything thoroughly, so that by the time you finish reading this article, you will know which platform is better for you:


  • Pricing
  • Support
  • Functions & Features
  • Managing your store
  • Marketing your store
  • Design & Branding
  • Security
  • Extensions & Applications
  • Recent Versions
  • Multi-vendor Marketplace
  • Dropshipping
  • Big Brands
  • Magento Commerce vs. Shopify Plus
  • Shopify’s aggressive attack against Magento


Let’s get started!




It is difficult to compare the pricing of the two systems as they operate in different schemes.

Magento Open Source (formerly Community Edition, CE) can be freely downloaded and thanks to the open-source code it can even be further developed or modified. This, however, is not to be done by the average user, but by professional developers.

In broad terms, we can say that creating a “normal” Magento store fulfilling the needs of a mid sized ecommerce business costs $10,000-$40,000. Of course, such a development price greatly depends on whether you hire a freelancer or an agency and where, in which country they are based.

For more information on Magento pricing, please read our detailed article in which we describe every aspect of the costs of developing a Magento store.

Magento Enterprise Edition and Magento Enterprise Cloud Edition (hosted using AWS infrastructure), now under the name Magento Commerce, offer greater possibilities and are suitable for building a stronger online store, will cost you money, depending on your annual revenue:

Annual Gross Sales Revenue Minimum Cost/Year (EE) Minimum Cost/Year (EE Cloud)
Up to $1M $22,000 $40,000
$1M–$5M $32,000 $55,000
$5M–$10M $49,000 $80,000
$10M–$25M $75,000 $190,000
$25M–$50M $125,000 $190,000

Please note: according to Magento, the combined hosting and licensing cost is negotiable.


On top of this, you may need to calculate with the costs of installation, extensions and additional developments, support, web design, and hosting (either on premise or cloud).

Extensions can significantly increase functionality, thus pay off even in the short run. Initial installation as well as extension installations need experienced Magento developers, support and hosting need devops capacities.

Still, a major part of the large enterprise market segment regards Magento as the most cost-effective ecommerce system, even including paid extensions.


It means: Even though there are considerable costs of running a complex Magento store, it may be well worth investing in it, since with advanced performance and high user experience standards, specifically tailored to your business needs, it can generate such levels of revenue that no other platform could.


Magento Open Source (Community Edition) offers for free basically the same thing that Shopify provides for a seemingly unrealistically high price. However, in case of Magento, you have to take into account that you will need a dedicated hosting service.

Also, CE by itself, lacks the unique design, tailor-made for a specific corporate image, and has no pre-set, country-specific individual configuration (e.g. delivery and payment settings, system e-mails, confirmations depending on language, specific functionalities, and so on).

That is because Magento is mainly the solution for the professionals. It may be an excellent system for anyone, however, it is typically the platform of large companies, of those operating several online stores simultaneously, of those supplying a huge audience with thousands or tens of thousands of products.

To be able to use Magento, you have to have a budget that makes it possible for you to continuously finance the subsequent modifications and optimize according to the feedback and the changing market needs.

This, concerning an already operating store that generates regular monthly revenue and is introduced to the market, in case of a company that has been operating for years and is generating stable turnover and is growing, means approximately a monthly development fee of 40-60 hours.

Plenty of optimization regarding the customer interface and also further functional developments can be carried out within this monthly time frame, all for the satisfaction of the customers – thereby resulting in the realization of extra income.

Hosting Magento will also imply a monthly fee, but a considerably lower one, and in return you will get a stable background infrastructure that can cope with higher traffic.

And if you want to take advantage of the possibilities offered by the system, if you want to grow, to evolve, you will need this. All in all, this is still the cheaper solution. It has to be emphasized though that you will have to choose a company that has enough experience in this field.

When you are looking for a hosting provider for a Magento system, you should make sure that they run already operating stores, that they can present Magento references that continuously operate under increased traffic, which justifies that they are capable of adequate optimization both in terms of development and hosting.


Shopify works in a subscription system.

There are three subscription plans:

Basic Shopify Shopify Advanced Shopify
$29/month $79/month $299/month


Since Shopify is SaaS, these service fees include maintenance, hosting, security, support, and also bandwidth.

You also need to calculate with credit card costs (2.9%–2.4%+30¢, online rates) and transaction fees (2%–0.5%) if you use external payment gateways (other than Shopify Payments).

The enterprise version of Shopify, Shopify Plus, claims to offer an enterprise ecommerce platform for a fraction of traditional enterprise costs.

Shopify Plus’ pricing plans can vary a lot depending on your selected features and resources.

Monthly fees start from around $2,000 and increase as you want to upgrade to more extensive plans having additional features (i.e. specialized apps, API resources).




Comparison of customer support is quite simple: Shopify provides it, Magento does not.

To put it more precisely: in the case of Magento, support is given by the huge, committed community that continuously develops, tests and improves the open-source code system.

If you trust this community with your problem, you may get quite valuable answers that will certainly help to find the solution.

Or, you can turn to such professional development firms that deal specifically with Magento – this, by all means, provides a sounder technical background.

You should also make sure that in case the hosting company is also developing Magento, it is done in-house and is not outsourced to a subcontractor.

If anyone feels that there will not be problems with their online store, or feels their web-developer veins pulsating enough so that they think they can solve the problems themselves, Magento is the right choice for them.

But if one does not have the appropriate person for this job, Shopify means a simpler solution with 24/7 support. (What does enough preparedness mean in the case of Magento? Well, at least senior PHP programmer level with the knowledge of Zend Framework, if you haven’t dealt with Magento previously.)


Functions, features and options that Magento and Shopify have

The two systems are quite close to each other in this field.

Regarding the basic functions of an ecommerce store, the two ecommerce platforms can be considered practically equal, the only difference is that in order to exploit all the possibilities of Shopify, you need to pay a higher monthly fee. You have that access for free in case of Magento CE.

The competition in this category is determined by the type of the software.

Shopify is a commercial edition software that comes with a limited number of extensions to choose from.

These are restricted applications made by the developers, which ensure great features – it is unlikely though that they can properly satisfy your every single need.


shopify features


Magento is an open-source code software.

This means that anyone can freely modify or develop it – and loads of people do that.

There’s a great number of features, e.g. marketing & SEO tools, responsive design, various payment, checkout, order management, and mobile commerce solutions, which make Magento probably the most sophisticated ecommerce platform in the world.


magento features list


You can also find an amazing amount of extensions on the internet – both free and paid – developed by a third party.

Errors are continuously being looked for and corrected and you can much more easily find something among the several thousand of tools that will cover exactly what you need.

If you want to operate a simple, start-up ecommerce store, you can try Shopify Lite or Basic Shopify to measure up your market, while having only some restricted features. Advanced Shopify and Shopify Plus is for the bigger players with much more possibilities.


Magento on the other hand gives you total freedom. You can fully customize your store as you wish. For development, installation of extensions, and managed hosting you will likely need professional assistance, however.


Store Management


Magento is a significantly more complex system, but its administrative interface is not hard to handle and it ensures loads of possibilities to customize everything.


magento 2 admin dashboard


Shopify, in general, can be more easily installed and then handled on a day to day basis, this is however due to the limited number of possibilities.

Magento CE is free and you can include an unlimited number of products in the system from scratch – provided you have enough background capacity, and in case of a uniquely designed and functioned store it is professionally optimized (for details, see the section on infrastructure).

Magento is also the leader in allowing you to freely shape the products, their appearance, to assign any kind of categories and attributes to them thus fitting the framework system itself to your products.



Marketing & Promotion – Magento or Shopify gives you more?


Shopify is again falling behind in this field, as the system does not support coupons or gift cards in the starter pack, while Magento does.

Moreover, even without installing extensions in Magento, you have loads of chances to intervene in the purchasing process, to offer cross-sell and up-sell opportunities to the users, to make product comparisons, and so on.

In Magento you can set various promotional activities in lots of different ways.

You can specify, for example, to give a discount on products having a certain characteristic or being in a given category.


magento2 cart price rules


You can also make settings

  • to get a discount from the whole purchase amount if a certain product is added to the cart,
  • to make shipping cheaper at the first purchase,
  • or even to get one product for free if three are bought.


You can play with the settings just as if you were creating promotional boards or signs in your brick-and-mortar shop.

You can give discounts in the form of free products, presents, percentage – the examples could be listed all day long, but nothing compares to personal experience.

It is certain that you will not find a system other than Magento that better supports coupons, sales, and promotions, which can greatly boost sales.

And you can handle that even without the assistance of a developer.


Design & Branding


Both systems can be customized, a plethora of free templates are available so you can create and enhance the image and prestige of your online store quite easily.


shopify themes



It is an important aspect that both platforms are responsive, so they will appear on smartphones just as nicely and user-friendly as on desktop computers.

Aesthetically, the free themes offered by Shopify perform a little better, but their advantage shows rather in their simpler installation.

Furthermore, Shopify themes can be customized only in a very limited way, like changing colors, some design elements, and font types and sizes.

Because of the fundamentally simpler user interface of Shopify, its appearance is easier to shape than that of Magento, even though a lot of free and paid templates are available for Magento as well.

Magento 2 now offers drag&drop layouting and design so that you, without any coding knowledge, can put together a nice looking website quite fast.


magento themes magento connect




Tens of thousands of websites are hacked each day. If your ecommerce store ever falls victim to an attack, you’ll probably suffer grave losses. The risk factor is extremely high here, so there’s no question that security is a very critical aspect of your online business, especially because you handle customer financial data day by day.

For Magento, security patches are issued on a continuous basis which need to be installed as soon as possible to give your website maximum protection.




Shopify, being an SaaS, takes care of security without the need of any action from the clients’ part. That’s quite convenient.

Furthermore, they communicate that they use the latest security measures for customer data protection. Shopify is in full compliance with the PCI DSS (Payment Card Industry Data Security Standard), at Level 1, which means it meets the highest security requirements.


shopify security


Extensions and Apps


There is a good number of add-ons and extensions for both Magento and Shopify.

For your Magento store, the official sites of Magento Connect and Magento Marketplace are recommended for finding secure and checked extensions.

Currently, there are over 2,000 extensions in the Shopify App Store.

On the Magento Connect site there are nearly 10,000 extensions out of which more than 1,500 have been developed for Magento 2.

So you have lots of choices in different categories, such as Marketing, Payments, Sales, or Social Media, and these numbers are rising steeply for both ecommerce platforms.

Shopify offers a simpler installation process, while you’ll probably need an expert to help in adding extensions to your Magento store.


Current versions


There are no versions associated with the desktop version of Shopify. The Shopify mobile app, however, allowing you to create products, manage inventory, and fulfill orders, does have versions, at the moment (Aug. 2017) it’s 6.2.1.




All recent Magento Community Edition 2.x and 1.x (free) versions and patches are available at the official Magento Tech Resources site.


If you want to try demo versions of Magento 1 and Magento 2 in terms of both frontend and admin features, you can take a look here:


tips Try Magento Demo Stores:

Check Magento 1 Demo Store here

Check Magento 2 Demo Store here

Access data:

User name: admin

Password: admin123456


Multi-vendor solutions


In the case of Magento, there are at least 5 different, quite sophisticated, premium (paid) extensions you can buy with which you can create your own multi-vendor solution for your ecommerce business.

If you want to have a high quality, “general” multi-vendor extension with lots of features and you don’t need any custom developments, we recommend Marketplace Multi Vendor Extension by CreativeMinds.

For Shopify we’d choose Multi Vendor Marketplace or Marketplace for turning our store into a multi-vendor marketplace.


Dropshipping for Shopify and Magento


Today, the dropshipping business model is more and more popular.

There is a good number of advantages, such as low investment (since you don’t have to keep goods in stock at all), diversity (you can sell a wide range of products) and workload optimization (you don’t necessarily work a lot more if your order numbers get significantly higher).

Shopify solidly supports dropshipping. They provide you with guides and excellent case studies about how to start and run a dropshipping business.

You can also add the Oberlo app to your store which makes it easy to dropship your selected products around the world. You can use it for free with the main features up to 50 orders a month. Unlimited orders and all features come at a monthly price of $79.90.

For Magento you there is a bunch of solutions too, e.g. on Magento Connect.

Before choosing one, it’s worth taking a look at the popularity scores and reviews!


Now let us give you a little help with finding your desired products and dropshipping suppliers.

Here are some sites where you can browse among well-known and reliable dropshipping partners:


Top brands that use Shoplify


Shopify was not designed for large companies at first. However, as market needs were studied more in depth and the software was developed further, the company came out with Shopify Plus in February 2017, their enterprise level ecommerce platform.

Nowadays there are some big names that either use the “normal” platform for their products or one of their sub-divisions, or use Shopify Plus to be able to offer high a quality customer experience and enjoy a wide range of features.

Here are some well-known brands using Shopify:

  • Budweiser (beverages)
  • The Economist (media)
  • Tesla Motors (automotive & energy)
  • Red Bull (beverages)
  • Kylie Cosmetics
  • The New York Stock Exchange (finances)
  • Lollapalooza (festival merchandise)


big brands using shopify


Famous brands that use Magento


Looking at the other side, we find that Ford Motor Co. (accessories), Olympus, Bulgari, and Monin, to name a few, have built their ecommerce sites on Magento.


brands magento


No matter whether B2C or B2B solutions are needed in different industries, Magento is capable of providing merchants all around the world with custom features, tools, and services to help them achieve their business objectives.


Some other popular brands having Magento ecommerce websites:

  • Sana Safinaz (Fashion)
  • Loake (Shoes)
  • Bauhaus (Home Improvement)
  • Devlyn (Eyewear)
  • Tom Dixon (Furniture)
  • Sass & Bide (Fashion)
  • Mr Price (Fashion)
  • Liebherr (Machinery)
  • Photospecialist (Photo Equipment)
  • Heidelberg (Printing)


Magento Commerce vs. Shopify Plus


There is a good number of merchants out there who started small, but now have grown remarkably to become significant players. So it seems that the enterprise segment has an increasingly important role on the market.

Therefore the major ecommerce system developers either focus more on enhancing and fine tuning their existing platforms or creating their dedicated enterprise solutions, if they don’t have one.


shopify plus vs magento commerce


Such was the case with Shopify when they launched Shopify Plus in February, 2017. Having a great success with their subscription based plans, they also turned in the direction of offering more customized services to large clients, naturally, for a much higher amount of money.

Shopify Plus is also a SaaS, but you’ll have a lot more power added to it than a standard Shopify plan.

Its main advantage is that you still don’t have to worry about hosting, bugs, updates, security, bandwidth, or file storage. You, as a company, can focus more on your sales and marketing tactics, and also on your product innovation strategy.

Predictable pricing is another advantage. Monthly plans start from approx. $2,000 and increase as you want more “extras”, like customizations (e.g. exclusive APIs), advanced infrastructure, etc. But the costs will stay the same month by month based on your initial plan.

As for support, being a Shopify Plus client, you’ll have a dedicated account manager helping you solve any issue that may arise.

You also need to know that, despite featuring blogging tools, Shopify Plus is not the best platform for content management. Therefore many Shopify stores have their blog pages on a subdomain.

Another disadvantage is backend limitations for customizations. Backend changes and integrations must be in compliance with Shopify’s API, and you do not have FTP or database access either.

On the other hand, it’s worth examining your true need for customization. Maybe it’s enough to customize the most important, rather technical or practical elements of your store? Is a totally unique storefront design that important? This article on Shopify Plus customization raises some interesting points to consider.

Finally, you must take the risk factor into consideration, which is depending on Shopify’s business health. I.e. if, for any reason, Shopify may close down, you’ll need to migrate to a new platform and all your data will have to be exported by Shopify for you. So there is some risk there.


magento commerce vs shopify plus


Now let’s talk about Magento Commerce (formerly Magento Enterprise Cloud).

At the beginning of this article, we already mentioned the pricing information for Magento Commerce, one of the most complex and specialized cloud-based ecommerce systems in the world today.

At first, we can see that it’s more expensive. The annual license fee up to $1 million revenue divided by 12 is $3,300 and it goes up as your sales grow.

However, you can still find it beneficial to implement Magento Commerce since it has a good number of advantages and features that your business truly needs.

First, you have predictable prices as well: you pay the annual license fee, which includes cloud hosting, support round the clock and also security and development services. This allows you to have a fully customized store meeting all your expectations both in terms of backend and frontend.

You also have full access to your database and you can also have additional developments and integrations carried out by your chosen and trusted Magento development team – either on an in-house or external agency level.

But what you really get with Magento Commerce is freedom. You are free to go in whatever direction you wish with your ecommerce business.

Speaking about the risk factors, should Magento as a company close down, you still have the possibility to carry on with your chosen development team providing you with the services that are needed to further manage and run your store.

And in case you would like to migrate to another platform, you’ll be easily able to transfer your data which you already have full access to.


Shopify’s aggressive attack against Magento


You may have come across several of Shopify’s ads, case studies and posts talking about the “superiority” of Shopify over Magento.

Shopify launched a frontal attack against Magento. They highlight all the benefits of their own system and all the vulnerabilities of Magento, trying to convince hesitating or “burnt before” merchants to switch to Shopify.

For example, in a series of articles at Shopify Plus, Aaron Orendorff mentions real-life cases in which some merchants got very dissatisfied with Magento and then he offers Shopify Plus as a good option to migrate to.

In addition, employing a more aggressive approach, Shopify sent out cold emails to Magento merchants making them worry about the future of their Magento 1.x store.

Kalen Jordan, a Magento enthusiast, commented on this email campaign on YouTube.

"Some of the facts in here were little bit twisted in one direction."Kalen Jordan


You can see his video here:



All in all, we too feel that Shopify’s marketing campaign is rather manipulative and not entirely fact-based – built on assumptions, exaggerations, and some carefully selected negative client experiences with Magento.




Shopify is a simpler choice in every respect. Simpler, because it offers less possibilities and this is not a problem for many people.

For starters, who want to sell a few products of a small enterprise, it will not be a problem that there are only a few possibilities for customization (with cheaper plans) as they will simply not need that.

Magento is the more complex system.

On one hand, it offers a lot more features: you can set every small detail yourself from the attributes of the products to the details of the appearance. You have more opportunities to enrich the system with extensions, corrections – at the same time, there is no support and no hosting, you are on your own in this regard.

If one needs more than the basic Magento system, they will have to spend on development, too, and hosting is a minuscule expenditure compared to that. On the other hand, Magento is such a system whose possibilities you can totally exploit and you may be able to do everything yourself only if you are a specialist in web programming (both in front-end and back-end development) or if you employ someone who is. In addition, you have to be aware that the operation of Magento requires that you are able to spend on it continuously.

You have to keep up with the needs of the market and the customers and you will always have to optimize your system accordingly. You will have to run A/B tests on your customer interface and adapt the purchasing process, the design, the promotions and so on according to the appropriate lessons learned. This will demand significant developments, even 40-60 hours per month in case of a major ecommerce store.

Of course, this is worth the investment even in the short run as it facilitates effective sales. Magento is a great system for growing medium-sized enterprises wishing to develop and for big companies already in the game, especially because they either have the funds for the infrastructure and the expertise or the conditions are already given. However, for the starters Shopify offers a really simple, out-of-the-box solution for which no deeper knowledge or longer learning process is needed and it is not even necessary that you acquire a hosting service yourself.

As we laid it down at the beginning, it is not the abilities of the two systems that determine which is the better – since they do not play in the same league or at least the overlap is small. It is simply the target audience which is different and the choice depends mainly on you defining which category you belong to.


10 useful ways to harness correctly the possibilities of Magento

In the following paragraphs I will write about the errors that we may encounter in blocks, layout xmls, installer scripts and template files (.phtml) as well as code parts that still lack some structural or other improvements even though the code has already been delivered. The examples to be shown later are not the only ways for tackling these issues, they represent only one approach to each to solve a given problem. I will detail the following in this article:

  • Array key value pairs in Magento
  • Examining object values in a condition statement (informative values)
  • Using block types in Magento
  • Code repetition in phtml
  • Unavoidable queries (how to handle them)
  • Collection separation at display
  • Exceptions (erroneous runs) of Installer Scripts and how to handle them
  • Interrelated and sub collections
  • Preparation of Module for multi-language use
  • Using Helpers


Array key value pairs in Magento

Even if you are sure that an array needs a specific key, this may change over time, so it is better not to have such a defined reference in the code:

$value = $data['key'];

One of the most deeply set parent class of nearly all Magento objects is Varien_Object. Through its magic-methods you can easily check these values. The array values passed over in the constructor of this class can be obtained by calling the $obj->getData(‘key’) method or, staying with this example, calling the $obj->getKey() method, which returns with NULL if the value assigned to the key is missing.

$objData = new Varien_Object($data);
$value = $objData->getKey(); //same as $objData->getData('key');

Then you can enter the required fork with an if(!is_null($value)){…} or with an if(!empty($value)){…} analysis in which the value is not NULL.

Examining object values in a condition statement (informative value)

If ($objData->getFlag() == 1) {/*...*/}

The value is easily identified any time by the developer, but after a few months or when involving a new developer, it becomes just a number without meaning. In contrast to this, in the example below, it is clear what the informative variable/value and constant values refer to and you also see which module they are linked to.

If ($objData->getFlag() == Module_Helper_Data::FLAG_STATUS_ENABLED) {/*...*/}

It is even better if in such a case you store these elements, statuses in the example, in the Model and in the table that belongs to it. During the assessment/evaluation process you check these by the Module_Helper_Data::getEnabledStatusId() call using the helper. Both solutions are correct, the point is to get the source and meaning of the analysed value.

How to utilize Block types in Magento

Magento comprises far fewer Block types than html elements, but it is still worth utilizing them. It happens quite often that some code parts that were originally “meant to be present in one place only”, are placed at least in 3-4 locations in the end, and “locked” in a phtml, like this:

<select name="my_select" id="mySelect">
    <?php foreach ($items as $item): ?>
        <option value="<?php echo $item->getId() ?>"><?php echo $item->getName() ?></option>
    <?php endforeach; ?>

For example, such a Block is Select, to be found at app\code\core\Mage\Core\Block\Html\Select.php – With the help of its methods, a list can be parameterized, which can be displayed in several locations and shows better in the source:

    <reference name="content">
        <block type="aion_module/block_type" name="aion_module_block_type" as="blockalias">
            <block type="core/html_select" name="selectchild" />

You also have the possibility to set the parameters within the layout and also through the method call using the reference Block, within the method itself. We are looking at this option now. Create a getSomeSelectHtml method within the Block that you refer to as reference where you prepare Select for rendering/output:

public function getSomeSelectHtml()
    $select = $this->getChild('selectchild');
            'id' => 'frontend-id',
            'class' => 'frontend-class-one frontend-class-two',
    //select upload with options $select->setOptions() || $select->addOption()
    return $select->toHtml();

when finished, you only need to get the list displayed in the phtml file by calling echo $this->getSomeSelectHtml();

Code repetition in phtml

Sometimes you need to extend an existing function, which already has a template file. It is recommended to create a new template file, even if there is already an if-else, a switch-case or another template file.

Switch ($mode):
    Case 'list':
        Foreach ($entities as $entity): ?>
            <div class="dsadsa"><a href="..."></a><!--...--></div>
        <?php Endforeach;
    Case 'grid':
        Foreach ($entities as $entity): ?>
            <div class="dsadsa"><a href="..."></a><!--...--></div>
        <?php Endforeach;

These codes should be put in a higher-level/parent Block where you call the appropriate type based on the “if” or “switch” element. It is a simpler method because many times the same html elements are present at these forks, containing additional forks. Organizing these into lower-level Blocks, you get a nice structure where a display modification can be done in one location, but affects every related part of the page. Additionally, it is also useful for front-end developers and the code is clearer this way too.

<block type="something/list" name="something.list">
    <block type="list/grid" name="gridList">
        <block type="list/item" name="gridListItem"/>
    <block type="list/row" name="rowList">
        <block type="list/item" name="rowListItem"/>
If ($mode == Module_Helper_Data::MODE_LIST) {
    $block->getChildHtml('rowList'); //amin belül még az item-et is getChildHtml()-el kérjük le
} else if ($mode == Module_Helper_Data::MODE_GRID) {


Unavoidable queries (how to handle them)

In some non-ideal cases, it may happen that due to performance or other issues, under heavy pressure, you must run direct (not collection related) database queries. This is a “necessary crime” that has its own required form. Magento provides the possibility to modify an existing Collection Select and also to create a new, custom query. In both cases, the class to be returned will be Varien_Db_Select by default, which you can continue working on with further method calls.

[code]$results = $conn->fetchAll("SELECT *, DATE_ADD( tn.`created_at` , INTERVAL tn.`duration_days` * 0.9 * 24 * 60 MINUTE ) as end_date FROM `tablename` as tn INNER JOIN `anothertablename` as atn ON (tn.atn_id = WHERE tn.`somecolumn` = 1 GROUP BY atn.`groupcolumn`");[/code]

The above example is a very short and simple query, still it is not really clear and thus needs more time to comprehend for a developer who sees it for the first time. So let’s change its form:

[code]//in the installer you can get the connection object like this $this>getConnection();
$conn = $collection->getConnection();
$select = $conn->select()
        array('tn' => 'tablename'),
            'end_date' => new Zend_Db_Expr('DATE_ADD( tn.`created_at` , INTERVAL tn.`duration_days` * 0.9 * 24 * 60 MINUTE )')
        array('atn' => 'anothertablename'),'tn.atn_id =','*'
        'tn.`somecolumn` = ?',1

It is now much clearer. Now you have Select, it is time to call the necessary records. The simplest way to do that is $results = $conn->fetchAll($select); which only needs to be iterated.

Collection separation at display

There can be elements with different statuses in a single table. This is nothing new, and it is also known that there are cases where either A-status elements or B-status elements are displayed only on a page. However, these should be filtered on a collection basis, and not in a cycle in the Block or in the template file.

$entities = Mage::getResourceModel('module/some_collection');
$typesA = array();
$typesB = array();
foreach ($entities as $entity):
    if ($entity->getStatus() == 1 || $entity->getStatus() == 2):
        $typesA[] = $entity;
        $typesB[] = $entity;

If you divide a collection in a cycle into different parts, the result (allocated to different pages) of the things that you display on a page, can be a first page where you tell the user that the B-status element is not available, and then there is a 2nd or 3rd page where you see N number of B-status elements. Additionally, the limit is calculated for the whole collection and not for statuses, so the distribution of the elements within the groups will not be even.

//filtered for status, both collections limited to 10
$A = $this->getItemsToStatusA(10); 
$B = $this->getItemsToStatusB(10); 

foreach ($A as $item) {/*...*/}
foreach ($B as $item) {/*...*/}


Exceptions (erroneous runs) of Installer Scripts and how to handle them

In the case of installers, you should always prepare the script for handling errors that may arise. There can only be a version upgrade if everything is solved which is defined in the present version. This is an important point because sometimes it is not possible with all the installers to check every single attribute or element that were added by the previous installer. And it is not your task to check the work of others.

    //do what you have to do
} catch(Exception $e){
$installer->endSetup(); //this method will upgrade the version number

In my opinion, the simplest way to inspect the run of the installer script presented above is to check the version number of the module. This naturally entails that the script upgrades the version of the module only after a totally successful run.

if(Mage::getConfig()->getModuleConfig("Package_MyModule")->version == '1.5.3'){
        //do what you have to do
        $installer->endSetup(); //this method will upgrade the version number
    } catch(Exception $e){

This method, namely letting the present version be upgraded only if there has been a flawless run, also helps you avoid upgrading the version unnecessarily if our installer has faults. Consequently, other installers, e.g. data installers, which do not inspect if a given cms/page or cms/block exists already or not, are not run repeatedly.

Interrelated and sub collections

In the case of sub collection (parent-child) relations, the database queries inside the cycle are much slower. If possible, try to use the resources with fewer queries and more targeted filtering.

$mainCollection = Mage::getModel('module/main')->getCollection()
    ->addFieldToFilter('field', array('in', array('value1', 'value2', 'valueN')));

foreach ($mainCollection as $mainCollectionItem) {
    $subCollection = Mage::getModel('module/sub')->getCollection()
        ->addFieldToFilter('parent', $mainCollectionItem->getSomeField());
    foreach ($subCollection as $subItem) {

The above example is more demanding in terms of time and performance, it is better to call the collection beforehand and iterating through the items. The collections offer the possibility to return such elements (they already hold) that are attached to a given field. It is also possible to get all the values of the given fields of a collection, with which you can get the second collection and so on, without using a cycle.

$mainCollection = Mage::getResourceModel('module/main_collection')
    ->addFieldToFilter('field', array('in', array('value1', 'value2', 'valueN')));

$subCollection = Mage::getResourceModel('module/sub_collection')
    ->addFieldToFilter('parent', array('in'=>$mainCollection->getColumnValues('some_field')));

foreach ($mainCollection as $mainCollectionItem) {
    $mainSubCollection = $subCollection->getItemsByColumnValue(
        'parent', $mainCollectionItem->getColumnValues('some_field')
    foreach ($mainSubCollection as $subItem) {

As you can see in this example, you should also pay attention to the fact that while in the first case you can save all the item changes with a $subCollection->save(); call at the end, in the second case you cannot call a method since $subCollection->getItemsByColumnValue(‘parent’, …) returns an array. So you need to call it in the cycle with the items one by one. $subItem->save();

Preparation of Module for multi-language use

There is no need for the module to handle all languages by default, it is enough to have the default language plus English if it is not your default language.

    <label class="main label" for="next_input">This is the label of the input</label>
        <input type="text" name="next_input" id="next_input" placeholder="Next input" />

It is just a minor extra effort to prepare your module for displaying texts in other languages, even if they are not yet available.

    <label class="main label" for="next_input"><?php echo $this->__('This is the label of the input'); ?></label>
    <input type="text" name="next_input" id="next_input" placeholder="<?php echo $this->__('Next input'); ?>" />

Besides, it is a plus that the texts linked to the module are prepared for additional languages, it is just a little work to make it possible for the users to rewrite the texts in their preferred language, so they can easily find the appropriate foreign expressions in the newly downloaded module.

Using Helpers

Helper calls can be included in Blocks, phtmls, Controllers or Models. The point is to put such data, constant values or methods in the Helper that are used frequently or do not belong to any specific category. Obtaining a config value can be such a call Mage::getStoreConfig(‘module_config_path’); or config flag Mage::getStoreConfigFlag(‘module_config_path’); Defining a value CONSTANT MODULE_ENABLED_STATUS = 2; (can also be placed in a module linked to it), or other minor modules to be used in several places can also be included here.


All in all, it can be said that if you thoughtfully make code developments, then you will get a fast, stable and clear code in which all other experts can find what they look for. Even if it is a more complex solution, it is still worth investing in in the long run. When the quality of the code is in question, just think about what you would say when you ask yourself the following questions like “What does the code look like at first sight?” or “Have I exploited all the possibilities that I knew about?” Thus you can make sure you will deliver a state-of-the-art code.



Magento vs. WooCommerce 2017 – How to make the smarter choice!

In this article we’re covering the following topics:


Similarities between Magento and WooCommerce Differences between Magento and WooCommerce Usability Costs Functions Analytics Design Themes Content management Security Extensions & Plugins Multi-vendor solutions Dropshipping Which is better? 7 summarizing questions


PODCAST – Listen to the audio version of the article here:



Before making a decision, the best thing to start with is to take a look at your own opportunities, plans and needs.  

  • Who are your target group?
  • How many products do you offer and what would be the traffic of your online store?
  • What kind of store do you have in mind?
  • Can you support your store with additional infrastructure, such as an ERP system?
  • Do you want to have a totally customized online store both in terms of design and functionality and are you willing to pay the extra cost for it?
  • Do you need a secure background provided by an experienced developer team or are you OK with a predefined, but limited set of functions that you can control yourself?


You need to answer many questions like these before you choose one over the other.

It is true that trying either system does not cost any money, but you may waste precious time while doing so, and switching later can be quite problematic after you have realized that you have made a bad decision.


So now let’s scan through several points that will help you make a wise decision and thus be able to sell your products successfully.


What are the similarities between Magento and WooCommerce?


One of the basic similarities is that both Magento and WooCommerce are open source systems, which means that they can be developed basically by anyone. In both cases a lot of professional developers work on these systems, their numbers are much more than it would be possible with a single company.

The huge benefit of an open source system is flexibility: if you need something that is not included by default, it is likely that someone has already programmed an extension for it, and if it is still not the case, you only have to find someone who will do this for you.

Each platform enjoys the support of a powerful community behind it.

WooCommerce is backed by the mass of WordPress users, while Magento is supported by a dedicated community that constantly develops and checks the code and its members also help each other to find new solutions and opportunities or extend the existing ones within the framework.

It is more useful than a “simple” support service because this way you get much more effective assistance. Instead of having a call centre employee looking up the manual on the other end of the line, you can ask your questions in forums that are read by thousands of users where you can get direct help from experts in the given topic.

More substantially, the two systems have some common features in terms of product management and communication.

Both systems allow you to upload and manage an infinite number of products in one place.

You can run a blog page on both platforms, which is of immense significance considering content marketing and SEO activities.

In Magento, you will need to install an extension for this, while WooCommerce, being WordPress-based, has it by default.

It is worth noting that many times a Store menu is created on the company’s WordPress homepage which has no Woo plugin. Clicking on the Store menu, the customer is redirected to the company’s online shop, e.g., which is a Magento-based store with identical design.

It can be seen that there are many similarities in general. Now let us take a look at the differences.


What are the differences between Magento and WooCommerce?


Magento vs WooCommerce




If you already use a WordPress-based website and you would like to create your online store within it, it is logical that you would choose WooCommerce.

It is simple to handle after you have got familiar with using WordPress and there are numerous video tutorials on the subject.

At the same time, the basics of Magento can be learnt quite easily.

A great number of video tutorials, documentations and a dedicated Wiki site help you to take the first steps and to avoid mistakes as a beginner.

The admin area is remarkably user friendly. The situation gets more complicated only when you start adding extensions to your online store that broaden the field of opportunities within the system framework.




TANSTAAFL (There Ain’t No Such Thing As A Free Lunch.)

If you want a system that completely fulfils your business needs and which can effectively support your flow of income, this notion is particularly true. Fundamentally, both systems are free (in Magento’s case it is the Community Edition).

You need to spend money on them only when you want to expand functionality. For both, you have the possibility to install either free or paid extensions, so there is no big difference in that sense.

If you would like to hire a developer, you will probably find a WooCommerce programmer more easily because it is WordPress-based.

Developing in Magento is more likely to cost more and because it is more robust, while installing custom developments it may “break” here and there, so it is definitely recommended that you choose a Magento developer company which applies strict quality control and a multiple testing processes.

If deadlines are tight, it is wise to assign more developers at the same time when complex functions are to be elaborated.

For this, however, broader infrastructure and capacity, as well as flawless work processes and dedicated project managers are required under one roof.

Sounds sophisticated? It is. Worth it? Most probably.

From a hosting perspective, however, Magento demands more.

WooCommerce can be run by an average hosting service (although, when speaking about several thousands of products and heavy traffic, it can be a challenge).

A Magento-based ecommerce store needs to have the company’s own server or, even better, it is well worth the money to use a cloud based system (we recommend our hosting services for international ecommerce or if heavy traffic is expected) or hiring a dedicated server.

At the same time, thanks to this, you will have a larger capacity at hand. This makes it possible that Magento can manage huge ecommerce networks or more online stores simultaneously due to its scalability.

This consequently requires a dedicated hosting service, with managed hosting, which has its price, but has all the qualities to offer flawless customer service and fully satisfying user experience.


Functions and possibilities


It is a must (at least theoretically) for an ecommerce platform to be able to handle an infinite number of products and to feature a virtual shopping cart.

No problem, both systems can do that.

It is also important, however, to what extent you can customize your product features and functions as well as the whole shopping process.

And this makes Magento the winner here.

Magento lets you exploit a whole bunch of up-sell and cross-sell opportunities, the shoppers can make comparisons between products and can narrow down their searches to find what they really want. One of Magento’s most tempting features is the possibility of narrowing down search results.

Developers mainly focus on special deals and coupons in WooCommerce. The narrowing down search results feature has also shown up here, but Magento is way ahead of it with its complex and versatile search solutions.


Magento Dashboard


And so far we have only talked about consumer benefits…


The “other side”, namely, the Magento admin area, offers a vast array of options that will blow the minds away of those e-merchants who like to fully customize and manage their product pages and features as well as processes based on customer activity.

We believe this applies to basically 100% of e-merchants having at least a little experience in online store management. You have an amazing number of options in the admin panel.


For example: You can define the attributes of your categories and products without limits. You can define attribute sets in Magento, so you can define for instance that the attribute set named “Car tyres” has “Diameter” and “Season” attributes. “Season” also has attributes from which the shopper can select “Summer”, “Winter” or “All-season” in his or her narrowed-down search. You can read more about it in this article.


Magento is a remarkably flexible ecommerce system in this respect, which is an enormous advantage because no matter what you sell (china plates, processors or tomatoes), the system can be nicely adjusted to the product characteristics.


A few words about analytics


In order to manage your online store successfully, you will need detailed statistical databases.

Google Analytics can be integrated with both platforms (in Magento it can also be extended with the Enhance Ecommerce application), so none of them falls short here.

Thanks to this, you will have a lot of information to help you to optimize your store. Additionally, Magento produces statistics on its own about the most viewed, most searched and most popular products.

A number of different sales reports can be created with it and exported in .csv format.

In the case of Magento, functions can be expanded almost without limit.

In the Magento Connect database you can find thousands of extensions (many of them are free), but it is advised to ask an expert to install them.

All things considered in this section, Magento wins by K.O. over WooCommerce.

WooComerce, as a simple WordPress plugin, offers extensions which are easy to use, but have more limitations.

It is obvious that a system which has been dedicated to e-commerce solutions from the start is in a different weight class than a general website engine originally developed to handle blogs, corporate pages, news sites etc. and then expanded with an ecommerce plugin. However, WooCommerce’s advantage over Magento is its state-of-the-art blogging system, to be described later.

Needless to say that if you want to build a more advanced online store, it is well worth the time, energy and money investing in a Magento development project.

It is no coincidence that global companies like Nike, Gant or Samsung use Magento.




Today it is a must that an ecommerce store has a responsive layout.

If it is not displayed perfectly on all devices, from smartphones to PCs, then you simply miss a significant proportion of your potential customers.

WooCommerce can be integrated with WordPress without a hassle, thus responsiveness is usually not a problem.

You can browse among a good number of themes, some are free, but most are paid themes. However, these are still cheaper than to hire frontend and backend developers and graphic artists to create a custom design for every page with a Magento project.

If you are new to ecommerce, it is wiser to invest first in WooCommerce, and then, when you start experiencing huge tides of customers flowing to your online store, switch over to Magento.

In this phase a crystal clear ecommerce model and an ERP (enterprise resource planning) / invoice processing / inventory management system should be implemented with which you will need to connect your Magento store.

Magento has been featuring a responsive design since 2014 (v1.9) and there are loads of free templates available for download, which can further be customized according to your expectations.




Many thousands of different free and paid themes are available for both Magento and WordPress (WooCommerce).

If you decide not to go for custom website development, but to purchase a theme, we recommend choosing a premium theme after studying reviews about it carefully.

For WooCommerce you can either check the official site or ThemeForest.

In the case of Magento, if you have a 1.x version store, you can browse Magento Connect.

For your Magento 2 store, first it’s worth checking out ThemeForest since there’s a lot more themes here at the moment than at Magento Marketplace.

It’s better to avoid free themes because they may contain hidden security backdoors or backlinks pointing to the website of the developer, which can harm your search engine ranking performance.


Content management


Magento is expressly a system for ecommerce purposes.

Therefore it performs way better than WooCommerce if a number of complex needs have to be satisfied, because WordPress was originally developed for providing content, presenting portfolios, creating corporate websites and news sites.

You can still find basic content creating and editing features in Magento, like starting a blog page, however, content management is a little more problematic.

It still holds true that you will find basically everything within both systems in one way or the other, but differences can be large or small depending on what settings you use, how you build up your system or what extensions you install.

For sending out newsletters, Magento is not a good choice. Although such a solution with basic functions has been programmed into Magento, you will not get very far with it.

There are some extensions for segmentation, but it is still much better to use a world-class e-mail marketing software like MailChimp or GetResponse.




We can hear a lot of stories about the vulnerability of WordPress (WooCommerce) sites.

Unfortunately, if you don’t take special care about protecting your WordPress website there’s a good chance that sooner or later it’ll get hacked.

It’s one of the most attacked type of platforms (e.g. cracking admin accesses by brute-force attacks, whereby a robot is systematically checking a ton of possible user names and passwords).

Another way for attacks is via free or very cheap third party plugins and templates which hide backdoors to be used by hackers. Make sure you get themes and plugins from reliable sources only.

WordPress security can be greatly enhanced by using more sophisticated passwords, high-security hosting, always updating your WordPress version and plugins, and applying security plugins, like Wordfence Security being the most popular.

Magento, on the other hand, is less likely hacked, as it is a dedicated ecommerce platform which has much more built in features without having to take the risk of installing additional extensions.

With Magento it’s recommended installing all security patches and changing the default /admin URL to a custom URL right at the beginning.

It’s also wise to prevent robots visiting some specific pages that are not relevant to users, for example the admin URL page.


How to get extensions and plugins


Always download your extensions and plugins from reliable sources.

In the case of WooCommerce, their official site and contain quality and code-checked plugins that are most likely safe to use. If you’re about to download free plugins, it may be better to use the ones that have a premium (paid) version as well with good ratings and ongoing support.

For your Magento store, the official sites of Magento Connect and Magento Marketplace are recommended for finding secure and checked extensions.


Current versions


You can download the most up-to-date version of WordPress for running WooCommerce here. The current WooCommerce version can be downloaded here.

All recent Magento Community Edition (free) versions and patches are available at the official Magento Tech Resources site.

If you want to try demo versions of Magento 1 in terms of both frontend and admin features, you can take a look here:

Magento 1.9 demo / Magento 1.x admin demo


Multiple store environment


Magento Community as well as Enterprise Edition, by default, offers the possibility of having as many additional websites, stores, and store views as you wish.

Basically, when you first install Magento, you have

  • a main website
  • a default store
  • a store view


Following this, you can create additional websites, in each website multiple stores can be created, and within each store you can have separate store views. (Store views are mostly used for showing the given store in different languages.)

On top of that, you can manage all your stores from the same Admin, while you can customize each store’s appearance and product range.


To have multiple stores within WooCommerce, probably the best solution is to install the WooCommerce Multistore plugin. “Easily manage multiple web stores keeping only one stock”, says the tagline.

You can virtually manage an unlimited number of WooCommerce stores from a single WordPress Multisite admin dashboard. You can launch and manage products, manage stock and orders as well as export orders.

The plugin’s license fee is $199 for one year including support and updates.


Multi-vendor solutions


In the case of Magento, there are at least 5 different, quite sophisticated, premium (paid) extensions you can buy with which you can create your own multi-vendor solution for your ecommerce business.

If you want to have a high quality, “general” multi-vendor extension with lots of features and you don’t need any custom developments, we recommend Marketplace Multi Vendor Extension by CreativeMinds.

For WooCommerce we’d choose Product Vendors for turning our store into a multi-vendor marketplace.


Dropshipping for WooCommerce and Magento


Nowadays the popularity of the dropshipping business model is soaring higher and higher. There is a good number of advantages, such as low investment (since you don’t have to keep goods in stock at all), diversity (you can sell a wide range of products) and workload optimization (you don’t necessarily work a lot more if your order numbers get significantly higher).

Needless to say, you’d better start a dropshipping business only after conducting a thorough market research, finding out if there is demand for your products.

Looking at dropshipping solutions for WooCommerce you can easily find WooCommerce Dropshipping on the official website with which you can “Send automated order notification emails to your wholesale dropshippers when new orders arrive via your WooCommerce store.”

Of course, there are some other solutions on the market, like WooCommerce Dropshippers at CodeCanyon, which is rated the highest by the users.

It costs only $25 and extended support for 12 months costs an additional $7.88.

Key functions such as exporting customer & order data and shipping price calculation are available from several sources:


For Magento you there is a bunch of solutions too.

At the moment you can find considerably more modules at Magento Connect than at Magento Marketplace.

Before choosing one, it’s worth taking a look at the popularity scores and the reviews!

Additionally, let us give you a little help with finding your desired products and dropshipping suppliers. Here are some sites where you can browse among well-known and reliable dropshipping partners:


Which one is “normally” chosen?


Magento is used mainly by large enterprises that manage the online stores of their clients and connect them to an ERP system for invoicing or inventory management.

It is an ideal solution for those who “think big” or “dream big” and also for those who already have a popular e-store, but want more than the existing system can offer.

WooCommerce is widespread among small firms that have got familiar with WordPress.

It is never to be forgotten that Magento has been developed deliberately for ecommerce purposes. It is not an extension of WordPress, but a sophisticated system framework in which, with just a little exaggeration, you can have everything that you need for your online store.


The main search trends in Google for the 5 most popular ecommerce platforms


5-year trend:



Trend over the past year:




Let’s see the numbers!


During the summer of 2015 AheadWorks made an overall study in which they primarily examined the popularity of Magento and WooCommerce in different market segments.

First, it is worth noting the proportion of usage of the two systems. The Alexa 1 million top websites were taken into account using a sample size of 1% of randomly chosen websites.

The data show that Magento is used by companies mainly in the group of Alexa ranks of 100-300k, while WooCommerce users are mostly in the 900k position area.

Drawing serious consequences solely from this information would not make a lot of sense, but it can be said with confidence that Magento-based websites are generally more popular than WooCommerce-based sites.

Probably the most interesting finding is on distribution by product categories.

WooCommerce is mostly used for selling software and information products, consulting services and grocery items.

Magento is notably preferred within categories of clothing and accessories, furniture, jewellery and gifts.


To put it even more simply: WooCommerce is more popular for selling intangible goods (e.g. intellectual property) and Magento for tangible goods.


Here is a statistics chart by one of the most popular CMS detector plugin: Wappalyzer. (April 2017)





For the top 10k sites, BuiltWith data show the following market share figures:



If we take a look at different geographical locations, the popularity of the two systems varies region by region (BuiltWith data):







Famous brands that use WooCommerce

WooCommerce is used by a great number of brands out of which there are some big names. However, to tell the truth, we could find only a few of these, e.g. Men’s Health Box, Duracell Lighting, and Airstream, featured on WooCommerce’s Showcase page.


brands woocommerce


Please note this does not mean that WordPress itself is not preferred as a CMS with famous brands. TechCrunch, Sony Music, BBC America and many others run WP for their content publication.

But it seems, when doing ecommerce, the big boys go for other platforms. One of these is Magento.


Top brands that use Magento Commerce


Ford Motor Co. (accessories), Olympus, Bulgari or Monin, to name a few, have built their ecommerce sites on Magento.


brands use magento


No matter whether B2C or B2B solutions are needed in different industries, Magento is capable of providing merchants all around the world with custom features, tools, and services to help them achieve their business objectives.

Some other popular brands having Magento ecommerce websites:

  • Sana Safinaz (Fashion)
  • Loake (Shoes)
  • Bauhaus (Home Improvement)
  • Devlyn (Eyewear)
  • Tom Dixon (Furniture)
  • Sass & Bide (Fashion)
  • Mr Price (Fashion)
  • Liebherr (Machinery)
  • Photospecialist (Photo Equipment)
  • Heidelberg (Printing)


So which is better – Magento or WooCommerce?


There is no definite answer to that.

Each system is ideal for different groups.

For those, however, who want to build a comprehensive online store, the choice is obvious: MAGENTO.


What can Magento offer?


For years, Magento has been one of the most powerful, self-hosted players on the market, dedicated to ecommerce solutions.

It is rich in functionalities and options, it can be very fast if served by the appropriate infrastructure, it can manage more online stores simultaneously and can be effortlessly optimized for search engines.


Magento eCommerce CMS compared


It can also be conveniently localized (e.g. currency settings) so it is great for international ecommerce. But, since it is a complex solution, it takes more time to be able to exploit its full potential and learn its ins and outs.


 What can WooCommerce offer?


WooCommerce can be nicely integrated into WordPress websites and it is easy to handle. Its scope of functionality is narrower, it is suitable for mostly smaller e-stores with a rather limited set of needs.


Wordpress WooCommerce CMS compared


It is perfect for beginners, niche marketers or testers who sell only a slim range of products.

For those who plan to grow bigger or would manage more stores in the future with thousands products and would want to have the choice to fully customize their online store, Magento is the option to go for.


To sum up very briefly, here are the basic advantages that one system has over the other:


Magento vs. WooCommerce: Pros and Benefits


Magento Pros over WooCommerce:

  • Fully customizable: whatever ecommerce solution you need (advanced search, checkout, promotions, categories, product attributes, etc.), it can be developed in Magento
  • More secure, little chance to get hacked
  • High-end admin area
  • Sophisticated statistics and reports for data driven decision making
  • Multiple stores and store views as free default features
  • Advanced ERP integration
  • Better for “Think Big” companies


WooCommerce pros over Magento:

  • Easy to handle
  • Much cheaper
  • Finding a WooCommerce developer is easier
  • Less robust and resource intensive
  • Can be set up and launched faster than Magento
  • Demands less hosting capacity
  • More free and paid themes
  • Better content management platform


Strengths of both Magento and WooCommerce:

  • Flexibility: open source systems, a huge number of various plugins, themes, and extensions
  • Theoretically, can handle an infinite number of products
  • Dedicated developer community, fast and effective support
  • Free versions to download
  • Responsive design


Summarizing questions and answers that will help you make your choice more easily


1) Do you want an online store with standard functions built on a theme or a fully customized shop having a wide array of features appearing on frontend as well?

There are tons of themes for WooCommerce that you can build up on your store relatively easily.

But if you need a sophisticated ecommerce solution to be tailored your specific needs, Magento may be the right choice.


2) How many products do you wish to sell? Up to a few hundred or up to tens of thousands?

Theoretically, both systems can handle an infinite number of products, but if you have a lot of items, you need advanced hosting capacities.

Leading cloud hosting infrastructure providers, like AWS or Azure, can be good options. Involving experts for managing and optimizing such hosting solutions will most probably be needed.


3) When do you want to launch your store?

If you have a tight deadline set in stone, it’s better to go for WooCommerce: you can create your store faster without the need for a developer.

On the other hand, if you are not in a rush, a state-of-the art, robust Magento store can be created taking a couple of months to develop.


4) Can product attributes, prices, images and inventory data be uploaded to the store only manually or is there a way to import them from an external ERP system directly?

Either way, Magento gives you smart solutions. For enterprise needs, such as SAP or Microsoft Dynamics integration, data connections can be built based on the out-of-the-box Magento API.

For WooCommerce there are also a number of ERP solutions, e.g. Odoo (used to be OpenERP), which is free for less than 50 users, above that, it costs $15 per user per month.


5) Do you want to build a new store or replace an existing one that already has a customer base?

If you already have several years of experience in ecommerce, and your new store is likely to get a lot of traffic right away, and you now have special needs and want to have more sophisticated custom features in your store (e.g. advanced coupon offers, customer management), Magento is the better choice since it’s unmatched in that respect.

If you have basically zero experience or want to switch from Amazon or add your own store on top of it, you can set up a WooCommerce store quite fast to see how you can build up your ecommerce expertise.


6) Is it a small budget or a larger, long-term business project?

The development of even the simplest Magento store costs several thousands of dollars. It is not a system which was designed for basic ecommerce functionalities, but a platform that has the potential to serve every single need the e-merchant has in mind.

Simple WooCommerce stores, however, can be created with a limited budget, as no programming skills are necessary for that.


7) Is there a marketing strategy already at hand (including e.g. content marketing, SEO, social media, promotional campaigns) or you just want to measure up the needs of your potential market?

If you don’t regard your ecommerce business as a serious undertaking, you just want to have a “hobby shop” or test the market, it’s enough to set up a simple WooCommerce shop.

On the contrary, if you have serious plans about being a larger ecommerce player and wish to back it with considerable marketing efforts, a thorough Magento solution may be better for that purpose.



If you think this article can be useful to other readers as well, please share it. You can also write your comments below. So if you have any questions or queries, don’t hesitate to comment!


8 Effective Ways to Really Boost Magento Page Speed!

I think there’s no need to write lengthy paragraphs about the disadvantages of a slow website performance, but let me mention just a few issues that I feel important. Apart from the fact that user experience declines seriously while visiting a slow website, Google takes into account page load speeds and ranks lower those pages that perform poorly. In the case of online stores, it can be disastrous since your competitors will be ranked higher.

According to official statistics, even if visitors find your store, every extra second they have to wait will reduce the chance of conversion by 7%. You can measure page speed with external tools that give suggestions for reaching the optimal solution. Such websites include:

Our favourite is New Relic, a software analytics tool with which you can always see the speed performance of your website and many other useful attributes as well. These solutions can help a great deal in detecting slow speeds, however, they do not see the faulty processes within Magento. In the following I will write about how to examine these inner processes and how to detect and fix them.



Default profiler

You can use a default profiler for measuring the speed of internal processes. Thanks to the profiler, you can get an insight into the speed performance and memory usage of the controllers, actions, blocks, observers and other events. To use this, you need to authorize profiling in the System / Configuration / Developer / Debug / Profiler section. If you run speed analytics on a public page, you need to define your computer’s IP address in the System / Configuration / Developer / Developer Client Restriction. Next, you need to remove the comment in the index.php file from the line preceding this:

The result will look similar to this: Magento Code Profiling In your own modules you can use the profiler option by inserting these lines:

//... the code lines to be analysed

For profiling the SQL queries you need to make your settings in the app/etc/local.xml:

         <initStatements><![CDATA[SET NAMES utf8]]></initStatements>

The table below shows what the result of these settings will look like: Magento Code Profiling 2

Aoe Profiler

Let’s be honest, it is quite hard to read and to see how these data are structured. To solve this you can use the Aoe Profiler plugin, which displays the data in a hierarchical structure with the help of small diagrams. These show you clearly those elements that spoil the speed performance of the website.

Aoe Profiler Magento Code


However, here at AionHill, we use an even more competent solution, our own module that helps us detect page speed problems more effectively.


Introducing AionHill_Profiler



The blocks are shown in a hieararchical structure indicating the time (seconds) needed for displaying them, whether the given block uses cache, and we can also see the SQL queries that are run while displaying the block.

Magento Code Profiler by AionHill

SQL queries

The module also displays the SQL queries used on the page. Here we also use diagrams, time figures and stack trace figures that show the line and Magento class from which the SQL query started.

Magento SQL Queries


Repetitive SQL queries

The module notifies us if there are completely identical SQL queries on the page. The table below shows how many of them are present and how frequently they occur and also how much of the MySQL server’s time was consumed.   Magento SQL Queries Repeats


Cycle-structured SQL queries

Finally, we detect the cycle-structured, but not necessarily identical, SQL queries:

Magento Loop SQL Queries


Solution proposals

And now let’s see some real-life examples revealing what we can do for tackling the issues that have been detected.


Eliminate the cycle-structured SQL queries.

No matter how fast the SQL server is, using its capacity unnecessarily still influences its performance. Download the needed data in one bulk and not in cycles one by one, whenever possible. As examples, I show you two functions that return with the average price based on product identifiers set as parameters. The first method, which is wrong, loads in the products in one cycle one by one and then adds the price to one bulk, from which it calculates the average price out of the cycle, and then returns with it.

 * get Average Price (bad example)
 * @param array $productIds product ids
 * @return float
public function getAveragePriceBadMethod(array $productIds)
 $prices = array();

 foreach ($productIds as $productId) {
 $product = Mage::getModel('catalog/product')->load($productId);
 $prices[] = $product->getPrice();

 return array_sum($prices) / count($prices);

An example for a fine solution: Instead of making a query for each product separately, we make a query for the whole collection containing them and then we use these items.

 * get Average Price (good example)
 * @param array $productIds product ids
 * @return float
public function getAveragePriceGoodMethod(array $productIds)
    if (empty($productIds)) {
        return 0;

    $prices = array();
    $products = Mage::getResourceModel('catalog/product_collection')
        ->addAttributeToFilter('entity_id', array('in' => $productIds));

    foreach ($products as $product) {
        $prices[] = $product->getPrice();

    return array_sum($prices) / count($prices);

Indeed, it is still not the best approach because we need the prices only, so it is not necessary to load the whole collection. When only the values of one field are required, use the following method:

 * get Average Price (good example)
 * @param array $productIds product ids
 * @return float
public function getAveragePrice(array $productIds)
    if (empty($productIds)) {
        return 0;

    $products = Mage::getResourceModel('catalog/product_collection')
        ->addAttributeToFilter('entity_id', array('in' => $productIds));

    $select = $products->getSelect()

    $prices = $products->getConnection()->fetchCol($select);

    return array_sum($prices) / count($prices);

It is also a usual problem that a second query is initiated when the product is already in the shopping cart. The quote model ensures that the items related products are already present, so there is no need for subsequent model loads.

 * get Quote Weight (bad example)
 * @return float
public function getQuoteWeightBadExample()
    $quoteItems = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
    $quoteWeight = 0;

    /** @var Mage_Sales_Model_Quote_Item $quoteItem */
    foreach ($quoteItems as $quoteItem) {
        $product = Mage::getModel('catalog/product')->load($quoteItem->getProductId());
        $quoteWeight += $product->getWeight() * $quoteItem->getQty();

    return $quoteWeight;

 * get Quote Weight (good example)
 * @return float
public function getQuoteWeight()
    $quoteItems = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
    $quoteWeight = 0;

    /** @var Mage_Sales_Model_Quote_Item $quoteItem */
    foreach ($quoteItems as $quoteItem) {
        $quoteWeight += $quoteItem->getProduct()->getWeight() * $quoteItem->getQty();

    return $quoteWeight;

Eliminate recurring SQL queries

Of course, there are justifiable cases when we need to repeat the same query, e.g. reloading after modification for checking purposes. But many times there are planning or developing errors in the background. Let’s see what the most common mistakes are. We don’t store the return value of a method that is used several times:

  * get Feature Categories (bad example)
  * @return Mage_Catalog_Model_Resource_Category_Collection
  * @throws Mage_Core_Exception
 public function getFeatureCategoriesBadExample()
     $categories = Mage::getModel('catalog/category')->getCollection()
         ->addAttributeToFilter('name', array('like' => '%feature%'))
     return $categories;

If we use the same method in 10 different places on a single page, then we make 9 unnecessary queries using the MySQL server! So it is wise to store the results in a class variable when calling the method the first time and later use the stored items without using extra resources.

  * Local cache for feature categories
  * @var null|Mage_Catalog_Model_Resource_Category_Collection
 protected $_featureCategories = null;
  * get Feature Categories (good example)
  * @return Mage_Catalog_Model_Resource_Category_Collection
  * @throws Mage_Core_Exception
 public function getFeatureCategories()
     if (!is_null($this->_featureCategories)) {
         return $this->_featureCategories;
     $this->_featureCategories = Mage::getModel('catalog/category')->getCollection()
         ->addAttributeToFilter('name', array('like' => '%feature%'))
     return $this->_featureCategories;

Another common mistake is using model instead of singleton. It can cause performance problems right away that a class is present in multiple copies instead of one, but if more complex procedures are run, the situation can get much graver. In the following example you can see an extended shopping cart. I inserted a category collection load in its constructor.

 * Class My_Module_Model_Checkout_Cart
class My_Module_Model_Checkout_Cart extends Mage_Checkout_Model_Cart
    /** @var Mage_Catalog_Model_Resource_Category_Collection  */
    protected $_quoteCategories;

     * Constructor
    public function __construct()

        $categoryIds = array();
        $quoteItems = $this->getQuote()->getAllItems();

        /** @var Mage_Sales_Model_Quote_Item $quoteItem */
        foreach ($quoteItems as $quoteItem) {
            $product = $quoteItem->getProduct();
            $categoryIds = array_merge($categoryIds, $product->getCategoryIds());

        $this->_quoteCategories = Mage::getModel('catalog/category')->getCollection()
            ->addAttributeToFilter('entity_id', array('in' => array_unique($categoryIds)))

It can work fine if we handle this extended class properly.

// bad example 
$productIds = Mage::getModel('my_module/checkout_cart')->getProductIds();
$itemsQty = Mage::getModel('my_module/checkout_cart')->getItemsQty();

// good example
$productIds = Mage::getSingleton('my_module/checkout_cart')->getProductIds();
$itemsQty = Mage::getSingleton('my_module/checkout_cart')->getItemsQty();


In the above example, wrongly, the class is present in more copies and thus the category query in the constructor will run in each case. The situation is the same if there are resource-demanding processes with different methods. Here, even if we use one class variable for caching, like in the previous example, the time consuming code lines are executed repeatedly since we have stored the previous calculations in another copy of the class. In the example below, which gives the correct solution, the object is present in one copy only and therefore there won’t be any unnecessary calculations. If, for some reason, you cannot use singleton, you can also use Magento Helpers, which are singleton classes, or Mage::registry for storing temporary data. These are very simple practices, but if you do not pay enough attention to them, the number of SQL queries may grow significantly.


Fixing long runtime SQL queries

Creating appropriate table indexes

Many times it well may be that the corresponding fields of a given table are not indexed. Here caution is needed because the more indexes you use, the longer the writing time will be, but searches and ordering will be considerably faster. It is very important to define the structure of the table and the indexes optimally. You can add indexes to the tables with the help of the installer integrated in the module.

$installer = $this;


$tableName = $installer->getTable('my_module/model');

if ($installer->getConnection()->isTableExists($tableName)) {
    $table = $installer->getConnection();

    try {
            array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX)
    } catch (Exception $e) {



Extending indexing of the product flat tables

When there are many products, queries executed from product flat tables may be slower if you use filtering or ordering which is not field-indexed by Magento. You cannot index flat tables using the installer since Magento discards and re-creates these during indexing. However, you can modify the default indexes of the flat table with an observer. To make it work, you need to add an observer to the catalog_product_add_indexes event.


 * Add indexes to product flat table
 * @param Varien_Event_Observer $observer observer
 * @return void
public function catalogProductFlatPrepareIndexes(Varien_Event_Observer $observer)
    /** @var Varien_Object $indexesObject */
    $indexesObject = $observer->getIndexes();
    /** @var array $indexes */
    $indexes = $indexesObject->getIndexes();

    $indexes['IDX_MY_ATTRIBUTE'] = array(
        'type' => Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX,
        'fields' => array('my_attribute')


The method above is always run when Magento re-creates the flat table due to the re-indexing process.


Eliminating resource-demanding SQL joins

In some cases, a slow-speed query cannot be fixed with using indexes only because we connect several large tables and therefore, inevitably, the MySQL server has to deal with huge amounts of data. Let’s suppose we would like to execute an ordering on the product list page based on inventory volume and rating. In this case we apply the following method:


        'entity_type' => 1,
        'store_id' => Mage::app()->getStore()->getId()

$collection->setOrder($attribute, $direction);

Depending on the number of products and ratings, immense amounts of data can stack up and structuring these can take up a considerable amount of time. A great number of simple methods can be used in terms of My SQL queries. Now I’d like to mention that join is not always needed, only in those cases when we’d really use it.

if ($attribute == 'quantity') {

if ($attribute == 'rating_summary') {
            'entity_type' => 1,
            'store_id' => Mage::app()->getStore()->getId()

$collection->setOrder($attribute, $direction);

With this simple trick we prevented connecting two large tables to the product collection. Now, connecting takes place only in the case of such tables that are truly needed.


Performance improvement of Magento Blocks

Whenever possible, it is recommended to use caching of Magento blocks. You can segment these cache data based on user groups and can also combine more segmentations. .

 * construct
 * @return void
protected function _construct()
            'cache_lifetime' => 3600,
            'cache_key'      => 'MY_MODULE_' . $this->getExampleModel()->getId(),
            'cache_tags'     => array(My_Module_Model_Example::CACHE_TAG)

It’s worth using the so-called object cache for those methods that are called several times and it is not always needed to run the codes within them.

 * get Category Collection
 * @return Mage_Catalog_Model_Resource_Category_Collection|mixed
 * @throws Mage_Core_Exception
public function getCategoryCollection()
    if ($this->hasData('category_collection')) {
        return $this->getData('category_collection');

    $collection = Mage::getModel('catalog/category')->getCollection()
        ->addAttributeToFilter('parent_id', array('eq' => Mage::app()->getStore()->getRootCategoryId()));

    $this->setData('category_collection', $collection);
    return $collection;

Other useful development suggestions for better performance

Simple SQL queries

If you want to collect identifiers from a collection, it is better to solve this without a cycle:

// bad example
$ids = array();

$products = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('sku', array('like' => 'test-%'));

foreach ($products as $product) {
    $ids[] = $product->getId();

// good example
$ids = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('sku', array('like' => 'test-%'))

The getAllIds method is included in every Magento collection. If it is not the identifiers that you need, but another field, and that one only, then you can apply the following solution:

// bad example
$result = array();

$products = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('sku', array('like' => 'test-%'));

foreach ($products as $product) {
    $result[] = $product->getData('my_attribute');

// good example
$collection = Mage::getResourceModel('catalog/product_collection')
    ->addAttributeToFilter('sku', array('like' => 'test-%'));

$select = $collection->getSelect()

$result =  $collection->getConnection()->fetchCol($select);

If you just want to check if a value exists in the table:

// bad example
$firstItem = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('hello', array('gt' => 3))

$hasData = $firstItem->getId() != null;

// good example
$size = Mage::getResourceModel('catalog/product_collection')
    ->addAttributeToFilter('hello', array('gt' => 3))
$hasData = $size > 0;

Simplify whenever possible

Again, simple things, but they can help a lot with shortening runtimes and having shorter codes also makes life easier. For example, if you need only the identifier of the logged-in user:

// less effective
$customerId = Mage::getSingleton('customer/session')->getCustomer()->getId();
// a little shorter
$customerId = Mage::getSingleton('customer/session')->getCustomerId();

Similarly, the products in the shopping cart and their identifiers are handled as follows:

$quoteItems = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();

foreach ($quoteItems as $item) {
    // when only product ID is needed
    // it's a little longer
    $productId = $item->getProduct()->getId();

    // more effective
    $productId = $item->getProductId();

    // if the product is needed
    // this is a really bad solution
    $product = Mage::getModel('catalog/product')->load($item->getProductId());

    // this is the right solution
    $product = $item->getProduct();


We have seen some useful tips in terms of improving the load speed of your Magento website and by far we haven’t shown all of these. Please don’t forget that your visitors are potential customers and that they can be lost easily if they don’t find your website user-friendly. No matter how wonderful the design or the layout is, a slow website can destroy the originally positive user experience completely. Nowadays it is a must to handle this issue properly.