404 error page: how can it generate sales in your online store?

In most of the cases there is only a short message on 404 error pages. And that is unfortunate. 404 pages are enormous missed opportunities, but from this article you will learn how to exploit them to the fullest possible extent.


We are going to discuss the following topics:

  • SEO and user experience
  • Offer products!
  • Write creatively, be helpful
  • Use visual elements
  • Never leave out navigation
  • „Not what you’ve been looking for?”
  • What to do with products no longer available?
  • Run regular checks!
  • What you should definitely keep in mind


SEO and user experience on 404 pages

Why should you beware of 404 errors? It is simple: neither people, nor machines like them.

The worst possible case is if the users do not get to your own page but to a real 404 error page when there is an error. That is because Google disfavours the websites on which the number of 404 errors is noticeably high, since it ranks them lower on the search results lists.

The non-operating external links, in other words those that point to non-existing pages within your website, also have a negative influence on your rank: Google will regard your domain as less trustworthy.

However, the biggest problem is that by having a 404 page you do nothing in order to convert your potential customers into real ones.

There is no navigation, there is no content, you do not make an offer – you do not even help the visitors to find what they were originally looking for.

Consequently, a good 404 page can be recognized based on the fact that it steers the visitors: try to find out what they were looking for and direct them towards similar products or content.

Arriving to an error page is definitely annoying: the purchasing process is interrupted, the users “fall out” of your sales process funnel.

How can you improve it then? How can you make your 404 page user-friendly?


[bctt tweet=”A properly designed 404 error page navigates the visitor towards conversion.” username=”aionhill”]



1) Offer products!

We cannot give you a simpler or more obvious piece of advice.

You would most probably like the visitors looking around in your online shop to purchase something in the end. They do not have the opportunity of doing that on a 404 page, on the other hand, you might as well politely direct them towards a site where they can convert.

Case studies prove that an error page that contains some kind of a product offer – for example about three different products under the text that clears how and why the users got to the error page – increases the click-through rate, the conversion rate, the number of new purchases, the add-to-cart rate and the number of page downloads.

It is best to have a system with which you can monitor the past behaviour of the users: this way, instead of simply showing them randomly selected products, you can present them something that they may really be interested in, something targeted to them. If for instance they have been looking at strollers for half an hour on your site and then they get to an error page, there you can show them three products that they have not yet viewed.


2) Write creatively, be helpful

If the only thing that the visitors find on the page is “error”, “page not found”, they will not be either smarter, or less frustrated. But the actual problem is that if they see a standard 404 error page, a great deal of people will simply leave you – instead of having content that could catch their eye and thus you would have the opportunity to make the visitors stay.

If on the other hand you write some sort of a witty text, you already have better chances with them. With a little humour you can ease their disappointment that nothing can be found on the given page.

But it’s not enough to be funny: you also have to be helpful.

After it has become obvious what happened – as you have to inform them in the first place – you will also have to tell your visitors what they should be doing after this.


tips Offer them possibilities:

  • They can return to the page where they came from – this is worth offering only if they got lost within your own website. If somebody arrived on your error page by clicking on an external link, you would rather want to keep those visitors with you, to lead them to the products.
  • Offer content – Display your most recent pieces of content on your page, because even if they do not want any products, they may find something among the blog posts and videos that will draw their attention. This way you will have more opportunity, more time to convince them, to keep them on the page or to simply ask for their contact details.
  • Place a search field there – even if there is a search field in the sidebar, put one there exactly to the middle of the page and emphasise that they can search on something else straight away.

The point is never let them go: if you cannot give them what they want, offer them the second best that you have. And you should do that in the most possibly customized way.




3) Use visual elements

In order to get rid of the frustration in the visitors, it is sometimes enough to distract their attention a little – visual elements are perfectly suitable for that.

A funny image or animation can work well in this case, but you definitely have to make sure that this is in line with the design of the page, so that the visitors do not feel they have been transferred to somewhere else.

Consistence is just as important in case of a 404 error page than in case of a landing page or a product page. If you redirect the prospective customers to a page that is completely different in terms of visual elements than the previous ones, that will destroy, interrupt the smooth process of browsing.

The mental process ongoing in this case is simple: it is like taking the wrong turn from a familiar highway. You will no longer have the goal in your mind, you will only think about the next step. And in such cases the customers can quickly close your page – especially if they are having a similar experience on a 404 page.


4) Never leave out navigation

Your 404 page should be at least as rich in opportunities for navigation as any other of your pages in your estore. Play safe, make sure that the customers can stay on your site in their most uncertain moment by being able to click on some kind of a navigation element or menu.

It is best if you offer additional options right away – by having a search field for example, or, in case you experience inactivity, even by having a pop-up window offering the visitors to take them back to the previous page or just as well helping them to launch a new search.





Take a look at this blog post to check out some really nice examples of ecommerce 404 error pages.


„Not what you’ve been looking for?”

The most useful function of Google is that it helps you ask the questions right from the first moment: the algorithm offers you search terms and expressions based on the previous search trends and the information in the database already while you are typing.




Wouldn’t it be great if you could build something similar into your error page? If you did not have to continue leading the visitors based on guessing?

The good news is that you do not have to. The bad news is that it won’t be free. However, it will most likely be worthwhile for you investing in the function since it would help to generate more conversions in the end. We are talking about the following:

You can implement Google Custom Search API into your website (or you can ask your developer to do it for you).

By doing this you can basically use Google’s own technique within your own website: it will analyse it for you what the users have searched for and will offer the hit most similar to that.

You can apply various setting options: you may even send on the users right away to the URL that is considered the best one, however, we do not suggest that. Because this can spoil the user experience: the users may often feel that you do not help them in making the decision but you are making it for them.

So if they arrive on a 404 error page, let them do so, but you should immediately draw their attention to the fact that you can help them. Offer them the opportunity of making the choice: this may require another click from them but if your message is convincing enough, you will make them even more committed.


What to do with products that are no longer available?

What happens if one of your visitors wants to arrive on a previously actually existing product page but in the meantime the given product has gone out of sale?




According to some professionals an automatic redirection to the next higher category based on the breadcrumb may be an ideal solution in such a case – it is like you were trying to get into a non-existing directory on the hard drive but the system, as it cannot find it, would throw you into the next higher one.

This may really be fortunate as it takes the visitors closer to what they are looking for: they will immediately see the similar, relevant products instead of the one you cannot offer them anymore.

At the same time, it may be fortunate in such cases to inform them in some way about what happened. So that they do not simply find themselves on another page. A small message displayed on the page, or even a pop-up window closing after a few seconds may be ideal for that: something that interrupts the browsing only minimally but provides the most information during that, thus clearing up the confusion.


Run regular checks!

If you want to keep both the level of the user experience and your rank on the search results pages, you have to monitor the searches ending on the 404 error page.

If you find that their number is unrealistically high or it is continuously increasing, you have a problem to solve.


Two things are recommended to do:

  1. You check whether there are URLs that the users regularly try in vain. If you see that many users arrive at the wrong place following the somewhat incorrect URL of an otherwise existing page of yours, you already know what you should look for – and you can address the problem more effectively as well.
  2. Use a backlink checking service (e.g. ahrefs) and monitor continuously in what condition the links pointing from other pages to your domain are – whether they are pointing at non-existing products for example.

In addition to that, you will naturally have to regularly check the cross references within your own site. If the site map is full of dead ends, you can quickly say goodbye to your high rank on the search results pages.


404 pages: What you should definitely keep in mind

It is not a problem if someone arrives to an error page – everyone has got used to such a phenomenon.

The problem is if you do not handle that in the right way. If you do nothing to communicate with your visitors even in such cases, or to give them assistance so that they get to where they set off to, to somehow direct them back to the track leading to conversion.

You can easily do that by applying the above outlined techniques: optimization of the error page is one of your important tasks, don’t forget about it.



Code auditing and code fixing in Magento projects

First step in Magento code audit


It is worth checking if some hard-coding took place in the project. Are there any modifications that were carried out in the core files and not in rewritten in config or transferred to the community/local codepool and modified there.

To be able to check this, we need a Magento project of the same kind (Community or Enterprise) with the same version number that we can compare it with.

For this we use PHPStorm, but this comparison can be done smoothly with other types of programmes as well. Right click on the app/code/core directory, “Compare With…” (Ctrl + D), and then select the same directory in the “co-environment” (in a blank Magento environment).

After you’ve accepted it (OK), a window pops up with the changes, here you can switch off “Show new files on left side” and “Show new files on right side” options because it would only cause some confusion. Having this done, only the “Show difference” option remains active, which lists the differences.
Unfortunately I have not found such an option that does not take comments into account, and although the code parts are the same, more files than differences are shown because of the comments.

Apart from that, in our case, there is no difference between the two projects. If in your case it is not so, i.e. there are differences in the system, the files which differ from the original ones, need to be restored and the modified ones need to be transferred.


tips This can be done in several ways:

1) Copying the core file from app/code/core/…/File.php to app/code/local/…/File.php and then reverting (setting) the original file into its original state (before any modifications were made)

2) Overwriting the file by config.xml with a file of our own module. Here too, the original file needs to be set to the original state and this original file should be extended by our file

3) As a third possibility, functional differences can be solved with an Observer


In my opinion, the first one is the fastest and the last one is the finest.

Having this done (the app/code/core files are reset to their original state and the modifications are “transferred” to their proper locations (e.g. the appropriate observer method or under app/code/local in the duplicate of the original file).

The next step is comparing the content of the directories app/design/[frontend/adminhtml]. Unfortunately it often happens that a developer does not create a separate template or layout file, but modifies the original file in the base/default/[template/layout] directories.

Fixing this can be done in a similar way as in the case of the code. We copy the modified files in the same structure under our own theme and we revert the original files to their original state. E.g. we copy-paste the app/design/frontend/base/default/template/catalog/product/list.phtml to the app/design/frontend/rwd/theme/template/catalog/product/list.phtml directory and revert the original one.

In case of layout files it is enough to copy the variable part, there is no need to transfer the whole layout file. An even finer solution is that we refer to a defined block with a reference.
In case of templates it is also worth considering whether we can change them from layout according to our preferences. If, however, the new elements / blocks / templates in question do not appear in the appropriate locations after modifying them from layout, the method mentioned above (transferring, changing the template) offers a reliable solution.

Let’s suppose that everything went fine in all these locations, the template and layout files were modified in the proper locations. If so, then it looks a sound project, probably there won’t be problems with it later on.


Now the quality of the existing modules and template files need to be checked. This we can perform according to the following aspects, to be detailed later one by one:


  • Code redundancy – code repetition
  • Code relevancy – storing certain codes in appropriate locations
  • Installer Scripts – quality and reliability
  • Template files – minimizing object calls
  • Block / Controller check – load and execution



Code redundancy – code repetition

Code redundancy: means that we implement the same operation in more locations (we repeat it) in a given module or in several interrelated modules in the same way. If we detect this in the code, these duplicated code sections are definitely in the wrong locations, because they need to be in one specific place from where they are called.

Unfortunately it is quite hard to detect code redundancy, since the code is not an exact property, so we can run tests in several different ways. Therefore it may take more time to analyse and find code redundancy than to fix it.

The basic notion is to make developments in a manner that the right elements are located in the right places, there is no need for repetitions so that changes can be made in one single location for different operations.


magento code relevance


Code relevancy – storing specific codes in proper locations

There are codes that have obvious locations, such a property is a sub-page and action of a new module that must be placed in the controller because otherwise it does not work. There are codes, however, that can either be in the Block, the Helper or even in the Model, no matter what function they have. But these also have their proper locations.

Codes related to general operations most often need to be placed in the Helper in order to assist cross-functioning. Typically such codes are smaller methods checking a module’s state and/or that, either directly or indirectly, work with config values.

Additionally, checks for current end users, not present in Magento by default, can be placed here, e.g. checking a certain type of user after an extended registration process ‒ $helper->isStudent(); $helper->isTeacher() etc. (These can also be implemented using an Observer.)

Operations that sometimes “get lost” or “stray” in the process of implementation, can also be mentioned here. A good example is the fields of a Model to be exported and also its CSV headers that should not be placed in a Helper or Block since in any place where the Model gets called, these may be needed, so it is simpler and more logical to store these in the given Model.

I also mention here, with the Model, the queries of parent-child elements, i.e. if a given Model has a connection of 1-* with another Model, it can be placed in the “main” Model with a $model->getChildSomethings(); method.


Installer Scripts – quality and reliability

While writing installer scripts, we tend to forget about that they, for some magic, indefinable reason (maybe someone deletes an attribute, field, value and runs the script again), sometimes run twice and thus we encounter unexpected errors.

Eliminating this needs a certain developer attitude: although we are likely to create and run our script based on the data of our own environment, it is worth preparing it for all possible cases that may occur, and writing the script so that it is started with a condition. If we add an attribute to it, we need to look for the attribute first and adding it should be based on a condition.

When modifying the fields of a table, it is wise to check its current state. We insert the $installer->endSetup(); code with a 100% secure run, if the installer operation is placed in a try-catch, endSetup() should be at the end of the try (not outside of it) ensuring that our module will change (upgrade) the version number only if it works properly.


Template files – optimizing object calls

When writing template files (.phtml) we need to pay attention to clearness and the reusability of the code.

What does it mean?

  • No static values are implemented
  • No functions or methods are declared here
  • No greater number of methods are called than truly necessary



  • We develop values/configurations that comply with layout requirements as much as possible (to support the work of the frontend developer).
  • Every function which is called in addition to requests, should be declared in Blocks
  • Depending on the complexity of the templates, the proper solution is to make smaller or sub-templates (e.g. with 2 different product/user types)


magento code template files


It is also important, basically in all aspects of development, to mention that we never identify a value (0, 1, 2) with its value, but it is very much recommended (if not compulsory) to place in a constant and thus with an “expressive” variant name, make its value clear. A bunch of nice examples can be found in Core Magento, e.g. defining product status values, xml config paths and certain minimum/maximum values.

In this case these are not only “more straightforward”, but using it everywhere else, it is easier to search them (fewer, more focused results) and we are able to modify them in one location.


Block / Controller check – load, implementation

When auditing Blocks and Controllers two aspects need to be taken into account, which strongly correlate: the load it needs to endure and how implementation is carried out. The better the implementation, the smaller the load.

If the getCollection() method of the Block is called several times from a template file, it is a good way to cache in the Block, thus true database operation takes place only the first time, any further operation gets only to the cached object list. For this, we also find Magento Core examples that can be used as guides.

In the case of Controllers, it is worth taking a look at the size of the different actions. I do not want to suggest font sizes or number of rows, as to what limits there are for an action, but we can agree that it needs to look all right, both in terms of appearance and volume, just by looking at it.

There is one more thing to add.

In my opinion, the Block creations inside the controllers are not necessary, this can be carried out inside another Block or from layout. Thanks to this, we reduce its size (number of code lines).


All this does not seem to be a lot of stuff. We have examined only 5 problem factors in detail, and 2 that are rather independent from them. But if you consider that a larger group of developers (more than 4) can work parallel on the same project, creating or modifying tens of files each for one module at the same time, then the whole thing looks much more complex.

If there is even only one minor error in each of these files, in the end it may result in a smaller refactoring before or after launching the project. Going through all the points I have mentioned in this article, we get a more detailed overview about how many and what type of problems our project has that need to be handled.


Need any further help? Contact us now or read more about our code audit service.


eCommerce landing page: convince your visitors to make that purchase!

But are they good only for that?

How should you build them?

How do you know if they are effective enough?

You will get answers to these questions and to several others right now.


In this article you’ll read about the following:

  • Why do you need landing pages?
  • What kind of landing pages can you use?
    • Lead generating landing page
    • Click-Through landing page
  • Identical messages: be consistent
  • How to build your page – the indispensable elements
    • Header, logo
    • Headline
    • Offer, advertising copy
    • Illustrations, images, videos
    • Social proof
    • CTA
    • Trust building elements
    • Social opportunities
  • A/B testing: start it and never stop doing it
  • Mobile friendliness is not a matter of choice


Why do you need landing pages?

Let’s go through briefly why an ecommerce store would at all need to introduce an additional step in the purchasing process.

This may seem counterproductive at first glance as the customers get converted slower this way, they have more time to change their minds, to withdraw from their intention to purchase.

If you run some sort of campaign – no matter if using newsletter, social media, search engines, and so on – it may not be fortunate in all cases to take the users, who click on the advertisement, directly to the product page.

The more complex the offer, the more persuasion you will need in order to have the largest possible proportion of your leads to convert. In case of a water glass, you will not need too much convincing. On the other hand, in case of financial services or a product of higher value, you will need to go through in detail all the benefits why it is good for the customer to give you money, and you will also need to discuss all their eventual complaints one by one.

In general, there is no possibility or in the best case there are limited possibilities for you to do all that on the product page of an online shop. Therefore, the function of the landing page in case of such a campaign is to strengthen commitment and to transfer the lead, being already willing to purchase, to the product page.


What kind of landing pages can you use?

Landing Pages: There are a lot of types of those. Estores will profit most from the so-called Click-Through pages, in other words landing pages that will make the lead click through (to the product page) after the persuasion.

The other fundamental useful type is Lead Generation, in other words, lead generating landing page: usually the aim of this is to get contact information from the visitors arriving to the page: typically name and e-mail address, so that you can add them to your list and will be able to communicate with them later.


Lead generating landing page

The only purpose of a landing page made for lead generation is that the users provide you with their contact information. You can persuade them to do so in several ways: you can offer them valuable hook-in products.


What can you offer the visitor?

You must give something so that people trust you that they consider the deal precious enough to give you the opportunity of contacting them later.

You can choose from a great deal of solutions, and what you pick in the end will also depend on what kind of list you want to build, what audience you dedicated the page to, how big a budget you have, and so on.

tips The most common lead generating offers are the following::

  • Downloadable e-book
  • Registration to an event
  • Having guidance, consultation
  • Free trial period (in case of a service)
  • Participation in a prize promotion or in a competition
  • Some sort of a tangible gift
  • Notification on future sales, discounts, new products, events, etc.
  • Webinar registration


Lead generating pages are usually short and less complex. You do not ask for too much, but you do not give too much either, so there is no need for lengthy persuasion. Text and supporting visual elements on these pages concentrate on justifying why it is worthwhile for them taking the offer.


You have to make it clear for them

  • what you offer (for example a hook-in product),
  • what you ask for (e-mail address for instance),
  • and what they are required to do (for example fill in two fields and click on the button).


This is where you obtain leads from, who you will be able to target later with various campaigns in e-mail or through the social media for instance – and who you can direct to the Click-Through landing pages.


Click-Through landing page

The click-through page is intended to transfer the customers to a page where they are only one or two clicks away from the purchase, from being channelled to check-out.


You can direct them…

  • to the product page where they can add the products to cart and you can offer related products to them in the meantime (cross-sell),
  • to the cart where the product is already there, so they are being the closest possible to conversion.


In case of the latter, you will probably have to have some custom development made, so that the visitors can add the product immediately to the shopping cart by clicking on the button on the landing page.


Identical messages: be consistent

Landing pages are in general not search engine optimized.

On the contrary:

they are hidden from the eyes of the search engines. Usually, the reason for this is that Google does not really like landing pages filled with similar content, landing pages that misleadingly resemble the so-called doorway pages and you can even get penalty for those.

On the other hand, you do not need organic traffic anyway, since you channel traffic to the landing page by campaigns.

It does not matter from where you direct visitors here, the bottom line is to transmit consistent messages.

What does this exactly mean?

  1. If you promise something in the advertisement or in the newsletter, you should communicate according to that on the landing page as well. It’s best if the CTA of the advertisement and the headline are the same. If you use the phrase “Click for the healthiest dog food!” in AdWords, the title of the landing page may be for example “This is where you find the healthiest dog food – and this is why your pet needs it.”
  2. If you use a given type of image, you will have to stick to that, too. If you place an image of a fox terrier next to the CTA in the email, you cannot display a cat on the landing page. The same dog in the same garden should be looking at the user.
  3. You should not change the colours either: if you originally used your corporate identity colours, rely on those on the landing page as well, if you used another campaign design, then use that on the landing page.

Consistence is important not only in the first two steps: even if you transfer the potential customers to the product page, they should not be confused, you should give them the same experience both in terms of visuals and text. Otherwise trust will decrease.

If you keep the users in a familiar environment, if you do not distract their attention, you will be able to steer them more easily and thus you will have an easier job with the persuasion.


tips How to build your page – the indispensable elements:

Nobody will be able to show you a perfect structure, the details depend on a great deal of things – however, there are certain elements that are rather basic.


landing page positioning

1) Header, logo

Using the logo of the company or the online shop in the header helps to sustain consistence: thus the users will know they are in the right place.


2) Headline

It ensures uniformity of the message, but it has other functions as well. You have to capture the attention of the visitor in the headline: you have to communicate not only that they are in the right place but also that they will benefit from reading more, if they consider your offer: that you are about to give them something valuable.


3) Offer, ad copy

In an ideal case, on the page there are features, benefits, specific information about the product, incentive texts that may create the feeling of scarcity for example and may persuade to purchase. In addition to that, you can incorporate several other elements into it as well: writing sales copy is a special art, and in the present guide we do not have the opportunity to describe the various tricks in detail.

It’s especially important in case of a professional product offer:

It concentrates on the benefit the customer will get after buying your product. The fact that a sports car can race by 200 km/h is a feature.

On the other hand, if the users experience freedom because of that, if they relive old memories or they feel like being in a space shuttle that is just taking off, all this is a real benefit, since it is about how they will feel, why it will be better for the users if they buy what you offer.

And this is exactly what you should communicate in the product description.


4) Illustrations, images, videos

You can use several demonstrating elements or for instance decorating elements that will help you in persuasion. But you should always use just as many as you truly need: if an image has no specific function (for example to direct attention to a given point, to a CTA), drop it. If the video only distracted attention, do not use it.

You can also use these to show the benefits (for example in a product presentation video), or just as well to make one of your offers more tangible (in case of a downloadable e-book you can attach a photo of the book itself that actually does not exist).

Always upload good quality, unique photos of the product. In general, it is enough to make the product page view interactive: on the landing page you have to make sure to be clear about what you offer and to make it attractive at the same time.


5) Social proof

In case your customers have already sent you positive feedback on a given product that you want to sell on the landing page, you should by all means use it.

These may be written evaluations that arrived in email, through your social media channels or in comments: because the point is that the positive opinions help to convince those who are hesitating.

If there are companies who have already purchased and are actively using the product, use their logos on the site. And you should never use stock photos with unknown models smiling in them: this will spoil your credit, as all your visitors recognize these tricks straight away. You should rather ask for testimonials together with real photos if you can.


6) CTA

Call-to-action is the element that you have to plan the most accurately.

It does matter

  • where you put it,
  • what dimensions it has,
  • how big it is,
  • what you write on it,
  • what colour you make it,
  • how many of the user sees.


Although you can fine-tune many of these appropriately only with testing, we can still give you some tips.


the more complex the offer, the lower the main CTA should be placed. You can display several of them within a long page, because your text may convince the different users at different points.


Use the space wisely:

make the CTA clearly visible (of course the colour preferably contrasting with the background also has a role), and separate it properly from all other pieces of content. Direct attention to it but only in the appropriate moment if possible.

It is a good thing to have the colour theory and colour psychology in mind when defining the colour of the button. You can influence the visitors even by using the right colours – insurance companies for example often use blue because it reinforces the feeling of trust and intellectuality, while red and the different shades of orange will help you urge the customers.

The text on the CTA should always be precise: the text “Next” is too general, it keeps the user in uncertainty, resulting in less people clicking on it.

Do not simply show the door. Always indicate it clearly to the potential customers what will happen when they go through it. If you write “Buy X”, “Download e-book”, “Go to checkout”, that will most probably bring you much higher conversion rates due to your CTA.


7) Trust building elements

These may be different certificates, prizes and similar elements that can strengthen the trust of the users towards the product. In addition to the testimonials, in most of the cases it is also important that more significant opinion leaders also acknowledge it, because that is what will make you and your product credible.


8) Social opportunities

Do not forget to display the icons of the different social networking sites on the page. Let the visitors, even encourage them to, share the page with their friends, because you will not only acquire more visitors this way, but you will also become stronger in the field of social proof.


A/B testing: start it and never stop doing it

There is no such thing as a perfect landing page but you can always enhance its efficiency. You do not have to do anything else but to modify a couple of elements in a data controlled way.


landing page ab test


You can reach even a two-digit increase in conversion by changing the position or the colour of a button, by changing a word in the headline: hundreds of case studies prove that.

But how do you know what to modify?

This is what A/B testing is good for: you make two, almost identical landing pages having only one different element. So there is the old page (A), and another, on which you put a modification to the test (B).

Run these two simultaneously: distribute the arriving visitors randomly between the two in order to get the most natural results. Versions A and B should run at the same time, so that the results are not influenced even by that – it is enough thinking about what would happen to the results if you tested one of the pages the week before, and the other the week after Christmas.

The test should run for at least a week and you should preferably collect a significant sample of data, let’s say, that of a thousand visitors. This will be enough to show you how the conversion rates change.

Never stop doing A/B tests: there are always elements you can improve a little bit. You should run only one at a time though, because this is how you can get the most reliable data.

To read more about A/B testing in your ecommerce store click here: A/B testing in ecommerce: 10 things you really need to test


[bctt tweet=”By changing the colour of the CTA button only, you can reach a two-digit growth in conversion.” username=”aionhill”]


Mobile friendliness is not a matter of choice

Even though landing pages are usually not search engine optimized, they still need to be displayed on mobile devices perfectly.

More and more people click on social media advertisements from smart devices, you read your emails mostly on these, you launch the searches as well from small screen rather than from desktop. And all this means that no matter what sort of campaign you launch, a significant part of your visitors, likely the majority, will have the landing page displayed on a mobile device.

You will obviously have to be prepared for that and make your page in a way that it is comfortably displayable on a mobile device as well. You should pay attention to examining the conversion rates and other indicators of the desktop and mobile versions separately, and to running the tests accordingly as well.


ecommerce landing page mobile


It takes nothing to start it and it is worth sustaining it

I am not denying that creating the first couple of your landing pages will involve some work, however, practice will make you quicker as time goes by, and the tests and the feedback will provide you with valuable experience.

Besides, you will notice that the return of your campaigns is higher, that the conversion rate is better, the turnover increases. That is because you will convince more people that it is actually worthwhile for them making a purchase from you.

It is not necessary that each of your products has a separate landing page – but when you run some kind of an advertising campaign, with very few exceptions, the landing page is an essential element of that.

It is best if you start planning the first right now. I’m sure you already have some great ideas.




The real problems with the Magento RWD theme and how we fix them


Those who already have dealt with Magento frontend development, probably know the Magento RWD theme (Responsive Web Design). This responsive template comes with the Magento basic package, which can be used to build mobile-ready online stores.

Mobile-ready is not to be confused with mobile-first as mobile-first is the approach that works way better with mobile devices since it places faultless mobile use as top requirement. With the appearance and spread of smartphones, our internet usage has been dramatically changed. In today’s world more and more people use their smartphones or tablets to gather information on the net and also to do their shopping. Therefore it is crucial to make online purchases with mobile devices simple, clear and fast.

So most of the time, our clients assign us to optimize their online store look, in addition to desktop, for mobile devices working 100% to achieve flawless UI/UX.

The RWD theme, let’s be honest, can fulfil these criteria only to a certain extent. I’m going to write about this below in detail. After several development projects, we decided to create a separate theme with the help of the Bootstrap framework, based on the RWD solution.


[bctt tweet=”Nowadays it is must in ecommerce to make online shopping flawless on mobile devices.” username=”aionhill”]



What are the reasons why, I believe, RWD is not the best solution for creating a 21st century mobile-first ecommerce store?

  • It is mobile-ready, not mobile-first (still supports desktop display in the first place)
  • Out-of-date grid system (RWD uses a several year-old, custom developed grid system with which it is difficult to create unique mobile friendly designs, while NILA uses one of the most up to date fronted frameworks, Bootstrap, with a 12-column grid system, flex support—an ideal solution for fast developments)
  • It’s not modular (it is not possible to modify separately sub-pages and layouts, everything is managed with CSS files)
  • There is no OOP CSS (Since RWD contains only one compiled CSS file, so it is difficult to modify basic settings like colour, font type etc.)
  • Poor browser support (no explicit support of OSX/iOS)
  • Design


Our graphic designers have worked out the NILA appearance based on RWD. We tried to make it clearer while applying mobile-first aspects. This means that we use a base to top build up process both in terms of design and implementation. For colour shades we have chosen bluish grey, which resulted in a very clear-cut “minimalistic” approach.


Creating a new skin

First, we created a new skin under the RWD package. We did not use a new package because the structure of the NILA template is based on RWD, and because of this we could go on with developments faster.


rwd vs nila template structure


In practice we overrode the templates and layouts we needed from the NILA skin, while, in the current version, we manage the rest of the structure from RWD.

We used the latest version of Bootstrap (3.3.6), CSS was implemented with Less (stylesheet language) in terms of object orientation. The package version of NILA will contain only the compiled CSS files.

Every page and sub-page got a new design, we elaborated a uniform appearance and took special care of email templates and language versions (hu_HU).


NILA code build-up

Now let’s take a look at the code structure of NILA.


Directory structure

NILA theme: app/design/frontend/rwd/nila


NILA skin:: skin/frontend/rwd/nila


Our skin directory is made up of several sub-directories.

  • aion: NILA skin own CSS / JS file­s that influence the appearance of the page
  • css: email­inline.less, frontend appearance for email templates
  • images: default RWD template images
  • img: images belonging to NILA theme
  • vendor: directory of third ­party libraries and modules (Bootstrap, Fontawesome, Owl.Carousel)


Grid system

It’s the template system of RWD, based on a custom-developed grid system, which can be used only partially for the development of mobile-first pages template.



@media only screen and (min-width: 480px) {
  .customer-account-login .col2-set .col-1,
  .customer-account-login .col2-set .col-2 {
    padding-top: 0;
    margin-top: 20px;
  .customer-account-login .col2-set .col-1 {
    padding-right: 20px;
  .customer-account-login .col2-set .col-2 {
    padding-left: 20px;
    border-left: 1px solid #ededed;
@media only screen and (min-width: 770px) {
  .customer-account-login .col2-set .col-1 {
    padding-right: 0;
  .customer-account-login .col2-set .col-2 {
    padding-left: 60px;
    border-left: 1px solid #ededed;
@media only screen and (max-width: 479px) {
  .customer-account-login .col2-set .col-1 {
    padding-bottom: 30px;
  .customer-account-login .col2-set .col-2 {
    padding-top: 30px;
    border-top: 1px solid #ededed;

As we can see, the declaration of the grid system’s mobile breakpoints does not adjust to standard breakpoints, but creates unique points: 479, 770, and examining the code further, we can find more “alien”/unusual/non-standard breakpoints:

@media only screen and (max-width: 535px) {...}
@media only screen and (max-width: 525px) {...}

We chose the Bootstrap framework for the NILA grid system which was developed with a mobile-first approach and aligns with the standard breakpoints and thus supports standard resolution parameters:

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */
/* Small devices (tablets, 768px and up) */
@media (min-width: @screen-sm-min) { ... }
/* Medium devices (desktops, 992px and up) */
@media (min-width: @screen-md-min) { ... }
/* Large devices (large desktops, 1200px and up) */
@media (min-width: @screen-lg-min) { ... }


rwd vs nila grid



Less files

We have built up our template to be as modular as possible and to be modified easily. Every page, CMS page was given a separate Less file, therefore we can modify the template on a modular level. In case of new projects, there is no need to use the whole template, it’s enough to use some of the layouts.

The uniform elements display features of the template, e.g. header, footer, buttons etc. are also included in a separate Less file. We also created a BASE.less file for storing variables, functions and mixins.




Only the nila.css file is present on frontend, and this is built up from modular less files the following way before compiling:

  • Base.less
  • Default.less
  • Module.less



rwd vs nila directory


In case of a new page, we only need to assign module_name.less module_neve.less file to nila.less and after reversing, nila.css will contain the new or modified appearance.



From a JS point of view, the NILA theme does not contain any major modification compared to RWD. We used only OwlCarousel.js­t besides the Bootstrap plugins for the slider of the main page new product offers.


        autoPlay: false,
        items : 5,
        itemsDesktop : [1199,3],
        itemsDesktopSmall : [979,3],
        navigation: true

As we can see, 5 products are displayed by default in the slider, further products can be viewed by sliding. If we’d like to show a different number of products, we can set it in the admin panel, by modifying the line below as well as modifying the values of the javascript “items”:


   $content = '{{widget type="catalog/product_widget_new" display_type="new_products" products_count="5" template="catalog/product/widget/new/content/new_grid.phtml"}}';


Template override description

Since the present version of NILA is based on the RWD package, we only modified those template / layout files that we needed for unique appearance. In later phases of development NILA will get separated from the RWD package and will function as a separate package.


  • CMS
  • Home
  • Category
  • Product
  • Cart
  • Checkout
  • Wishlist
  • Dashboard
  • Account


One of the most important advantages of the NILA theme is its modular build-up. While modifying the “old school” RWD theme is rather laborious (only compiled CSS is available in the package), the NILA theme can be customized in a matter of minutes by modifying the base.less and default.less files.


Further mobile optimization

As I’ve mentioned, our template was built up with a mobile-first approach, our aim was to make it as mobile user friendly as possible. Since a number of elements are hard or impossible to use on mobile devices (e.g. tables, shopping cart, checkout, tap areas), we developed a custom module which recognizes the device type of the user and thus load mobile and desktop blocks accordingly.

We based our module on the well-known directory solution, MobileDetect PHP.


<?xml version="1.0"?>


Detecting type of mobile:


public function isMobile($userAgent = null, $httpHeaders = null)
        if ($httpHeaders) {
        if ($userAgent) {
        // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
        if ($this->getUserAgent() === 'Amazon CloudFront') {
            $cfHeaders = $this->getCfHeaders();
            if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') {
                return true;
        if ($this->checkHttpHeadersForMobile()) {
            return true;
        } else {
            return $this->matchDetectionRulesAgainstUA();


Our function can be called the following way in either of our template:


$helper = Mage::helper('aion_mobiledetect/data');
  echo “is mobile”;

  echo “is not mobile”;


This solution gives us the opportunity to load unique blocks, in addition to responsive layouts, to mobile devices whose structure is completely different from desktop display structures. These block will only be downloaded by our browser if we use the website on the given device. Thus we can avoid downloading unnecessary elements.


Safari / iOS support

Another big drawback of the basic RWD theme is that it supports certain types of browsers poorly. Our clients usually require that their online stores should work fine with OSX and iOS browsers apart from Windows based browsers like IE10+, Chrome, Firefox, Opera.

Since Safari handles certain values differently by default than Chrome, simple modifications to general Less files would not solve the problems.

By showing a simple example, Safari handles the “display: flex” value in a different way from Chrome or Firefox, so we needed to make the following modification:

.aion-dashboard-whislist {
 .cart-item {
 display: -webkit-flex;
 -webkit-flex: 1;
 -webkit-box-flex: 1;

Please note: in case of Safari, another problem is formatting the forms because OSX and iOS both display native form elements. After having discussions with our designers, we finally decided, in order to achieve a better user experience, to keep the native appearance of the form elements under the OSX/iOS systems instead of using unique / Bootstrap form elements.]

The previously mentioned MobileDetect was used as a solution, complemented with a Safari detect feature:


* This method checks if browser is Safari / Desktop
* @return bool
public function isBrowserSafari()
    $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";
        if (stripos($agent, 'Safari')
            && stripos($agent, 'iPhone') === false
            && stripos($agent, 'iPod') === false
            && stripos($agent, 'Chrome') === false) {
            return true;

     return false;


To be used in the following way:


$helper = Mage::helper('aion_mobiledetect/data');

    $body_class = "__browser_safari";

    $body_class = "__browser_other";


Using this, we could make modifications just for Safari browser specific CSS files that do not influence the appearance in Windows based browsers.


/** This less file support OSX/Safari browser compatibility!*/
@import "base";
.__browser_safari {
 … custom solutions


SummaryThe NILA theme will include a lot of corrections and unique solutions compared to Magento RWD, which can make your ecommerce store even more successful. We have developed our template in such a way that any online store can be customized fast and simply with it.

The NILA template is still under development and we are currently testing it in-house with smaller projects, but the day soon will come when it is publically available as a package solution.

Of course, when this day comes, we will let you know about it here on our blog.


How to promote effectively your ecommerce business (with zero budget!)

That is because you also need to let your target market know about all this. If nobody knows about how great blog posts you write, what kind of problems you solve with your products, you will not rank high on the hit lists of the search engines either (since you will lack user feedback, which is the most valued by Google).

Therefore, in the following, we will give you a complete guide to what techniques you can use to promote your brand, your products and your content: from social media to link building.


What we are going to talk about:

How to take advantage of social media?

  • Tips for all channels
  • Online store on Facebook
  • LinkedIn: professional content on a professional channel
  • YouTube: you can capture everyone’s attention with videos
    • Youtube SEO
    • What kind of video content is it worthwhile for you to make?
  • Twitter: start a discussion!
  • Pinterest: your interactive catalogue
  • More images! ‒ Instagram
    • How should you use Instagram?
  • The unexploited Tumblr
    • Choose a specific topic
    • Tumblr and SEO

Ecommerce store and search engine marketing: how to rank high?

  • Use the price comparison sites
  • Place yourself on Google Places
  • SEO for your online shop
  • Monitor the analytics
  • Optimize for mobile devices
  • Get ratings

Link building: turbo charge SEO, be visible, attract organic traffic

  • Ask for ratings of your site!
  • Include your link in your signature
  • Mention your brand wherever you can
    • Bloggers and opinion leaders

Promotional ideas that need no budget

  • Give something in exchange for shares
  • Try viral content
  • Affiliate marketing: take advantage of resale
  • Make use of the power of content

Final conclusion: promotion is not expensive but it is hard work



How to take advantage of social media?


Tips for all channels


Before going through in detail how you can exploit each channel the most efficiently, there are some tips that you should keep in mind in all cases:

  • Your introduction should be short and straightforward.
  • Always include the link of your online shop in your bio.
  • Use your logo and the image colours as your profile photo, thus you will provide a consistent experience for the consumers.
  • Never spam.


Online store on Facebook


Let’s start at the beginning: your own, personal Facebook profile can also be used for the promotion of the ecommerce store, but if possible, you should not change your profile to one that simply shares all products from the shop. After a while your friends will scarcely look at them or click on them, most probably many of them will even block you.

The personal profile should be left personal: share posts that are really relevant there. Of course these can be a couple of relevant products that you think your friends would also like, or they will find interesting for some reason, or maybe testimonials of other friends – posts, tweets, etc. –, media articles you are proud of, and so on.

In addition, you should share photos, comment, make the impression that there is still a human being sitting behind the monitor and not a script that would like to shove off purchases its own friends’ throats.

However, you should not spam the official Facebook page of the online shop completely with products either.

A few years ago, if you followed a page on a social media site, you had a good chance of seeing the majority of its posts on your Timeline. These times are over, access of company pages are much lower now, pages try to show posts to the users that they will more likely get into interaction with, like them, comment them, and so forth. Links of products are seldom like that.

Consequently, if you have no money, you should share content on your page that your target audience might find interesting.

If for example, you are selling knitting thread, you have to ask yourself: what is relevant and what the audience is interested in? Not the products themselves but rather the various patterns for example. Guides that show how they should implement their hobby projects. Creative and original ideas. Personal stories about how some complicated pieces were made.

Indirect promotion can bring much better results. Of course, in the meantime you can share products or even sales deals as well. The goal is to have as many followers finding your pieces of content interesting as possible, because this way you will be present on more pages – so instead of having only a couple of people seeing the hundred products that you post daily, hundreds of people will see one, which has a greater chance of selling.

Facebook is also an indispensable tool even if you do not have money for advertising when it comes to B2C, in other words to communication deliberately aiming at the customers: according to the data of Hubspot, 70% of the companies are capable of acquiring clients from this channel.


LinkedIn: professional content on a professional channel


The function of LinkedIn: is completely different in case of a business. Even though the operating principles are similar, it is not at all like Facebook: it is an interface where professionals contact each other, share professional content and it is primarily used for networking, for relationship building.

So forget about advertising your products with its help.

Try broadening your network instead. Use it to search for people who can help you with promotion (for example opinion leaders, at whom you can publish guest posts in a popular, relevant blog).

It is also worth joining different groups that are relevant: having discussions with those who do business in a similar field and collecting experience and looking for groups where your target audience discusses their problems – and offering solutions for them.

You can share status updates here as well, but we suggest that these are very relevant and valuable pieces of information: LinkedIn is not the ground of the memes, but rather an interface where the professionally irrelevant posts cannot become popular, therefore, you should choose a completely different strategy than in case of Facebook.


promote ecommerce business social channel traffic


YouTube: you can capture everyone’s attention with videos


YouTube offers amazing potentials for any online shop even if there is no budget for advertising and if you do not want to promote your products directly.

This is because sales can be superbly boosted with various types of creative content that you can use later on the pages of the estore as well.

Also see our article: 11 product page improvement tips for more conversions

Such content may be product tests, guides (how to use a product), or even videos demonstrating tips and tricks (Did you know that you can do that with the product?).


Youtube SEO

The most popular video sharing website is operated by Google, so it is natural that you can take advantage of the opportunities lying within search engine optimization as well. For this you need to make sure to

  • incorporate the most important expressions, keywords into the titles of the videos,
  • to make unique and informative descriptions to the videos, in which long-tail and LSI keywords are preferably included as well,
  • have a link in the description leading to the page of the product you are presenting, and mention it in the video as well that the link is there: click-through is useful in link building,
  • use tags to lure the users browsing the videos to yourself,
  • measure how long videos your audience like to watch and make yours accordingly, so that more people watch them,
  • place links within the video as well.


The very relevant and popular YouTube videos may even appear on the first page of the search result list of Google, of course with photos – without having to pay even a dollar for this high rank that will instantly attract attention.


tips What kind of videos should make?:

It depends primarily on the target audience of your online shop what kind of content they will be interested in.

Educational: present visually how a given product is made, how it should be used, how eventual problems should be corrected – or what it’s good for in the first place. The point is to provide valuable information to those who might be interested in the product.

Problem solving: Guides in which you show how the target audience can solve a problem, for instance by using your product.

Expert interviews: videos that may reach the professional audience.

Product demonstrations: Videos that show and sell the product in an entertaining and useful way, not like advertisements.


Twitter: start a discussion!


Twitter can wonderfully be used for increasing your visibility on the market and thus building your brand: initiate discussions that activate or shake up the audience, build them around different themes or topics.

You can address particular users (opinion leaders for instance) with a message. You can ask open-ended questions that your audience will enthusiastically answer. You can monitor the discussions relevant to you, thus collecting valuable information on what kind of problems your audience has, how they try to solve them, in what style they are communicating, and so on.

And you should possibly share interesting, creative and relevant content on your own channel, just like in case of Facebook: preferably something that encourages to interact in some way.


Pinterest: your interactive catalogue


Visual elements have the leading role here:

About Pinterest:


People share posts on Pinterest that primarily delight, that apply visual gags or that transmit information in the form of infographics for instance.

This is a great interface for the ecommerce store to even make a catalogue from its products – an interactive, aesthetic and shareable catalogue.

You can make full product pages here as well, with advantages, functions, prices in addition to the photos.

It is worth creating a separate board for the testimonials and user opinions as well, which may be popular among the sharers and can strengthen the trust for your company.

You can even organize competitions here: you can ask the users to share certain pieces of content, to use the appropriate tags and hashtags and thus make you and your products popular in exchange for some sort of a prize.


More images! ‒ Instagram


Instagram is the interface where you can transmit the feeling, how it feels using a particular product. Without your shares, looking like advertisements, you can promote your products by motivating people to buy them.

An estore selling clothes can brilliantly use this interface and simply put their models into ordinary real-life situations and shoot them together with the products, thus putting them discreetly in focus.

The popularity of Instagram is increasing, and that is for a reason, since it is a very simple tool for you to document your everyday life, to create the modern version of the photo album – and your online shop can also make use of that.

The aim is to publish photos that trigger positive reaction and that can easily become widespread – motivating, inspiring thoughts and visual elements are especially popular.

It is quite important that you use hashtags correctly, because this is the most effective way of increasing visibility on Instagram.


How should you use Instagram?

  • Publish positive, inspiring messages and product images, even with watermarks (which preferably should not spoil the user experience), to make your brand visible like that as well.
  • Run competitions, prize promotions if the users mark their photos with your hashtag or if they are shot with your products for instance.
  • Test your audience: you can post a couple of times a day, but activity depends also on what kind of audience you want to communicate with.


The unexploited Tumblr


You cannot only increase visibility and share content easily on Tumblr, the interface is also remarkably suitable for link building. Marketing on Tumblr is similar to that on Instagram, the difference is that it builds on simple messages and mainly on visual content.


Choose a specific topic

Blogs on Tumblr are usually very specific, and you should also make your own content flow thematic.

It is recommended for you to make at least 10-20 posts in advance, so this way you can strengthen the topic, build the content base, just like in case of a blog where it is also advisable to upload some posts in the database in advance.

This way you can make the users who have found you for the first time follow you more easily, because they do not see only a vague sharing from you, but they will know that you publish regularly.

The microblogs that are run here are plain and simple, and content-dominated. Uploading works just as easily as in the case of Twitter.


Tumblr and SEO

The platform can assist you in ranking as well. If you use the search terms and the valuable content smartly, you can easily rank high on the search results pages.

You can also display links on your product pages and include them in your other pieces of content, thus – and with the shares – strengthening the link profile of your ecommerce store.



Ecommerce store and search engine marketing: how to rank high?


We have already mentioned some practices on how you can reinforce your position in the search engines with the help of social media sites. Now we are giving you some tips on what else in addition to those can help you to rank even higher on the search lists.


promote ecommerce business search engines


Use price comparison sites


Sites that help the users find the products they are looking for at a lower price are exceptionally popular nowadays everywhere around the globe. Products that appear on these sites will have a greater chance of ranking high, regarding that these sites generally rank extremely high.

There are free as well as “paid” sites where you have to pay for appearance: Google Shopping, Price Grabber or for instance Shopzilla and Amazon Product Ads are like that.

Try which one works best for you, but once you find the good one, it will most definitely be a profitable investment since you can generate more purchases with more organic hits.


Place yourself on Google Places


Google Places offers an opportunity for every business to create their own pages that will also appear among the local hits on the search results pages of Google.

Of course it is a question what an ecommerce website should enter as location since in the majority of the cases there is no physical shop behind it.

This may be the location of the warehouse, of the PO box, or even that of the operator: the point is to have an existing page, because this way if somebody searches in an online store in, say, Manchester similar to yours, they will have a greater chance of landing at your site.


SEO for your online shop


Recently, we have thoroughly analysed search engine optimization of product pages of your online shop, for which reason, we will only shortly touch upon that topic now.


If you want Google and other search engines to give preference to you over your competitors, it is not enough for you to use the appropriate keywords.

  • You have to fill your pages with original and relevant and unique content.
  • You have to provide the metadata, while paying attention to long-tail keywords as well.
  • You have to use multimedia content, too: as we have already mentioned it at the section on YouTube, videos tend to rank high.
  • You have to pay attention to your link profile: who links to you and from where, and you also have to avoid black hat techniques, techniques that are banned by Google.


Monitor the analytics


By simply integrating Google Analytics you can monitor a great deal of indicators that will help you make your pages more effective.


tips Some tips you should pay attention to::

  • Bounce off rate: if it is too high, it means that your offer is not ideal for the audience that arrive on your page – or you do not communicate the offer correctly on your page. In such a case it is worthwhile for you checking whether you are channelling the visitors well, and whether you are transmitting the appropriate message.
  • Exit rate: site abandoners are those who stay on your site, even read the offer, but they do not convert in the end. If there are many people like that, maybe your offer is relevant but it is not convincing enough – there may be problems with the sales text, or even with the structure of the site, because it may also be that ordering from you is simply too complicated. (In such cases it is worth making a heatmap test as well.)
  • The most popular pages: monitor at which pages the most organic visitors arrive, where conversion is the highest. Consider these pages as role models, and place these in focus in your communications channels if you want to maximize your income.
  • Customer behaviour: examine how the visitors arriving at your site behave. How many pages they view during one visit, how much time they spend on each page, where they click, on which part of the page they exit.

You can read more about the indicators that you should monitor here: What to measure in ecommerce analytics and how to improve results?


Optimize for mobile devices


Only those pages have a chance to rank high among the search results that are mobile-friendly: they are displayed on the smart devices in a way so that their use, the navigation and the content view is comfortable, obvious and quick.

Additionally, you also need to make sure to mobile-optimize your content: if the users search on a given product type, your videos, posts and product pages should come up on the hit lists.


Get ratings


When describing product page SEO, we mentioned how important it is to use customer ratings. These appear as continuously updated content, but even Google may display them directly (for example in the form of stars or numbers) on the search results page right under the title, this way they can strengthen your position and increase the trust of your customers in you.


Link building: turbo charge SEO, be visible, attract organic traffic


Link building is a very important technique, even today: it has just become somewhat more complex, as it is content marketing that ensures its fuel nowadays. If you produce valuable content witch is shared, that will help you reinforce your link profile. If you force your links into link catalogues without placing unique, relevant content next to them, Google will punish you: it is that simple.


But how can you urge people to talk about you?

We have already talked about social platforms: Google has monitored social shares and its algorithm appreciates if loads of people publish your posts.

A piece of good advice:

Even though the number of active users of Google+ is much lower than that of the other similar social sites, Google values higher the shares appearing here (since it is their own service), and it even displays them on the search results pages.


Ask for ratings of your site!


This is not about testimonials this time: look for professional forums and ask the experts to rate your site, to provide an opinion about it.

On one hand, you can get a great deal of useful information about what else you should improve, how you can further optimize your site to be able to provide better user experience and realize higher conversion rates.

On the other hand, your link will also appear and if you are lucky, the respondents will refer to your site as well when they give advice.

And these references will be very powerful as they will appear among a great deal of unique and relevant pieces of content, on powerful sites.


Include your link in your signature


In case you are active on professional forums or on social media sites, where your signature is also displayed under your posts, your comments, you should by all means incorporate the link of your ecommerce store into it: every single appearance will be represented in your link profile and thus will make it more powerful. In addition, in such cases this will always happen with the involvement of individual content.

It is not only your main page that you can support like that: you may also link relevant content that the users will actually click on, like for example a hook-in product targeted at the given audience, for instance an e-book.


Mention your brand name wherever you can


This is not exactly a link building technique, still, it is useful for you in search engine optimization. Google will value it as well, if your brand name appears multiple times in relevant context, because of Latent Semantic Indexing (LSI) in the first place, which helps the algorithm of the search engine to build a synonym dictionary and to understand better what certain expressions, names imply in a given context.

If you are selling on Amazon or on eBay, you should definitely display your brand on your product pages, in the product descriptions! This way you can connect your brand with the products in the minds of the customers as well, and perhaps they will search on you directly the next time.

Always give your shops operated on such sites the same name that your own separate website has, and you should use your logo as well, and try to provide a consistent experience: preferably even with design elements and content as well.

And if your brand happens to be mentioned somewhere on the web without there being a reference to you, ask the owner of the publication to make that for you, give him a reference that you would like to see displayed on the page.

If he is reluctant to do so, you might as well offer him a mention yourself in exchange. (There are tons of tools available online for free that you can use to follow brand mentions, which will even notify you when a new mention appears, like for example Google Alerts.)


Bloggers and opinion leaders


Contact content providers with already established audiences and offer them your own content, or ask them to co-operate with you in some way that could be advantageous for both of you. Even a couple of hyperlinks on their highly visited blogs may be extremely precious for you, your link profile benefits a lot from it and it may also bring a lot of visitors for you at the same time.

You can make yourself more visible with guest blogging as well:

You can publish professional articles on relevant sites, where the link provided by you will also be displayed next to the author (by the way, you can reinforce your personal brand like that as well).


Promotional ideas that need no budget


In case of a newly launched online shop, it is very likely that there are no larger budgets available for advertisements, or for the running of campaigns – fortunately, however, thanks to online marketing you can promote your estore even completely free of charge.


how to promote ecommerce business no budget

No need to destroy piggy! You can use totally free marketing tools.


Use these few tricks below and you will not have to spend a single additional dollar to become visible for the users and to increase your conversion rate:


1) Give something in exchange for social shares


Even if you do not have a budget available for that, you can always offer a product for free (unless you are selling Ferraris – but in that case you would not get your ideas from this article).

Offer the users a free product in exchange for sharing content related to you on social channels, for spreading your links, for using hashtags that can be linked to you.

Prize promotions are certainly suspicious by default for many people, for which reason it is worthwhile reinforcing the call with testimonials and user opinions, and also, you should firmly communicate already after the first promotion that the winner actually received their prize.


2) Try viral content


Content production is not for free as you have to invest time and energy in it – this, however, may amply pay off if you manage to make some kind of a viral content that people will share even without compensation.

In such a case, you will provide the experience or the value in exchange for the share: a calculator, with the help of which people can calculate some things that are important to them (these are popular in case of financial products for example), or some sort of a funny, amusing, entertaining tool or message.

You have to be realistic about what may go viral. If your target market is narrow, you should not expect the number of shares to be several hundreds of thousands: it is enough if a lot of people will get to know your name in the professional community, within the relevant target group, or if you appear on the platforms and forums that are significant to you.


[bctt tweet=”You can promote your ecommerce store with methods that don’t cost a dime.” username=”aionhill”]


3) Affiliate marketing: take advantage of resale


In case you do not have money for advertising, outsource dissemination. Create a distributor programme, within the framework of which you give a certain percentage of the turnover stemming from actual purchases to those who realised the sale.

From developer point-of-view, there are several different solutions for the implementation of such a programme: it is worthwhile for you to go over the guides of your ecommerce store to see what kind of ready-made solutions you can utilize.

Why is this useful for you? Mainly because no immediate expenses are involved: you may give up on part of your turnover though, but you generate traffic at the same time, and later, when you will already have a separate budget for advertising, you will need much less effort to make your previous customers convert again. Besides, more people will get to know your name and you can acquire valuable partners.


4) Make use of the power of content


Content marketing on a higher level may require a significant separated budget, however, at the beginning you can do it yourself, in which process the social media channels detailed above will assist you: that is because with their help you can spread your range of content for free.


What sort of content can you easily make even if you are a beginner?

  • You can shoot videos that you upload to YouTube, in which you give tips, present your products etc.
  • You can write blog posts in which you sell your products with storytelling, you write guides, detailed professional material, or analyse trends for instance.
  • You can create infographics (there are free solutions available online for that, you can choose from a great deal of templates on the appropriate pages), and you can share them on Instagram or on Pinterest.
  • You can publish a press release, in case you start some kind of a sale. If you formulate that interestingly enough, you can easily win a few important appearances for yourself.
  • You can disseminate your content with influencer marketing: you can approach opinion leaders, industrial experts with some of your nicely elaborated materials and with a little luck you might as well get some shares – and a great deal of new visitors thanks to that.


Final conclusion: promotion does not need to be expensive but it is hard work


You do not have to despair even if you have launched your online shop just now: you can shortly obtain followers, shares, visitors and finally customers without spending a single dollar on any sort of campaign.

But this does not mean that you do not have to think about launching a campaign. Online platforms and tools offer an inexhaustible amount of possibilities for promotion, but you have to use these consciously, and at the beginning, until you can outsource such work, you have to invest a great deal of working hours in the production and promotion.

This is not at all a problem because later you will know exactly which indicators you have to monitor, what makes a piece of content good and whether sharing and communication go well: in other words, you will have a better insight on the work processes.

In the meantime you should start making use of the two-way communication on the web, take part in the discourse and actively steer the discussions in your favour.


EAV database for Magento (1.9) in practice (frontend)

Under Magento it means the following:

  • entity table (defines entity)
  • attribute table (defines attribute, its type and other options, e.g. source model, type, input, label)
  • value table (it is separated according to types, partly because of indexability and searches, e.g. catalog_product_entity_int, catalog_product_entity_varchar etc.)


The attributes could be stored in the main table, couldn’t they?

In the EAV data model, while adding new attributes to the entities, there is no need to modify the original table. So too large tables can be avoided, thus the speed of queries will be faster, and also unnecessary data with lists will not appear, only those that we add to the collection.

Here, we are going to create a module, with both admin and frontend interfaces, using an EAV solution.


Having installed the online store on the server and after configuring it (base url, database name, database user stb.), and if everything shows right, we start the development.


For defining the module, we need to create an xml file named with the module’s name in the app/etc/modules directory. In our case it is Aion_Items.xml, the codePool is local, but it could also be placed in the community codePool.


The xml looks like this:


<?xml version="1.0"?>


This is not yet finished. The module will not appear even after emptying the cache, not even in the module list in the admin panel.

Next we should create the module defined in the xml, within the directory that was set in the codePool. Here, in this case, it means the local directory (if it does not yet exist) under the app/code folder, and within it an Aion/Items directory is to be found.

So the final path in this case is: app/code/local/Aion/Items.




In the following steps to come, the general rules of module development are to be applied with some minor differences. If you have forgotten some details, it is completely acceptable to look up the content of Magento core modules for some help : )

Create the module config.xml file, step by step:


<?xml version="1.0" encoding="UTF-8" ?>


Define the paths of the models and resource models, and also the entity table(s) for the module. Insert the following elements before the </config> node and right after the </modules> node:




We haven’t yet closed the <entities> node, we keep “staying with” it and define the other EAV data tables, type by type:




Now we define the paths of helpers and blocks:




Now, to have our tables created, we need to set the resources, which means defining the installer and database connection. It can be inserted below </blocks>, but it is important to have them on the same level.




As you can see, we have closed the nodes, next we will create the basic helper (it is very important (!), your module will not work without it) and the models. They need to be created in the location defined in the xml. The models are created in the Aion/Items/Model directory, while the helper in the Aion/Items/Helper directory.


The default helper belonging to the module is named Data in every case, the Mage::getHelper(‘aion_items’) tries to create this, which is equal to the Mage::getHelper(‘aion_items/data’) call.

Thus our helper has the class name Aion_Items_Helper_Data, and file name Data and is derived from the Mage_Core_Helper_Abstract class.


Let’s create the models and resource models.

We defined the article under <entities>, so let’s make it our model, let’s create the

  • Aion_Items_Model_Article
  • Aion_Items_Model_Resource_Article
  • Aion_Items_Model_Resource_Article_Collection classes.


Since we have chosen the EAV data model, we do not derive them from the usual Mage_Core_Model_Resource_Abstract and Mage_Core_Model_Resource_Db_Collection_Abstract classes, but, based on the order of the aforementioned elements, from the following classes:

  • Mage_Eav_Model_Entity_Abstract
  • Mage_Eav_Model_Entity_Collection_Abstract

There is still a small change in the resource model:


class Aion_Items_Model_Resource_Article extends Mage_Eav_Model_Entity_Abstract
const ENTITY = ‘aion_items_article’;

public function __construct()
->setConnection(‘core_read’, ‘core_write’);


The first model was omitted from the list deliberately (Aion_Items_Model_Article). It is still derived from the Mage_Core_Model_Abstract class, so there is no change. When the models have been created, the installer class needs to be created. This has been defined in the basic configuration file of the module (Aion_Items_Model_Resource_Setup). Let’s create it in the appropriate location, with the following content:


class Aion_Items_Model_Resource_Setup extends Mage_Eav_Model_Entity_Setup
    public function getDefaultEntities()
        $entityAttributes = array(
            Aion_Items_Model_Resource_Article::ENTITY => array(
                'entity_model' => 'aion_items/article',
                'attribute_model' => '',
                'table' => 'aion_items/article',
                'attributes' => array(
                    'name' => array(
                        'type' => 'varchar',
                        'label' => 'Name',
                        'input' => 'text',
                        'global' => 0,
                        //this set the attribute to store entity data separated to every store not globally
                        'visible' => true,
                        'required' => true,
                        'user_defined' => true,
                        'visible_on_front' => true
                    'customer_id' => array(
                        'type' => 'integer',
                        'label' => 'Customer',
                        'input' => 'select',
                        'global' => 1,
                        'visible' => false,
                        'required' => true,
                        'user_defined' => true,
                        'visible_on_front' => false,
                        'source' => 'aion_items/article_attribute_source_customer'

        return $entityAttributes;


These attributes will be created for the entity type when the installer is run. There are other possibilities apart from the attribute options mentioned above, but since these are not different from the default values, there is no need to define them.


We can see it at the customer_id attribute that we included the source option, so we will need a source model. Create the Customer.php file in the defined location and with the defined name in the app/code/local/Aion/Items/Model/Article/Attribute/Source directory, with the following content:


class Aion_Items_Model_Article_Attribute_Source_Customer extends Mage_Eav_Model_Entity_Attribute_Source_Table
    public function getAllOptions()
        if (!$this->_options) {
            $customers = Mage::getResourceModel('customer/customer_collection')
                ->addAttributeToSort('lastname', 'ASC')
                ->addAttributeToSort('firstname', 'ASC');
            foreach ($customers as $customer) {
                $name = [$customer->getFirstname(), $customer->getLastname()];
                $this->_options[] = ['value' => $customer->getId(), 'label' => join(' ', $name)];
        return $this->_options;


In order to create our table, there is only the installer left to be created. It should be done in the directory defined in the <resources> node, within the sql located under our module.

Since in this case it is <aion_items_setup>, therefore the directory will be aion_items_setup as well.


We have given the version, in <version> node, earlier in the config.xml file of our module. This will be the version number of our installer. Now, create an install-0.0.1.php file in the app/code/local/Aion/Items/sql/aion_items_setup directory, with the following content:


try {
    $this->addEntityType(Aion_Items_Model_Resource_Article::ENTITY, [
        'entity_model' => 'aion_items/article',
        'attribute_model' => '',
        'table' => 'aion_items/article',
        'increment_model' => '',
        'increment_per_store' => '0'

} catch (Exception $e) {


When done, the module is ready for install. But before running it, take a look at the directory and file structure:





In order to make our module’s installer run, empty cache in the admin panel under System – > Cache management. If the installer has been run successfully, we are to see the following tables apart from the basic tables in the database.





Not to miss a thing, switch on error log in the admin area before running the installer. Also, check the var/log directory whether they contain exception.log or system.log files. Additionally, we can see if the customer_id and name attributes have been created in the eav_attribute table with a descending order based on the attribute_id. We can also see, next to it in the entity_id field, what ID number has been given to the new entity type. You can make it visible by clicking on it.

All done right? Then let’s make a frontend page for our module to test if everything works fine. Insert the following code section under <global> node, but before </config> node:




For frontend display, we also need layout, controller, block and template files. Insert the layout file definition under the same <frontend> node:




Next, create the layout xml file here: app/design/frontend/rwd/default/layout. It is important to always create the basic template files, belonging to our module, in the layout directory under default belonging to the theme, because in this case any later modifications will affect its duplicate (copy) and not the original file. The same applies to template files.


<?xml version="1.0"?>
<layout version="0.1.0">
    <aion_items_index_index translate="label">
        <label>Aion Items</label>
        <reference name="root">
            <action method="setTemplate"><template>page/1column.phtml</template></action>
        <reference name="content">
            <block type="aion_items/list" name="aion.items.list" as="aion_items_list" template="aion/items/index.phtml"/>


Now let’s get to the template file and the block. We have indicated aion/items/index.phtml as the template file in the xml, thus we place the index.phtml file one level higher in the app/design/frontend/rwd/default/template/aion/items directory. Then we place a List.php file in the app/code/local/Acion/Items/Block directory with the following content:


class Aion_Items_Block_List extends Mage_Core_Block_Template
     * @return \Aion_Items_Model_Resource_Article_Collection
     * @throws \Mage_Core_Exception
    public function getArticleCollection()
        $articles = Mage::getModel('aion_items/article')->getCollection()

        return $articles;


Now let’s return to the index.phtml template file and, temporarily, make its content the following:


/** @var Aion_Items_Block_List $this */
$articles = $this->getArticleCollection();


To have the content of the collection displayed, we only need a controller. Create the IndexController.php file in the app/code/local/Aion/Items/controllers directory with the following content:


class Aion_Items_IndexController extends Mage_Core_Controller_Front_Action
     * @return $this
    public function indexAction()

        return $this;


Next, empty cache again in the admin panel and call the url belonging to the module on frontend (in the example this is /aionitems/ which is equal to an /aionitems/index/index/ call. If everything was set right, the following (or something similar) should appear:





So far so good.

But in fact nothing is yet displayed, as no data is included in the table. To make our example look good, write a data installer to see if our attributes work fine.

In one of the previous images there was a data directory whose role is exactly this. Non-system related modifications can be carried out through this. Structurally, it is connected to the sql directory, therefore we need an aion_items_setup sub-directory within it.

There is one more difference in terms of operation compared to a “plain” installer script: the files located under such structure are searched by Magento with a data- prefix.

Create a data-upgrade-0.0.1-0.0.2.php file in the app/code/local/Aion/Items/data/aion_items_setup directory (as the install-0.0.1.php has already been run) and also create an upgrade-0.0.1-0.0.2.php file in the app/code/local/Aion/Items/sql/ directory. In the latter we only indicate what happens and where it happens. Thus the upgrade-0.0.1-0.0.2.php contains the following:


/** @var Aion_Items_Model_Resource_Setup $this */
try {
} catch (Exception $e) {


The app/code/local/Aion/Items/data/aion_items_setup/data-upgrade-0.0.1-0.0.2.php includes the following:


/** @var Aion_Items_Model_Resource_Setup $this */
try {
    $defaultStoreId = Mage::app()->getDefaultStoreView()->getId();
    $attributeSet = Mage::getResourceModel('eav/entity_attribute_set_collection')
    $articles = [
            'store_id' => $defaultStoreId,
            'name' => 'Article name 1',
            'attribute_set_id' => $attributeSet->getId(),
            'store_id' => $defaultStoreId,
            'name' => 'Article name 2',
            'attribute_set_id' => $attributeSet->getId(),
    foreach ($articles as $article) {
} catch (Exception $e) {


We haven’t finished yet.

After updating, the new installer does not run, so, again, emptying cache is needed. Additionally, increase 0.0.1, in the config.xml file belonging to the module, under <version> node, to 0.0.2, and then update the page. If everything has been working OK, you’ll see this in the databse:





In the aion_items_article_varchar table the names are seen separately associated to the different entities.





After updating, we see the following on frontend:






I think I’m not very much mistaken if I say that EAV is a very useful and sophisticated solution which is not needed in most of the cases.

Most mid and small range developments do not require such a structural build since they include more, interconnected tables originally.

It is recommended to make it clear beforehand what characteristics our database management will have and what kind of resources it may use in the future, as it is possible to store these data in a generated, cumulative “flat” table—just the same as Magento does it with data organized in the same structure.

It would be quite time consuming and costly to reorganize existing tables with complex structures and large numbers into an EAV structure.


Magmi Importer – The Ultimate Guide to Fastest Magento Import + sample files included

What is Magmi?

A short definition:


Magmi stands for “Magento Mass Importer”, which is an open source code system with which you can import data to Magento based online stores.
Later I am going to describe in detail how you can import with it.
The development of this system was largely carried out by Sebastien Bracquemont (dweeves), and later some other developers took part in the project as well.


Installing Magmi


First, download Magmi from Github. Then copy it to your Magento root directory.
If you use an older version of Magmi ( < 0.7.22), it is recommended to rename the Magmi directory and protect the magmi/ root directory with htaccess.
If you don’t make these settings, anyone can have access to your Magmi interface.
In this article I’m going to introduce Magmi 0.7.22 to you.


Basic Magmi configuration


In this section I write about all the settings options in Magmi, strating from the profile settings to plugin settings.
Since it is developed in 0.7.22 to have a first-time log in, so at the first installation you can log in with the “magmi” user name and “magmi” password.
Later you will be able to log in with one of the Magento users.
Let’s start with configuring the database:


Magmi setup Start


Configure global parameters


  • Connectivity: what kind of database connection is to be used
    • Using host/port: here you can set the host and port number.
    • Using local socket: here you need to enter the socket access path.
    • Using magento.xml: here you can select magento local.xml if you want to use it (it is recommended, but for some reason it does not work)

I suggest you choose the first, Using host/port setting.
In this case, you need to make the following settings:

  • Host: host address (it can be localhost),
  • Port: in this case 3306
  • DB name: name of database
  • Username: user name of database
  • Password: password of database
  • Table prefix: (if there isn’t any, leave it empty)



  • Version: version of your Magento online store (if you don’t know exactly, log in to the admin panel, in the bottom-middle part you can see the version number, e.g. Magento ver.
  • Filesystem Path to Magento directory: here you need to enter the path of the Magento directory within the file system.


  • Reporting step in %: when importing, at what percentage you want to have a report
  • Multiselect value separator

Dir & File permissions

  • Directory permissions
  • File permissions

Backward compatibility

  • Disable attribute set update

After configuring everything in this section, it is IMPORTANT to click the Save global parameters button to make sure you save all your settings.

Configure Current Profile (Default)


Magmi Settings Profile


Why is it good to have more profiles?

Because it may be that with different imports you will need different settings and thus you will not need to make new settings all the time, you can save your profiles for later use.


Profile to configure

  • Current Magmi profile: name of profile
  • Copy Selected profile to: here you need to enter the name of the new (if you want to create a new one (a copy) from the selected profile), then click Copy Profile & Switch to create it.


  • Here you can select the source of data (I recommend CSV Datasource and will use it throughout the article)
  • CSV import mode:
    • local: local, so that you can select it from the CSVs stored on the server.
    • remote: CSV will be downloaded from an external server
  • CSVs base directory (with local mode): Here you need to insert the path of the directory where the CSV files are located (the following entry type is required, e.g. var/import)
  • File to import (with local mode): here you select which file you want to import
  • Remote CSV url (with remote mode)
  • Force Download (with remote mode): if you switch it on, the CSV is loaded again by all means; if not switched on, it will work with the existing file.
  • HTTP Cookie (with remote mode): you can set cookies if necessary
  • Authentication needed (with remote mode): you can set this if you want to have authentication for file download from a remote server, here you set the user name and password.

CSV options

  • CSV separator
  • CSV Enclosure: closing character, default value is double quotation mark (“)
  • Headerless CSV: switch it on if there is no header in the CSV (where you enter the field names); columns are given names of col1,…..,colN automatically. In this case it is MANDATORY to use the Column mapper extension. (This setting is not recommended.)
  • Allow truncated lines (bypasses data line structure correlation with headers): I don’t recommend to switch it on since, if the number of columns in the header does not equal the number of columns in the product rows, it still should run import for that row
  • Malformed CSV: it is used if the CSV header is not in the first row, so in this case you need to enter in the CSV Header at line in which row it is located.

Configuring Magmi plugins

You can find this section in Configure Current Profile, at general and itemprocessors.
I’ll mention some important details with every plugin, you can find thorough descriptions in the documentation of the plugins.


Magmi Settings General


Here you can find the Magmi plugins. There is an “info” button at each of them, which gives you a brief description of the given plugin, the “documention” link (not necessarily included with all plugins) will take you to the detailed information of the plugin on the Magmi wiki website.
If you activate one of the plugins, a Configure button appears, by clicking it, you can manage the plugin settings.

Remote Agent Plugin v0.0.1

  • Developed by: Dweeves
  • Description: this plugin makes Magmi operation in a remote system possible (Magmi is installed in a remote system)
  • Settings:
    • HTTP URL for Magento base dir: Magento directory URL of remote system

Attribute Cleanup v0.0.1

  • Developed by: 5byfive GmbH
  • Description: this plugin removes the attributes that are not used with the products
  • Settings: No

Attribute Set Importer v0.0.2

  • Developed by: 5byfive GmbH
  • Description: ezzel a pluginnal jellemző halmazokat és jellemzőket tudunk importálni.
  • Settings:

Enable attribute import

  • CSV import mode: detailed earlier (further configuration is the same as with CSV options)
  • Set default values for non-existing columns in CSV (JSON): here you should enter the values that are the same with every attribute, to be given in JSON format, e.g. {“is_user_defined”:1,”is_visible”:1,”default_value”:”Test”}
  • Prune attributes which are not in CSV from database: if switched on, it first runs the attribute set and then it deletes all attributes that are not included in the CSV. It is useful when you import all the attributes and would like to remove the unnecessary ones.
  • Don’t touch non-user attributes when pruning (if prune attributes is switched on): It is used when you want to remove only those attributes that are is_user_defined = 1, which means that it will delete non-system attributes only (we usually set it for attributes that are created during custom developments)
  • additionally, keep following attributes when pruning, even if not given in CSV (comma-separated): In this field you enter (separated with commas) the codes of those attributes that should NOT be deleted (recommended when the attribute is not included in the CSV, but do not want the system to delete it)
  • Delete attributes marked “magmi:delete” = 1: if switched on and magmi:delete column is present in the CSV and the value 1 is set, then that particular attribute will be deleted
  • Create attributes from CSV which are not in database: if switched on, then the attributes will be created that are not yet present in the database; if not switched on, the attributes in the CSV are taken into account
  • Update attributes from CSV which are already in database: switch it on if you want it to update the attributes in the CSV (included in the database)

Enable attribute set import: the settings here are the same as with “Enable attribute import”

Enable attribute association import: This helps associate which attribute should belong to which attribute set.

  • CSV import mode: detailed earlier (further CSV configuration is the same as at CSV options)
  • Add these attribute associations to given CSV data: here you can insert additional attribute associations, need to be separated with commas in this way:(attribute_set_name,attribute_code,attribute_group_name)

Configuration for this is the same as mentioned earlier.


Import Report Mail Notifier v1.0.0

  • Developed by: Dweeves
  • Description: used for sending a report about the import
  • Settings:
    • Email report to: To whom the report is to be sent, if you want to give more email addresses, separate these with commas
    • Report sender
    • Report sender alias
    • Subject
    • Body: content


  • Attach import log
  • Attach source CSV
  • Zip attachments

Magmi Import URL UI v1.0.3

  • Developed by: Dweeves
  • Description: this does not influence import, it only displays the URL at which the import can be called; usually used in cronjobs.
  • Settings: No

Magmi Optimizer v1.0.5

  • Developed by: Dweeves
  • Description: this plugin adds indexes to certain tables where it detects there is a need for them
  • Settings: No

Magmi Magento Reindexer v1.0.3a

  • Developed by: Dweeves
  • Description: this plugin calls the Magento reindex from shell, i.e. it performs reindexing
  • Settings:
    • PHP CLI command
    • Indexing: Select which index types are to be reindexed

On the fly category creator/importer v0.2.5

  • Developed by: Dweeves
  • Description: categories can be created during indexing.
  • Settings:
    • Assign product to: to which category the product is to be associated.
      • all categories in tree: (e.g. Base category/Sub-category/ – in this case it will be included in both categories)
      • last category of each branch: here it will place the product in the category at the last level.
    • Tree level separator: sub-category separator (e.g. / in this case Category 1/Category 2)
    • base category tree: base or main category, it is recommended to use it when every category belongs to the same main category.
    • url ending: generally, .html ending is recommended


Downloadable products importer v1.0.0.1

  • Developed by: Tangkoko SARL
  • Description: ez a plugin importálja a letölthető termékeket
  • Settings:
    Will be detailed at section “Downloadable product import”


Group Price Importer v0.0.4 info

  • Developed by: Tim Bezhashvyly and Dweeves
  • Description: used for importing group prices
  • Settings:
    This column should be set:
    “group_price:groupName” where groupName is the name of the customer group.
    More details to be found at “Simple product import”.


Image attributes processor v1.0.33a

  • Developed by: Dweeves és Tommy Goode
  • Description: this plugin imports product images.
  • Settings:
    • Image search path: defines in which directories the images are to be searched (the directories should be uploaded on the server in advance, media/import directory is recommended), use semicolons (;) for separating if more directories are to be searched
    • Image Renaming: leave it empty if you don’t want the images to be renamed.Here you can use dynamic variables.

      If you want to rename the images, I recommend the following format:


    • Image import mode:
      • Keep existing images: in this case the images will not be overwritten or will not be loaded (from remote URL) that have the same name.
      • Overwrite Existing Images: the images having the same name will be overwritten and re-loaded (from remote URL).
    • Assign only existing images: (this setting is ignored by the system in this version)
    • Import into DB: set it to Enabled only if Media Storage is configured in your Magento store.
    • Debug mode
    • Remote Image root: (if there isn’t any, leave it empty)
    • Remote root Authentication
    • Pre-download check: (this setting is ignored by the system in this version)

On the fly indexer v0.2

  • Developed by: Dweeves
  • Description: this plugin writes in some index tables during the import process (url_rewrites and category_products)
  • Settings:
    • URL endings: whether to use them and if yes, what they should be.
    • Use Categories in URL

Custom Options v0.0.7a

  • Developed by: Pablo és Dweeves
  • Description: with this plugin you can import custom options to products
  • Settings: custom options should be set the following way in the CSV:
    Name:Type:Is Required:sort number
    i.e., for example Size:drop_down:1:1, and in the product row, e.g.:
    Further detailed variations can be found on the description page of the plugin.


Product Deleter v0.0.2

  • Developed by: Dweeves
  • Description: ezzel a pluginal termékeket lehet törölni
  • Settings:
    • Delete Children products: This is important with configurable and bundle products.

Magmi:delete is to be inserted in the CSV as a new column and should be set to 1 at products to be deleted.


Product Tags Importer v0.0.3

  • Developed by: Dweeves, Pawel Kazakow
  • Description: used for product tags import
  • Settings:
    Tags to be inserted in the CSV tags column, separated with commas


Tier price importer v0.0.9a

  • Developed by: Dweeves, bepixeld
  • Description: used for importing tier prices (volume discount prices)
  • Settings:
    To be detailed at “Simple product import”.


Weee Tax importer v0.0.5

  • Developed by: Garbocom & Dweeves
  • Description: used for importing Weee (Waste Electrical and Electronic Equipment) taxes
  • Settings:
    • Weee Tax Attribute name: code of Weee tax
    • Weee Tax Country code: (e.g. FR)

Column mapper v0.0.3b

  • Developed by: Dweeves
  • Description: this plugin is useful when the names of column are different in the import file from the Magento attributes codes.
  • Settings:
    • Mapped columns list: here Magento attributes codes are to be listed, separated with commas
    • New name for col X: type here the Magento attribute code (if you insert a new name in the Mapped columns list, then New name for col X appears automatically)

SKU Finder v0.0.3

  • Developed by: Dweeves
  • Description: to be used when not setting the SKU number column in the import file, instead associating should be based on another product attribute.
  • Settings:
    • sku find attribute code: the code of attribute to be associated.


Default Values setter v0.0.5

  • Developed by: Dweeves
  • Description: using this you can set the values that are the same with every attribute, so you need not set it in the import file
  • Settings:
    • Default attribute list: attribute codes are to be set here, separated with commas, as it is present in Magento, and then the values in the columns below it should be set as well


Magmi Import Limiter v0.0.7

  • Developed by: Dweeves
  • Description: to be used when you want to place a limit to your imports, which means that for example you want to import certain attributes or only from row 15 to row 55.
  • Settings:
    • Column filter: which attributes to be imported, e.g. sku,price,qty
    • Limiter ranges: e.g. rows 1–100
    • Limiter filters: import only the products that meet certain filtering criteria.
      e.g. sku::00.* – import only those sku numbers that start with 00
      e.g. sku:00.*;;!name::.*blue.* – import sku numbers that start with 00 and do not start with blue.


Generic mapper v0.0.6a

  • Developed by: Dweeves
  • Description: used for associating values with Magento values. Typical attributes are page_layout and visibility.
  • Settings:
    If you want to use it, you should create a CSV file for the given attribute with the attribute’s name in the magmi/plugins/itemprocessors/genericmapper/mappings directory, e.g. magmi/plugins/itemprocessors/genericmapper/mappings/is_recurring.csv
    In the content you should enter the value pair, e.g.:
    „Yes”: 1
    „No”: 0
    You can find more details in the documentation of the plugin.


Value Replacer v0.0.8a

  • Developed by: Dweeves
  • Description: using this plugin, you can replace the attribute values. You can use dynamic variables, so for example if you’d like to add a prefix to all SKUs of the products, then you need to enter this in the field the following way: prefix-{item.sku}
  • Settings:
    • Replaced attributes: those attribute codes are to be listed here for which you want to replace the value (separated with commas)
    • New value for X: her the value is to be entered

Further explanation can be found in the documentation.


Value Trimmer for select/multiselect v0.0.3

  • Developed by: Dweeves
  • Description: this plugin trims the empty spaces automatically from the multiple select or select attribute values
  • Settings: No


Grouped Item processor v1.4.1

  • Developed by: Alpine Consulting, Inc & Dweeves
  • Description: used for importing grouped products
  • Settings:
    • Perform simples/group link: whether to connect the simple products with grouped products.
    • auto match simples skus before grouped: used for setting whether to find simple products automatically belonging to grouped products; if NO, then the import file needs to contain the grouped skus column where, separated with commas, simple products belonging to it should be listed.
    • Force simples visibility: whether to set visibility of simple products, if YES, to what.


Bundle Item processor v1.1

  • Developed by: Björn Tantau, dweeves, igi8819 (It is me)
  • Description: To be used for importing bundle products
  • Settings:
    Every setting is to set the value for the given type when the import file does not include it. More details to be mentioned later at “Bundle product import”.


Configurable Item processor v1.3.7a

  • Developed by: Dweeves
  • Description: To be used for importing configurable products.
  • Settings:
    The same as with Grouped products, described earlier.


Cross/Upsell Importer v1.0.3

  • Developed by: Dweeves
  • Description: To be used for cross-sell and upsell product importing.
  • Settings:
    Two new columns need to be entered:
    us_skus – Upsell
    cs_skus – Cross sell

SKUs should be listed with both, separated with commas.


Product relater v1.0

  • Developed by: Dweeves, jwtechniek
  • Description: To be used for importing similar or related products.
  • Settings:
    SKU numbers are to be entered in the re_skus column contained in the import file.
    More details are mentioned in the plugin’s documentation.
    Saving the settings of the plugin is done by clicking the Save Profile button below.


Simple product import

First, make the settings of the plugins.
Now I describe how to create an import file, using a CSV example.
Before getting started I recommend two free programs for managing CSV files:

  • Open office (calc)
  • Libre office (calc)

The CSV file is to be opened/saved using UTF-8 and the given separating parameters.


Magmi CSV Open


After opening the CSV, the following columns need to be entered as a header.
I describe each parameter and what to set with the products:

  • sku: SKU number of the product for identifying the existing product when modifications are made
  • attribute_set: name of attribute set, should be entered the same way as it is named in Magento e.g. Default
  •  type:
    • simple
    • configurable
    • downloadable
    • bundle
    • grouped
    • virtual
  • websites: this is no longer needed from version 0.7.17
  • store: here you set which store view is to be assigned (store view code is needed). Here you can set the different language versions of the store, which I will detail at “Multi lingual import”. If you have only one store view, which means you have a single language store, then this need not be included in the import file. In the image you can see that admin is set with the store, this time it is the same as you have not entered the column.
  • categories: here you need to set to which category the products are to be assigned (if the “On the fly category creator/importer v0.2.5” plugin is not switched on, then the set categories need to be present in the system before importing. Syntax of entered data:
    • Category1
    • Main category/Sub-category
    • Category1;;Category2 – if it belongs to more than one category, two semicolons need to be used for separation
    • Category1/Sub-category1;; Category1/Sub-category2;; Category2/Sub-category3
  • name: name of product
  • description: long description of product, html tags are allowed
  • short_description: short product description, html tags are allowed
  • price: product price, always to be set with the default currency, excluding taxes, e.g. 150
  • special_price: special price of product, if not to be defined, it is 0
  • special_from_date: starting date of special price (e.g. 2016-05-20), if price is always special, leave it empty
  • special_to_date: end date of special price, if left empty, special price will be valid for good
  • news_from_date: start date for product indicated as new
  • news_to_date: end date for product indicated as new
  • qty: if inventory management is applicable, it is the number of the given products in stock, e.g. 5
  • in_in_stock: product available in stock or not, values:

1 – yes
0 – no

  • manage_stock: stock management is used for this product? (if you use stock management, you can switch it on or off with the given products), values:

1 – yes
0 – no

  • use_config_manage_stock: stock management to be used, set in the system configuration? If you want to set the previous manage_stock value, here you need to set this to 0, so as to avoid reading the value from system configuration, but from the manage_stock value given with this product.
    • status: product is enabled or not, values:

             1 – yes
0 – no

  • visibility: visibility of product, values:

1 – not visible as a single item, usually used with configurable and grouped products. In this case the product data sheet is not available, for the rest the product data sheet is available.
2 – visible only in the catalog, i.e. on category pages, not visible with searches.
3 – only visible with searches
4 – visible everywhere

  • weight: weight of product, e.g. 0.5. If you don’t want to use it, you have to change it at the attribute (in the admin) to make it non-mandatory.
  • tax_class_id: ID or name of tax class, e.g. Taxable goods
  • thumbnail: thumbnail image of product, e.g. ball-for-football.png
  • small_image: small-sized image of product
  • image: main image of product
  • media_gallery: product gallery, image file names to be separated with semicolons: ball-for-football.png;ball-for-football2.png


Magmi CSV sample


Images will be imported only if the “Image attributes processor v1.0.33a” plugin is switched on.
Of course you need to enter the other attributes in the import file as well.
With select attributes you need to enter the text values, e.g. for color attribute enter Red.
For multi-select values, it is done just the same way as with select, but if there are more values, these should be separated with the same character that is set at the Multiselect Separator with the Magmi settings. E.g. Red|Green|Blue


How to import Group Price?

A “group_price:groupName” column is to be inserted in the CSV where groupName is the name of the group, same as it is named in Magento.
If you want to import prices for more groups, you need to enter it in a separate column, even if this number is the same.


Magmi CSV Group Price


If the given customer group does not exist, Magmi will create it.


How to set tier prices?

As a new column, it should be entered in the import file:
tier_price:group1 – where group1 is the name of the customer group.
If it needs to be applicable to all groups: tier_price:_all_

If you want to set it with several certain groups, then the same method is to be used as with the group price, new columns should be inserted.

For the product row:
25:10.00;50:9.00;100:8.00 – in this case it means that for 25 pieces or more it costs 10, for more than 50 it costs 9, for over 100 it costs 8.
You can give % discount as well, e.g. 25:85%, which means that for 25 pieces or more an 85% discount is offered.


Magm CSV Tier Price


How to assign the products in a multiple store website environment?

If you have a multiple Magento website environment and you have such products that are available in only some specific websites, then you have to list the store_view codes in the Store column in the CSV where these products are on sale.

Let’s see an example:




You can see that there are two websites and there is one store for each. With the US store there is only American English set as a language and there are three languages with the EU store.

Let the store_view code for the American English be “us”, for the EO store English: “en”, German: “de” and Hungarian: “hu”
• If product test 1 is available only in the US store, then enter the code us in the store column.
• If product test 2 is available only in the EU stores, all three languages need to be listed: en,de,hu
• If a product is available in every store, enter admin.


Magmi CSV Simple Website Store CSV


Configuring multiple languages is described later at “Multi-language import”.
Here you can see an example for a simple product import file: magmi_simple_example.csv


How to import?


On the Magmi website we can see “Run Magmi” where you can select the profile and mode with which you want to perform importing.
After the import process you need to reindex (there is a reindex plugin in Magmi as well, but it does not perform 100%) and you also need to empty cache in Magento.

  • Update existing items only, skip new ones: updates only the products already existing in Magento, ignores new products.
  • Create new items & update existing ones: updates both new and existing products
  • Create new items only, skip existing ones: creates only new products

Then click “run import” button.


Importing configurable products


First activate the “Configurable Item processor v1.3.7a” plugin.
Here, with configurable products, I discuss only the differences as the rest goes just the same as with simple product import.
Configurable product is made up of several simple products.
In the import file you need to put simple products first and then list configurable products.


Magmi CSV Configurable Type


When importing a configurable a product, you need to define which attributes the customers will be able to select from (e.g. size, colour).
Only “global” range, “drop-down” type attributes can be used for configuration and this needs to be set with the attribute that it can be used for configuration.
Additionally, it is important that a given attribute is included within the specific attribute set.

If you don’t enter the SKU number to be associated in the file, then you should set it in the plugin to find the sub-products automatically (“auto match simples skus before configurable”). In this case the SKU numbers are to be named in the following way:


Magmi CSV Configurable Auto


SKU of configurable product, e.g.: testconf1
SKU of sub-product: testconf1*** – the asterisks (stars) can be replaced with any characters, it is recommended to put values here related to the configurable attribute, e.g. testconf1-white-s, testconf1-white-m.
If you would like to have a custom SKU with the product, then you need to enter in the simple_skus column which SKUs belong uto it.
If the price of the sub-product is different (e.g. size M is more expensive than size L), then you should enter in the file the “super_attribute_pricing” column, where it should be entered with the configurable product the following way:
attributecode::value:price;value:price, attributecode::value:price;value:price

If you would like to have a % rise instead of a fixed price, then this way:
attributecode::value:price:percentage-based-or-not; value:price:percentage-based-or-not

size::L:15:1;M:20:1 – if 1 is entered it is % based, if 0 is entered, it is fixed priced
If this values I not given, it uses fixed prices by default.


Magmi CSV Configurable Example


Here you can see an example for a configurable product import file: magmi_configurable_example.csv


Bundle product import


In this section I’ll show you what to set in the import file in order to import bundle products.
First activate the “Bundle Item processor v1.1” plugin.
You need to create and fill on the CSV the same way as with a simple product. Now let’s see the differences.

You need to insert the following columns:



Magmi CSV Bundle Options


-*;Code,Option name;type:is_required;position
-*;CPU:Central Processing Unit:radio:1:0;RAM:Random Access Memory:select:1:1;MOUSE:Mouse:checkbox:0:2


  • * if entered at the start, it deletes the options from Magento set beforehand; if not entered, it adds the new ones to the existing ones
  • Code: it will be the code of the option, it is used with bundle_skus for association
  • Option name: this is the name of the option, this tesxt will be displayed by the product
  • type (radio, checkbox, select, multi): type of the option
  • is_required: whether it is mandatory for the customer to choose either option (1-yes, 0-no)
  • position: what order they should follow on the product data page (numbers to be entered)
  • bundle_skus:

Magmi CSV Bundle SKUS





  • Code: the code also given at bundle_options
  • sku: SKU number of sub-product
  • selection_qty: quantity of items put into shopping cart
  • can_change_qty: whether the customer select how many items he /she can choose from a given option
  • position: position of options
  • is_default: whether the given option is default
  • selection_price_value: price of selection (it is effective only if price_type at the bundle or at the plugin settings in the CSV is set to 1 (Percent)
  • selection_price_type: type of price (0 – Fixed, 1 – Percent)


  • price_view: display type of price, 1 (lowest price at which it can be purchased), 0 (price range, i.e. from price X to price Y)
  • price_type: calculation type of price, 0 – dynamic, 1 – fixed
  • options_container: Where the options are to be displayed (container1, container2), depends on theme
  • shipment_type: shipment of bundle items, 1 – separated, 0 – together
  • sku_type: type of SKU, 0 – dynamic, 1 – fixed
  • weight_type: type of weight, 0 – dynamic, 1 – fixed


Magmi CSV Bundle other


After importing is completed, carry out a reindex and empty caches, if set properly, the properties will show in a similar way on the product data page.


Magmi Bundle Frontend



Here you can see an example of a bundle product import file: magmi_bundle_example.csv


Grouped product import

Settings for grouped products are very similar to that of configurable products.
First, among the Magmi plugins, activate the „Grouped Item processor v1.4.1” plugin.
The grouped_skus column needs to be inserted, where SKUs of simple sub-products are included, in the import file.


MagmiGrouped Example


Here you can see an example for a grouped product import file: magmi_grouped_example.csv


Downloadable product import

Import file of the downloadable product is similar to that of simple product. Here you need to insert the “links” column which you should fill out in the following way:
file:link,sort_order :position,title:file title,sample :example link,is_shareable :config or 0 or 1,number_of_downloads :value


  • file: link of the downloadable file; URL or full path if it is locally present
  • sort_order: position (if there are more links)
  • title: name of file
  • sample: sample file
  • is_shareable: can the customer share the file?
  • number_of_downloads: how many times is it allowed to download the file


If you have more files, you only need to duplicate the upper row, using semicolons:


Magmi Downloadable Example


Check out this example for downloadable product import file: magmi_downloadable_example.csv


Virtual product import


Virtual product import is the same as simple product import, with the only difference that the type is not simple but virtual.


Magmi Virtual Example


You can download an example CSV for virtual product import file here: magmi_virtual_example.csv


Attribute and attribute set import

First, activate and configure the “Attribute Set Importer v0.0.2” plugin.
Here you need to create three CSV import files for attributes, attribute sets and associations.
It is mandatory to set the attribute_code, e.g. color

The other columns are not necessary to change, you can modify them if you do not want to use the default values.


Magmi attribute



With the attribute set, you need to define the attribute_set_name, e.g. Clothes
The other columns are not necessary to be set.
The other columns are not necessary to change, you can modify them if you do not want to use the default values.


Magmi attribute set


For associating attributes and attribute sets you need to set the following

  • attribute_set_name
  • attribute_code
  • attribute_group_name



magmi attribute attribute set association


Product category import

Product categories are created during product import if the “On the fly category creator/importer v0.2.5” plugin is activated in Magmi.
It needs to be configured in the import file according to the plugin settings.
The plugin is generally used in the way it is illustrated in the image below.


Magmi Category Importer Settings


Based on this, the category needs to be configured in the CSV in the following way:


Magmi Category Importer CSV


In the above example, the product will be placed in Ball and Accessories categories within the Football main category.
You can set sub-levels by using the slash (/) symbol.
e.g. Firstlevel/Secondlevel/Thirdlevel


By using double semicolons (;;), you can put it to more categories.
e.g. Firstlevel/Secondlevel/Thirdlevel;;OtherFirstlevel/OtherSecondlevel/OtherThirdlevel


With new categories you can set if it is active or not, whether it is an anchor, and whether it should be included in the navigation menu; its syntax is:
category name::[is_active]::[is_anchor]::[include_in_menu]

Multi-language import

With multi-language (it means there are more store views with different languages) import, every single product needs to be inserted in the import file the same number of times as the number of languages there are assigned to it.


magmi multi language import


The same number of rows should be present as the number of languages. The code of the store view should be entered in the store column corresponding to the store view of the specific language.
Unfortunately, translation is not provided for categories, therefore you either make translations in the admin panel or create a separate category tree for every language.


  • English Root
    • Ball
  • German Root
    • Ball
  • Hungarian Root
    • Labda


The text elements need to be written in the name, description etc. columns in the specific languages.
At the drop-down attributes they need to be enetered the following way:
Specific language value::[Admin value]
The first item is the translation of text written in a specific language, the square brackets ([…]) should include the string in the admin, i.e. default language..
Red::[Red], Rot::[Red], Piros::[Red]

Here is an example for multi-language import file: magmi_multilanguage_example.csv




Pros of Magmi:

  • Simple to install and configure
  • It’s fast (thousands of products can be imported at a time within a couple of minutes)
  • All 6 product types can be imported with it
  • It can be automated (you can create import functions running automatically)


Cons of Magmi:

  • It is a little complicated to create the import files, maximum accuracy is needed so that every single data is imported properly
  • Since it is of open source code, there are some minor errors, i.e. some extensions do not operate seamlessly
  • Observers do not run when products are saved, since it works with direct SQL
  • It is one more admin panel you’ll need to learn how to use

I hope I have managed to show you in detail all the characteristics and features of Magmi. If you have any comments or questions in this topic, please feel free to leave them below in the comments section.

11 proven email marketing methods and the 6 most common mistakes you should avoid

Statistics and studies provide clear data:

  • According to the British Direct Marketing Association (DMA), every single pound or dollar spent on email marketing brings back another 38. This represents a huge ROI.
  • Based on other data, the ROI can even be 44.25 times as much as the investment was.
  • The number of customers brought in by email has quadrupled over the last four years, and today it is the second most effective channel with its 7%, following traffic arriving from the search engines.
  • Furthermore, according to one third of the American consumers, email has the most influence on their purchasing habits.
  • Even the lifetime value of the new customers brought in by email is 12% higher than the average.

Based on the ROI data alone, it can be stated: those who do not use email marketing in the online marketing of their online shop, deliberately give up on income. However, a lot of people do not apply it because they do not know how to get started with it.

We are going to help you with that now: we will share all the best practices and common mistakes so that you can immediately start increasing the income of your estore with the help of emails.


[bctt tweet=”According to DMA, on average, £1 spent on email marketing produces £38.” username=”aionhill”]



Who should you send emails to?


First, you will need a database.

A good list has several criteria, the most important one is the following: it should preferably be as big, as up-to-date and as clear as possible.

The first is somewhat in contrast with the latter two, but we will clarify that shortly.


In an up-to-date database there are no addresses that are already dead, bounced back emails or email addresses that lead to the spam folder. If you send a considerable number of letters to such addresses, even the service provider will notice it sooner or later.

A clear list is also important: unsubscription is a normal phenomenon, according to industrial benchmarks, a rate of around 1.3-0.5% is completely acceptable. Those who unsubscribe from a couple of your emails were not your target audience anyway – provided that you send out quality letters – and there is no use in wasting time and money on making an offer to them.

List-building is a separate science, however, we can pin one thing down here as well: buying lists is the worst thing you can do (which is also of great concern from a legal point of view because of the data protection and privacy policy aspects).

Wise online shop operators build their own lists: they place register forms on their pages, they ask their followers as well to register, they ask for email addresses both on their welcome and landing pages, they collect leads even at events, they use marketing baits and so on.

And they continuously update and manage the lists as well: they clean them from the data of those who have unsubscribed, from the inactive addresses, from those who the message simply does not get to.


who to target email marketing


What should you measure? Bounce back rate, open rate, click through rate, target conversion


We cannot tell you right now which indicators are the most important for you. On the other hand, we can tell you what you should pay attention to in general when running an email marketing campaign.


The most important figures:

Bounce back rate:

  • How many people on a given list do you reach at all with your emails?
  • How many are there where the email directly goes to the spam folder?
  • How many emails are there that do not even arrive because the email address you are sending the letter to is not active?

Cleaning the list is also important so that you can decrease this rate, otherwise service providers can put you on black list for being a spammer.

Open rate:

  • How strong is your brand?
  • How much do people trust you?
  • Do you send out the emails at the right time and do you write subject lines that are interesting enough?

You can find the answers to these questions if you monitor the open rate and actively test the different solutions as well.


Click-through rate:

This shows how efficiently you direct the attention of the users, how good CTAs you use in the letter and how attractive your offer is. If the click-through rate is high, it means that you not only send out well-segmented, relevant offers but you also lead the recipient to the click smartly.


Target conversion:

If you make the offer that the user clicked on in the letter, if they get a consistent experience and you give them the opportunity for the immediate, simple conversion, this rate will most probably be high. This is important because this is what makes you money.


how measure email campaign



What types of emails should you send out?


There are a great deal of various marketing email types, which ecommerce stores can successfully use as well – provided that they know their possibilities.


email types marketing ecommerce


Let us see then what types you should use:


1. Newsletter

The most basic type, and also the most frequent one, of course. Its aim is to let your target audience know about what’s new. The other types are many times incorrectly referred to also as newsletters, even though this type has a well-defined purpose: to provide information.

Besides, it is useful as well because you can incorporate almost anything in it. The basis of it may be information like what kind of new offers, product lines appeared in the shop, what sort of seasonal sales you have introduced, what happened to the company, what new functions you have presented, and so on.

Making newsletters is also quite simple, you do not have to pay attention even to having any special design (many people send it out as simple text, which can be extremely effective if it comes with a well-written copy), it is enough to produce a template in advance that is in line with the image of the brand. You can then paste any sorts of news in that later and send it out to your list.

At the same time, newsletters also have disadvantages. First of all, they do not focus the attention of the user to a single offer. Another email type is used for that purpose.


2. Dedicated emails

The only purpose of dedicated emails is to focus the attention of the reader to one specific thing.

This may be a product or service, but it can even be a survey or an upcoming event.

These letters usually contain a single well-emphasized CTA that clearly stands out from its surroundings.

Its design is also less complicated:

If the basic appearance is in line with the corporate image, it is unnecessary to deal with anything else, as the aim is not to distract but to direct attention with a certain focus.


3. Welcome emails

The first email that those who have newly registered to your online shop receive: an excellent opportunity for not letting go of their hands but to introduce them to the mysteries of the brand.

You cannot only make offers here (relevant products if they have already purchased), but you can also show them where else they can find you, how they can use your website, what functions or discounts are there that they might not yet know about.


4. Lead nurturing emails

These are emails that help you keep your previous customers active.

You can send various types of content in segmented emails, for instance you can educate your customers about a given product type.

With the help of personalization you can send out automated emails that will distribute the most relevant pieces of content for everyone, that will have the greatest chance of being useful for customers.

You can keep them active with that: you can persuade them to consume and to share your new content, while keeping the brand alive in their minds.


5. Emails for special events

Anniversaries, birthdays or various holidays for that matter provide wonderful opportunities for you to approach your customers, but at the same time they involve great risks.

Since at such events everyone tries to make special offers: inboxes are inundated by emails every Christmas, however, most of these emails are letters of the simple “the same to everyone” type, which are not even opened and are practically considered as spam.

Therefore you need to be special.

Need to draw attention to your letter. Do not highlight the discounts in the subject field, do not display how superb product you are offering. Try to show what advantages that product has for the customers:

  • that they can finally surprise grandma with a special gift,
  • that they can provide an opportunity for the kids to have an experience of a lifetime,
  • or maybe that they can celebrate their birthday this year like never before.


How to apply these marketing methods in practice?


Of course you have a free hand with the main types, and you can do otherwise if you have a good idea: all this may serve as guidance at best, since you yourself will experience in the long run what your unique audience likes.

Which are the emails that bring you high open rates and click-through rates? Which ones draw only a few registrations and which ones boost sales remarkably?

You have to monitor all these in the long run and fine-tune your ecommerce email marketing campaign accordingly.

In the following we will give you some specific tips for how to do that.


Specific campaign ideas that you can send out straight away


1. New product announcement email

Sending regular updates on new stocks of products is an outstanding method for reactivating your already existing customers.

Of course you need to do this, too, in a way so that it always makes the best offer: if you have a list that is segmented at least up to a basic extent, based on the previous purchases you should define who may be interested the most in certain products, and you should edit the emails in a way that they see only the offers interesting for them.

You should also send out photos of your new products, because you can raise attention more, and thus be able to reach more click-throughs. But also pay attention to where you direct the visitors.

If, for instance, you present three products in an email and a CTA link belongs to each of them, then those three should not take the user to the main page of the estore but rather to specific product pages.

Otherwise the users will feel that you betrayed them and they will not only bounce off the page (since you give them work by having to find the offers interesting for them), but they will not go the product page or return at all either.


2. Asking for your customers’ opinion

There are two reasons why you should ask for the opinion of your customers from time to time.

  • The first is that you gain a great deal of useful information by that: you can judge from a questionnaire that can be completed within a minute, how good, relevant and valuable the customers think your campaigns, products and pages are. If the users can say what they do not like and you even pay attention to that, it will be very much appreciated.

(You may even create different pieces of content out of this: you can publish the results of the survey and inform the users what kinds of changes you are planning in the online shop in order to improve the user experience.)

  • The second is that you can strengthen the social proof like that: you can ask the users to rate the already ordered products, and if you are selling quality products, these ratings will most likely be good and will serve as proof, as sales promotion for the hesitating customers (and they will help in search engine optimization as well).

On the other hand, you should make sure to offer some sort of incentive: let’s say a one-time discount offer in exchange for the rating. This way you can also reactivate your previous customers at once.


3. Birthday email


email marketing tips ecommerce


You can easily automate birthday emails by using the data of your registered users. You can make them personal and not just inundate the clients with best wishes: you can encourage them to purchase as well.

If you offer some sort of little presents in such cases, an individual discount on the occasion of the birthday.


tips Tip:

The customer can buy a product with a percentage discount figure equal to their age), that may well increase your traffic if applied together with efficient cross-sell methods.

Furthermore, it will also make your brand more likeable if you do it well. Almost everyone sends out birthday emails, but there is nothing personal or nice in most of such automated letters.


Therefore you should make sure to

  • Write the text nicely, it should not seem that it is only a system message wishing happy birthday or that you just want to sell something to the celebrated person.
  • Use nice images, visual solutions that will have positive effect on your client.
  • The CTA catches the eye and it is encouraging, “Click to get your free cake” for example is a good solution.


4. Product follow-up email

How long is the lifetime of your products? Half a year or ten years?

Do you reach out to your customers so that they buy again from you after the lifetime of the product is over?

It is very much possible that the customers completely forget about you after several years if the lifetime of the purchased product is quite long. However, if you monitor who buys when and what, and you send out automated letters based on that, you can win them back.

A good example:

Let’s say you are selling mattresses planned for a period of 5 years. After 5 years the system will notice that the lifetime of the product is over. In this case you can send out a letter in which you offer that if the client changes to a better, newer model right then, they can exceptionally do that with a discount of 10%.


5. Guidance for the newcomers

Most people choose between two things when it comes to dealing with the newly registered ones.

  1. They do nothing.
  2. They send out a tough sales letter.


These are both wrong solutions: not making use of the potential is just as unfortunate as trying shoving your products off the throat of the new lead right away.

Something that you can benefit from instead: if you provide them an opportunity to choose what they want to do themselves.

You can present their various opportunities in the email:

  • where they can find the products,
  • where they can read the blog,
  • where they can find videos,
  • where they can follow you in the social media, etc.


6. Encouragement of cart abandoners

We have already discussed how you can avoid cart abandonment on your site, but this time we will also describe how you can do that with the help of emails.

If you see that somebody, who has already given their address to you earlier added one or more products to the cart but have not bought them, wait 24 hours. If they do not return, remind them in email that their products are still in the cart. This a simple reminder.

Wait another 24 hours after that and then send another email if there is no conversion in the meantime: you are already handling excuses in that. Ask them why they have not purchased, write down the most common reasons in the letter and handle them already right there.

Finally, send a third letter in which you offer a discount – but wait three days with that. If possible, lead the customer back to you without offering a discount, but do not wait more with this offer because it is then that they still remember you and their reason why the made the purchase.


The most common mistakes in email marketing


What is the worst you can do with a list? That you do not use it. The second worst is that you start using it inappropriately, as this can shortly make it worthless to you.

The most common mistakes usually stem from inexperience: the ecommerce company would like to run a good email campaign but there is not enough knowledge and experience in the company in that respect. For this reason we will now go through some of the mistakes so that you can avoid them.


email marketing mistakes


Lack of consistency

When you send out emails make it obvious that it arrived from you. Confirm that not only in words but also with visual elements – remind the users that they received the email because they registered with you.

If you ask for click-through, the email and the landing page should be similar: you have to represent that both in text and in appearance, because if you lead the potential clients to a page with a totally different message and visuals, you will play their trust.


You do not use segmentation

It is definitely worth segmenting the sent out letters in some way: at least according to the source of the email addresses. If someone registered on the blog, they did that during the purchase or they downloaded the bait product, you can immediately have an idea about what sorts of content and offers will capture their attention better.


You do not measure

Always monitor the indicators and analyse in the long run how certain solutions work. If the only change you make is that the sender of your consequent email will be different or you will write the subject line in a different style, and either of that will significantly change the results, you have immediately gained remarkably valuable data.


You are not being specific enough

When you send out an offer, what do you request from the potential customers? What kind of CTA do you use? Always write down precisely where they will arrive after the click and what will happen, what you will offer them. Do not only show them the door, tell them where they will find themselves if they open it.


You do not pay enough attention to the text

A good sales text is able to sell a product or service even by itself, without graphic solutions. Of course it is usually an advantage in case of an online shop if you attach an image to the offer, however, you have to put great emphasis on the copy as well: you have to apply principles of persuasion that may beat hesitation and encourage buying.


All you want to do is sell

Do not send offers only because this way you can easily be on the same page with all the other ecommerce stores that use email to promote sales. The goal is that those on your list do not simply receive but also look forward to your letters.

To be able to reach this goal, you have to provide them with valuable content as well and you have to approach them with offers that are actually interesting only for them due to segmentation. Take advantage of the non-sales type content, because you can more easily tie them to your brand like that: recommend your blog, your videos, your social channels to them in email.


Your most important task: start sending emails


Nobody is capable of launching the perfect campaign, especially for the first time: for that you have to have a long-term knowledge of your audience and of the appropriate techniques.

You do not need to fear that you will spoil your chances with a single email.

You cannot do such a thing and if you work hard, analyse the data and run the campaign persistently, you will learn how to handle the problems.

Therefore the most important thing you have to do:

send out your first letters today and monitor how they work – then start brainstorming how you can make them even better. The guideline above will help you with that.


A/B testing in ecommerce: 10 things you really need to test

This is what we are going to talk about:

  • What are A/B tests?
  • Where can you apply A/B testing?
  • The process of testing
  • What is worth testing?
    • Visual elements
    • CTA
    • Navigation
    • Pop-up windows
    • Urging solutions
    • Payment solutions
    • Forms, fields to be completed
    • Registration
    • Text
    • Offers
  • And everything else


Let’s start the story at the beginning: what are A/B tests?

As its name implies, A/B tests are trials, during which you try out two different variants of a given element. For example you use a red CTA (call to action) button on one of the pages and a blue one on the other. You place the search field at the top on one of the pages and to the right on the other.


Criteria of a good A/B test:

  • Test only one element at a time – otherwise you will not know what the changes in results are due to.
  • Run the two pages parallel and simultaneously – it may easily take an effect on your results if you run the tests with a difference of a few days. The test should run at least for a week.
  • Use a significant sample: in case of public opinion surveys the minimal limit is 1000 people, this is the optimal for you, too.
  • Distribute the visitors arriving at the two pages randomly: if you select based on segments, channels or any other methods, your results will be distorted.


It will be obvious after the testing which of the two solutions your customers like better: which encourage them to remain on the page, to register, to click through or even to purchase.

However, not only your results will be better. It also has a positive effect on the work ethics of the employees of your company that they do not have to rely solely on their intuition and the results are not requested from them while all they can do is guess: you can work with accurate data and precise analytics instead.

Such things may be inspiring for those in marketing and for the designers, because you do not let go of their hands while demanding results.


Where can you apply A/B tests? Practically everywhere

There is no element on your web-site, be it text, graphics, design or function, whose effectiveness you can be sure of without testing.

tips How can you run the test efficiently?:


Usually by having it done by a professional. Even free trial version tools are available that can help you (for example Optimizely). However, if you work with a complex online store, you will need a developer, especially because this is the only way you can make sure that the criteria above will fully be realized.

In the following, you can read a list of ideas about what kind of elements you can run A/B tests on. You can run several of these simultaneously, but you have to accept that you will not be able to analyse everything at the same time.

Do not overburden yourself with data, try to achieve as good results as possible while collecting and utilizing information of a humanly processable quantity.

The number of visitors may limit the testing: if you run 3-4 tests at the same time on a page, the visitors will be split into 6 to 8 parts, which can extremely elongate the duration of the test. Provided that you want to work with a significant sample. (Yes, you do.)


Process of testing: know what you want an prioritize your goals

First you have to be clear regarding your intentions: what would you like to achieve?

It is not at all the same if you want the visitors to stay on the page for a longer time, or if it does not matter how long they stay provided that they execute a certain action.

Once you know what you want, list the main elements of the relevant pages and prioritize them according to importance.




  • The CTA and the form are of the utmost importance on a registration page.
  • In case of an article or a blog entry, multimedia solutions and certain characteristics (length, style, etc.) of the text should be tested.
  • On the main page of an online shop you might want to pay attention to how products are displayed, where the search field is, how your pop-up windows work.


You can monitor the analytics already at the definition of the priorities: if for example you notice that the majority of the visitors get to the CTA button on the page but they do not click on it, you will have to find out what may cause this.

For the launch of the test you should have an already existing page, for example a product page. Select an element that you have doubts about: a CTA, a block of text, a form to be filled in. Make a new variant of it, try to make it more effective and you will have your A and B pages right away.


What is worth testing?


1) Visual elements: make them as appealing as possible


Visual resources are basic elements of a product page. What is good about shopping in person is that you can touch the goods, look at them from every angle, you can examine them with all of your senses. In case of online shopping the salesman has to strive to deliver this experience as fully as possible. If you are selling a leather belt, use images or make videos that will make your visitor feel the scent of the real tanned leather even if only sitting in front of the monitor.

Of course the question is what kind of solutions work best. It is advisable to use as many and as high quality images as possible. This is done, and still you are not at all done with your possibilities, however, you cannot squeeze everything into one page. A fine balance should be achieved in the end.


You can use

  • rotatable models,
  • longer how-to videos,
  • infographics,
  • 10-15 second demos,
  • or even sound files.

And you can test all these solutions, even according to content: it is not at all the same if you embed a demonstration video or a how-to video with tips in the page.


2) CTA ‒ What do your customers want to click on most?


In general, you would like the users to click on something. This is not as easy to achieve as you might think at first. What characteristics does a CTA have? Position, shape, colour, text… And each and every one of these can have a great effect on conversion.

If you place the CTA in the wrong place, less people will click on it. (According to the generally accepted rule, the more complex the offer, the lower it will be placed on the page.) However, it may also be fine if there are even two or three CTAs on the page, because each member of the target audience comes to a decision at different sections of the page.

If the CTA is too small, it will not be visible enough, if it is too big, it will be deterrent.

Colour is also an important factor:

According to the colour theory, some colours have an urging effect, some strengthen your sense of security, and so on. But it also may be that the CTA simply does not differ enough from its surroundings to be visible…

And you can fine-tune the text to the extreme: every single word has significance, they all have different effects on your audience.




3) Navigation ‒ drop-down, breadcrumb, categories…


You can apply a number of various navigation elements within a page – this way you can find out how your audience reacts to each of them.




It may be a question

  • Whether you should put the categories on the right or on the left side.
  • Whether you should use a drop-down menu or perhaps a floating solution.
  • You may even test which categories you should position higher within a menu, which should be more in focus, because they can bring more clicks.
  • If you use breadcrumb navigation, there are various available of those as well (path-based, hierarchy-based or attribute-based).

In this case you have to monitor how much time the users spend on the page, how many sub-pages they view, how they behave, in other words, what they click on within the page. If they click through more to your other pages in case of one of the solutions and less of them leave the page, you have found the better navigation.


4) Pop-up windows ‒ annoying but effective?


You can use the pop-up windows for many things:

  • to request registration,
  • to encourage to social sharing,
  • to offer similar products or services,
  • to prevent the users from leaving your page by offering an immediate discount.


However, it does make a difference what kind of it you use – a window that covers the whole page or one that appears discreetly in the lower corner?

When do you display the pop-up window? After a certain time or when the user makes some sort of action, or maybe when you feel passiveness?


pop up


5) Urging solutions ‒ coping with buyer hesitation


Try how a little urging influences your customers!

In our exhaustively detailed article we wrote about how you can do that gently: by indicating that a given offer is valid only for a certain time period (even by using a counter), by displaying the number of pieces or another way. See: 5 proven strategies to overcome buyer hesitation

Make variants of your already existing product pages where you place one of these elements – but make sure that your different pages do not contain different information. It may be annoying for the users if they view a page twice and at one time they see a limited time period for an offer and at the second time the counter is not there anymore.

Therefore, if you take a product page that has not included a counter previously, make two variants that show the limited offer in different ways (one of them for example by using an active counter and the other by simply indicating a deadline) and monitor whether the conversion increases compared to the previous data and also in which case by how much.




6) Payment solutions ‒ the simpler for the shopper, the better


In certain ecmmerce stores the customers have to fight their way through four or five pages until they can pay and order the product, in others, one or two pages are enough to be able to do that.

Too many pages can increase the number of cart abandoners, which is why it is worthwhile for you trying whether you can shorten the process somewhere, and testing the solutions of more and also of fewer pages.

This may be an especially important factor if a lot of your visitors arrive from mobile devices: they are usually more impatient, so having to carry out an action through several pages significantly spoils their user experience. In their case you can try for example a solution where they can go through the whole procedure on a single page.


payment methods


7) Forms & fields to be completed


According to certain studies, your conversion rate decreases by approximately 10% with each additional field to be completed.

Users do not like when you ask for too much data – on the other hand, you can make much use of that data during the segmentation later in email marketing.

So test how much data you can request “with impunity” – can you ask for example position, company name, city or zip code beside the name and email address?

It is even more true in case of sensitive information that people are less willing to provide them – also test whether you are better off with mandatory fields (this may result in somewhat less leads but a list that can be more precisely segmented) or with optional ones (with as many email addresses as possible but with incomplete data).




8) Registration


By requesting registration for being able to make a purchase, you usually increase significantly the number of cart abandoners and bouncers. In certain cases however, this may be a loss that you will profit more from in the end.

It is possible that you will have less customers like that, but you will also be able to target them again more effectively later: you will have more data, you will be able to contact them through multiple channels, you can rely on their previous behaviour more securely.

And those who have already purchased from you, can always be contacted and converted again more cost-effectively than new customers. Therefore you should test mandatory and optional registration and calculate whether it is worth more in the long run sacrificing a few newcomers in exchange for the customers that you will be able to reactivate more easily later.




9) Text


Test what sorts of texts work well on your product pages! The long ones that work with storytelling, or the shorter and more to-the-point copy brings more conversions?

What style do you write in?

If you offer business services to large companies, perhaps the official tone will bring you more customers. On the other hand, if you are selling skateboards, you will most probably be better off with a cooler style.

You may try the negative and positive tones as well. There is a huge difference between “Buy it now!” and “Add it to cart or you will miss it!” Some customer segments may react negatively on such urging, while in other groups such scarcity can significantly increase conversions.

What kind of headlines, page titles do you use? It does matter whether you attract attention with creative or informative solutions.




10) Offers


It does make a difference what kind of offers you make to the users. We have already written about holding back information being responsible for an important part of cart abandonments, just like many times the non-indication of delivery costs.

It is possible that many people will add the product to cart if they do not see that they will also have to pay for delivery, but many of them will leave it in the cart unpaid as well, because they will feel you betrayed them if you make them realize the “real” or total price only at payment.

Consequently, you can indicate the shipping cost on the product page, moreover, we even suggest you do so – however, you might as well try offering free delivery under given conditions, for example if customers purchase products for above a certain amount, or order a given number of pieces at once.

You can increase the average value of your orders by that, given which free delivery will already be worthwhile for you, and at the same time you do not hide the costs either – but it is wort a thought whether you will lose more customers by that and it may be more beneficial to direct them towards a larger order.




+1: And everything else


There is practically no element whose operation you could not test, however, as we have already mentioned at the beginning of the article, you cannot test everything simultaneously.


Find out which points are critical based on the data:

  • on which pages the most customers bounce back?
  • for which products are there the least conversions?
  • where does activity fall or soar spectacularly following a given modification?


It is recommended that you try your own page yourself as well: examine where you look, where you click, which are the points where you yourself would drop the purchase.

A/B testing can be a real secret weapon, studies clearly show that you can improve the conversion rate of a page by a percentage of at least two digits with a single tiny modification.

To be able to realize that, you will have to carry out the testing smartly though – probably it will be best for you to start with the tips described in this article.


[bctt tweet=”With only a minor change on your product page you can considerably improve conversion.” username=”aionhill”]


If you consider implementing an A/B testing solution for Magento stores, the extension “A/B Testing” developed by Amasty seems a good option. You can run different split tests and multivariate tests in terms of design or different attributes, can set test duration and can have statistical reports about the outcome of the tests.

Thanks to its world-class features and robustness, it is probably the most popular Magento extension for A/B testing.


Magento A/B testing Amasty extension



  • Run numerous a/b tests simultaneously
  • Test particular attributes for a group of products at a time
  • Test product page design
  • Get informative stats reports
  • Manage test duration
  • Display test variants to customers according to conversion rates



We hope that the practical examples in the article put in the mood for A/B testing even those who had previously considered them to be unnecessary.

You can be sure that the changes you make based on these results will be felt in increased conversion rates.

If you have any questions, do not hesitate to ask away in the comment section or contact us, we are glad to help.