05 March 2010

mailchimp magento integration

Are you looking to integrate Mailchimp email subscription within your Magento powered store? If yes then you are at right place. There is a sudden rise in Magento stores but some store owners are disappointed with Magento’s default email subscription and newsletter handling capabilities. Basically they face the following problems:

  1. They can not send the newsletter right away because their local time is not the same as of server time. Eventually, their newsletter campaign will be sent few hours later than the intended time. Although, this can be adjusted with a little tweak.
  2. They can not send large number of emails in one go. Magento limits how many emails should be sent at once.
  3. Managing CRON is a pain.

Most of the problems i have mentioned above can easily be managed by installing our Magento’s email subscription extension. Many customers are adding third party email subscriptions i.e. Mailchimp, Feedburner, Nurture etc. to manage their email lists and send out mass email newsletters or promotional emails. I will cover how to integrate feedburner email subscription & how to add nurture emails subscriptions later. In this article i will cover how to integrate Mailchimp email subscription within your Magento powered store and how to create html newsletter in Mailchimp.

Adding Mailchimp Email Subscription Form In Your Magento Store

There are two ways to integrate Magento email subscription into your store:

  1. Install existing extensions e.g. Advanced Newsletter (aheadworks), MailChimp Synchronization (ebizmarts) or E-Commerce 360 (mailchimp).
  2. Manual Install

You can read the installation instructions of the above extension from their Magento connect list but if you looking to install Mailchimp newsletter manually then read on.

Steps:

  1. Log on to your Mailchimp account.
  2. Click on “Lists” tab. You will be shown a list of all available Newsletter (If not please create one for your particular store).
  3. On your list there is a link called settings, just click on that.
  4. Click on the secondary tab called “for your website”
  5. Now, let’s click on “Signup Form Embed Code” link.
  6. It will open up your Signup form designer with options like “Design Form Structure”, “Form Colors” & “Form Enhancements”. Modify the form and once all done click on “Create Embed code”. Copy the embed code from the text area at the left.
  7. Your Mailchimp signup code is ready, simply add this code to your Magento store and replace the existing signup code. You can change the code by editing app/design/frontend/default/theme/template/newsletter/subscribe.phtml You may have to make the necessary CSS adjustments for look and feel.
  8. All done.

Now, as you have replaced the default Magento Email subscription with Mailchimp email subscription. Next step is to draft a nice looking email newsletter template. Please watch Mailchimp videos and setup a newsletter design.

Please leave me a comment and let me know if you face any problems installing Mailchimp Signup Embed form in your Magento store. Don’t forget to subscribe our RSS to receive latest updates.


29 January 2010

delete-magento-test-orders

Are you wondering how to delete all test orders you have made in Magento while testing? In Sandbox mode store owners performs many transactions to make sure that their Magento powered store is capable of handling payment transactions. You can use any Payment Gateways like PayPal, Authorize.net, PayFlow or Amazon Simple Pay. But all the test orders remain in system even when your store goes into production.
Unfortunately, there is no way in Magento to delete those test orders which were made while testing the Magento store. You can only process these order and set their status as “Cancelled” but you can’t really delete those test orders from your store. I am sure that you would love to see a “Delete selected Orders” button in Magento Admin panel; unfortunately you won’t find such functionality. In order to delete these test orders you have to log in to your PhpmyAdmin using full access and run few queries to get rid of those test orders.

How To Delete A Single Test Order Using PhpMyAdmin

You need to run the following query on your database using PhpMyAdmin:

1
2
3
4
  set @increment_id='200000111';
  select @order_id:=entity_id from prefix_sales_order_entity where increment_id=@increment_id;
  delete from prefix_sales_order_entity where entity_id=@order_id or parent_id=@order_id;
  delete from prefix_sales_order where increment_id=@increment_id;

In the above example we are trying to delete test order # ‘200000111′. Generally people use prefix so change the “prefix_” in the above query with the prefix you have chosen for your Magento store.

The above query will delete the single test order or even an actual order from your Magento store. All you have to do is provide an order number and database prefix. Rest will be taken care of automatically.

How To Delete All Magento Test Orders In One Go

This step is done only on new store which are ready forproduction and don’t have any “Actual Orders” in the system. I would highly recommend taking a full backup before you proceed. Basically when you run the following queries on your Magento database it will complete wipe out all the records and reset the order counters. If you are about to indulge, then please make sure that you know what you are doing.

Beware: The following steps can’t be reversed.

Go to your PhpMyAdmin and run SQL Query

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  SET FOREIGN_KEY_CHECKS=0;
 
  TRUNCATE `sales_order`;
  TRUNCATE `sales_order_datetime`;
  TRUNCATE `sales_order_decimal`;
  TRUNCATE `sales_order_entity`;
  TRUNCATE `sales_order_entity_datetime`;
  TRUNCATE `sales_order_entity_decimal`;
  TRUNCATE `sales_order_entity_int`;
  TRUNCATE `sales_order_entity_text`;
  TRUNCATE `sales_order_entity_varchar`;
  TRUNCATE `sales_order_int`;
  TRUNCATE `sales_order_text`;
  TRUNCATE `sales_order_varchar`;
  TRUNCATE `sales_flat_quote`;
  TRUNCATE `sales_flat_quote_address`;
  TRUNCATE `sales_flat_quote_address_item`;
  TRUNCATE `sales_flat_quote_item`;
  TRUNCATE `sales_flat_quote_item_option`;
  TRUNCATE `sales_flat_order_item`;
  TRUNCATE `sendfriend_log`;
  TRUNCATE `tag`;
  TRUNCATE `tag_relation`;
  TRUNCATE `tag_summary`;
  TRUNCATE `wishlist`;
  TRUNCATE `log_quote`;
  TRUNCATE `report_event`;
 
  ALTER TABLE `sales_order` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
  ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
  ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
  ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
  ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
  ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
  ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
  ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
  ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
  ALTER TABLE `tag` AUTO_INCREMENT=1;
  ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
  ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
  ALTER TABLE `wishlist` AUTO_INCREMENT=1;
  ALTER TABLE `log_quote` AUTO_INCREMENT=1;
  ALTER TABLE `report_event` AUTO_INCREMENT=1;
 
  -- lets reset customers
  TRUNCATE `customer_address_entity`;
  TRUNCATE `customer_address_entity_datetime`;
  TRUNCATE `customer_address_entity_decimal`;
  TRUNCATE `customer_address_entity_int`;
  TRUNCATE `customer_address_entity_text`;
  TRUNCATE `customer_address_entity_varchar`;
  TRUNCATE `customer_entity`;
  TRUNCATE `customer_entity_datetime`;
  TRUNCATE `customer_entity_decimal`;
  TRUNCATE `customer_entity_int`;
  TRUNCATE `customer_entity_text`;
  TRUNCATE `customer_entity_varchar`;
  TRUNCATE `log_customer`;
  TRUNCATE `log_visitor`;
  TRUNCATE `log_visitor_info`;
 
  ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
  ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
  ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
  ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
  ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
  ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
  ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
  ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
  ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
  ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
  ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
  ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
  ALTER TABLE `log_customer` AUTO_INCREMENT=1;
  ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
  ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
 
  -- Now, lets Reset all ID counters
  TRUNCATE `eav_entity_store`;
  ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;
 
  SET FOREIGN_KEY_CHECKS=1;

Optional: If you are looking to set appropriate prefixes for orders, invoices, shipments, credit memos then run the following query as well:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES ('1',  '11',  '1',  '1',  '000000000');
 update `eav_entity_store` set `increment_prefix`= 1 where `entity_type_id`='4' and `store_id`='1';
 update `eav_entity_store` set `increment_last_id`= '000000000' where `entity_type_id`='4' and `store_id`='1';
 
 INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES ('2',  '16',  '1',  '2',  '000000000');
 update `eav_entity_store` set `increment_prefix`= 2 where `entity_type_id`='18' and `store_id`='1';
 update `eav_entity_store` set `increment_last_id`= '000000000' where `entity_type_id`='18' and `store_id`='1';
 
 INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES ('3',  '19',  '1',  '3',  '000000000');
 update `eav_entity_store` set `increment_prefix`= 3 where `entity_type_id`='24' and `store_id`='1';
 update `eav_entity_store` set `increment_last_id`= '000000000' where `entity_type_id`='24' and `store_id`='1';
 
 INSERT INTO  `YOUR_DB_NAME`.`eav_entity_store` (`entity_store_id` ,`entity_type_id` ,`store_id` ,`increment_prefix` ,`increment_last_id`) VALUES ('4',  '23',  '1',  '4',  '000000000');
 update `eav_entity_store` set `increment_prefix`= 4 where `entity_type_id`='28' and `store_id`='1';
 update `eav_entity_store` set `increment_last_id`= '000000000' where `entity_type_id`='28' and `store_id`='1';

Now, all the test orders, customer orders, logs etc are all gone from your Magento store and it will be in a clean state to start over.

Should you run into any trouble? Please leave me a comment and let me know. Don’t forget to subscribe our RSS to receive latest updates delivered to your mailbox for Free.


27 January 2010

magento-multiple-stores

Gone are the days when you have to setup separate E-commerce scripts to manage & run multiple online stores. Magento makes new store creation extremely easy for the store owners so that they can have as many stores as they like still maintaining one backend (admin panel). If you are new to Magento then this tutorial will require you to read the instructions very carefully. You can create multiple stores with other E-commerce software as well i.e. osCommerce, X-Cart, Zen Cart or Miva but to have multiple stores you need to add few plugins, addons and invest in hiring a full time programmer which is painful. A single Magento installation will be enough to run multiple stores having different domain names, different IP’s and different Security certificate. You can optionally setup single checkout for each store as well.

Choose Your Preferred URL Structure

Choosing a URL structure for your individual store is your own personal choice. You can install two different stores on same domain name under different directories ie. Mystore.com/women & Mystore.com/men. You can also use single Magento installation to host two or more stores each sharing same Magento backend but pointing to different domain names as well i.e. womenstores.com & mensstore.com. Similarly you can setup more than one Magento powered stores in sub-domains i.e. women.mystore.com & men.mystore.com

Once you are done selecting a URL structure just stick to it. Typically people prefer hosting more than one Magento powered stores with one backend but each store having its own domain name (better for SEO).

How To Add Another Magento Powered Store

In order to setup another Magento powered store you need to following the steps given below:

  1. Login to the Magento admin panel.
  2. Go to the Catalog tab, and select Manage Categories.
  3. Click on the Add Root Category button on the left.
  4. We will input mystore2.com as Name. Set the dropdown to Yes for both “Is Active” and “Is Anchor”. Click Save category button.
  5. Now, Go to the System tab and select Manage Stores.
  6. Click on the Create Website button.
  7. We will enter mystore2.com as Name and in Code field we will enter mystore2. As we are going to use this value later so keep it handy. Click Save Website button.
  8. Click on the Create Store button.
  9. For the Website, select mystore2.com from the dropdown. For theName, we’ll enter Main Store. For the Root Category, select the mystore2.com from the dropdown. Click Save Store button.
  10. Click on the Create Store View button.
  11. For the Store, select Main Store from the dropdown, making sure it’s for the mystore2.com website. For the Name, we’ll enter English. For the Code, we’ll enter mystore2_en. For the Status, select Enabled from the dropdown. Click Save Store view button.
  12. Now, Go to the System tab and select Configuration.
  13. For the Current Configuration Scope (located on the top left), change the dropdown menu from Default Config to mystore2.com.
  14. Select Web from the sidebar on the left under the General heading.
  15. For both the Unsecure and Secure sections, uncheck the Use default box next to the Base URL item, and enter the URL for your store, e.g. http://www.mystore2.com/. Don’t ignore the trailing slash. Click Save Config button. You are all set, your new store is created.



Now, as you have created another store using your Magento admin panel, you need to decide which method to use for Magento to locate your new store. There are four main methods to setup your domains which are entirely based upon your URL structure.

  1. Addon Domain Method (Each store have its own domain name)
  2. Parked Domain Method (New stores will be setup on Parked domain
  3. Sub-directory Method (New Store will be setup in different directory under primary domain)
  4. Sub-domain Method (Each new store will be setup in different sub domains)


How To Setup Magento Powered Store using Addon Domain Method

If you have chosen to setup multiple stores each having their own domain name then this method should be used. This method requires you to have your domain administrative account ready with you to modify and add another domain. Simply, follow the steps given below:

  1. Login to cPanel for your domain, and click on the Addon Domains icon.
  2. For the New Domain Name, we’ll enter mystore2.com. cPanel will automatically fill in the next two fields, so remove public_html/ from the Document Root field, leaving us with just mystore2.com
  3. Set a password for this domain and click on the Add Domain button.
  4. Login to your site via SSH, and go to the directory that we previously set in the Document Root field above when adding our domain. In our case, we would do the following:
    1
    
    cd mystore2.com/
  5. Copy the index.php and .htaccess file from the directory where Magento is installed, which would be in our root web directory:
    1
    
    cp ../public_html/index.php ../public_html/.htaccess
  6. Open up the index.php file that we just copied over and replace the following line of code:
    1
    
    $mageFilename = 'app/Mage.php';

    with the following

    1
    
    $mageFilename = '../public_html/app/Mage.php';
  7. With the index.php file still open, replace the following line of code:
    1
    
    Mage::run();

    with the following:

    1
    
    Mage::run(mystore2, 'website');
  8. Finally, we need to create symbolic links to point to a few directories:
    1
    2
    3
    4
    5
    6
    7
    8
    
    ln -s ../public_html/404/ ./404
    	ln -s ../public_html/app/ ./app
    	ln -s ../public_html/includes/ ./includes
    	ln -s ../public_html/js/ ./js
    	ln -s ../public_html/media/ ./media
    	ln -s ../public_html/report/ ./report
    	ln -s ../public_html/skin/ ./skin
    	ln -s ../public_html/var/ ./var

How To Setup Magento Powered Store using Parked Domain Method

This is the easiest method to setup multiple Magento powered stores. In this method we setup a new Magento store on a parked domain. Parked domain method requires that you have one store already setup and now you are adding one more. Follow the steps given below to setup a new Magento store on a parked domain.

  1. Login to cPanel for your domain and click on the Parked Domains icon.
  2. In the input field, enter the domain name that you’ll be setting up as a second store, e.g. mystore2.com.
  3. Click on the Add Domain button.
  4. Open up the index.php file for Magento and replace the last line of code:
    1
    
    Mage::run();

    with the following code

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    switch($_SERVER['HTTP_HOST']) {
    		case mystore2.com':
    		case 'www.mystore2.com':
    			Mage::run('mystore2', 'website');
    		break;
    		default:
    			Mage::run();
    		break;
    	}

    If you own more than one store then the above code will look like

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    switch($_SERVER['HTTP_HOST']) {
     
    		// mystore2.com
    		case mystore2.com':
    		case 'www.mystore2.com':
    			Mage::run('mystore2', 'website');
    		break;
     
    		// mystore3.com
    		case mystore3.com':
    		case 'www. mystore3.com':
    			Mage::run('mystore3', 'website');
    		break;
     
    		// Mainstore.com (default store)
    		default:
    			Mage::run();
    		break;
    	}

How To Setup Magento Powered Store using Sub-directory Method

Suppose you want to setup multiple stores under different sub-directories on the same server then you should follow this method. In this method you will have one primary domain and you will call you additional store by calling the sub-directory in the URL. i.e.

       Mainstore.com/store1
       Maninstore.com/store2

Follow the steps given below:

  1. Login to your site via SSH, and create a subdirectory where your second store will be:
            cd public_html
    	mkdir mystore1/
    	cd mystore1/
    
  2. Copy the index.php and .htaccess file from the directory where Magento is installed, which would be in our root web directory:
    1
    
    cp ../public_html/index.php ../public_html/.htaccess
  3. Open up the index.php file that we just copied over and replace the following line of code:
    1
    
    $mageFilename = 'app/Mage.php';

    with the following:

    1
    
    $mageFilename = '../public_html/app/Mage.php';
  4. With the index.php file still open, replace the following line of code:
    1
    
    Mage::run();

    with the following:

    1
    
    Mage::run('mystore1', 'website');

How To Setup Magento Powered Store using Sub-domain Method

If you want to setup your additional store in a sub-domain then you should follow this step. This step requires you to own a primary domain where you have Magento powered store already running. In order to setup another sub-domain and setup your additional store you need to follow the steps given below. You new store will look like mystore1.mysite.com

  1. Login to cPanel for your domain, and click on the Subdomains icon.
  2. For the Subdomain, we’ll enter mystore1. cPanel will automatically fill in the next field, so remove public_html/ from the Document Root field, leaving us with just mystore1.
  3. Click the Create button.
  4. Login to your site via SSH, and go to the directory that we previously set in the Document Root field above when creating our subdomain. In our case, we would do the following:
        cd mystore1/
    
  5. Copy the index.php and .htaccess file from the directory where Magento is installed, which would be in our root web directory:
    1
    
    cp ../public_html/index.php ../public_html/.htaccess
  6. Open up the index.php file that we just copied over and replace the following line of code:
    1
    
    $mageFilename = 'app/Mage.php';

    with the following:

    1
    
    $mageFilename = '../public_html/app/Mage.php';
  7. With the index.php file still open, replace the following line of code:
    1
    
    Mage::run();

    with the following:

    1
    
    Mage::run('mystore1', 'website');
  8. Finally, we need to create symbolic links to point to a few directories:
    1
    2
    3
    4
    5
    6
    7
    8
    
            ln -s ../public_html/404/ ./404
    	ln -s ../public_html/app/ ./app
    	ln -s ../public_html/includes/ ./includes
    	ln -s ../public_html/js/ ./js
    	ln -s ../public_html/media/ ./media
    	ln -s ../public_html/report/ ./report
    	ln -s ../public_html/skin/ ./skin
    	ln -s ../public_html/var/ ./var

All the above method may require you to have full server access. In case you are installing and creating additional stores in a shared hosting environment you may face the following problems:

  • All of your stores share a secure checkout point. If you run two different store i.e. store1.com and store2.com and you are using store1.com as primary domain and have an SSL certificate associated with it. The other domain would be either addon or parked domains, and visitors to those sites would be redirected to your primary domain for checkout.
  • All of your stores do not have a secure checkout, which is fine if you’re using PayPal, Google Checkout, or a similar third-party service that handles the processing of card data on their website. For example, visitors to any of your stores are redirected to a third-party website for card processing.
  • All of your stores are setup as subdomains, and you’ve purchased a wildcard SSL certificate, which is roughly $1000/year and is for legally registered businesses.

I would recommend that you use dedicated server to run multiple stores but its entirely your choice. If you face any problem setting up multiple Magento stores. Please leave me a comment and let me know.


19 January 2010

Magento powered stores or any other Ecommerce stores rely on the fact that no matter how many products they can display on their home page people will surely search for their desired products in order to purchase online. Default search box which comes with the Magento installation is quite powerful in searching and showing product catalogue but still many store owners prefers to use Google Site Search in their Magento powered stores.

Google Site Search Advantages For Magento Stores

Google Site Search saves you from the overhead of heavy searches on your site making your site go slow. If Google site search is used you won’t be computing any results on your store rather showing what is already indexed in Google.

Google Site Search Disadvantages For Magento Stores

Google indexes the entire page and not just the main content area which is the core of the problem while using Google Site Search. However, you can exclude certain phrases that distort the results (through the minus – switch). You can use Google appliance which supports excluding parts of page content from indexing with the googleon/googleoff tags. Find out more in the docs here

How To Generate Google Site Search Code

There are two variants of Google Site Search

  1. Paid (starts from $100/year)
  2. Free

In this example we will concentrate on Creating Free Google Site search code which can be found at http://www.google.com/cse

In order to generate Google Site Search code you need to follow few steps:

1. Signup or login to google.com/cse to generate Google Site search code for your magento powered store.

Google-cse

2. Setup search engine by filling up the form. See the screenshot given below

Google-cse_2

3. Try searching something to verify that it is searching properly.

Google-cse_3
4. Now, click finish and go to your Search engine control panel.
5. Click on “Look & Feel” and optimize your search engine to match with your store layout.
6. Once all the customization etc. are done click on “Get Code” you will see a small code which you should copy (we will paste this code in our Magento powered store). e.g. code

1
2
3
4
5
6
7
8
9
10
11
<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
  google.load('search', '1', {language : 'en'});
  google.setOnLoadCallback(function(){
    var customSearchControl = new google.search.CustomSearchControl('016670295340374400304:b3-qspp3ozs');
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
    customSearchControl.draw('cse');
  }, true);
</script>
<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />

How To Embed Google Site Search Code In Magento Powered Store

Magento static blocks are perfect for placing Google Site Search code. Log into your Magento admin panel and do the followings:

1. Create a Static block – Go to CMS -> Static Block and click “Add New Block”
2. Fill the form but make sure to provide the identifier with “google-site-search” as value.
3. Optional – If you have multiple stores then you need to select under which store you would like to add Google Site Search.
4. Once done, create a CMS page by going to CMS -> Manage Pages and clicking “Add New Page”
5. Create this new page by giving SEF URL identifier as “search-site”
6. Place this code {{block type=”cms/block” block_id=”google-site-search”}} in the content area.
7. You are done, just check this new page by typing http://www.yourstorename/site-search in the url and see if the Google search is showing correctly.
8. Optional- You can make necessary layout related adjustments from Google site search control panel.
9. FYI: Google Paid search can also be embedded in this same manner.

I would love to hear your thoughts and experiences of adding Google Site Search to a Magento powered stores. Please leave me a comment and let me know. Subscribe our RSS to receive latest Magento updates in your mailbox.