ShopSite Tip – Ask a question about this product

Customers ask A LOT of questions.  Have you ever had someone email you with a question about a product but they didn’t tell you which one?  It happens!  In this post we’ll show you how to easily add a small contact form to your More Info pages which a customer can use to ask a question about that product and it will automatically insert the product details.

What It Does

This process will create a link on your product More Info pages such as “Ask A Question About This Product” which when clicked will display a contact form.  See the example below for how the link can look:

ask-question-link

Once you click the link a form will appear, prompting the customer for their name, email address, and their question:

ask-question-form

Hidden behind the scenes is the product name, sku, and the URL of the page where the customer filled out the form.  All of this information will be provided in an email to the store owner when the customer submits the form.

The Email

Once the form is submitted a basic email with all of the details is sent to the store owner.  Here is a sample of what the email can look like:

From: Test Guy [mailto:test@lexiconn.com] 
Sent: Thursday, June 13, 2013 11:35 AM
To: sales@your-domain.com
Subject: Question about: Radio Flyer Wagon

email: test@lexiconn.com
realname: Test Guy
product_name: Radio Flyer Wagon
product_sku: wagon
product_url: http://shopsite-demo.lexiconn.com/ask-question-sample.html
question: Do you have this in Blue?

The Form

To process the form results we’re going to use formmail.php which is included with your hosting account here at LexiConn.  Your account should already have formmail.php but if errors appear saying formmail.php can not be found please let us know.

On the Merchandising > Custom Templates > Includes screen, click “New Include”, enter a filename of “ask_question_form” and click Create.

Edit your new include file and replace it’s default code with the following:

<!-- Ask A Question About This Product -->
<script type="text/javascript">
 function showHide(obj) {
   var div = document.getElementById(obj);
   if (div.style.display == 'none') {
     div.style.display = '';
   }
   else {
     div.style.display = 'none';
   }
 }
</script>
<script language="javascript" type="text/javascript">
var nReload = 5;

function NewVerifyImage()
{
    if (nReload <= 2)
        if (nReload <= 0)
        {
            alert("Sorry, too many reloads.");
            return;
        }
        else
            alert("Only " + nReload + " more reloads are allowed");
    nReload--;

        //
        // This code now works in both IE and FireFox
        //
    var         e_img;

    e_img = document.getElementById("vimg");
    if (e_img)
                //
                // FireFox attempts to "optimize" by not reloading
                // the image if the URL value doesn't actually change.
                // So, we make it change by adding a different
                // count parameter for each reload.
                //
        e_img.setAttribute("src",e_img.src+'?count='+nReload);
}
// -->
</script>

<p><a href="#" onclick="showHide('hidden_div'); return false;"><strong>Ask A Question About This Product</strong></a></p>

<div id="hidden_div" style="display: none;">
<form action="http://www.your-domain.com/scripts/formmail.php" method="post">
    <input type="hidden" name="recipients" value="sales@your-domain.com">
    <input type="hidden" name="good_url" value="http://www.your-domain.com/ask-question-thanks.html">
    <input type="hidden" name="required" value="imgverify:<em>The text shown in the image" />

    <script type="text/javascript">
    var str="[-- PRODUCT.Name JS_ENCODE --]";
    document.write ("<input type=\"hidden\" name=\"subject\" value=\"Question about: " + str.replace("\"","''") + "\">");
    </script>

    <script type="text/javascript">
    var str="[-- PRODUCT.Name JS_ENCODE --]";
    document.write ("<input type=\"hidden\" name=\"product_name\" value=\"" + str.replace("\"","''") + "\">");
    </script>

    <script type="text/javascript">
    var str="[-- PRODUCT.SKU JS_ENCODE --]";
    document.write ("<input type=\"hidden\" name=\"product_sku\" value=\"" + str.replace("\"","''") + "\">");
    </script>

    <script type="text/javascript">
    document.write ("<input type=\"hidden\" name=\"product_url\" value=\"" + document.URL + "\">");
    </script>

Name:<br />
<input type="text" name="realname"><br />
Email:<br />
<input type="text" name="email"><br />
Question:<br />
<textarea name="question" cols="40" rows="2"></textarea><br />
Please enter the characters you see in the image: <input type="text" size="12" name="imgverify"><br />
<img src="http://www.your-domain.com/scripts/verifyimg.php" alt="Image verification" name="vimg" id="vimg"> <button onclick="NewVerifyImage(); return false;">New image</button><br />
<input type="hidden" name="note" value="NOTE: Any double quote characters in the product name or SKU above have been replaced by 2 single quotes: ''">
<input type="submit" name="submit" value="Submit">

</form>
</div>

This include file contains all the form code and javascript which displays the form.  It also creates the link to make it appear or hide when needed.  In the code there are a few lines which you must update in your include template in order to make the form work and customize it for your site:

Update these lines to your domain name:
<form action=”http://www.your-domain.com/scripts/formmail.php” method=”post”>
<img src=”http://www.your-domain.com/scripts/verifyimg.php” alt=”Image verification” name=”vimg” id=”vimg”>

Update this line to your email address:
<input type=”hidden” name=”recipients” value=”sales@your-domain.com”>

Update this line to your “thank you” page:
<input type=”hidden” name=”good_url” value=”http://www.your-domain.com/ask-question-thanks.html”>
(This is just a regular page on your site the customer will be forwarded to after they will out the form.  You could display a “thank you” message and let the customer know you will reply to their question soon.)

Once those changes are in place the next step is to test the form.  To test this on a product, before going live on all your products, make a copy of your current product template.  Then in your new product template enter the following code where you want the link to appear:

[-- INCLUDE ask_question_form PROCESS --]

This will insert the include template so it will appear on your page.  Assign a product or a test product to the new product template and the link should then appear.  Feel free to update the code to change things such as the “Ask A Question About This Product” text or the form itself.

TIP:  Be sure that you do not insert this within existing form code on the page as overlapping forms will not work.  For example it needs to be outside the existing order form code on the page.

For a sample of how the form looks, we have a test copy here:

http://shopsite-demo.lexiconn.com/ask-question-sample.html

Note: Our test form will not actually submit the email, it’s only to display how the link works and what the form can look like.

That’s all there is to it!  One include template with a little bit of code and you can have a small contact form for all of your products.

Google Shopping – Advanced Bidding With “Auto Targets”

 

All products are not created equal! Or, more precisely stated, not all products deliver above average profit margins. For this reason, it’s important to take control of your “Product Listing Ads” (PLA’s).

During the initial set up of your Merchant Center account, Google created a PLA campaign for you in Adwords.   The daily budget you submitted to Merchant Center was applied to this campaign.

The PLA campaign, by default, contains a single “Ad” group (e.g. “Ad Group #1″).

(click image to enlarge)

(click image to enlarge)

Within the default Ad group, Google has set the Auto Target value to “all products”.  The “max CPC”, set during account creation, is 100% applied to the default Auto Target.  Basically, all “active” products from your feed are given similar display consideration by Google.  Meaning that products with very little profit margin will have the same (or similar) rate of display as higher margin products.  Additionally, they will use the same “max CPC” setting to determine positioning.  While this may be perfectly fine for feeds with limited margin diversity, others will find it necessary to set up additional “Auto Targets” – insuring their featured products are presented with the greatest frequency and in the highest possible positions.

 

Configuring the Product Type attribute in Shopsite

Adwords provides several options for defining Auto Targets, including: id, product type, brand, condition, labels and grouping.  For our purposes, we’ll be focusing on product type.

If you’re using ShopSite as your ecommerce solution, and you currently submit a feed to Google, it’s quite easy to update the Product Type attribute.  First, we’ll verify that Shopsite is configured correctly.

Merchandising Tools > Google Services > Google Shopping/Merchant Center > Configuration

(click image to enlarge)

(click image to enlarge)

The default mapping for Product Type is “Google Shopping (Product Type)”, which is  assigned in Products > Edit Product Info.  There’s no need to change the default value, as we’ll be using this field to store our Auto Target values.

Products > Edit Product Info

(click image to enlarge)

(click image to enlarge)

Merchants are free to assign any value they see fit to the Product Type field.  Keeping in mind that the goal is to group products in a manner that allows you to fine tune display frequency and positioning of your products.

Consider the following examples:

Merchant “A” has assigned products in three groups, based solely on profit margin.

products-tier1 (highest margin – highest “max CPC”)
products-tier2 (average margin – lower “max CPC”)
products-tier3 (lowest margin – lowest “max CPC”)

Merchant “B” has some seasonal products and elects to organize using six Product Type groupings.  Similar to above, the tiers are grouped based on margin, however seasonal products are grouped separately.

products-tier1, products-tier2, products-tier3
seasonal-tier1, seasonal-tier2, seasonal-tier3

By placing the seasonal products in their own groups, the merchant can now control the timing and bidding for those Ads (independently of non-seasonal products).  The merchant can choose to “pause” seasonal product targets when out-of-season, then re-activate at the appropriate time.  Or, keep them active and simply lower the “max CPC”.  This also negates the need to continuously add/remove seasonal products from the Google Shopping feed.

Once you have a plan for assigning product types, you’ll need to update the Product Type values for each of your products in Products > Edit Product Info.  This can be accomplished by individual updates, PowerEdit (Mgr/Pro) or Product Upload (Pro Only)

When updates are complete, you can resend your Google Shopping Feed.

Merchandising Tools > Google Services > Google Shopping/Merchant Center

(click image to enlarge)

(click image to enlarge)

 

Creating Product Type Auto-Targets in Adwords

1.  Login to Merchant Center
2.  Select Settings > Adwords > “Advanced: Manage in Adwords”

(click to enlarge)

(click image to enlarge)

3.  Select your PLA campaign (left side navigation menu) > Product Listing Ads Group

(click to enlarge)

(click image to enlarge)

4.  Select the Auto Targets tab

(click to enlarge)

(click image to enlarge)

5.  Click “+ Add product target” > Add a group of products

(click image to enlarge)

(click image to enlarge)

6.  Choose “product type” from the drop-down menu and enter a value which matches what you’ve assigned in ShopSite (Products -> Edit Product Info -> “Google Product Type”).  The value you enter here must precisely match the feed!

7.  Click Validate to ensure that the above value matches available products from your Google Shopping feed.

Note:  All products are reviewed by Google prior to being activated. For a product to be “available”, it must be in “active” status.  You can verify the status by searching for your products in Merchant Center by ID (SKU).

8.  Save
9.  Set “Max CPC”
10.  Save

Repeat steps 5-10 for each of your “Product Type” groups!

That’s it!  Your new PLA “Auto Targets” are ready to roll out…  Remember to keep those product feed(s) up-to-date :)

Top Ecommerce Blog Posts and Articles For May 2013

Here’s the top articles in May that I found useful for ecommerce merchants…

TOP PICK: How to Rank: 25 Step SEO Master BlueprintSEOMoz
Love this one. Must read!

Case Study: Shopping for Frisbee Golf Disks on an iPhonePractical Ecommerce
Always good to see real world examples.

Six things to consider when writing product descriptionsEconsultancy
Great tips on improving SEO and your product line.

40% OffMine That Data
Wise words from Kevin to avoid the race to the bottom

The Myth of Content Marketing, the New SEO & Penguin 2.0Search Engine Watch
Comprehensive SEO article.

How Should Your Mobile and Desktop Sites Differ?Baymard Institute
Some ideas for how to handle mobile and regular web pages.

Google Checkout No More After November 20, 2013

walletGoogle Checkout / Buy With Google Wallet button support in every ecommerce cart will officially be retired. After November 20, 2013, it will no longer be a viable service for any ecommerce merchant selling physical goods.

Google explains it in more detail in the Google Checkout Help Docs and in their Google Commerce Blog Announcement.

Google Checkout / Wallet never really gained large traction with consumers on the web. Google tried to make it a competitor to PayPal and Amazon Checkout, but their restrictions and poor implementation left it as an awkward way for customers to pay for their goods.

Google has decided to focus on their “Google Play” store and digital subscription payments, and is leaving the gateway / merchant account business to the other more successful institutions like PayPal, Amazon, and Authorize.net.

So, make your plans now to phase out Google Wallet in your online store well before November 20th.

Three Secrets Budget Web Hosts Don’t Want You to Know

secretSome of the offers out there for web hosting seem like a steal. Hosts offering tons of space, unlimited resources, all for no more than a Starbucks coffee per month.

You’d be crazy to pass on these type of accounts, right?

Unfortunately, when a web hosting offer seems so attractive and at such a low price, there are some sacrifices that are made…

Those sacrifices are at the expense of the client, in order for the web hosting company to make a profit. Here’s three secrets that budget web hosts don’t want you to know.

1. Resource limits are quite restrictive

Most of the budget web hosts have to pack their servers full of accounts to turn a profit. It’s typical to see thousands of accounts per server.

Even with software that web hosts use to manage spikes and keep resources available, thousands of websites all clamoring for precious resources like CPU, memory, and disk performance will put a severe strain on the server. In order to avoid the server crashing or becoming borderline unusable, budget hosts set very low limits on what a site can use in terms of server resources.

If your site becomes somewhat busy, or a handful of visitors are hitting your blog or ecommerce application at the same time, your account will likely be throttled to reduce its consumption of cpu / memory. This means your site will be quite slow, unusable, or even suspended by the host. This can happen without your knowledge, and at a time where you need the resources to support more visitors.

Contrast this with a reputable web hosting company that has an undersold environment.

What do I mean by “undersold”? This means that the number of accounts per server are much lower than the maximum allowed. This allows any one site to consume the resources it needs within reason such that no throttling or suspensions occur.

A good web host will manage these resources effectively, and leave plenty of horsepower available to easily handle spikes in usage.

2. Too much data stored for effective backups and restores

Tons of accounts on a server with virtually no limits on disk space translates to servers with many Terabytes (1,024 GB = 1 TB) of data (some over 5 or 10 TB). That is a lot of data to backup and be able to restore.

When disaster strikes, and this enormous amount of data has to be restored, it could take *DAYS* for this to complete. Days is not an exaggeration. I’ve seen it many times.

Why would it take days? Assuming a conservative restore rate of 100 Gigabytes per hour, a server with 4 Terabytes of data would take just under TWO full days to be restored.

On the other end of the spectrum, a web host that undersells and has responsible disk space limits is in a better position for a fast recovery. Servers with 100-200 GB of data can be restored in a few hours at most.

3. Performance is quite abysmal

If you rely on anything besides plain text and images for your site, performance is quite important. In an oversold budget hosting environment, servers are already close to being maxed out. Hard drives are overworked, free cpu cycles are scarce.

This results in any dynamic element (i.e. MySQL, PHP, ecommerce, a blog, etc…) on your site being much slower than it should be. Your code is waiting in line like everyone else on the server, trying to use these resources. The log jam causes pages to load slowly.

How slow? We’ve seen other hosts deliver page loads for blogs and ecommerce applications in the 5 to 15 second range. That is an eternity to wait for both customers and search engines like Google. Visitors will penalize you by clicking to another site, tired of waiting for your pages to load. Google will penalize you by ranking your site’s speed below other websites, which can lower your site in the search results.

We’ve had new clients that use ShopSite as their ecommerce application believe that the admin panel for ShopSite is slow. It wasn’t until they moved to us that they realized that ShopSite’s back office is actually quite fast! They couldn’t believe the difference. That is what good web hosting should do for your site.

What’s it like in a properly managed undersold hosting environment? Dynamic pages should load as fast as plain text. Your visitors and visiting search engines will give you bonus points for a speedy and pleasant browsing experience.

Curious if your current web host is fast? Take our Speed Challenge and find out!

Not all web hosts are run equally well. They may have slick ads and talk up their services, but if they put too many accounts on a server, and have price points that require packing them in like sardines… limits, storage, and performance will suffer to a large degree.

If you rely on your website for income or as a go-to resource for others, you’ll want to insure that the web host you choose can deliver on its promises. Ask questions like:

  • How many accounts do you put on a server?
  • How do you ensure my site will run fast and always have access to server resources?
  • Are there any Terms of Service limits placed on my account?
  • What is the typical amount of disk space used per server?

photo credit