View from inside the viper

Tried? Didn’t like? Tell me about it, I want to hear your pain.

  August 26, 2013 14:18
by Mark

383122_5028We may have release version 2.0 of Cart Viper back in July but we are already working on the next major release. Without giving too much away the next major release will enhance a key feature of Cart Viper namely the templates and design your store, that’s all we are going to saying for now.

We have lots of happy customers that use Cart Viper daily in their businesses, we’ve got great reviews on the DNN Store and we have great testimonials but I want to hear from the people that have taken our free trial but then gone on to purchase a competitors product.

Since we are making some major changes to Cart Viper now is the time to let us know about...

  • What didn’t work as expected?
  • What swung the decision to purchase a competitors product?
  • What was missing from our product?

I’m one of the developers of the product and I want to hear from you, I want to improve our product and I need your help to tell me the problem. So if you have tried Cart Viper and have something to share please leave a comment or email me direct at

Google Checkout is Closing

  May 28, 2013 12:47
by Mark

Google Checkout is closingWe always try to make Cart Viper the DNN Ecommerce module as flexible and up to date as possible, take for example the built-in support we have Google Checkout.
We have a number of customers that are using this payment gateway but unfortunately Google has recently announced that its going to retire its Google Checkout payment processing service on November 20th 2013, meaning any existing customers need to find an alterative payment solution.

So what can you do if you are using Google Checkout? Before November 20th you need to select an other payment gateway that Cart Viper supports and start using that in your store then discontinue using Google Checkout.
Current Cart Viper has support for around 30 different payment gateway providers that you can find listed in the user manual.

Our roadmap also has support for Stripe coming in a future release. We can also create you a payment provider for your chosen gateway if we don’t already support it.

You can read the official announcement from Google about the retirement here

C is for Contribute, Cart Viper Gives Back

  May 20, 2013 18:24
by Mark
GitHub Octocat

We are big fans of DotNetNuke! We are big fans of giving back something to the community! There we said it.

What you may not know about the Cart Viper team is that we have been making DotNetNuke modules since 2005 under the pseudonym of Bite The Bullet, Many of the modules we have created over the years have been released for free and with the source code.
So what has all that got to do with Cart Viper? Nothing other than it shows our depth of knowledge and our commitment to the platform.

Recently there has been some buzz in the DotNetNuke community about Participating and Contributing to DNN open source projects, so since we have a lot of existing modules over on the BiteTheBullet site that have been some what neglected what better idea that to bring some of them up to date and to do it in a public and open manner.

So without further ado we are pleased to announce we have copied over the original source for the BTBYahooWeather module to GitHub

The current version of BTBYahooWeather module

The BTBYahooWeather module is a DNN module we wrote several years ago which allows you to show the weather using the Yahoo Weather RSS feed. The plan is to update the module to use DAL2, add a new template engine based on Razor and generally improving the module. Once completed the module will be available to download for free.

Want to help? Stop by GitHub and get started in giving back to the community too. We look forward to giving back an updated module.

Better Store Buttons - Coming Soon!

  May 15, 2013 09:23
by Mark

A potentially breaking change coming in the next release of Cart Viper for any upgrading customers is that we have changed the image buttons used in the store to be link buttons. So the add to cart button, the buttons on the checkout and my cart page have all been replaced with hyperlink buttons.

Changing the buttons has 3 main benefits

  1. When browsing the store on a tablet the image buttons had a blurred effect. Tablets have a high resolution screen compared to a desktop or laptop computer.
  2. Having the buttons as links makes it much easier to style to match your existing site using just CSS.
  3. Since the buttons are now just links you can use the resource file to localise each option.

So lets take a look at what the cart details page looked like before on a tablet, note we’ve zoomed in to make the blurry image buttons more noticeable.

The old style buttons on a tablet

Coming in next release of Cart Viper the cart page would look like this.

New style buttons on the cart page

All the buttons are styled using CSS, the icons used on the buttons are from the excellent open source project Font Awesome. The icon is in fact a font vector so it looks crisp and sharp on any resolution screen, even when zooming into the page.

The new add to cart button

CSS Style

As already mentioned we are now completely styling the buttons using CSS, no images are used in rendering the buttons. The gradient, rounded corners and shadow are all rendered using CSS so its very easy for you to change the style without needing to create a new image in Photoshop.

The styles for the buttons are defined in Common.css and the main class is called .CvStandardButton. We have a number of other styles and pseudo classes that are used for the hover state for example all of which are also in Common.css file just after the definition of the .CvStandardButton class.

What This Means for Existing Cart Viper Stores

If you are just installing Cart Viper for the first time when the new version is released you don’t have anything to worry about. If however you are upgrading from an earlier version then any custom image buttons you have created will be replaced by the new style links.

So what can upgraders do, well after you have upgraded and follow the steps in the user manual to merge your custom CSS files with the new one from Cart Viper you can go ahead and change the new styles to match your site. You could even just change the CSS to load the original custom image button as a background image but we don’t recommend doing that.
Its time to embrace the change in computing and use CSS to ensure that your site works as best as it possibly can with all the different devices out there.

More Designer Friendly Changes To Come!

We are working on further changes down the road to the templates and template engine to add even greater flexibility to the system. Just on a side note, when we do add the new templates and engine we will be keeping the existing version for customers that don’t wish to switch.

We hope you are as excited as us to see the new version of Cart Viper which is coming soon, we have added some great new features and improved a lot of the existing features.

Agreeing To Terms and Conditions At The Checkout

  May 13, 2013 11:41
by Mark

As we work towards the next major release of Cart Viper we also add the odd small feature into the current version, today we have added a small feature to the single page checkout into the current release 1.6.1 based on customer feedback. The new release is 1.6.1n which can be downloaded from the free trial page.

The new feature allows you to show a terms and conditions checkbox on the Single Page Checkout, customers then need to tick this checkbox before they can place their order.

Agree to the site's terms and conditions before placing your order

Be default this checkbox is not shown, the store admin would need to turn this on by selecting the Show T & C Checkbox on Single Page Checkout setting from the My Account module settings.

Showing T & C setting in the Cart Viper Checkout

Bonus Feature

The wording of the checkbox shown on the Single Page Checkout is controlled by the resource file /DesktopModules/CartViper/App_LocalResources/SinglePageCheckout.ascx.resx so if you wish to customise this caption or add a hyperlink to link to the T & C page for example, then you just need to edit the entry chkAgreeTermsAndConditions.Text in the resource file.

For more information about how to customise the captions see this blog post

Cart Viper and QuickBooks

  April 17, 2013 10:46
by Mark

Do you use QuickBooks and Cart Viper? Ever wished you could import your orders from Cart Viper straight into QuickBooks?
Well now you can have your orders go straight into QuickBooks automatically using QuickBook Connex for Dnn from JMA Web Technologies.

The demonstration video below show how easy it is to get your online orders from Cart Viper into QuickBooks eliminating the need for data entry and additionally administrative tasks.


QuickBooks Connex for DNN works with Cart Viper to provide a simple way to transfer your online orders from the store into QuickBooks. Why duplicate data entry when you can have an automatic way to pull orders from your dotnetnuke store into your accounting package every 15 minutes.

Works with both the US and UK version of QuickBooks.

Abandoned Shopping Carts – #1 Reason

  April 8, 2013 17:42
by Mark

Abandoned carts are costing you money in your online store. The average store has 72% of abandoned carts, that can add up to a serious amount of lost revenue.

So what is an abandon cart, its when a customer adds items to their cart but never completed the checkout process. Somewhere along the lines of add the items to the cart and finally paying for them the customer has changed their mind.

Think about it, your store is only converting 28% of carts into orders, being able to improve this figure would make a difference in your online store’s bottom line.

The number one reason for a customer to not complete the checkout process is expensive shipping costs, no one likes getting to the checkout page only to find its another $10 to get their items. Expensive shipping charges account for 44% of all abandoned cart. In fact stores which offer free shipping have less abandoned shopping carts all together then those charging even inexpensive shipping.

Take a look to see how your own store is performing with abandoned cart, you can see the number of abandoned carts for the last 30 days in Cart Viper by going to the Store Admin > Sale Stats page.

Abandoned Carts Graph

Stop the Rot

In Cart Viper we have a number of ways of giving free shipping to your customers. So lets look at what we can do to give the customer free shipping and in turn reduce the number of abandoned carts.

Keep It Simple

You can define in the shipping settings which countries will get free shipping, a customer that enters a shipping address with a country that has been defined as free shipping will get free shipping on any order they place.

A variation on this simple option is to define a minimum spend for the country before the customer qualifies for free shipping. So for example we can say all orders to the USA over $25 will have free shipping.
Then you can make the customer aware of this special offer and convert more abandoned carts into paying orders.

Free shipping with subtotal

For our USA customers we have 4 zones defined which allows you to break down the USA into different shipping zones,

  • USA
  • Lower 48
  • Hawaii
  • Alaska

So this allows you to offer your free shipping to say the lower 48 while still charging shipping to the more costly states of AK and HI.

Coupon Clipper

You could also use the coupon functionality to create a coupon that the customer could use at the time of checkout to get free shipping on their order. A simple banner or HTML module on the store could then promote this offer to the customer.

Free Shipping Coupon

Additionally its also possible to configure the coupon to have some restrictions before the customer can get free shipping. So for example we can define a minimum spend that the customer must meet before the coupon will be valid. Its also possible to make the free shipping coupon only valid when the customer purchases an item from a given category or categories.

Mix and Match

Using the mix and match promotion its also possible to define free shipping. So if the customer purchase 3 items for a given category then it would qualify their cart for free shipping. This would be applied automatically during the checkout process.


I hope this blog post has shown there are various options within Cart Viper that can be used to reduce the abandon carts in your store due to high shipping charges.

Depending on your demographic and the types of products you are selling you may find that some of the options mentioned work better than others, so our final piece of advice would be to try out the different free shipping options and measure which works best for your store.

Cart Viper is an advanced ecommerce module created for DotNetNuke created by two UK developers. Feature rich and backed up by great support. Take the free 14 day trial to see how you can leverage a great CMS and Ecommerce solution for your clients.

Logging in DotNetNuke

  April 2, 2013 19:27
by Mark

Starting in DotNetNuke 6.0 support was added for log4net, a first rate logging framework developed by the Apache Foundation.

So why log? Well any non trivial module can benefit from logging, it means you can easily debug an issue on a live site and see what is happening under the hood.
A liberal sprinkling of logging statements in your DotNetNuke module can save you a lot of time when you have some unexpected behaviour in your module.

DNN Logging 101

DNN have wrapped the standard log4net logging statements in a class called DnnLog which is part of the assembly DotNetNuke.Instrumentation.dll. So to get started with logging you need to add a reference to this dll in your code.

Within the logging framework we have different levels of log, this allows us to filter out some of the debug statements in a production DNN install and just log errors or fatal events to the log output for example. Starting at the lowest logging level going to the highest level we have

  • debug
  • info
  • warn
  • error
  • fatal

So if we have the logger set to record all debug level messages it will also log the higher log levels as well, if we however set the log to error level then only error and fatal would be record with the other lower levels ignored.

Within the DNN class DnnLog we have a method for each type of these logging events with various overloaded options.

DnnLog.Debug("Category ID:{0} is at depth:{1} of the category tree", c.CategoryID, depth);

So using this logging statement we can use string formatting to record the debug log message. We can also log exception using a different overloaded method. Using intellisense it is pretty easy to discovery the correct method to use.

Taking Control

So that is all there is to it, oh wait, where do the log messages appear and how do we control the level?

Within the root of the DNN site you will find the file DotNetNuke.log4net.config this is used to control the logging within the site. The default setting is to log to a file only error levels or above.
In a development environment it might be more productive to set the log level to debug so that we get all log statements. To do this we would simple edit the root level

  <level value="Error" />
  <appender-ref ref="RollingFile" />

To the new value of

  <level value="Debug" />
  <appender-ref ref="RollingFile" />

The RollingFile appender will log the output into a text file which can be found in this directory, \Portals\_default\Logs
A new log will be created each day, its important to remember that DNN won’t delete old log files so this could grow to be a large directory if left unchecked.

Bonus Tip

Something which can be useful when debugging and developing is to have the DNN log statements output in the standard Trace Output for the page.
Its a pretty simple thing to do, you would just need to add a new appender that uses the AspNetTraceAppender and then define the appender in the root element.

<?xml version="1.0" encoding="utf-8" ?> 
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="Portals/_default/Logs/" /> 
    <datePattern value="yyyy.MM.dd'.log.resources'" /> 
    <rollingStyle value="Date" /> 
    <staticLogFileName value="false" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="10MB" /> 
    <maxSizeRollBackups value="5" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
    <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%property{log4net:HostName}][Thread:%thread][%level] %logger - %message%newline" /> 
      <locationInfo value="true" /> 
  <appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" > 
    <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingFile" /> 
    <appender-ref ref="AspNetTraceAppender" /> 

Then whenever you have Trace turned on the log statement

I hope you found this article useful and you give the DNN logging framework a try in your next module.

Azure Support in Cart Viper

  March 4, 2013 14:30
by Mark

Currently we are working on developing 1.6.2 of Cart Viper, one of the new features we have added is support for the Microsoft Azure platform. Azure is Microsoft’s cloud based hosting service, using Azure you can quickly deploy a DNN website in a matter of minutes.

Starting in release 1.6.2 of Cart Viper you will be able to deploy and run a Cart Viper ecommerce store on DNN that is hosting on Azure Websites. We’ll be creating a video tutorial to help get you started once we release the module.

Adding support for Azure was mainly focused in two area

  • SQL Scripts
  • PDF Generation

SQL Scripts

When using Azure Websites the database used by DNN is the cloud based version of SQL Server called SQL Azure. SQL Azure has some minor differences in supported SQL terms so we have to modify some of our scripts in order to deploy the module.

PDF Generation

We had previously used a third party library which made use of GDI+ to generate the order detail PDFs, on the cloud platform this lead to an out of memory exception. So we have switched to a new rendering which makes use of WPF.

Using Azure to host your DNN ecommerce site is going to be huge, its just so simple, cost effective and scalable. Watch out for the new release of Cart Viper coming soon.

Happy Holidays

  December 20, 2012 10:08
by Mark

christmasWe would like to wish all our customers a very Happy Holidays.

While we may have been quiet on the blog but behind the scenes we have been working on lots of new features and hope to release version 1.6.1 of Cart Viper in January 2013.

We are really excited about 2013 and all the new features and improvement we have to show you in Cart Viper so stay tuned.