PRO-Webs Faqs & Tutorials

give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime

Zen Cart Tutorials & FAQ

Reset and Save your Zen Cart Admin Logs

PCI Log Retention

The PCI/DSS requires that logs must be retained for one year and the last three months must be easily accessible.

  • If storage is available on central system, then retain all logs from PCI scoped systems for 1 year.
  • Otherwise retain all logs from PCI scoped systems on central system for 3 months, rotate all logs older than 3 months to long term storage. Expunge logs on long term storage that are older than 1 year.

Reset and Save your Zen Cart Admin Logs

  1. Login to Zen Cart admin
  2. Admin Access Management menu
  3. Select Admin Activity Logs
  4. Check the box by Save to file on server? (otherwise will stream for download directly from this window)
  5. Click the GO button
  6. After you get the green success bar at the top
  7. Click the RESET button
  8. Next page click the RESET button
  9. Green bar at the top Completed erasure of the Admin Activity log
  10. Done

Create a Category/Product Restricted Coupon

Very often we want to offer a coupon on specific categories or products. Zen Cart has this ability in spades! Read below to find out how.

Creating a “Restricted” Coupon in Zen Cart

1. In your Zen Cart admin navigate to Gift Certificate/Coupons >> Coupon Admin

*If it says “Not Installed” you can install it under Modules >> Order Total >> Discount Coupon

2. On the bottom right select the “Insert” button.

3. Fill out the fields Coupon Name, Coupon Description etc, then select the “Preview” button and then “Save”

4. Now re-select your coupon from the list and select the “Restrictions” button from the right.

=======Restricting to Category(s)=======

5. Whether you are restricting to categories (top) or products (bottom) the logic works exactly the same.

6. For category restrictions start by disallowing all categories in the top portion of the screen. To do so, to the right of the top dropdown that says TOP, select “Deny” and click the “ADD” button.

7. Once added you have now another dropdown, here you can now select categories and add them as allow for category restrictions OR

=======Restricting to Product(s)=======

8. Restrict it to product(s) n the lower portion of the screen.

9. To restrict it to a product in the lower dropdown that says “TOP” select the product’s category.

10. Then to the right of that select your product in the new dropdown, then “Allow”, then update. Repeat for additional products.

Always make sure you test coupons before releasing them!

Pricing Zen Cart Products Options by Attributes

In the product entry page in your Zen Cart admin
1. Make the price zero
2. Check Product Priced by Attributes

Then save the product and go in to its attributes.

Click to edit the attributes (each) and
1. Remove the PLUS to the left
2. Correct the price to be the full price for that product attribute
3. Under attribute flags (the colored section near the bottom when editing an attribute) check the following for YES

  • Apply Discounts Used by Product Special/Sale
  • Include in Base Price When Priced by Attributes
  • Click Update

Setting Up MagneticOne Category matching for Google Shopping

To set up your new category matching, which is required by 9/22/2011 please follow the following tutorial in your MagneticOne Feeder.

  1. In your Zen Cart admin navigate to M1 Export Tools and choose Google Base Export from the drop down.
  2. In the second section called “Products to Export” see Click to Setup Google Product Category link.
  3. Upon clicking this link you will have to allow it in your pop up blocker.
  4. In the Google Base Category Matching screen you will see all of your categories, note that each category is set to use the same taxonomy as it’s master and you only need to change those which need it.
  5. To change a Google category check this chart ( to locate your category and begin typing in the field. This will trigger the drop down for you to select your category… then save.

Any product w/o a Google category after 9/22/2011 will not be added to Google product search.

Creating Manufacturers In Zen Cart

In your Zen Cart admin (all 1.3.X, 1.5.X Zen Cart versions) and go to Catalog >> Manufacturers

Click the insert button near the bottom right, which opens the manufacturer’s input screen top right (shown below).


Fill the manufacturer’s name ( be conscious of the length, as the length value has a max in your Zen Cart). Fill the manufacturer’s image if desired. Upload the image and save.

The manufacturer’s url is not needed, and is not currently used in Zen Cart templates.

If you need to increase the maximum length of manufacturers name to display in the manufacturer’s side box you can do so in Configuration >> Maximum Values >> Length of Manufacturers Name

How to Link Products

Many times we have the need to link or display products in more than one category. This is best accomplished using the “linked products” function inside of your Zen Cart. This way the products do not have duplicate urls and thus duplicate content.

Step 1

Select or create the category you will be linking the products in to.

Step 2

Browse in your admin under Catalog >> Categories/Products and find the product to link.

In the image below you will see we are going to click on the BLUE button to the right with the “C” on it next.


Step 3

As seen in the image below, in the right hand options you will do the following:

  • Check the radio button that says Duplicate product
  • In the “Categories:” dropdown you will select the new additional location for the product
  • You will click the “Copy” button


Repeat as needed and these linked products will display in as many categories as you wish.

Using Image Handler to Add Additional Product Images

Everyone likes the cool mouseovers and image caching provided by the Image Handler module for Zen Cart, but one of the best functions of this module often goes unnoticed. Image Handler has the ability to upload, rename and properly insert additional product images. In this tutorial, we will show you how.

Step 1:

Navigate to Tools >> Image Handler2

Step 2:

Select the Manager Tab

Step 3:

In the manager screen, browse to the product to add the images to.


Step 4:

Click the new file button on the right under Click to add a new image to this product.


Step 5:

You can upload medium and large images as well, but for this purpose we will use the browse button for Default image file. Browse to your image, and click the Save Button of the bottom right (as seen below).

This will upload the additional product image, name it correctly and display it where your template calls for them in your product pages. Nice and easy, no FTP and no coding image links.

How do I show sideboxes on just some pages?

Let’s say for example you want to show your Zen Cart featured sidebox on all enabled pages except the main page. To do this you will need to have FTP or file manager access, a plain text editor such as PSPad and a bit of coding experience.

In this tutorial we will create an override for the Zen Cart featured products side box module file.

First we will copy the default featured products module file (includes/modules/sideboxes/featured_products.php) to your custom template override folder (includes/modules/sideboxes/YOUR_TEMPLATE_NAME/featured_products.php). If you haven’t a folder in modules/sideboxes/ with your correct template name, you can create one.

Once copied over, download /YOUR_TEMPLATE_NAME/featured_products.php to your computer and open it in PSPad for editing.

Find this line of code

$show_featured= true;

and change it to read

if ($this_is_home_page) {
$show_featured = true;
} else {
$show_featured = false;

Now save the file and upload it to includes/modules/sideboxes/YOUR_TEMPLATE_NAME/featured_products.php. The conditional statement you just added will allow for your Zen Cart featured products sidebox to display on all enabled pages, except the main page.

How Do I Change My Previous Next Navigation in Zen Cart?

In your Zen Cart admin section navigate to In Configuration >> Product Info >> Previous Next – Button and Image Settings and set as desired. Next, go to Configuration >> Product Listing >> Prev/Next Split Page Navigation (1-top, 2-bottom, 3-both), set as needed.

The recommended setting is top, as it is the most logical navigational position, and there is no valid reason to use both top and bottom images to slow the page down.

How Do I Turn Off the Zen Cart Category Icons?

To turn off the category icon/link on your product pages you will navigate your Zen Cart admin to Configuration >> Product Info >> Previous Next – Navigation Includes Category Position, set this to false.

To turn off the category icon/link on your top level and subcategories pages you will navigate to Configuration >> Product Listing in your Zen Cart admin and select the following options: Include Product Listing Sub Categories Image & Include Product Listing Top Categories Image and set to false accordingly.

How Do I Turn Zen Cart Breadcrumbs On/Off?

To change the display behavior of your Zen Cart breadcrumb navigation you will login to your admin and navigate to Configuration >> Layout Settings >> Define Breadcrumb Status. Here you will have the following options:

  1. 0= OFF
  2. 1= ON
  3. 2= Off for Home Page Only

The recommended option is #3 to display the breadcrumb navigation on all pages except your home page wgere it would be redundant. Note that if enabling your breadcrumbs here has no effect within your Zen Cart store then its very likely that the template design has omitted it.

How do I Set Up Continental US Shipping Zones - Zen Cart?

Find a great tutorial and SQL patch to define Continental and Non-Continental US zones in your Zen Cart 1.3.X. Once zones are defined they are used for shipping, payment and tax modules quickly and effectively in your Zen Cart’s built in modules.

How Do I Change Zen Cart Product & Category Title Length?

The VERY FIRST and most important thing to do is back up your Zen Cart database… Better safe than sorry.

Open your cPanel and look for phpMyAdmin. Upon opening phpMyAdmin, you will see any and all databases in your hosting account.

Locate your current Zen Cart database. If you are not sure which database it is then, check at the bottom of includes/configuration.php for database name.

Next, click the database you need in the left menu… This will open a new window and display all of the database tables in the left hand menu.

For Zen Cart products, select DATABASE-PREFIX_products_description

This will display the table entries in this table on your right.

Look for the entry products_name and click on the edit/change button in its row… Usually a “pencil” icon.

You will then see the contents of this entry, including Length/Values1 …. which by default I believe is 32. This is the number you will edit.


Change the characters number to a larger number of your choice ( recommend less than 75 characters max) and then click save in the bottom right.

When changing this Zen Cart product title its value is used in more than one location. So click the database name in the top left to return to the main phpMyAdmin database screen.

In the left menu, your Zen Cart database tables list select DATABASE-PREFIX_orders_products

You will repeat the steps above for this table editing the products_name entry to match the other entry you edited in products_description.

To change the length of your Zen Cart category name, the task is exactly as changing the product titles length, except different areas and only one edit.

In the left list/menu of your Zen Cart tables you will select DATABASE-PREFIX_categories_description

Then edit categories_name and save as before. REMEMBER DO NOT EVER GO SHORTER……

How Do I Configure Zen Cart to Work on a New Domain?

Here are the step by step directions to move your Zen cart to a new domain.

Firstly, you must physically move all of your Zen Cart files to the new location.

Secondly, load up phpMyAdmin, or similar, in the old account. Browse to your Zen Cart database, if you are not sure which one find it here admin/includes/configure.php. Next, select the export tab, make sure all tables are selected. Tick the box which says “Add Drop Table” and tick the box to save it as a file… Then submit. Save the file on your PC, we will need it in a bit.

On the NEW hosting account create a new, empty SQL database. Make certain to create a new user and give that user full privileges for the database as well… Record the database name, database username and password for later.

Now open phpMyAdmin, on the new hosting account. Browse to the new database you just created and select import from the tabs. Select you SQL file you previously exported and check the box to continue if it times out. This will work for MOST databases. Really large database will need dropped in in smaller sections. To do this, open the SQL dump you made from the old site in a plain text editor and select the SQL tab in the new site’s phpMyAdmin. Now select small chunks of the syntax in the dump, paste them in the field and hit go… Until you have inserted them all.

In order to configure your Zen Cart to work properly with the new domain, you will need to modify the two configure.php files in includes/ and admin/includes/ folders to reflect the new domain.

It is very likely that you will need to make these files writable first. So in your file manager in control panel CHMOD these files each to 644.

The settings that should be changed in includes/configure.php are:

HTTP_SERVER – you should change this to your new domain name, e.g.

define(‘HTTP_SERVER’, ‘’);

HTTPS_SERVER – change this to:

define(‘HTTPS_SERVER’, ‘’);

define(‘DIR_FS_SQL_CACHE’, ‘/enter/your/path/to/public_html_or_htdocs/and/zencart/here/zen/cache’);

‘DIR_FS_SQL_CACHE – change this to:

define(‘DIR_FS_SQL_CACHE’, ‘/enter/yourNEW_hosting_path’);

In admin/includes/configure.php you should modify:

HTTP_SERVER – you should change this to your new domain name, e.g.

define(‘HTTP_SERVER’, ‘’);

HTTP_CATALOG_SERVER – again, this should be changed to your new domain name:

define(‘HTTP_CATALOG_SERVER’, ‘’);

You WILL need to use the www in ALL of the url settings if you choose to use the www in your urls.

define(‘DIR_FS_SQL_CACHE’, ‘/enter/your/path/to/public_html_or_htdocs/and/zencart/here/zen/cache’);

‘DIR_FS_SQL_CACHE – change this to:

define(‘DIR_FS_SQL_CACHE’, ‘/enter/yourNEW_hosting_path’);

If you are using SSL, you should also change (once your SSL is installed):

HTTPS_SERVER – change this to:

define(‘HTTPS_SERVER’, ‘’);

HTTPS_CATALOG_SERVER – change this to:


Lastly… In these files, near the bottom you will see your current database information. IF you created a new database, these must be updated as well. Be certain that the single quotes of each setting DB Password, DB and DB User are intact after editing.

Very last step, once you are up and running there are 2 settings to update in your Zen Cart admin….

Configuration >> Logging >> Log Destination (Update your path)
Configuration >> Sessions >> Session Directory (Update your path)

Now that your Zen Cart is moved and running right go in to file manager once again and change these to files to CHMOD 444…

includes/configure.php and admin/includes/configure.php

If you experience any issues… or just for peace of mind, running this cache key fix is recommended.

How do I add text/images/code to my main page only?

To add text/images/code to your Zen Cart Main page you would edit the defined text within your Zen Cart Administration under Tools >> Defined Pages Editor >> Define Main Page.

This area will display plain text, HTML code, Java Script, Flash and images. You cannot use a PHP include within a defined page.

Warning: Your Admin login is not secure

If you are getting this note in your Admin area:

“Warning: Your Admin login is not secure … either you still have default login settings for: Admin admin or have not removed or changed: demo demoonly The login(s) should be changed as soon as possible for the Security of your Shop. For additional Security for the Admin please see the /docs”

… simply go to Admin> Tools> Admin Settings You can then add/remove administrative accounts. To secure your site, you should remove the “demo” account (if there is one), or at least change its password.

You should also make sure your admin password is not “admin”… click on the “Reset Password” button to change it. We suggest using something at least 8 characters long, and including numbers, and not dictionary words.

Warning: I am able to write to the configuration file

This error is triggered because the permissions on the file are set to Read,Write and Execute (UNIX) or on Windows no attributes are checked in the file properties.

On LINUX/UNIX: Open the /includes/ directory and using CHMOD, set the permissions to 444. (Some systems may prefer 644)

On Windows: Open the /includes/ directory, right click on the configure.php file and check the “Read Only” status.

Sometimes you have to do this via a File Manager tool provided by your webhosting provider. In cPanel, it’s called File Manager. In other tools it might be called something different. In the file manager, you can simply navigate to the file you want to alter permissions for, then click on the File Properties link/button and set permissions. The links could have varying names.

If your FTP program won’t let you set CHMOD 444 and 644 doesn’t work successfully, you’ll have to use the File Manager approach above. If that doesn’t work, then you must contact your hosting company’s tech support to ask them to do it for you. Sometimes, although rare, it’s necessary to set these files to 400 instead of the common 444 or 644. Any lower than 400 may cause you to lose access to the file.

Some hosts have security configured such that even when you “ask” the server to set the files to 444, they remain at 644 or even get changed again later by a server security or filesystem properties check. This is why on our support forum you’ll find folks asking you to check and double-check what the permissions “really” are set to.

If you don’t address this issue, then you leave your site vulnerable to security risks. The warning is telling you that if someone were to get past Zen Cart‘s security systems, or if they were to hack into your server using some other less-secure program even on somebody else’s hosting account, they could possibly read or change those very important configuration files. Thus it’s important to find a way to prevent the warning message, rather than merely suppress it.

The message is saying that the webserver, using PHP, *is* able to write to the file, according to the access check that PHP does against the file. Zen Cart is simply reporting that there’s a risk. Please don’t ignore or bypass it. It’s for your own security.

For assistance on changing permissions settings, see How Do I Set Permissions on Files/Folders

Reference: Guide on understanding what these CHMOD numbers mean

Warning the installation directory exists

One of the most commonly encountered errors is a warning that the installation directory exists at /such/and/such/an/address. It is recommended that you delete or rename the directory for the security of your site.

Several checks are automatically performed by Zen Cart to insure you have the proper setup of your online store. For more information on how to correct other errors or warnings, check the other FAQ’s or see the documentation in your /docs/ directory.

Warning: Headers already sent


Warning: Cannot modify header information – headers already sent by (output started at /….includes/something/something/something.php:12) in …./includes/something_else.php on line 67

Common Cause:
This warning is often caused by a blank space or extra line at the beginning or end of a .php file.

Check the error for the filename that generated the error (ie: the “output started at….” filename), open that file in your text editor and remove the extra spaces or lines immediately before the first <?php marks in the file, or after the closing ?>

Other Causes: Syntax errors

In the example above, you’ll see output started at /….includes/something/something/something.php:12. The includes/something/something/something.php is the filename you need to be concerned about. The :12 means that the problem you need to fix is on line 12.

In that same example, the /includes/something_else.php on line 67 message can be completely ignored. It is not the problem. It is the one that discovered that the problem had already occurred.

If the “headers already sent” error appears AFTER any other error, then you need to fix that other error FIRST. (The error message itself is what caused headers to be sent, so fixing that error will cause the second error to go away too.)


a) look for where it ‘started at’
b) track the line number
c) check what’s normally happening on that line.
— If it’s the end of the file, then it’s blank spaces.
— If it’s the start of the file, it’s likely spaces.
— Elsewhere it could be a syntax error or the result of an “echo()” statement which is displaying info or perhaps debug code.
— Common syntax errors include the use of single-quotes inside statements that already have single-quotes. Check to be sure your quotes aren’t mismatched. If you need to use single-quotes while inside other single-quotes, change yours to ‘ instead of just ‘.
d) the rest of the info simply shows other execution information, mainly the part of the code that discovered that it cannot proceed as expected due to the problem that happened in the ‘started at’ location.

This page contains both secure and nonsecure items

When I click the Log In link as a customer i get prompted with the security prompts stating:

“This page contains both secure and nonsecure items.
Do you want to display the nonsecure items?”

This happens on all my “secure” pages, such as My Account and Checkout.


That indicates that somewhere in your templates you have hard-coded actual URL links to http://xxxxxxxxx instead of using relative paths to objects.

This can also happen if you have added banners with http:// links and not told them to skip display on SSL pages.

This can also happen if you have added click-tracking tools to your site via javascript, which link to http:// pages somewhere.

You can identify most culprits by searching your browser’s View Source for:

Then work through your template files and remove those hard-coded links. If they are caused by click-tracking scripts somewhere, try converting them to https:// links or contact the vendor for assistance with alternate scripts.

Basically, *never* hard-code a full HTTP:// URL into any page on your site unless you know that doing so will not produce this sort of error. This is especially true for <IMG SRC=…> and <SCRIPT SRC=…> tags.

Parse error: unexpected T_STRING (or similar)

If you are getting an error similar to:

“Parse error: parse error, unexpected T_STRING in /var/www/myaccount/public_html/includes/languages/english/SOMETHING.php on line 28”

This typically means you have forgotten to put a (backslash) before a ‘ mark (single quote, apostrophe) in one of your define() statements in the language file reported.


define(‘TEXT_SOMETHING’,’This is something simple that’s used as an example’);

(notice the ‘ in the word that’s).

I am getting a blank page (or blank part of a page)

Blank pages can be caused by a number of things, and often occur just after installing, upgrading, or customizing your store. Any time you touch a PHP file, you must be sure to not introduce syntax problems, and you need to be sure that it uploaded correctly.

1. Did all your file-uploads work properly?

Sometimes FTP programs experience a timeout when uploading large quantities of files (such as when installing or upgrading your site), or fail to fully upload some files, or leave them as just 0-bytes in size. Some programs like SmartFTP and CuteFTP are well-known to be problematic in this area. For Windows PCs, we recommend FileZilla as a free, fast, and reliable FTP program. On Mac, Transmit or CyberDuck are commonly acclaimed FTP tools.

Best to re-upload and ensure that there are no errors, and that no files are left with 0 bytes.

Failed uploads are the MOST COMMON CAUSE of all website problems.

2. Have you created any syntax errors in your customizations?

A PHP syntax error will very often result in a blank screen.

When this happens, there is often also an entry in the server’s errorlog, which you can often view via your hosting control panel area.

a) Turn on debug logging to store errors to a log file

Install the Debug Error-Logging Utility

One way to identify what PHP errors are happening, especially if you have no access to server errorlogs, is to use the Debug Error-Logging Tool from our downloads area. It’s a simple install, and can expose the source of your problems fairly quickly. Click {here} to download it.

If you’re dealing with blank admin pages, for the upload destination, substitute the /admin/includes/extra_configures folder instead of /includes/extra_configures where mentioned in the instructions.

Then see the “Dealing with Error Messages” section, below …

b) Attempt to show errors on-screen.

While the method above is far more reliable and preferable (since messages are never shown to customers), Another way to help identify *where* an error is happening is to show the errors on your browser. The drawback to this is that your customers can also see the errors, and search engines might catch them too … which could be embarrassing.

To attempt to show PHP debug errors on-screen, create and upload a new file, like this:

Filename: /includes/local/configure.php


Then try to access your site again. You may see many warning messages on the screen.

Dealing with the Error Messages

The “fatal” messages are the more important ones to deal with. “Notice” messages can be ignored in most cases. “Warnings” should draw some attention, but are not fatal.
Also note that many error/warning messages will be a result of previous error/warning messages.
Deal with them in the order they appear, and don’t blame the later errors until the earlier ones are dealt with first.

3. Common customization errors

The most common customization errors include:

  • using ‘ or ” marks inside define() statements, resulting in mismatched quotes
  • removing or adding punctuation to define() statements, thus breaking the correct syntax. A define() statement should look like this: define(‘CONSTANT_NAME’, ‘value here’);
  • missing semi-colons and periods, unbalanced parentheses, braces, brackets
  • uploading files to the wrong places. For more information about overrides, see the Overrides Chart and the Overrides FAQs

Error: Catalog images directory is not writeable

The /images directory needs to be set with a chmod 777 for write access. (This is 755 on some servers)

Note: This includes all subdirectories for /images as well as their subdirectories.




Why am I seeing images for other products on my product pages?

On my product pages, I’m seeing images from other products showing under my product description. Why? How do I change this?


The “additional images” feature is causing this.


You have two options:

a) rename your images so they don’t share a common filename. Right now since you have one product with “abc.jpg” as the name, and another product with “abcde.jpg” as the name, both images will show for the “abc.jpg” product, because “abc” is common to both, and “abc” is the full filename of the main image of one of the products.
This is explained further in the Additional Images FAQ.

b) or turn off all extra-image functionality via Admin->Catalog->Product Types->Product General->Edit Layout->Show Additional Images = 0

My images are distorted/fuzzy/squished

Your images are distorted because the images sizes are set to fixed dimensions, both height and width, and if your images are not the same ratio they will appear distorted.

To remedy this situation, open your Admin and point your cursor to Configuration on the menu bar. Chose Images from the dropdown list and click on it. On this page is a list of the various image sizes, choose the image size you wish to edit and set one of the dimensions to 0. Make sure you also set the following two options: Calculate Image Size = true and Use Proportional Images on Products and Categories =1. This will alow your images to be resized according to their own proportions.

How do I turn off weight from my product descriptions?

Firstly let’s be clear about the difference between a product listing and product info. When you see a number of products listed together, that’s a product listing. When you click on one of them, you will be taken to the product info page.

To turn off weight on the product listings pages, login to your Admin area and then choose Configuration > Product Listing > Display Product Weight and set it to 0.

Well, that was easy. You may have spotted the Product Info entry on the Configuration menu and already be there to do the same for product info. STOP.

Product info works differently from product listings. This is because of the flexibility that Zen Cart gives you to define different product types. You may wish, for example, to display a weight for a book, but not for a downloadable pdf. Zen Cart allows you to set them up as different product types and display different information about them.

So where do you go to turn off display of a products weight? Still in your Admin area, you go to the Catalog/Products > Product Types menu. Click once on the relevant product type (usually Product General unless you have taken explicit steps to use another product type) and then click on the “edit layout” button to the right. Then set Show Weight to 0. If you wish to also do this for other product types, go back to the Product Types screen and repeat.

How do I offer coupons for my customers to redeem?

If you want to offer a coupon, you need to first enable the coupon system:

Go to: Admin->Modules->Order Total->Discount Coupons (ot_coupon).
If it’s not already installed, click Install to enable it.

Creating Coupons

Now, in your Admin area, you have a menu item entitled “Gift Certificates/Coupons”. Click on the Coupon Admin option.

Next, you create a coupon by clicking Insert. (Or Edit to edit an existing coupon.)
Fill in the details.
If the coupon is for a percentage discount, enter the percent sign after the number.
If the coupon is ONLY for free shipping, check the free shipping box. (This ignores all the % or amount discounts, and makes the coupon ONLY apply to shipping.)
You can enter a coupon code, or if you leave it blank, the system will generate a random code for you.
Save the coupon.

Now you can either take the coupon code and manually give it to your customers in advertisements (in print or on your website) or you can click the Email button and send it to a list of customers.

If you want to set up restrictions so the coupon applies to only to certain products or categories, click the Restrictions button to set them up. You can do this at a later date if you desire.

Redeeming Coupons

When a customer adds something to their cart and proceeds to checkout, they will see a spot to enter a coupon code … on the Payments page.
Once they fill in the code and press Enter, it will be checked for validity, and if it is valid and not restricted against what’s in their cart, a Success message will show on the screen, and their order Total will be adjusted appropriately.

If they wish to remove a coupon, they can enter a different coupon code, or they can type “REMOVE”, and press Enter.

How do I add downloads to products? make products downloadable?


Downloads are handled as product attributes.
So, FIRST you should familiarize yourself with: setting up attributes.

To add a Download Attribute to a product

  1. Go to Option Names … and create an Option Name that is either Radiobutton or Dropdown …
    Call it something like: Download
  2. Go to Option Values Manager and add what you want to call it …
    example: Zip File
    If you have multiple choices you could have these as the Option Names you create:
    – MS Word Zip
    – Note Pad Zip
    – etc.
  3. Go to Attributes Controller and find the Product …
    Add the Attribute as:

    1. Option Name: Download
      Option Value: MS Word Zip
      Sort Order: 10
      Filename: (enter name of file you uploaded to the /download folder)
    2. Option Name: Download
      Option Value: Note Pad Zip
      Sort Order: 20
      Filename: (enter name of file you uploaded to the /download folder)

Now when shopping, the customer can choose the format. Depending on your downloads you will want to adjust how you configure things.

If using Radio buttons and have multiple selections, be sure to set one as a default.

To make multiple downloads on the same product

For each download item, you need an Option Name
For each Option Name, you need one or many Option Values depending on the choices needed …

Let’s use an example:
If you have 5 downloads on one Product you need 5 Option Names and 1 Option Value per name:

Option Names:
Download 1 Option Type: Radiobutton, Sort Order 10
Download 2 Option Type: Radiobutton, Sort Order 20
Download 3 Option Type: Radiobutton, Sort Order 30
Download 4 Option Type: Radiobutton, Sort Order 40
Download 5 Option Type: Radiobutton, Sort Order 50

Option Values
Now … for each Option Name you make an Option Value …

The most common reason for having multiple downloads on a product is that the download is big so it is broken into parts for easier access and safer downloading.
In such a case, you just need 1 Option Value per Option Name … this means you just have 5 downloads to go to the Product

If you have many multiple downloads, say each Product has 5 downloads you can pattern this so the names make sense when read on the screen

Example for 5 Downloads it would read:
Download 1 of 5
Download 2 of 5
Download 3 of 5
Download 4 of 5
Download 5 of 5

For 3 Downloads it would read:
Download 1 of 3
Download 2 of 3
Download 3 of 3

Make the Option Values as needed:
Option Values:
Option Name pick from dropdown Download 1
Option Value Name: of 1
Option Value Sort Order: 10

Option Name pick from dropdown Download 1
Option Value Name: of 2
Option Value Sort Order: 20

Option Name pick from dropdown Download 1
Option Value Name: of 3
Option Value Sort Order: 30

Option Name pick from dropdown Download 1
Option Value Name: of 4
Option Value Sort Order: 40

Option Name pick from dropdown Download 1
Option Value Name: of 5
Option Value Sort Order: 50

Then make a set for Download 2, 3, 4, 5

Note: when making these, only make patterns that match
Download 3 of 1 doesn’t make sense so don’t make an Option Name: of 1 for the Option Name: Download 3

Adding to Products via Attributes Controller
Now you can make the Attribute read correctly based on how many downloads …
Note: You may find a better pattern of text so you don’t get lost in making the Attributes …

NOTE: There is also Bunyip’s Enhanced Attributes Controller contribution that has a nice peice of code to filter your Option Names and Option Values …

But for now, when making the Attributes, just match the right Option Name to the Option Value …

Attributes Controller:
Option Name: Download 1
Option Value: of 5 [Download 1]
Download filename of file already uploaded to the /download folder.
Number of Days and Downloads

Option Name: Download 2
Option Value: of 5 [Download 2]
Download filename of file already uploaded to the /download folder.
Number of Days and Downloads

Option Name: Download 3
Option Value: of 5 [Download 3]
Download filename of file already uploaded to the /download folder.
Number of Days and Downloads

Option Name: Download 4
Option Value: of 5 [Download 4]
Download filename of file already uploaded to the /download folder.
Number of Days and Downloads

Option Name: Download 5
Option Value: of 5 [Download 5]
Download filename of file already uploaded to the /download folder.
Number of Days and Downloads

Don’t worry on the Sort Order as you set the defaults when these were made …

When done adding the Downloads … just click on the Update Sort order button and all will sort nicely …


Another way of looking at it:

1. Options Names Manager …

Add an Option Name: Downloads (could have called this anything)
Option Type: Radiobutton or Dropdown

2. Option Values Manager …
Add an Option Value:
Option Name: Downloads (from dropdown)
Option Value: PDF
Default Sort Order: 10

3. Attributes Controller …

Find Product …
Pick from Option Name dropdown: Downloads
Pick from Option Value dropdown: PDF [DOWNLOAD]
Enter the filename: or whatever
Enter the number of days
Enter the number of download attempts
Set as Default
Set Sort Order (if needed or after adding you can run the Update Sort Orders)

Click Insert …

If the file is already uploaded to the /download folder (and it needs to be), then you should see a green dot next to the filename …

Now just test and make sure from add to cart to checkout to download that all is working for you.

Additional Notes about Downloads and Shipping Costs

Downloads know there are no shipping costs automatically due to the fact that you added a Download filename to the Attribute.
Thus, Downloads should NOT be marked as Always Free Shipping, and should NOT be marked as Virtual Products.

File Permissions for Downloads

Files for download (ie: all the files in the “download” folder) should be marked as read-only. Setting to 644 should be sufficient.
The “download” folder itself is typically set to 755, which is the normal default permissions setting for folders.
If you are using download-by-redirect, then your “pub” folder needs to be read-write, typically 777 (or 755 on some hosts).

Important Facts about Download Settings

  1. Downloads are NOT Virtual Products so use:
    Product is Virtual: No, Shipping Address Required
  2. Downloads are NOT Always Free Shipping so use:
    Always Free Shipping: No, Normal Shipping Rules
  3. Downloads in an order by itself will never see the checkout_shipping page … if you do then your Product is setup wrong for Downloads
  4. If not on a Windows server, meaning Linux/Unix, /pub should be 777 and Redirect should be ON
    If you cannot use Redirect ON, ask your hosting site why they cannot follow the symbolic link between the /download and /pub directories
  5. If on a Windows server, /pub does NOT need to be writable/777 as you do not use this directory; and Redirect is OFF as you cannot use Redirect
  6. Download filenames should not use special characters, spaces and the like
  7. Download files should be Zipped for best results and browser compatibility
  8. Download files should be loaded to the /download directory
  9. On the Admin->Catalog->Attributes Controller you should see a green dot next to the filename of the Download itself

Download delivery methods explained

For downloadable products, there are several ways of delivering downloadable content to your customers, depending on your hosting configuration.

You can find these options in Admin->Configuration->Attribute Settings:

Download by Redirect

Download by Redirect … when set to True … uses the Linux/unix “symlink” feature to create a temporary file “stub” in the /pub folder. Then your customer is directed to that file-stub for their download. This means the customer can only ever access it via that stub, which disappears after their download is over. It hides the “real” location of the file so they can’t just share the download link with their friends and have them steal your downloads for free.
This option only works on Linux hosts. On Windows hosts this option will not work because Windows doesn’t support symlinks, at least not via PHP.
This option requires that the “pub” folder be set to read-write permissions … typically 777 (or 755 on suexec hosts).

Download without Redirect

If Download by Redirect is set to False, then the download link given to the customer is the direct link to the file in your /download folder … meaning they can download as often as they want and share the link with their friends … potentially letting folks steal your downloads.
This option has its security limitations, but works on both Windows and Linux hosts.

Download by Streaming

Download by streaming only works when Download by Redirect is off. Instead of giving the customer a URL to the file, Zen Cart sends the file as a download, in 2KB chunks. This helps with server RAM load as well as completely preventing any download link from ever being shared with your customers.
This option works on both Windows and Linux hosts.
There is one limitation with this method … your server’s PHP configuration for max_execution_time needs to be set to a value large enough for your largest file to complete its download, or at least configured in such a way that Zen Cart is allowed to override it. Zen Cart attempts to set it to unlimited when the download starts, but if your server won’t allow that, it’ll default to the server’s master setting … which is often 30 seconds.

Can a product be listed in more than one category?

Yes. If you haven’t created it yet, set up the product that you want to be listed in two or more categories. Go to the category in which you put that product (Admin > Catalog > Categories/Products) where you will see a row of icons towards the right, one of which is a white “c” in a blue circle. Click on that and you can copy a product to another category.

There are two types of copy: linked or duplicated. In the former case the product shows in both categories but there’s only one instance, so any changes will affect both. In the latter case a new, identical product is created, which can then be changed independently of the original.

Can I set up individual shipping charges per item?

Would like to set up individual shipping charges per item. That is, Item A will cost $25.00 per item to ship and Item B would cost $30.00 per item to ship. How can this be done?

The per-weight shipping module can be used for this.

1. Turn on the Per-Unit (perweightunit) shipping module in Admin->Modules->Shipping

2. Now manually edit *each* product and enter the shipping cost as the product “weight”.
This module uses the product-weight as the shipping rate for this product … ie: it is no longer the weight — it is only the shipping cost.

3. Turn off weight display everywhere, since it is no longer meaningful.
a) Admin->Catalog->Product Types->[select your product type]->Edit Layout->Show weight->false
b) Admin->Configuration->Shipping/Packaging->Display Number of Boxes and Weight Status
c) Admin->Configuration->index listing / all listing / new listing / featured listing … turn off the weight on these

Why can't my customers pay without having a PayPal account?


My store is set up to use PayPal Website Payments Standard to receive payments from customers.
I want to allow my customers to pay via Credit Card without having to create a PayPal account.
However, some customers are not given this option, and are required to create a PayPal account before they can complete a checkout.


  1. PayPal has an “Account Optional” setting in your PayPal account Profile, under Payment Receiving Preferences. Ensure that it is on.
  2. However, note that the PayPal account optional is not available for all locations, some locations (or countries) are required by PayPal to have a PayPal account before making a transaction. In this same regard, if the IP address of the buyer is determined by the system to be at a location where the PayPal account optional is not available, they will be required to create a PayPal account.


  • Note that the PayPal Express Checkout product technically does not allow the option to make payment without having a PayPal account.
  • The PayPal Website Payments Pro product (which you must pay a monthly fee to PayPal to use, and is only available to US and UK merchants) adds the ability to accept Credit Card payments directly on your website without the customer even knowing that they are being processed by PayPal. Contact your PayPal representative for information and to sign up for this service.

What payment gateways does Zen Cart work with?

Zen Cart has gateways built-in for:
– LinkPoint API
– YourPay API
– PayPal Website Payments Standard (IPN)

as well as:
– C.O.D.
– Check/MoneyOrder
– and a basic Credit Card module to collect CC numbers for later processing

Numerous additional gateways are available in the Downloads area. These are submitted by the community-at-large, and are based on varying versions of Zen Cart. Check for compatibility before using. Also check their “requirements” to be sure your webserver can use them, etc.

What does MIXED ON mean?

If you have the Minimum set to 36 … the “MIXED: ON” status message shows.

Mixed ON means that they can “mix” or match Attributes to build the 36 Minimum setting … example:
12 Red 14 Yellow 10 Green

= Minimum restriction of 36

Mixed OFF means that they cannot “mix” the Attributes to build the 36 Minimum setting … example:
36 Red and/or 36 Yellow and/or 36 Green

= Minimum restriction of 36

USPS module is returning an error when I try to checkout

If you are recieving this error:

An error occured with the USPS shipping calculations. If you prefer to use USPS as your shipping method, please contact the store owner.

You need to call or email USPS and have them move your account to the production server.

PCI DSS Compliance Questions Answered

Answers to the most commonly-asked questions pertaining to Payment Card Industry Data Security Standard compliance

DISCLAIMER: The following answers pertain to a webstore built with default Zen Cart code without any customizations, using only built-in features/modules/capabilities, in the default configuration.
Any customizations you do to your store render these statements incomplete and require that you answer these questions yourself.

  • Question 6.2 Is the software and application development process based on an industry best practice and is information security included throughout the software development life cycle (SDLC) process?
  • Question 6.5 Were the guidelines commonly accepted by the security community (such as Open Web Application Security Project group ( taken into account in the development of Web applications?
  • Question 6.6 When authenticating over the Internet, is the application designed to prevent malicious users from trying to determine existing user accounts?
  • Question 6.7 Is sensitive cardholder data stored in cookies secured or encrypted?
    Cookies are not used to store Cardholder data.
  • Question 6.8 Are controls implemented on the server side to prevent SQL injection and other bypassing of client side-input controls?

My shipping is figured wrong, it is too heavy

Any shipping module that uses weight for the calculations also takes into account a built-in Tare weight. The admin configurable Tare adds extra weight to compensate for packaging materials.

To change the Tare point your cursor at the Configuration menu, choose Shipping/Packaging from the menu and change the Tare.

You can set either and/or both a percentage or weight for Tare and Large Package.

Entered as percentage:weight


10% + 1lb = 10:1
0% +3lb = 0:3
5% + 0lbs = 5:0
This way both the Tare for small to medium packages has a flexible option of percentage + weight and the Large Package increase has an option of a percentage + weight.

Can I Use PayPal for more than one store?

Using PayPal on Multiple Sites

You can use a single PayPalâ„¢ account to collect payments from multiple Zen Cartâ„¢ sites simply by following the “In Zen Cartâ„¢” instructions above, for each site. Zen Cartâ„¢ will send override information to PayPalâ„¢ to let them know which store to send its notifications to.

If you use your PayPalâ„¢ account on non-Zen Cartâ„¢ sites or on eBayâ„¢, be sure that you have all “taxes” and “shipping” options disabled in your PayPalâ„¢ profile; otherwise these charges will be added to your Zen Cartâ„¢ orders and cause them to not match, and therefore they won’t be released or added to your orders list.

Things to check if it’s not working

These are the common configuration errors:

1. If it “was” working, but stopped, make sure PayPal’s services are running properly. PayPal Live Server Status
2. Make sure your site is *not* in down-for-maintenance mode.
3. Make sure your site does *not* have password-protection via .htaccess in order to get to the “store” area.
4. Check that the email address you enter for PayPalâ„¢ in Zen Cartâ„¢ admin matches CaSE-SenSItiVE exactly with your PRIMARY email address setting in your PayPalâ„¢ account profile on PayPal’sâ„¢ site.
5. Is your PayPalâ„¢ account “verified” yet?
6. Is your PayPalâ„¢ account a “Business” account? (Business is preferred. Premier can be used in some cases. Personal cannot.)
7. Check with your host that port 80 and 443 are open for bidirectional communication.
8. Try accessing with your browser. If you see PHP errors, those will need to be resolved. If you get a white screen, then the first phase of PayPalâ„¢ contacting your site isn’t encountering errors. This doesn’t mean there aren’t any, it just means the initial most obvious steps are working.
9. There are two communication testing tools available in the support forum. If you are asking for troubleshooting help, please supply the URL to each of these tools after you have installed them on your site, so we can assess the responses they reveal.
10. Turn on debug logging in your PayPalâ„¢ module, and post a link to the zipped log files so they can be analyzed. You’ll need to check to be sure that your /includes/modules/payment/paypal/logs folder is marked read/write (chmod 777). Then use your FTP program to access/view those logs and zip-and-upload them for analysis.
11. Check there is no IP block or firewall to prevent PayPal’sâ„¢ servers from talking to your server (your host should check this, and you should check any blocking you may have done via your control panel. Also check .htaccess for any deny from statements and be sure none of them are addresses related to PayPalâ„¢.
* PayPal IP Address List (these should be in your host’s firewall whitelist)
* (as of February 2008; check the link above for specifics):
* For sandbox testing, also open: ->
* NOTE: There are others worth checking on PayPal’s Go Live Checklist page
12. You may find it helps to Uninstall (“remove”) and Re-Install the payment module in Zen Cartâ„¢ admin.
13. When you use two PayPalâ„¢ accounts to make a simulation, make sure you’re using the right account.
14. Check your PayPalâ„¢ profile settings on
* You need your Instant Payment Notification preferences ON
* Instant Payment Notification URL must be set to the URL of your site’s ipn_main_handler.php (ie: or )
* In Website Payment Preferences, your Return URL should be set to your site’s checkout_process page. (ie:
* It is advisable to have Auto Return set to On.
15. Turn off ALL tax and shipping fees in your PayPalâ„¢ profile. They will cause the purchase price to mismatch when returning to Zen Cartâ„¢.
16. Using your hosting control panel, find the “Error Log” option, and check your server’s errorlog entries to see if any attempts to access your site’s ipn_main_handler.php file are being denied for any reason.
17. If you have a SEFU or SEO contribution installed, try removing it and testing again. Some are not configured to allow PayPal processing.
18. Prior to v1.3.8, the PayPalâ„¢ IPN handler (ipn_main_handler.php) uses its own version of application_top. If you make changes to your application_top.php, be sure to make these same changes (if applicable) in includes/modules/payment/paypal/ipn_application_top.php.

How Does IPN work?

“IPN” = “Instant Payment Notification” … part of PayPal’sâ„¢ renamed “Payments Standard” service.

1. Customer places an order on your site
2. For payment, they are taken to a link on PayPal’sâ„¢ site, where they provide their information and pay for their order.
3. They click a link when finished (or wait 5 seconds) and return to your site.

Meanwhile, between steps 2 and 3 above, PayPal’sâ„¢ server does this:

1. Paypal’sâ„¢ server sends a request to your website…which is waiting and listening for connections from PayPalâ„¢ to the /ipn_main_handler.php page.
2. Your server sits waiting and listening on ports 80 and 443.
3. When your server receives a request, it attempts to validate and be sure that the PayPalâ„¢ data provided matches the order details for which it is intended.
4. If validation passes, the customer’s order is released, and it lets the PayPalâ„¢ server know that you received their confirmation. This handshaking happens bidirectionally on ports 80 or 443, depending on how it was originated.
5. NOTE: PayPal’sâ„¢ server will attempt the IPN notification (hourly) for up to four days if it’s not successful on the first try. In this case your customer’s order will not show up in the Admin until the IPN notification is successful.

How do I setup PayPal for Zen Cart?

PayPalâ„¢ Setup Instructions in a Nutshell

This applies to North American PayPalâ„¢ users (and maybe others too).

  1. Log in.
  2. Click on Profile.
  3. Click on Email.
  4. Write down your primary email address, noting any UppErcAse LettERS (if any). You need to use this exact email address in your Zen Cartâ„¢ settings in the next section below.
  5. Click on Back to Profile Summary.
  6. Click on Instant Payment Notification Preferences.
  7. Click on Edit.
  8. Turn it on (check the box).
  9. Set the URL to:
  10. Click Save.
  11. Click on Website Payment Preferences.
  12. Auto Return for Website Payments – set to on.
    • Provide the Return URL: (for nonSSL sites) or
    • (for sites with their own SSL Certificates) or
    • (for shared SSL)
  13. Other settings in this area can be set based on your preferences. Consult PayPalâ„¢ for their meanings.
    • Payment Data Transfer … If you’re using PDT, make sure you have the same token in Zen Cart as you have in PayPal.
    • Encrypted Website Payments … set this to OFF. Zen Cart does not currently support this option.
    • PayPalâ„¢ Account Optional … if you want to allow customers to pay by credit card and not have to create a PayPalâ„¢ account, set this to ON
  14. Click Save.
  15. If your website’s language is not a Western/European language, go to Language Encoding and set your language.
  16. Turn off ALL tax and shipping settings in your PayPalâ„¢ account. These will cause your transaction amounts to not match Zen Cartâ„¢ amounts, and thus your orders will not be released.
  17. Oh … and … if you’ve never had your PayPalâ„¢ account “verified”, you should follow their steps to do so.


  1. Admin > Paypal.
  2. If this is the first time configuring for PayPalâ„¢ on this site, then you need to click on Install.
  3. Otherwise, click on Edit.
  4. Enter the primary email address of your PayPalâ„¢ account.
  5. Configure any other options as desired.
  6. Note the URL’s suggested in the top of the PayPalâ„¢ module’s instructions – they should match what you have set in your PayPalâ„¢ profile in the steps above for the PayPalâ„¢ site.

How do I set up the AIM payment module?


  • Account (naturally) Click Here to Sign Up for an Account with excellent pricing!
  • cURL is required and MUST be compiled into PHP with SSL support
  • Your Username and Transaction key (generated in your account area)
  • You need to have an SSL certificate active on your site to protect your customers’ sensitive data


You need to generate your username and transaction key:

  1. Log in to your account on the website.
  2. Click on “Account” in the Main Menu Bar.
  3. Click on the “API Login ID and Transaction Key” link under Security settings.
  4. Your username will be shown. Record it.
  5. To generate a new Transaction Key (which is required for new accounts, and also recommended if switching from test mode to production mode), fill in the answer to the security question, and check the box to disable the old key.
  6. Record the new Transaction Key. You’ll need it later in your Zen Cart setup.
  7. You may want to set up an MD5-Hash code for additional security between transactions. THIS IS OPTIONAL:
    1. Click the Settings link in top left of menu bar
    2. Click the MD5-Hash link under Security Settings
    3. Enter a keyword or phrase … up to 20 characters max, and press Submit.
    4. Remember the phrase you used, because you’ll need it in your Zen Cart settings.


  1. Go to the Admin …
  2. Go to Modules …
  3. Go to Payment …
  4. Select AIM and click Install
  5. Enter your Login ID and Transaction Key as recorded earlier
  6. Enter your MD5 Hash, if you have set one up.
  7. Configure the rest of the settings as desired:
    1. Transaction Mode Response — Set this to Production for normal use, or simulate some tests using the Test option (See below for testing instructions). NOTE: This can be set to “Test” or “Production” regardless of whether your account is in Test mode.
    2. Authorization Type – In most cases you will want to do an “Authorize+Capture” to capture payment immediately. In some situations, you may prefer to simply “Authorize” transactions, and then manually use your Merchant Terminal to formally capture the payments (esp if payment amounts may fluctuate between placing the order and shipping it)
    3. Enable Database Storage – If you enable this option, extended details of each transaction will be stored, enabling you to more effectively conduct audits of fraudulent activity or even track/match order information between Zen Cart and your records.
    4. Customer Notifications – If enabled, will email a basic receipt to your customers when activity occurs on their card as a result of anything related to transactions you process for them, including purchases as well as refunds.
    5. Merchant Notifications – If enabled, you will also get the emails mentioned above.
    6. Request CVV Number – If enabled, this will cause the customer to be asked for their 3-or-4 digit number off the back of their card. This is important for card validation, and should usually be enabled.
    7. Sort Order of Display — Any value greater than zero will cause this payment method to appear in the specified sort order on the checkout-payment page
    8. Payment Zone – if you want only customers from a particular zone to be able to use this payment module, select that zone here.
    9. Set Completed Order Status – For Captured and Approved orders, what order-status should be set? Default recommended is “Processing”
    10. Set Refunded Order Status – For transactions that are refunded, this order status setting will be used. Recommended: “Pending”
    11. Debug Mode – If you need to diagnose what details are sent to and received from the gateway, enable this option. Logs will be stored in the /cache folder and numbered in obscurity to prevent snooping.


To test your shop, set your Transaction Mode to “Test” (You DO NOT need to have your actual account in Testing mode … this will simulate a test even against a Production account.).
Run a transaction in your shop.
Once satisfied, set the Transaction Mode to ‘Production’



1. Incorporated with each successful order is a listing of:
* generated Order ID
*Approval Code
*Reference Number
*AVS Response
*Fraud Score
*Response Message

The first 3 values should help you cross reference your orders to the system.
The 4th value AVS (Address Verification System) should help you determine fraud or not

How do I set up the USPS shipping module?

  1. In order to use the Zen Cart USPS module, you need to have a USPS WebTools account, signed up to use their Rate Calculator API.
  2. If you have an account with USPS for using shipping assistance this is not the same as the WebTools user ID needed for the shopping cart
  3. You must have a separate WebTools user ID for each web store.
  4. Here is the link for registering.
  5. You will soon (24-48 government hours) receive e-mail from USPS with your user ID and some generic instructions.
  6. In your Zen Cart admin area, make sure you have a zip code entered at: Admin|Configuration|Shipping/Packaging|Postal Code
  7. In your Zen Cart admin area, go to Admin|Modules|Shipping, and click on the USPS shipping module, click Install, and fill out the various configuration information fields.
  8. Call USPS 1-800-344-7779 (7:00AM to 11:00PM ET) and ask them to take account out of Test…ie: Put into production mode.

EZ-Pages - What are they and how do they work?


EZ-Pages is a fast, easy way of creating links and additional pages.

The additional Pages can be for:

New Pages
Internal Links
External Links
Secure or Non-Secure pages
Same or New Window

In Addition, there is the ability to create “related” links in the format of a Chapter (group) and its TOC (related pages/links).

Link Naming

Links are named by the Page Title. All Links need a Page Title in order to function.

If you forget to add a Page Title, then you will not be able to add the Link.

If you do not assign an Order for the Header, Sidebox or Footer, then the Link will not display even if you have a Page Title.

Link Placement

While you have the option of adding Additional Links to the Header, Footer and Sidebox with EZ-Pages, you are not limited to these three Link locations. Links can be in one or more locations simply by enabling the Order for the Location(s) where the Link should appear..

The Link Location Status for the Header, Footer and Sidebox is controlled simply by setting these to Yes or No for each setting. Then, set the Order in which the Link should appear for each location.

This means that if you were to set Header to Yes 30 and Sidebox to Yes 50 then the link would appear in both the Header and Sidebox in the Order of your Links.

The Order numbering method is up to you. Numbering using 10, 20, 30, etc. will allow you to sort the Links and add additional Links later.

Note: a 0 value for the Order will disable the Link from displaying.

Open in New Window and Secure Pages

With EZ-Pages, each Link can take you to the same, main window for your shop; or, you can have the Link open a brand new New Window. In addition, there is an option for making the Link open as a Secure Page or a Non-Secure Page.

Chapter and TOC

The Chapter and TOC, or Table of Contents, are a unique method of building Multiple Links that interact together.

While these Links still follow the rules of the Header, Footer and Sidebox placement, the difference is that only one of the Links, the Main Link, needs to be displayed anywhere on the site.

If you had, for example, 5 related Links, you could add the first Link as the Main Link by setting its location to the Header, Footer or Sidebox and set its Order, as usual.

Next, you need to assign a Chapter or Group number to the Link. This Chapter holds the related Links together.

Then, set the TOC or Table of Contents setting. This is a secondary Sort Order for within the Chapter.

Again, you can display any of the Links within a Chapter, as well as making any of these Links the Main Link. Whether the Links all show, or just one or more of the Links show, the Chapter is the key to grouping these Links together in the TOC or Previous/Next.

NOTE: While all Links within a Chapter will display together, you can have the different Links display in the Header, Footer or Sidebox on their own. Or, you can have the additional Links only display when the Main Link or one of the Additional Links within the Chapter has been opened.

The versitility of EZ-Pages will make adding new Links and Pages extreamly easy for the beginner as well as the advance user.

NOTE: HTML editors will often add the opening and closing tags for sections like <html>, <head> and <body> to the file you are working on. You may want to remove them, as these are already added to the pages via EZ-Pages.

The numbering of the Chapters can be done in any manner. But, by number in increments such as 10, 20, 30, etc. you can later insert pages, or links, as needed within the existing pages.

There is no limit to the number of pages, or links, that can be grouped together using the Chapter.

The display of the Previous/Next and TOC listing is a setting that can be turned on or off.

External Link URL

External Link URLs are links to outside pages not within your shop. These can be to any valid URL such as:

You need to include the full URL path to any External Link URL. You may also mark these to open in a New Window or the Same Window.

Internal Link URL

Internal Link URLs are links to internal pages within your shop. These can be to any valid URL, but should be written as relative links such as:


The above Link would take you to the Category for categories_id 21

While these links can be the Full URL to an Internal Link, it is best to write as a Relative Link so that if you change domains, are work on a temporary domain or an IP Address, the Link will remain valid if moved to another domain, IP Address, etc.

Internal Links can also open in a New Window or the Same Window or be for Secure or Non-Secure Pages.

EZ-Pages Additional Pages vs Internal Links vs External Links

The Type of Link that you create is based on an order of precidence, where HTML Content will superceed both the Internal Link and the External Link values.

The External Link URL will superceed the Internal Link URL.

If you try to set a combination of HTML Content, Internal Link and/or External Link, the Link will be flagged in the listing with a read icon to alert you to your mistake.


When using Editors such as HTMLarea, if you hit enter in the HTML Content area
will be added. These will be detected as “content” and will override any Internal Link URL or External Link URL.

Admin Only Display

Sometimes, when working on EZ-Pages, you will want to be able to work on a Live Site and see the results of your work, but not allow the Customers to see this until you are done.

There are 3 settings in the Configuration … EZ-Pages Settings for the Header, Footer and Sidebox Status:

Admin Only

The Admin Only setting is controlled by the IP Address(es) set in the Website Maintenance.

This can be very handy when needing to work on a Live Site but not wanting customers to see the work in progress.

How can I make a link to an EZ-Page?

For simple menus made up of EZ-Pages and non-EZ-Pages, the best solution is often to use the internal and external link functions within EZ-Pages to bring all of the links into your EZ-Pages’ menus. However, sometimes this is not sufficient. An example might be if you only wanted the EZ-Page to be shown when certain conditions were met.

To program an EZ-Page link we can make use of the zen_ez_pages_link() function that is built into Zen Cart. This will compile and return the <a> tag with the EZ-pages information. First you will need to know the EZ-Page ID and chapter number of the page to which you want the link to point. You can find this information by going to Admin > Tools > EZ-Pages. You will find the ID in the left hand column and the chapter number in a column over towards the right of the page.

Armed with this information you can now construct a link based on the following code model.

<php echo zen_ez_pages_link(page ID, chapter number, page is SSL [true/false], open new window [true/false], return full url [true/false]); ?>

You must enter a valid page ID as the first parameter. The other parameters are optional and default to 0 for chapter and false for the others. (Hint: Usually you will set the last three parameters to false, false and true respectively.)

How can I vary which sideboxes are shown on each of my EZ-Pages?

To do this you will need to edit the sidebox module for each of the sideboxes whose behavior you wish to change. The exact change will depend upon what exactly you wish to do and whether those sideboxes should appear on other pages. Let’s assume that your objective is to selectively suppress the display of sideboxes on some EZ-Pages.

You can find your sidebox modules in the directory includes/modules/sideboxes/. Towards the bottom of each is a block of code similar to this one
require($template->get_template_dir(‘tpl_order_history.php’,DIR_WS_TEMPLATE, $current_page_base,’sideboxes’). ‘/tpl_order_history.php’);
$title_link = false;
require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,’common’) . ‘/’ . $column_box_default);
You will need to wrap this in a conditional statement such as
if (!isset($ezpage_id) || !in_array($ezpage_id,explode(“,”,’2,5′))) {
require($template->get_template_dir(‘tpl_order_history.php’,DIR_WS_TEMPLATE, $current_page_base,’sideboxes’). ‘/tpl_order_history.php’);
$title_link = false;
require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,’common’) . ‘/’ . $column_box_default);
This condition means that the template to display the sidebox will be called whenever the page is not an EZ-Page or, if it is an EZ-Page, it does not have ID 2 or 5. You can find the IDs of your EZ-Pages by going to Admin > Tools > EZ-Pages where the ID for each page is displayed in the first column.

Finally, and importantly, don’t forget to save your result in an over-ride file

How do I get my money? When a customer buys, how do I get paid?

Collecting payment from customers requires a means for extracting funds from the payment method the customer chooses.

Check/Money Order

If you offer check/money-order, then it’s up to them to send the check, for which you will typically wait before shipping the goods.

Credit Card

Before you can accept credit cards directly you must have a merchant account.

If you offer to let your customers pay by Credit Card, there are a couple ways to do this:

a) Manual processing via a retail/POS terminal or an online virtual terminal.
In this case, you collect the CC details from the customer and then manually process the card through the terminal provided to you by your merchant bank.
Details of this process are explained in the How Do I Use the Basic Credit Card module? FAQ

b) Automated processing via a gateway service.
In this case, your customer enters their credit card information directly onto your website. Your store then takes that information and talks to a credit-card-processing company’s “gateway” to authorize the card/purchase … while the customer waits. If successful, the order is placed, and money is collected from the cardholder’s account, and forwarded to your business bank account according to a prescribed schedule. If it fails, the customer is notified to try again with correct information, thus preventing the use of invalid cards.


merchant account — this is a credit/debit-card “processing” account that you arrange with a clearing house, typically your bank. Its sole purpose is to take the funds collected from credit/debit cards and forward them to the bank account you’ve arranged for that purpose.

gateway — this is a computer-driven processing system that talks to the credit-card clearing house computers in the national banking system and determines whether a card is valid or not, and allows collection of funds via your merchant account configuration

How do I get started?
First, you must realize that Merchant Account, Gateway, and related services are NOT FREE. You will pay for the service.
To get a merchant account relationship established, it is often best to talk with your bank to see what merchant account services they offer in conjunction with the business bank account you already hold with them. Hopefully their services can utilize a gateway module already available within Zen Cart (see Admin->Modules->Payment).
Alternatively, there is a list of Payment-Provider Partners which will give you competitive rates and also support the Zen Cart project at no additional cost to you.
Be sure to research each provider’s offerings to be sure they work with your banking details and meet your business requirements (volume, type of business, which bank, kinds of products sold, company reputation, etc etc etc).
If you are new to merchant services, be sure to talk to a sales rep with a few providers and get educated on what the industry-standard fees, rate structures, services, and capabilities are. The biggest confusion about payment collection is typically just a result of not understanding the payment-collection industry. When in doubt, ask questions. Don’t point fingers until you are sure they shouldn’t be pointed at you <smile>.

PayPal or other Online Banks
If you offer your customers the option to pay with a service that provides online funds services such as PayPal, then your customers will be directed to a page where they can login to that service, select their funding source (online funds or bank account or credit card, etc), and the complete their order. Your money will be transferred from their online account to yours immediately. You can then arrange to have your money sent to your bank account if you have one linked to your online account.

How do I authorize a Credit Card but not actually charge it yet?

After taking the order in Zen Cart I want the Credit Card to be authorised but not charged to the customer until the goods have been shipped. I would anticipate the delay from order to shipping to be about a week. How do I go about this?

This largely depends on your choice of payment gateway, as to whether this option is offered or not. Most true Merchant Gateways offer this, including LinkPoint API and AIM.

It is very common to need to prepare the order, then calculate true shipping costs, and update those costs before finally charging the card. Or at least not charge until the goods are ready to ship.

The process is this:
1. Set the payment module into “Authorize Payment” mode (not “Capture” or “Charge” mode).
2. Prepare the order
3. Calculate true shipping charges.
4. Log in to your Merchant Gateway system. Find the transaction for that customer/order. Update shipping costs if appropriate. Now choose to “Capture” the funds. This charges the card and puts the money in your bank account during the next processing cycle.
5. Ship the goods

How do I change/move my sideboxes?

If you want to turn your sideboxes on and off, or move them left and right, you do this from the Admin control panel in Admin -> Tools -> Layout boxes controller.

The sort order is numerical and negative numbers like -50 which would display on top of 1 can be used.

How do I turn off the listing of categories on my site?

These are called the Category Tabs and can be switched off by setting Admin > Configuration > Layout Settings > “Categories-Tabs Menu ON/OFF” to zero.

How do I turn off the EZ-Pages Header Bar?

There are two ways to turn off the EZ-pages header bar. Firstly, it won’t show if there are no links there, so turning off all link in the header (Admin > Tools > EZ-Pages) would also suppress display of the bar itself.

Even quicker would be to go to Admin > Configuration > EZ-Pages Settings and set the value of “EZ-Pages Display Status – HeaderBar” to zero.

Why am I seeing images for other products on my product pages?


On my product pages, I’m seeing images from other products showing under my product description. Why? How do I change this?


The “additional images” feature is causing this.


You have two options:

a) rename your images so they don’t share a common filename. Right now since you have one product with “abc.jpg” as the name, and another product with “abcde.jpg” as the name, both images will show for the “abc.jpg” product, because “abc” is common to both, and “abc” is the full filename of the main image of one of the products.
This is explained further in the Additional Images FAQ.

b) or turn off all extra-image functionality via Admin->Catalog->Product Types->Product General->Edit Layout->Show Additional Images = 0

Other references: Additional Images

What is minimum values & maximum values in product entry?

When Products are purchased… you can setup a minimum quantity and a maximum quantity as well as the units that they must be ordered in …

  • Minimum – the minimum number that you can buy for the product (Default = 1)
  • Maximum – the Maximum number that you can buy for the product (Default = 0-Unlimited)
  • Units – the increment qty that you must buy the product (Default = 1)

If you make it so that the minimum quantity was 12 but had to be ordered in units of 3, then the allowed quantities would be:

12, 15, 18, 21, etc.

These have nothing to do with product quantity “In Stock”. … Inventory On Hand (Stock) is handled by the “Product Quantity” field elsewhere on the same screen.

What is a "Linked Product"?

A linked product is a product that is set up to display in more than one category.

This means that you only have to edit that product in one place in order to have changes take effect everywhere it is displayed. If you put it on special in one place, it will be on special in the other place/category as well.

Linking also means that you’ll not see the same product appear more than once in a given list of products.

If you make a “copy” of a product, instead of linking it, then you will have two distinct and separate products which would require separate editing if you were to make changes later. Specials would affect one and not the other, unless you applied the Special to both individually. In the case of a copy, you might end up seeing both versions of the product appearing in various product lists.

My Payment Methods aren't showing up during checkout

During checkout, if your payment methods aren’t showing up, go into Admin> Modules> Payment and check:

1. Is the payment module Installed? If not, click the Install button on the right-hand infobox.

2. Is it enabled? Some payment modules allow you to turn them on or off by clicking the Edit button and setting the status to true/false, on/off, etc.

3. Do you have any Zones associated with this payment module? If so, then likely by removing the Zone configuration from the payment module will allow you to use it during checkout.

To properly configure zones with payment modules requires that you create zones to fully match the zones to your customers’ addresses. Always be sure to have at least one payment method WITHOUT any zones added to it, or else there will be customers who cannot go through checkout … and then you’ll lose a sale!

Is there any way to generate a report on my banner advertising?

Banner statistics are tracked on an ongoing basis. When you open the Banner Manager, you can see the last 3 days’ details on-screen.

For more information, under the “Action” column, you see a small white graph symbol. Click on that to view stats for day/month/year.

How do I use my currency instead of US Dollars?

There are two parts to configuring your currency settings. The first is whether you want to accept more than one currency and the second is adding the new currency.

Begin by opening your Admin. Point your cursor at Configuration in the top menu, choose My Store from the drop down. If you are running your shop in a language that is not English and are going to use your native currency, click on the line that says “Switch To Default Language Currency” and change the value to true. If you are going to run the cart in English, but not use US Dollars, make sure that the “Switch To Default Language Currency” is set to false.

To add a new currency, point your cursor at Localization on the menu bar, choose Currencies from the drop down. On the page that comes up click the new currency button. Fill in the information appropriate for your currency and check the box if it is to be the default for your shop. Click the insert button, then after the page refreshes, click the update currencies button.

How do I set up the Zones Shipping Module?

By default, the module comes with support for 3 zones. This can be easily altered with a coding change by editing the Zones Shipping Module file (If you make this change and your Zones module is already installed/active, you’ll need to record your settings, then click Remove, then click Install, and re-enter all your settings. Otherwise your change will have peculiar visual side-effects).

/includes/ modules/ shipping/ zones.php

$this->num_zones = 3;

Next, you will want to activate the module by going to the Admin, point your cursor at Modules, then clicking on Shipping. A list of all shipping modules should appear. Click on Zone Shipping. Click on the install button.

PLEASE NOTE THAT YOU WILL LOSE YOUR CURRENT SHIPPING RATES AND OTHER SETTINGS IF YOU TURN OFF THIS SHIPPING METHOD. Make sure you keep a backup of your shipping settings somewhere at all times.

If you want an additional handling charge applied to orders that use this method, set the Handling Fee field.

Next, you will need to define which countries are in each zone. Determining this might take some time and effort. You should group a set of countries that has similar shipping charges for the same weight. For instance, when shipping from the US, the countries of Japan, Australia, New Zealand, and Singapore have similar shipping rates. As an example, one of my customers is using this set of zones:

1: USA
2: Canada
3: Austria, Belgium, Great Britain, France, Germany, Greenland, Iceland, Ireland, Italy, Norway, Holland/Netherlands, Denmark, Poland, Spain, Sweden, Switzerland, Finland, Portugal, Israel, Greece
4: Japan, Australia, New Zealand, Singapore
5: Taiwan, China, Hong Kong

When you enter these country lists, enter them into the Zone X Countries fields, where “X” is the number of the zone. They should be entered as two character ISO country codes in all capital letters. They should be separated by commas with no spaces or other punctuation. For example:

1: US
2: CA

Now you need to set up the shipping rate tables for each zone. Again, some time and effort will go into setting the appropriate rates. You will define a set of weight ranges and the shipping price for each range. For instance, you might want an order than weighs more than 0 and less than or equal to 3 to cost 5.50 to ship to a certain zone.

This would be defined by this: 3:5.5

You should combine a bunch of these rates together in a comma delimited list and enter them into the “Zone X Shipping Table” fields where “X” is the zone number. For example, this might be used for Zone 1:

1:3.5,2:3.95,3:5.2,4:6.45,5:7.7,6:10.4,7:11.85, 8:13.3,9:14.75,10:16.2,11:17.65,12:19.1,13:20.55,14:22,15:23.45

The above example includes weights over 0 and up to 15. Note that units are not specified in this explanation since they should be specific to your locale.


At this time, it does not deal with weights that are above the highest amount defined. For now, you could have one last very high range with a very high shipping rate to discourage orders of that magnitude.

For instance: 999:1000

If you want to be able to ship to any country in the world, you will need to enter every country code into the Country fields. For most shops, you will not want to enter every country. This is often because of too much fraud from certain places. If a country is not listed, then the module will add a $0.00 shipping charge and will indicate that shipping is not available to that destination.


Lastly, there is a limit of 255 characters on each of the Zone Shipping Tables and Zone Countries. This can be changed in the database to suit your needs.

How do I set up PayPal IPN to return to my store automatically?

Detailed setup instructions can be found here:

In brief, as an answer to just the question mentioned as the title of this article, the following applies:

1. You must have a “Premier” or “Business” PayPal account in order to use the PayPal module for receiving payments.

2. Log into your PayPal account and go to the “Profile” tab.

3. Click on “Website Payments Preferences”

4. Change Auto-Return to “On”

5. Provide return URL: (for nonSSL sites) or (for sites with their own Certs) or

6. Also on the same screen, lower down: PayPal Account Optional – your choice. If you set this to “On”, then people who do not have a PayPal account can still pay via their credit card through the PayPal site, without having to create a PayPal account (although they’ll be encouraged to create one).

Note: The sessions work automatically. Do not change your sessions setting in the Zen Cart Admin.

How do I set up Gift Certificates?

To sell Gift Certificates in your store, you need to create them as specific products (according to special requirements, outlined below):

1. In the Admin, make a new category called Gift Certificates. Add a product to the category called Gift Certificates.
2. On the Product Information Page fill in the blanks as follows:

  • Products Status: In Stock
  • Date Available: leave blank
  • Products Manufacturer: leave blank
  • Products Name: Gift Certificate
  • Product is Free: No
  • Product is Call for Price: No
  • Product Priced by Attributes: Yes No
    This is up to you, if you choose to price by attributes you only need a single ‘product’.
  • Tax Class: choose appropriate
  • Products Price (Net): Your price or zero if pricing by attibutes.
  • Products Price (Gross): figured automatically
  • Virtual Products do not have a shipping charge and do not require a shipping address such a Services, Gift Certificates, etc. Always Free Shipping does not have a shipping charge, but do require a shipping address Downloads are assumed to be Virtual Products – Neither option needs to be marked
  • Product is Virtual: Yes, Skip Shipping
  • Always Free Shipping: No.
  • Products Quantity Box Shows: Yes, Show
  • Product Qty Minimum: leave blank
  • Product Qty Maximum: 0 = Unlimited, 1 = No Qty Boxes or Max ##
  • Product Qty Units: leave blank
  • Product Qty Min/Unit Mix: leave blank
  • Products Description: Your description.
  • Products Quantity: leave blank or put in a large number to track number sold.
    If you are finding that you cannot add a Gift Certificate to your cart while shopping, try adding a quantity here!
  • Products Model: GIFT-xxxxx
  • The model MUST begin with GIFT
  • Products Image: Upload an image
  • Upload to directory: choose directory
  • Products URL: leave blank
  • Products Weight: leave blank

3. Click Preview and then Save it.
4. Now go to Modules->Order Total and click Install to install and/or Edit to configure the ot_gv Gift Certificate module.

After the Administrator has approved the Gift Certificate (There’s a “release” button in admin area if someone buys one), THEN the Gift Certificate funds are made available to the customer.

Upon release/approval, they are sent an email with a redemption code. When they redeem that code either by clicking on the link or by keying in the code on the checkout-payment page (or the gv-redemption screen), then the customer will have GV funds available to them for use in that or future transactions.

The customer can then USE those funds for themselves, OR they can email them to friend(s) via the links provided automatically in the store (esp shopping cart sidebox). They can email as much as they want, to various people, up to the amount they’ve purchased. Whoever they email it to will receive a new redemption code and will follow the same redemption process … and can email the funds again if they wish.

How do I sell Gift Certificates?
1. Create Gift Certificate products as described above
2. Enable the Gift Certificate order-total module, as described above
3. Draw attention to gift certificates on your store, perhaps by creating a home-page graphic with a link to your gift-certificates category. Sometimes people will create a new sidebox just for drawing attention to this sort of thing.
4. When Gift Certificates are purchased, be sure to log into your Admin area and release them if you’ve configured it to queue them rather than auto-release them.

How do I set up Banner Ads?

by Ajeh

You can control your banners in Admin> Tools> Banner Manager.

You will see that you can add delete and edit the banners at will.

To add a new banner, click the “New Banner” button.

To edit an existing one and change its link, its picture, etc, click on the banner you want to change, and click the “Edit” button.

You can enable and disable any particular banner by clicking on the red/green status button.

You might want to set the banner status to off for banners you don’t want to show until you are more familiar with them so you can use them as examples. You are not obligated to show any of the banners distributed with the Zen Cart ZIP.


There are 2 styles of banners.
sidebox and wide banners…..

Sidebox banners are narrower and designed to fit in a sidebox.

Wide Banners are designed to span the width of your page… (the images should be wide, but not too tall).

You can give almost whatever group name you want to a banner. Banners in the same group will be randomly displayed one at a time in the position indicated in Layout Settings (see below).


You control which group of banners is “displayed where” by editing the “Banner Display Groups” position group names under
Admin->Configuration->Layout Settings.

Displaying MORE THAN ONE Banner within a group at a time. The BannersAll group is designed for “1-to-many” static banners.

You can only use 1 Banner Group on this particular sidebox, unlike the other banners where you can have multiple Banner Groups.

I called it BannersAll so it would be easy to remember.

Add your banner(s) just like you normally would and add to the BannersAll Group

If BannersAll is not in your list in the dropdown type it in so it will be for now on.

If you do not have the BannersAll defined for the Layout Settings for the following, do so now:
Banner Display Group – Side Box banner_box_all

If using multiple banners and you would like them to appear in a particular order add the sort order to them.

I number these 10, 20, 30 etc. so that I can easily insert new ones in between without having to renumber them all in the future.

Note: you can have a bazillion Banner Groups defined and put them together in the 8 various banner positions.

It is the BannersAll that is the only exception to this rule.Banner sizes are your choice as well.

There are Internet standard sizes for consistency, but you can make them any size that you want and mix and match the sizes depending on your layout.

How Do I reset the Downloads Counter for a Purchased Product?

“I sell a digital product and a customer misplaced his download. Is there a way to update recent purchase and simply add two or three more downloads?”

Sure … Admin->Customers->Orders … find his order….. Edit it … at the bottom where you can update the Order Status, change it to “Update” and click the Update button. You might want to add some comments in the “Comments” box explaining the update, which will be emailed to them.

Changing to “Update” will re-enable it for the number of days and number of downloads set in Admin->Configuration->Attribute Settings (by default: 7 days, 5 downloads).

How do I show my documents in their own sidebox?

Make your category … like Recipes

Edit the category … Set to product type: Document General

Create your “products”, the recipes.

By restricting the category to Document General your Recipes category will now show in the Document Box and not the categories box.
You can add other restricted product types too, but Document General will make this one show in the Document Box and not the categories box.

How do I enable the "Customers Also Purchased" display?

1. You need to have purchases in your store first … where customers bought “this” product along with “another” product.

2. Set this > 0 — Admin->Configuration->Product Info->Also Purchased Products Columns per Row

3. Set this > 0 — Admin->Configuration->Maximum Values->Also Purchased Products

How do I enable free shipping for orders more than $XX?

Open your Admin, point your cursor at Modules on the top menu, choose Order Total from the dropdown. Then select Shipping from the list. If the module is not installed click the install. After it is installed click edit and configure to allow free shipping.

How do I delete a category?

Open the Admin, point your cursor at Catalog in the top menu. Choose Categories/Products from the drop down menu. On the new page, click the “X” icon (red) on the right side of the page.

From the next page, choose Delete or Cancel.

NOTE: Deleting a top level category will remove the subcategories and products it contains.

How do I configure the taxes (US state sales tax - single rate)?

FIRST, set your store’s zone properly:
Admin > Configuration > My Store > Zone
Choose your country and zone from the lists provided by the edit button.

Here is an example, for setting up taxes for the state of Colorado:

Go to:
Admin > Locations/Taxes > Zones Definitions > Insert

Zone Name: Colorado
Description: Colorado State Sales Tax (or whatever you like)
click on ‘insert’

Click on ‘Details’ after creating a zone
Click on ‘Insert’
Country = United States
Zone = Colorado
Click on ‘insert’

Go to:
Admin > Locations/Taxes > Tax Classes

Click on ‘New Tax Class’
Title = Taxable Goods
Description = Whatever you like
Click on ‘insert’

Go to:
Admin > Locations/Taxes > Tax Rates

Click on ‘New Tax Rate’
Select your zone, ‘Colorado’
Set your tax rate
give it a description, ex: Colorado State Sales Tax
Click on insert

Last, make sure you apply the new tax class that you created (Taxable Goods) to any and all products that you might be charging tax on.

To make this faster when adding new products, in the Admin area, you can select a default Tax Class to be applied to all new products you create, by selecting “Catalog -> Product Types -> (choose a product type) -> Edit Layout -> Default Tax Class

How do I add quantity discounts to my products?

Admin -> Catalog -> Products Price Manager

– Select the product
– Edit
– click the “add 5 blank discounts” button
– fill in the details
– Update

How do I add multiple images to a product?

by: Ajeh – Linda McGrath
A product owns 1 filename …

Note: the base image name is the original image name loaded for the product.

The concept of multiple images is best explained using an example:

From the Admin, you edit a product and specify an image file called:
and put it in the
/images/dvd directory via the drop down.

Now you use your FTP program to upload additional images to /images/dvd


I used the numbers so these would load in order, as the additional images are loaded alpha/numeric.

For the large image (used in popups) I use FTP and upload:


For the medium image (used as the main image on the product_info page) I upload via FTP:


NOTE: There is ONLY ONE ( 1 ) Medium Image used per Product on the Product Info page: (pages named product_info, product_music_info etc.) The naming is related directly to the original image.

Now you do not need to use subdirectories for loading your images.

All images can be loaded to:



You can also change the suffix for Large and Medium from _LRG and _MED to something else or to nothing at all.

I use the suffixes so when looking at 2000 images I can tell what size I am really looking at just from the name. (Very handy for troubleshooting whether the right image is being loaded.)

In a future release, this will be more automated with options for auto-generating the thumb and medium based on dpi, height, width and compression ratio
For now, it uses the same directories that the auto-generated would use, but you do the FTP manually for the different sizes and additional images.
Additional information

Note: the base image name is the original image name loaded for the product.

The suffix of _MED and _LRG is optionally defined but very handy for distinguishing image names from a visual standpoint.
The medium images are kept in the /images/medium directory and the large in the /images/large directory

Additional images can be the base name of the original image plus anything after that. For example:

Original Image: fred.jpg

All of these are considered additional images because they contain the base image name PROVIDED you are in the /images directory:


The advantage of the numbering on the additional images like: _01 _02 _03 is that they will sort in this order when displayed.

These images are places in the same directory as the main image such as /images

The large image match would then go in /images/large or /images/large with the Admin defined suffix added to it of _LRG


However … if using SUBDIRECTORIES such as /images/mystuff then you need the underscore (Â _ ):

Original Image: fred.jpg

All of these are considered additional images because they contain the base image name PROVIDED you are in the /images/mystuff subdirectory or /images/dvd or any other subdirectory of /images:


The advantage of the numbering on the additional images like: _01 _02 _03 is that they will sort in this order when displayed.

These images are places in the same directory as the main image such as /images/mystuff or /images/dvd

The large image match would then go in /images/large/mystuff or /images/large/dvd with the Admin defined suffix added to it of _LRG


While both methods are available with or without the underscore, it is recommended to utilize the underscore to avoid confusion. This also provides more flexibility on the image names. However, if you prefer to do without, both methods are available.

The use of subdirectories help on speed or directory limits, especially on slower servers or servers with limitations.

NOTE: not all files show via your FTP program when you get into the 1000s of filenames within a directory.
Related topics

a. Attribute images can be added to individual attribute options via Admin -> Catalog -> Option Values
b. You can edit the _MED and _LRG defined suffixes in Admin->Configuration->Images

It is wise to NOT use the following symbols in your image filenames:Â +Â [Â Â ]Â $

How do I add attributes to my products?


by Ajeh – Linda McGrath

There are 3 parts to attributes:

  • Option Name
  • Option Value
  • Attribute on the product


Defining Option Names:


Admin -> Catalog -> Option Name Manager



a) Order (This is the sort order the Option Name displays on the screen.)

b) Select an Option Type:

  • Dropdown (note when only 1 option value this will automatically be switched to a Radio Button and later when more than one value it will automatically switch to the dropdown)
  • Radio Button
  • Checkbox
  • TEXT (this does not get an Option Value)
  • FILE (This does not get an Option Value)
  • READONLY (this is for display purposes only and is not part of a calculation nor does it appear on the order. It is more or less an informational attribute that can be used with 1 to many products and then changed once to change on all products.)

On some Option Names, based on the Type … there are more settings if you Edit the Option Name:

For Option Type TEXT:

  • Comments
  • Max Display Size (size of input box on screen)
  • Max Length (max number of characters/spaces)

For Option Type Radio buttons and checkboxes:

  • There are choices of image layout

Defining Option Values

Catalog ... Option Value Manager

a) Pick the Option Name
b) Give a Name like Red
c) Give a default Sort Order

The sort order is used if you want to globably sort your Option Values to match otherwise you can set these manually per product or later update a product, category or whole store.

Attributes Controller

Now … you should have made several Option Names like …

  • Color
  • Size
  • etc.

And then set the Option Values for these like:

  • Red
  • Orange
  • Yellow
  • Green
  • Blue
  • Purple
  • Brown
  • Black
  • White


  • Small
  • Medium
  • Large
  • X-Large
  • X-Small

Using the Default Sort Order on these values will help you later in getting them into a nice display on the pages.

Adding the Attributes to the Products
So now to add them to the products.
This is done via the Attributes Controller

a) Select a Product to add Attributes to
You can look up a product in a couple ways …

– Either pick a Category or a Product
– When you pick a category, the ones with a * have products in them and this will display the first product Previous/Next
– When you pick a product, click display … this sets the category to this product’s master category id … so you can now use the Previous/Next if you like.

b) Add the Attribute Option Name+Value Pairs
Once the Product is displayed that you want to add attributes to … go to the Add Attributes box
– The Product Name should already be selected.

1. Now select the Option Name

2. Next select a matching Option Value, notice they say what kind of Option Type you have selected. ie: Blue [COLOR]
You will notice the Option Values say their names and next to them the Option Name that they match to.

3. Depending on what you want to do with attributes there are several methods to price, add weight, sort order, and mark the type of attribute this is.

Price can be entered with a prefix of + or – or blank.

+ and blank will add the attribute price
– will subtract the attribute price

Weight can be entered optionally if it effects the product weight with a prefix of + or – or blank.

+ and blank will add the attribute weight
– will subtract the attribute weight

There are other pricing options also available besides the standard prices.

  • One Time Charge
  • Price Factor
  • One Time Charge Price Factor
  • Attirbute Qty Price
  • One Time Attribute Qty Price
  • For TEXT
  • Price per word and free words
  • Price per letter and free letters

4. Then there are the Attribute Flags in the colored boxes.
These are used to help distinquish other features of the attribute such as:

  • Use for display only (attribute cannot be selected and added to cart. Good for things like “Select from Below” to force the customer to make their own choice and not just hit Add to Cart and get a pink snail instead of a blue snail.
  • Attribute is Free when product is Free (Some products you may set to Free … but the some attributes are free and some attributes cost money.)
  • Default Attribute (Should be used especially on Radio buttons, or if you have an attribute you prefer the customer selects.)
  • Apply Discounts used by Product Sale/Special (this will apply the same type of discount that the product is getting from the products_price vs the special or sale price.)
  • Include in Base Price (when products are priced by attributes mark the attributes include in base price then the lowest price in each Option Name group are added together to make up the product price. NOTE: when not the product is not marked priced by attribute this setting has no effect on the price.)
  • Attribute Required for TEXT (Some text is required text and cannot be left blank by the customer.)

5. If this attribute is a downloadable file, enter the filename.

6. Be sure to click Add to add the newly-defined Attribute.
You can always edit or delete them after adding.

When done … you can update the sort orders for the product to the Option Value sort order by pressing the button at the top of the page.

Downloadable Products

Note: if you plan on using downloads, be sure you have configured your Attribute Settings for the files. See Admin -> Configuration -> Attribute Settings.

Follow this link: to an FAQ on configuring downloadable attributes.

How do I add a category, subcategory or product?

Creating a category

Login to your admin panel, point your cursor at Catalog in the top menu. Choose Categories/Products from the drop down menu.

On the next page click the new category button.

On the next page fill in:

enter the Category Name
categories description
upload an image if desired
enter the sort order
click the save button

Note: A category can hold sub-categories or products, but not both at the same level.

Creating a product

Login to your admin panel, point your cursor at Catalog in the top menu. Choose Categories/Products from the drop down menu.

Click the folder icon for the category you wish to add to.

On the next page click the new product button.

Fill in the information on this page and click the preview button

On the next screen click the insert button

You now have a category with a product

Creating a subcategory

Login to your admin panel, point your cursor at Catalog in the top menu. Choose Categories/Products from the drop down menu.

Click the folder icon for the category you wish to add to.

On the next page click the new category button.

On the next page fill in:

enter the Category Name
categories description
upload an image if desired
enter the sort order
click the save button

Note: Subcategories can hold sub-subcategories or products, but not both at the same level.

Can I skip the shipping selection page when shipping is free?

Set all products as free shipping in by editing each one and setting the button in the middle of the product-info/edit screen.

Then enable the free shipping module..
This will allow shipping to totally bypass the shipping page.

How can I erase or change those arrows in my category menu?

You can control those settings here:

Admin->Configuration->Layout Settings
– Categories Separator between the Category Name and Count
– Categories Separator between the Category Name and Sub Categories
– Categories Count Prefix
– Categories Count Suffix

How do I show the Categories on the main page?

Open your Admin.

Point your cursor at the Configuration menu, choose Layout Settings from the dropdown.

Find Categories – Always Show on Main Page, click edit and enable the feature.

How do I disable the category/inventory counts in my menu?

Open your Admin. Put your cursor over the Configuration in the top menu, choose My Store. Locate the “Show Category Counts” option. Turn it off.

Can I turn off the weight, inventory count, manufacturer, etc.?

Yes, you can.

Open your Admin.

Put the cursor over Catalog on the top menu.

Choose Product Types from the dropdown.

Choose Products General (or the product type you are customizing).

Click Edit Layout and turn off any settings you do not want to display on the store pages.

What is the difference between Salemaker and Specials?

Salemaker is used to create a policy for reducing prices and then applying it to a group of (or all) products. You would use this to set up your 20% off January Sale for example.

Specials allow you to target price reductions at individual products. You might use this to reduce the prices of end-of-line products, while not touching the prices of new stock that you’re bringing in to replace them.

What do the numbers in the admin "Counter History xx" Mean?

The counter counts two things:

Session count is the number of 1st hits to your site based on unique browser sessions … more or less this is 1st visit of the day

NOTE: this does not distinquish between someone coming to your site at 9:00am and then returning with a new session at 3:00pm on the same day

The Total is the number of pages viewed … this counts how many pages does the customer actually go to during that session …

The database actually contains all the days of the year, unless you delete them manually …

The display on the Admin Home page will be for the last 10 days … it will roll over by itself as the site is used

Can I use an editor like Dreamweaver to work with Zen Cart?

Yes and No. The pages displayed in your browser are made up of XHTML styled by CSS. XHTML is static and easy for WYSIWYG editors such as Dreamweaver in Design View to interpret and display.

However, Zen Cart uses PHP scripts to generate XHTML. Dreamweaver can’t interpret this as it doesn’t have a PHP engine to drive the scripts, so in Design View it just shows you yellow boxes where the PHP scripts are located (it works the same way with the other scripting languages that it supports).

So to see your site you need a PHP scripting engine. Your remote server will has one, and you can install them on your local PC too (Google XAMPP, WAMP and MAMP), to enable XHTML to be generated and sent to your browser. A very common way of working is to have two windows open, a text editor (such as Dreamweaver Code View) and a browser window. You make changes in your editor, upload them and refresh your browser window. With Dreamweaver this can be exceptionally quick. Just set your preferences so that clicking the upload button does an auto save. Then each time you make a change, click upload then refresh in your browser to see instantly the impact of your changes.

That browser is usually Firefox. Firefox has some very neat extensions for helping developers. The web developer toolbar has long been popular, but for many is being superceded by the Firebug extension (though both have unique facilities). Amongst other things, Firebug allows you to click on an object in your browser and see what XHTML generates it and what CSS styles are attached to it. You can even experiment with editing them there to see what effect the changes will have, before returning to your text editor window to commit the ones that work for you.

However, you may still choose to use a WYSIWYG editor to create chunks of HTML that you can cut and paste into Zen Cart. Your define pages (such as the block that appears at the top of your center column on your home page), your EZ-Pages and HTML banners, can all be created this way.

How do I speed up my site?

Here are some suggestions, assuming you’re running the latest-released version of Zen Cart:

1. Turn off Category Counts:
a. Admin->Config->My Store->Show Category Counts=false
b. Admin->Config->My Store->Show Category Counts-Admin = false
(this is for admin-area only when editing catalog)

2. Enable gzip compression (Your account must first be configured for gzip)
Admin->Config->gzip Compression->Enable gzip Compression = 1

3. Disable the Manufacturers sidebox
Admin->Tools->Layout Boxes Controller
– find the sideboxes/manufacturers.php entry, and turn it “OFF”

4. Ensure your images are optimized for your site… specifically, use small images for thumbnails, slightly larger for product pages (“_MED” images), and large detailed images for “click to enlarge” (“_LRG”) images.

How do customers use PayPal to pay with their Credit Card?

When customers transfer from your site to the PayPal website, they are presented with a screen showing some of the details of their purchase.
They are also given some fields in which to enter their PayPal username and password if they wish to pay using their PayPal funds.

Underneath the PayPal username/password fields is a text link to click: “Don’t have a PayPal account? Click here” … which takes them to a screen where they can fill in their details and use a Credit Card to pay. (They can still log in to their PayPal account from that screen too.)Â They are not required to create a PayPal account.

One of PayPal’s quirks is that they can only use an address and credit card from the same country as what they used in Zen Cart when they created their account. This is usually not a problem.

Additional information on limitations imposed by PayPal regarding payment without an account can be found here.

Can a customer use 2 gift certificates at a time?

A customer can enter as many Gift Certificates as they want on the checkout_payment page or gift-certificate redemption page, and then apply what ever portion of their Gift Certificate Balance to the order …

NOTE: Gift Certificates can also be claimed by using the link provided in the email and logging in to claim the Gift Certificate to add it to their available balance. And then they are free to apply the amount to use against any future order during checkout on the checkout_payment …

What determines if a product is New?

There are settings in in Admin->Configuration->Maximum Values to determine “what” New Product means … Editing this setting to limit the new products display to a more reasonable time frame will help reduce removed products from being broken links.

New Product Listing – Limited to …
Limit the New Product Listing to
0= All Products
1= Current Month
7= 7 Days
14= 14 Days
30= 30 Days
60= 60 Days
90= 90 Days
120= 120 Days

How do I change the New Products or Featured Display Options?

There is a “New Products for [insert month]” section on several pages, including Home Page, New-Products page, All-Products Page, (empty)Shopping Cart page, etc. These sections are called “centerboxes“.

There are several “sets” of settings for the Centerboxes.

When you go to Admin->Configuration->Index Listing, you will see options like:

  • Show New Products on Main Page
  • Show Featured Products on Main Page
  • Show Special Products on Main Page
  • Show Upcoming Products on Main Page

– Note: the values you set are the Sort Order of the Centerboxes …
– Turn OFF by setting to 0 all of the ones you do NOT want to see displayed …

The same is true on New Listing / Featured Listing / All Listing / Index Listing

How can I find out Zen Cart , PHP or MySQL Versions?

To find out what version of Zen Cart or PHP or MySQL you are currently using, you can simply go to Admin->Tools->Server Info

On that screen you will see a lot of detail about your server configuration. Your Zen Cart version will be shown, as well as your server’s PHP version, MySQL version, various database statistics, PHP configuration details, and more.

You can also see your database-upgrade history.

How can I Change or Get my Lost Admin Password?

1. If you can log in to your Zen Cart admin using another account, please do so, and reset/modify the other admin password as needed via Admin->Tools->Admin Settings

2. If you can’t remember your admin account or password, there’s still hope.

The first thing you can try is to click the “Resend Password” button and enter the admin email address.

If for some reason that doesn’t work for you, you can create a temporary admin account in order to log in.

Open your phpMyAdmin (supplied by your hosting company), click the “SQL” tab and run this query:

DELETE FROM admin WHERE admin_name = ‘Admin’;
INSERT INTO admin (admin_name, admin_email, admin_pass, admin_level)
VALUES (‘Admin’, ‘admin@localhost’, ‘351683ea4e19efe34874b501fdbf9792:9b’, 1);

If you are using a prefix for your database tables, you’ll naturally need to add that prefix to the table name above.
ie. “… FROM/INTO prefix_admin …”.

You should now be able to login using the following details:

Username: Admin
Password: admin

Be sure to use proper case. ie. ‘Admin’ for username, not ‘admin’.

After you log in, remember to delete this temporary admin account and create a new one from Admin->Tools->Admin Settings

What do you mean by Zen Cart Hosting?

Your Zen Cart Software has some very specific hosting environment needs.

We want your Zen Cart to function with all the power and functionality it was intended… In order to deliver a fully functional Zen Cart, we offer Zen Cart specific hosting for shop owners. Please view our Zen Cart Hosting Plans and contact us with any additional questions or concerns you may have.

Hosting Tutorials & FAQ

Setting Up an FTP Connection

Our servers are set to not allow any clear text logins, this includes FTP. The following tutorial will help you setup an FTP connection using the TLS security protocol. There are many free FTP client software programs, but we recommend CORE.

Core Settings

Protocol: AUTH TLS
HOST: here you can use, or your account’s IP
USER: Logging in with the root cPanel credentials for your account is still permitted, however not recommended. We suggest you set up users with their own FTP account. Here is a tutorial to do so ( Once complete the user will login with as the user.
Password: Set
Port: 21



CyberDuck Settings


Special thanks to Chris at Cops protective services for the screenshot!

FileZilla Settings


Special thanks to Romy at Elephat for the screenshot!

If you are using other software you will be looking for a protocol for a SSL/TLS secured connection. They will be referred to as many different names such as AUTH TLS, TLS, FTPS, FTPES or SSL/TLS. However, you will not be using SSH or SFTP.

  • ***NOTE: CORE may not work for you under a TLS connection if the cyphers on your computer are not correctly setup.
  • Note we also have come to understand that older operating systems, such as Windows XP haven’t the necessary RSA encryption to handle a TLS connection.

How to Set Up a CRON Job in cPanel

CRON Jobs Detailed cPanel Tutorial

You will find your CRON manager icon in the very bottom utility box (Advanced) in your cPanel main dashboard screen.


Once you click the CRON jobs icon you are taken to the CRON selection screen. In this screen you will choose the means to manage CRON based on your level of experience. New users will select “standard”.

In this screen you will actually setup your new CRON.


The first field, “Command to run” will likely be as above or even an http:// address within your website. This is the actual function you wish to schedule the execution for.

The other fields are to schedule the timing of the CRON. Minutes means, how many minutes apart to run the CRON for example. If you are setting a weekly CRON for example you would need only to select the Day and time as the minutes become unnecessary.

Try to run your CRON at a time when you website is less busy for optimum performance. Additionally note, that PRO-Webs and most other hosting companies will not allow you to run a CRON job in shorter than 10 minute intervals.

CRON jobs are an easy way to configure scripts and functions to run without human intervention, but keeping a close eye on your CRONs and their timing is crucial for the seamless running of your website as well.

How do I create an FTP account in cPanel?

It very important to use proper FTP accounts for various vendor and employees for your website. Creating an account for each allows you to control their access and log their usage as well.

1. To get started login to your PRO-Webs hosting cPanel

2. In the 3rd box down called “Files”, select the FTP icon.


3. Once in the FTP manager, you will see the following options to create and FTP account.


4. You have several options to create accounts.

  • Username: You will enter a unique username. Once finished the login will be to use FTP.
  • Password: Use a strong 10 character or more alpha numeric password. This will be the user’s password to login with.
  • Directory: This is where you can allow full access or limit the user to a specific directory. Full access (including outside of the root) will be blank, Just account http or public html access will be public_html/. Additionally, you can limit the user to a specific folder such as public_html/data/
  • Quota: this is the amount of transfer you wish to allow the user for FTP.

5. Once you have filled everything in, click the create account button. The user will login to FTP using the following information.



Password: the exact one you setup

Using phpMyAdmin for SQL Dumps & Backups

This tutorial will teach you how to use phpMyAdmin to create SQL dumps and backups of your databases.


1. Login in to your hosting control panel and locate the phpMyAdmin icon within the cPanel. (It will generally open a new window, so your pop up blocker may grab it. Use the control button when clicking to allow the pop up.

2. Select the correct database using the left hand menu and click the link of the database you wish to dump or backup.

3. Along the top of the right hand side you will see tabbed menu selections like below, you will choose export.


4. Once in the export screen you have many selections, we will address each one below.

  • On the left side of the export screen you can select individual tables or all to export.
  • Also on the left side you have options for the export format, in this case it will be SQL and is likely checked by default for you.
  • On the right of the export screen under options you will first see custom commenting, Enclose export in a transaction and Disable foreign key checks. We will not be using these and they should remain blank.
  • The next box down is structure, in this box you will check the following options:
  3. Add AUTO_INCREMENT value
  4. Enclose table and field names with backquotes
  • We will not be checking the option Creation/Update/Check dates, under Add into comments.
  • In the last right hand box labeled data we will be checking the following options only:
  1. Complete inserts
  2. Extended inserts
  3. Maximal length of created query field should be 50000
  4. Use hexadecimal for BLOB
  5. Lastly, the Export type dropdown will be set to Insert.
  • The large field below labeled Save as file will be checked to export this as a file and not in your browser window. Compressions is only necessary for very large databases.
  • All of this completed, just click the go button and your dump/backup will begin assembling for you.
  • After its done you will have the opportunity to save the file. Please safe this to a secure location and NEVER place SQL files in your website file directories, as they are very vulnerable.

To use this for backing up when you haven’t another utility to backup your database is a great idea. If you should need to restore you backup simply load the database as described above and select the import tab instead of export, browse to your SQL dump file and hit GO.

How do I backup my site & databases in cPanel?

  1. From your main cPanel account dash, under the FILES heading, select Backups.
  2. Click on “Download a Full Website Backup”.
  3. Any existing backups from previous use, unless removed will be here. To download one, simply click on it.
  4. To generate a new one, click “Generate Backup” leaving the settings as default.
  5. Once generated, click the backup to download it.

Downloading Other Backups

From the main Backup screen you have the option to download the most recent system backups for partials, MySQL databases, email forwarders and email filters… Just as above, simply click on the link to download. WARNING!! These backups are not up to the minute current, they are the most recent system backup and should not be trusted for very important backups as they can be up to 24 hours old.

Additionally, NEVER, use the restore function in your cPanel, contact us and we will do a restore from the root system instead. The account level restore function does not work as you expect and you can restore, and overwrite, your current databases, files and settings with a very dated copy.

cPanel Google Aps Setup Tutorial

In your cPanel there is a setup to enable Google Aps. This step by step process is there to help you get started with Google Aps for Business. This tutorial has information to set it up manually and configure web mail, privileges and mail clients.

Step 1 is to sign up for the FREE trial.

Step 2 is to follow the setup guide. There are a couple of things you will need to do that you may need help with. We will now detail those.

Setup Guide Tasks

First you will be asked to verify your domain ownership. This is most easily done by uploading the html file to your hosted account.

  • Download the .html gile to your desktop. DO NOT OPEN, NOR EDIT/CHANGE this file in any way.
  • Next login to your cPanel and Go to the file manager.
  • Make the selections shown in the following image


  • Once inside of the file manager you need to verify that your are in /public_html/.
  • On the top menu bar click the “Upload” icon.


  • Select the Google html file from your desktop. You will see the progress indicator in the lower right hand corner.
  • Once the upload is complete, close the file manager, but not your cPanel.
  • The next tougher task is to change your MX entries. This is also done in your cPanel.


  • Once in the MX editor, delete the entry for your domain. NOTE: this will temporarily stop your mail, but is necessary to switch. Usually it is less than a day, do it on a weekend perhaps.
  • In the MX editor you will add several (all) of the new MX entries provided to you by Google. Note that the entries provided have a period following them, do not copy the period only the entry ASPMX.L.GOOGLE.COM for example.


  • Once the DNS for the MX changes is complete there is 1 more thing you will want to do…. Create a CNAME for a nice easy link to get to your mail. (
  • You will add the extension you want to the form, commonly mail.


  • Next you will be asked to setup the CNAME on your hosting. Open your cPanel.


  • In the CNAME form you will add mail (our example) in the name field.
  • Next you will add in the CNAME field and click “Add CNAME Record”.
  • This will take several hours before your custom link ( will work.



That’s it! You did it!

Here are some excellent tutorials for using Google Aps to it potential for your business.

Is there a cPanel hosting manual?

Yes certainly, a free manual for cPanel is available at

Additionally, if you have a clustered account or are a reseller the WHM free manual is also handy

What is an Addon Domain?

Addon Domains are handled exactly like subdomains as far as the server is concerned, but to the web they are separate domains.

Addon Domains do not have their own cPanel; You can still create email accounts, redirects, Fantastico installs, subdomains, etc. and even manage databases in phpMyAdmin.

Every addon domain is also a subdomain. You may actually load your addon domain in one of three ways:

* (As an Addon Domain Name)
* (As a Subdomain Name)
* (As a subfolder)
We suggest that you correctly redirect others to the correct canonical url for your website to avoid duplication.

To your visitors, the Addon Domain appears to have its own hosting just like any other website. Note that an addon domain can NEVER have a dedicated IP as it resides within the hosted domain’s account. If you decide you need a dedicate IP later, we can move your site to a full account for a small fee. Just contact us and we can quote this upfront for you. 330-871.HELP (4357)

Creating an addon domain is very simple….

Note: You may not be able to create a new Addon Domain if you do not own the domain name or if your DNS hasn’t propagated yet. Additionally, you hosting package may not include addon domains, in which case you would need to upgrade.

Login to your hosting control panel and click the Addon Domains icon, under the Domains heading. There are three fields cPanel asks for when creating an Addon Domain for your hosting account.

  1. New Domain Name: Enter the new, but do not put http or www in the name field.
  2. Username/directory/subdomain Name: This will be the folder/directory cPanel creates in your public_html folder. Normally, you want to ensure the name you provide doesn’t already exist as a folder in your account, but cPanel will automatically suggest the name and we recommend you use the suggested folder name.
  3. Password: Fill in any password you want here 80% strong or better. This password is used also for an FTP account which is automatically created by cPanel. Passwords must be alpha numeric with at least one character for all hosting accounts… addon or otherwise.

Your new domain is now successfully added. You can upload the site files to the specific addon folder which was created in the public_html folder, all of this addon domains files will go in the new directory/folder..

How to remove an Addon Domain.

If you have an Addon Domain set up and would like delete or remove it, please do the following:

1. Login to your hosting control panel and click Addon Domains.
2. At the bottom, under Actions, click Remove for the specific addon domain.

Using SPF & Domain Keys for Email Security

Created in 2003 SPF is an acronym for Sender Policy Framework, which is an attempt to control forged emails. SPF is not directly about stopping spam, but rather about giving domain owners a way to say which DNS email sources are legitimate for their domain and which ones aren’t.

DomainKeys is an email authentication system that allows for incoming mail to be checked against the server it was sent from to verify that the email has not been modified. This ensures that messages are actually coming from the listed sender (domain) and allows abusive messages to be tracked with more effectively.

How to Set Up your Email Authentication

1. Login to your PRO-Webs hosting control panel.

email-authentification2. In the “Mail” section locate the “Email Authentication” icon

3. Once inside the Email Authentication screen you will see the Domain Keys and SPF settings.

4. To enable your Domain Keys, simply click enable.

5. To enable your SPF record in its basic settings, click enable.

Additional Advanced SPF Options Include:

Additional Hosts that send mail for your domains (A): All the hosts you specify here will be approved for sending mail. You do not need to specify your primary mail exchanger or any server that an mx has been created for as they are already included automatically.

Additional MX servers for your domains (MX): All the mx entries for every domain you specify here will be approved for sending mail.

Additional Ip blocks for your domains (IP4): All the ip blocks you specify here will be approved for sending mail. Blocks should be specified in CIDR format (ie The main server interface ip cannot be removed from this list if it is present.

Include List (INCLUDE): The SPF settings for all hosts your specify in this list will be included with your SPF settings. This is useful if you will be sending mail though another service (ex.,, etc).

All Entry (ALL): If you are sure you have entered all hosts (your primary mail exchanger and any other mx entries are automatically included) that will send mail for your domain, check this box to exclude all other domains.

Overwrite Existing Entries: Check yes to overwrite.

Save Your Changes: Click Update.

Most customers will only have any use for steps 1-5 and you are not advised to make advanced changes without adequate DNS and email knowledge.

Changing Your Domain MX Record in cPanel

How to modify your MX record for your domain mail from one mail server to another in cPanel. MX record, is a short term for mail exchange record. The MX Record is an DNS entry in a domain name database that identifies the mail server that is assigned for handling e-mail for that domain name.

You can have one server handle your website and another handle your email, such as Cpanel for the site and a Google Aps for email if you like. You can assign multiple MX records so mail can go to more than one server and order them in priority by number, the lowest number will receive mail first but more on that later or simply as a failsafe if more than one MX is availiable for use… Like a backup MX.

Step 1

mx-iconLogin to your PRO-Webs cPanel and locate the divided “Mail” section. In the Mail section you will find an icon which looks like this.

NOTE: If you do not have this icon, then this priveledge is not part of your hosting agreement and you will need to request an upgrade to change your MX.

Step 2

Click the MX icon to display the MX Entry Maintenance Screen as seen below


Notice that this one is already set up for Google Aps.

  • Make sure the domain dropdown is correctly set for the domain you wish to edit.
  • Set the correct priority as needed in the priority field.
  • In the box following the to: you will add the new MX record, make sure it is followed by a period.
  • For Google Aps and most other applications you will leave the “Always accept mail locally even if the primary mx does not point to this server. ” unchecked.
  • Click “Change” to submit.

Repeat this step for additional MX records.

Step 3

You will need to delete your local MX from the list and make certain that the “Always Accept” colum is displaying “No”.

These changes will take up to 24 hours to propagate.

What is an IP address?

All computers across the Internet are assigned a unique identifier string referred to as an IP (Internet Protocol) address. They are used like street addresses or phone numbers, so that other computers can find them. A standard IP address would like this: 111.222.333.444.

What is a "Custom Nameserver"?

A custom nameserver is the ability for the program delivering the DNS to provide a custom nameserver vs. the standard hosting company’s nameservers.


We have custom nameservers available on many of our hosting packages.

How long does it take to change over my hosting?

The full DNS propagation of a domain to it’s new IP address and nameservers can take up to 72 hours. Ideally, you will leave your old hosting “live” until the DNS fully propagates, so that “most” of the time during propagation one site or the other will display…Keeping any downtime far reduced.

New domains generally take a shorter period of time.

Can you move my site for me?

Yes, in most cases we are happy to move your site in it’s current configuration to our servers. Just send us an email about your request and needs.

What is WhoIs?

WhoIs is the database of domain registrations. Most domains have a publicly available WhoIs record. Some international domain’s information is not displayed within the database.

There are many tools to search the WhoIs database, Sam Spade ( is a very easy and effective search tool.

What is a sub domain?

A sub domain is an extension of the main domain. Many engines treat them like “a different site”, Google has gotten away from this and will treat it just like a directory in many cases. Sub domains are best used to host content that is not related to your main site’s theme.

This is what a sub domain looks like:

And a directory/folder like this:

What is a Domain alias?

A domain alias is the “other” domain extensions of the same domain text name. Such as and

It is generally a good idea to acquire your domain aliases to stop others from leeching or squatting on your name and traffic.

What is an email forwarder?

Email forwarders optionally forward a cPanel account’s mail to another address. This video ( has step by step instructions for the use of email forwarding.

What is an autoresponder?

An autoresponder delivers a specific response to incoming emails, by issuing an email back to the sender. This video ( can help you set up autoresponders.

How do I redirect sites/page to another?

cPanel has a built in Apache based utility to redirect a page, directory, or site to another. This video ( will step you though the process of setting up a redirect.

How do I park a domain in my account?

The video tutorial ( to park domains within your account is here. Parking a domain means a you have not identified an IP address of the servers that will host this website and wish to reserve the name for later use. The parked domain uses the main account’s nameservers. Not all accounts have the ability to park domains, if you need this upgrade or additional parking slots added just contact us for an upgrade.

How do I edit my cPanel contact information?

This video ( will demonstrate how to edit the contact information within your cPanel account. Please note you are required to update your PRO-Webs account with any changed information as well.

How do I create email accounts?

This cPanel video ( provides step by step instructions for managing the email utility within your cPanel. If you require additional email address accounts, please contact us for an upgrade.

How do I create a subdomain?

This video tutorial ( will help you set up a subdomain within your cPanel account. A subdomain is a separate address under your domain. Subdomains are generally unnecessary, unless you are creating content that is not easy related to the theme of your main domain.

How do I create a MySQL database?

This video ( will step you through creating a new MySQL database and configuring users and permissions. If you are in need of additional databases within your account, just contact us for an upgrade.

How do I change my cPanel password?

Login to your cPanel using your current password. In the Top Section (Preferences) click change password. If you do not recall the “old” password, then please submit a ticket via the helpdesk and we will reset your password.

Please note that we will at our discretion ask for verification information and that the password can ONLY be emailed to the hosting account email address on file.

How do I add a domain to my hosting account?

When you host another domain within your main domain’s account it is referred to as an add on domain. This domain will carry the same IP address as the main domain for that cPanel account. This video ( will step you through the process of creating an add-on domain.
Please contact us for an upgrade if you need add-on domains enabled, or you need additional add on domains for your hosting account.

Creating new and limited FTP accounts

Many times a web professional will require FTP access to your website to complete tasks and services for you. It is highly recommended that you create any vendor a individual FTP account. In this video ( you can see how that is done, and how to limit their access to the specifc area they are servicing.

Remember to delete the vendor’s FTP account after the task has been completed… You can always make them a new one should they require access once again.

If you need more FTP accounts, please contact us about an upgrade for your hosting.

What do I do if I've been hacked?

Written by Nathan Johns, Google Search Quality Team

All right, you got hacked. It happens to many webmasters, even despite the hard work you devote to prevent this type of thing from happening. Prevention tips include keeping your site updated with the latest software and patches, creating an account with Google Webmaster Tools to see what’s being indexed, keeping tabs on your log files to make sure nothing fishy’s going on, etc. (There’s more information in the Quick Security Checklist we posted last year.)

Remember that you’re not alone—hacked sites are becoming increasingly common. Getting hacked can result in your site being infected with badware (more specifically malware, one type of badware). Take a look at StopBadware‘s recently released report on Trends in Badware 2007 for a comprehensive analysis of threats and trends over the previous year. Check out this post on the Google Online Security Blog which highlights the increasing number of search results containing a URL labeled as harmful. For even more in-depth technical reports on the analysis of web-based malware, see The Ghost in the Browser (pdf) and this technical report (pdf) on drive-by downloads. Read these, and you’ll have a much better understanding of the scope of the problem. They also include some real examples for different types of malware.

The first step in any case should be to contact your hosting provider, if you have one. Often times they can handle most of the technical heavy lifting for you. Lots of webmasters use shared hosting, which can make it difficult to do some of the things listed below. Certain tips labeled with an asterisk (*) are cases in which webmasters using shared hosting will most likely require assistance from their hosting provider. In the case that you do have full control over your server, we recommend covering these four bases:

Getting your site off-line

  • Take your site off-line temporarily, at least until you know you’ve fixed things.*
  • If you can’t take it off-line, return a 503 status code to prevent it from being crawled.
  • In the Webmaster Tools, use the URL removal tool to remove any hacked pages or URLs from search results that may have been added. This will prevent the hacked pages from being served to users.

Damage Assessment

  • It’s a good idea to figure out exactly what the hacker was after.
    • Were they looking for sensitive information?
    • Did they want to gain control of your site for other purposes?
  • Look for any modified or uploaded files on your web server.
  • Check your server logs for any suspicious activity, such as failed login attempts, command history (especially as root), unknown user accounts, etc.
  • Determine the scope of the problem—do you have other sites that may be affected?


  • The absolute best thing to do here is a complete reinstall of the OS from a trusted source. It’s the only way to be completely sure you’ve removed everything the hacker may have done.*
  • After a fresh re-installation, use the latest backup you have to restore your site. Don’t forget to make sure the backup is clean and free of hacked content too.*
  • Patch any software packages to the latest version. This includes things such as weblog platforms, content management systems, or any other type of third-party software installed.
  • Change your passwords –

Restoring your online presence

  • Get your system back online.
  • If you’re a Webmaster Tools user, sign in to your account
    • If your site was flagged as having malware, request a review to determine whether your site is clean
    • If you used the URL removal tool on URLs which you do want in the index, request that Webmaster Tools re-include your content by revoking the removal.
  • Keep an eye on things, as the hacker may try to return.

Answers to other questions you may be asking:

Q: Is it better to take my site off-line or use robots.txt to prevent it from being crawled?
A: Taking it off-line is a better way to go; this prevents any malware or badware from being served to users, and prevents hackers from further abusing the system.

Q: Once I’ve fixed my site, what’s the fastest way to get re-crawled?
A: The best way, regardless of whether or not your site got hacked, is to follow the Webmaster Help Center guidelines.

Q: I’ve cleaned it up, but will Google penalize me if the hacker linked to any bad neighborhoods?
A: We’ll try not to. We’re pretty good at making sure good sites don’t get penalized by actions of hackers and spammers. To be safe, completely remove any links the hackers may have added.

Q: What if this happened on my home machine?
A: All of the above still applies. You’ll want to take extra care to clean it up; if you don’t, it’s likely the same thing will happen again. A complete re-install of the OS is ideal.

Additional resources you may find helpful:

SEO Tutorials & FAQ

What is GEO-Targeting?

Geo Targeting is the process of optimizing your website or page to target a specific region, or area within the search results.

Hyphens or Underscrores?

Having relevant keywords in your domain name can be a very good thing…But do not forsake the usability factor.

How often have you seen domain names like this?

OK, so that’s a exaggeration, but you do not need to use hyphens to separate you keywords in “most” cases. The only time you would need to separate them, is if the search engines do not display the keywords highlighted within domain names in the search results. This hardly ever happens.

So keep it easy to remember and user friendly for best results.

What is a robots.txt?

A robots.txt is a document placed in the root of your site to tell the search engines bots that crawl your site where they are allowed to go, and not.

What is a Google sitemap or sitemap.xml?

A sitemap.xml, commonly referred to as a Google sitemap is a “road map” for the search engines to locate, determine importance of, last modified date, and other related information about your site’s pages…In order to crawl them more efficiently.

What about Meta Tags?

Meta tags are information in the head section of your pages that give information to crawlers and provide data for search results.

The most common Meta tags are description and keywords. Keywords are not used at all by search engines, but there is no harm in including them. Descriptions are sometimes used for the text under your page listing in search results, they have no other value.

The most important element is not really a Meta tag, but is commonly referred to as one. Your title tag is probably one of the most important elements of your page and should be fully optimized.

Is my site too slow?

This is a very serious optimization issue, and you cannot determine the actual load speed without the use of a tool. Just because your page loads fast in your browser does not indicate it is in fact fast, your browser most likely has the page cached…So it’s faster.

I recommend using Site Reportcard ( to check your actual speed. You are looking to be under 30 seconds at 28.8kbs.

There are many solutions to improve your speed including code optimization, reduction of errors, image optimization, and CSS optimization for example.

Has my site been penalized?

There are many different types of penalties a website can incur, and honestly if you are unsure of the penalty or it’s cause..Then you will likely need help to fix it and get re-included if necessary. We research penalties, process solutions to repair the errors, and complete re-inclusion requests. Just send us a quote request and we will get back to you ASAP.

There are some things you can research on your own to help determine is you have been penalized.

Did your Google PageRank drop a great deal or is showing a ZERO, or grey bar in the toolbar?

This can be a penalty or just a natural drop.

Is your site failing to rank in search results for a particular phrase that it was previously ranking for? Or your pages are not displayed when searching for your domain name.

If you have made recent changes to your site or the pages not ranking, then this is most likely flux. Flux is the period of time search engines take to digest and determine trust for new content.

If you have not made changes, then check to see your pages are not blocked with a “noindex” Meta tag, blocked in your robots.txt, or removed pages in the search engines tools.

Then at this point if you have not cloaked pages, have hidden text, or bought or sold links…Then I would suggest you get assistance to determine the filter or penalty applied and how to resolve the issue.

What is domain registration?

Domains are registered or leased from Internet Corporation for Assigned Names and Numbers – ICANN ( is responsible for the globally coordinating the system of unique identifiers for the entire Internet. Computers and other devices which access the Internet use these identifiers to reach each other via the Internet.

Registrars such as Namecheap, Enom, and GoDaddy are merely agents who sell the registrations.

Why should I register my domain for more than one year?

It is not a huge factor, but domain registrations that expire in less than a year are not as trusted an longer registration periods.

Add a User to View Your Google Analytics Data

1. Login to Analytics here
2. From the start page- Overview: all accounts select the “” link (left column)
3. From the Overview » Account Name select the “Edit” link for the account
4. In the very bottom block – Users with Access to Profile click the + Add User link in the table heading
5. In the Add User Access To Profile screen select Grant access for existing User to Profile or New User as needed
6. In the Google account email address field
7. Select reports or additional account administrator
8. Click the “Save Changes” button.