Add a comment field for each customer

by Joe Payne 29. March 2008 05:00

Introduction
I have seen a few requests from folks who would like a way to store comments for a particular user. It may be something like "What a swell guy" or it could even be "Problem customer: high RMA rate".
Regardless of your reasons, it would be nice to have such a feature. Fortunately, the field exists in the database. It's just been left off the Edit User page for some reason. This modification describes how to easily add the field to the screen.

I know I said I was going to be away for a while. Well, I wound up with some spare time and needed this particular change. Once I realized how simple it was, I recalled others wanted it too, so I decided to document it.

As always, make a backup of the files involved in case something bad happens.

HTML Changes
The file we're going to change is ~/Admin/People/Users/EditUser.aspx. There is no code-behind file, so all the changes will occur in the same file.

Edit the file and find this section of code in the HTML section towards the end of the file:

Code:
                            <asp:DropDownList ID="Residence" runat="server">
                                <asp:ListItem Text="This is a residence" Value="1"></asp:ListItem>
                                <asp:ListItem Text="This is a business" Value="0"></asp:ListItem>
                            </asp:DropDownList>
                        </td>
                    </tr>


and replace all of it with this code:

Code:
                            <asp:DropDownList ID="Residence" runat="server">
                                <asp:ListItem Text="This is a residence" Value="1"></asp:ListItem>
                                <asp:ListItem Text="This is a business" Value="0"></asp:ListItem>
                            </asp:DropDownList>
                        </td>
                    </tr>
                    <tr>
                        <th class="rowHeader">
                            Comment:</th>
                        <td colspan="3">
                            <asp:TextBox ID="Comment" runat="server" Height="95px" TextMode="MultiLine" Width="445px"></asp:TextBox></td>
                    </tr>


We've changed the screen display but the page doesn't know how to save or load the actual field contents. Let's do that next....

Code Changes
There are two changes to made in the code. One reads the existing Comment field value into the page. The other writes it back to the User record before the record is saved.

First, find this line of code in the InitializeForm function near the beginning:

Code:
            Residence.SelectedIndex = (address.Residence ? 0 : 1);


and add this line immediately below it:

Code:
            Comment.Text = _User.Comment;


Now, find this line of code further down in the SaveUser() function:
Code:
            address.Residence = (Residence.SelectedIndex == 0);


and add this line immediately below it:
Code:
            _User.Comment = Comment.Text;


Save the page.

Testing
Go ahead and pull up your User page and edit any user. You should now see a large, unlimited text box below the address area. Try it out and type something into it, then Save the user. Return to your Dashboard, then again to the User page. Pull up the User and see if your changes were saved.

Conclusion
Having the ability to store comments with a particular user account can give an admin useful insight into the customer. Any opportunity to know more about who you are dealing with is an opportunity to succeed. Knowledge truly is power.

Tags:

AC7 Articles

CPC Marketing Campaigns

by Joe Payne 12. March 2008 00:15
So, I thought I would offer some experience notes regarding my online marketing tests using merchant accounts like Shopping.com and Yahoo products. My store is new, my products are new and nobody really knows that I sell this stuff. This is how I went from 3 orders a day to around 30 orders a day.

All of these notes are based on my store, my product lines and my own efforts. None of this is set in stone, which means your mileage will vary. Please keep that mind as you read.

Introduction
I've spent the last 90 days experimenting heavily with online search marketing campaigns. These are the places where a merchant uploads his store database to a common search engine. The structure is almost always the same: create a feed file, open an account, upload your feed and activate the campaign.
Overall, there is tremendous value to these campaigns but only if you price yourself well. Most of these visitor-side interfaces will sort by price, so being .01 more than everyone else will completely waste your money and your time. So start your store with the lowest margins you can bear if you want to maximize your exposure. it's ALOT easier to go up in price than down from a business finance perspective.

Below you will find my summary conclusions for each of the 5 online merchant campaigns I chose to use. I'm sure there are more, but these are the ones I decided to try.

ROI Tracking
Tracking search campaign results is a nightmare. Everybody was bought out by everybody else at some point in the past. So listing on Shopping.com also gets you hits from search.ebay.com. Listing with Shopzilla also brings in hits from BizRate.com.
I took the extra step of adding AC7 Affiliates to my system. Then I did a search/replace on every URL in every feed file to add the appropriate ?affid= value to the product URLS. The goal was to use the Affiliates feature to better track real ROI for these campaigns.
This didn't work as well as I'd hoped. I'm seeing results, but not all my orders got tagged with an Affiliate ID. I suspect some of these search marketing campaigns stripped the parameter so AC7 never got the chance to see it. Plus, with all the database-sharing these guys are doing there is bound to be some modification done to my product URLs.
So it did help and I have some numbers to work with now, but it's not complete. Given the diversity of URL encoding in todays online world, this concept may never be completely accurate.
Plus Affiliates was more designed for a single static link on another site, not this huge search-marketing stuff.

Shopping.com
1. Draws in almost exclusively eBay-ers - they're tight, whine alot about shipping rates and their average order total is less than $50.
2. CPC is not bad, but it's the sheer rate at which the budget gets burned up that turns me off. I swear these eBay-ers are clicking through every freakin' item they like.
3. Overall, the rate of return due to the low average order total makes it not worth the money with the margins I have on products. I could make up for it through a large volume of orders, but the increase in order management overhead and RMAs would offset any profit in my opinion.
4. You can dramatically increase your site traffic and exposure overnight using Shopping.com, but it's going to cost you a fortune and after three separate tries I still can't find a margin that pays for the campaign costs.

Yahoo.com
1. Slow as molasses. Been active for a week and like 10 referrals. Budget will last forever and the average order total is nice at $100 for the whopping 2 orders I've gotten in a week - but nobody's using it.

MSN.com
1. System doesn't even work for larger catalogs. Waste of time setting it up. Only pluses are it's still free and it'll use your google feed upload file, but free and easy are worthless if your products never get listed.

Google.com
1. Long term value is fantastic. Average order totals are nice at $96. Free while it's still beta is a huge plus. I'm not going to get rich from Google.com but I will see a slow but steady increase in business at no cost to me. Hard to beat that unless you're in a hurry to grow.

Shopzilla.com
1. Here's where my money is going to go. For whatever reason, I had huge success with shopzilla. The CPC was reasonable like shopping.com but without the massive 2-day burn-up of the budget. I've gotten 40% more orders with twice the average order total using the same budget amount as shopping.com within the same period of time.
2. Customers are more for savvy and reasonable. They're not dogging me for free shipping. Except the guy that ordered the 23 foot radio antenna and doesn't understand why that can't fit in a standard DHL ground truck.
3. Admin interface offers data validation prior to listing - you can check your upload format quite well before getting the listings active.
4. Most purchases are Visa/MC as opposed to shopping.com users and their PayPal payments. No matter how well your site payment gateway is written, PayPal will screw up some orders and fixing them takes your time away from growing the business.
5. Only downside I had was they are slow to get your listings active - like 4-5 days. But once it went live, it was worth every penny to me.
6. I wrote my own custom feed file generator to create the compatible Shopzilla.com file format. I am willing to sell it if anyone is interested.

Summary
Shopzilla wins hands-down for building an effective database of marketable customers at a reasonable pace with a reasonable budget expense.
Google.com wins second place with a smooth, steady stream of higher-dollar orders with no marketing cost while it's still beta. Shopping.com will get you the exposure you want but I just can't seem to find a way to secure the sales needed to fund the campaign costs.
MSN and Yahoo are worthless. I might dig into Yahoo more to see if I did something wrong.

Conclusion
Marketing isn't cheap. Anyone who says they want to make their money back on their first marketing campaign has never done marketing. It's an investment and it is going to cost more than it makes you at first. But it does work. Depending on the funds available to you, a previously unknown business can grow expotentially overnight.

The value of a new customer should never be underestimated - it doesn't matter how much they bought the first time. A happy first-time customer is far more likely to buy from you again in the future than anyone else on the planet. It doesn't matter how good your site design is - if your customers aren't happy, the word will spread and you'll never grow past a certain point.
If your customers ARE happy, the word will spread like wildfire. So it's critical to be on your best behavior, have the most patience and be the most responsive you can be at all times.

If you decide to proceed with this type of marketing, make sure you think it out first. Do you have the procedures in place for such volume? Have you established the organization skills to manage a daily supply of large volume orders? Have you got the staff in place that can adapt to changing policy and procedure as your business grows? And most importantly, can the margins you've established sustain the increased cost associated with an increased order volume?

These are all questions to which you must have effective answers before you throw $10,000 at some online search engines. Trust me on that one :wink:

Tags: ,

AC7 Articles

Creating a new category display page

by Joe Payne 6. March 2008 12:30
Introduction
There are about a billion reasons to create a new category page, so I won't go into the why or what-for. Suffice it to say, you may want one so here is how to do it.

Copy the file
Pick the category display page you'd like to use as your starting point. For this document, let's assume it's CategoryGrid2.aspx. Let's assume your new file name will be "CustomGrid2.aspx". Avoid using new category page filenames of "CategoryGrid?.aspx" as future AC7 updates might include additions that overwrite your page.

Copy the file ~/CategoryGrid2.aspx to "CustomGrid2.aspx". Now you have to edit the new file so AC7 will know to treat it as a category display page.

Modifying the file
Category display pages are identified in the system using this comment line in the beginning of the .aspx file:

[quote] 
<%--
<DisplayPage>
    <Name>Category Grid (Deep Item Display)</Name>
    <NodeType>Category</NodeType>
    <Description>The defualt category page that displays products in a grid format. All sub-products in all sub-categories of the category are displayed. Allows customers to browse your catalog.</Description>
</DisplayPage>
--%>
[/quote]

In your new file copy, be sure to change the name and description values of the comment section as shown above to differentiate yours from the included pages.

Save it.

Conclusion
You now have a new choice in the drop downs for category display pages. If you've modified the comment section correctly at the beginning of the new file, AC7 will recognize it and use it just like any other category display page.

Tags: ,

AC7 Articles

How to organize your order flow with the Order Status field

by Joe Payne 3. March 2008 00:10

Introduction
I've had some time lately to experience a somewhat higher volume of orders with my AC7 site. While that's a good situation to be in, it also invariably brings out the weaknesses in your order management process.

As a result, I've developed a handy system for leveraging a fantastic feature in AC7. This article will explain my unique needs and how those needs have been met using the custom Order Status feature.

The Order Status field
The order status is very unique compared to other status fields in AC7. Every other status field in the system, for example Shipment Status or Payment Status, is hard-coded to a specific set of choices. Even if you could directly or indirectly change those status flags, your options are still limited by the design of the system.
This is not true for Order Status. You can define as many status codes are required by your order processing needs. This gives you an incredible amount of flexibility.

Order Classification
Once your order volume reaches a specific point, you'll need to implement some form of order classification. This step allows a smooth flow of orders through your business while organizing the information in a logical fashion.

Using your own custom Order Status values gives you complete flexibility in classifying your orders into groups. This lets you streamline your order management process by grouping like-orders into that logical fashion you need. Then you can begin to work with specific collections of orders that all require a common action. Or even better, assign specific staff members to be "responsible" for specific order statuses.

The Dashboard
Maybe you haven't noticed yet, but there is a huge feature on the dashboard that makes order classification so easy to do. Found it yet?

Look at the Order Summary section where you see the various order status codes listed. See those numbers to the right? They're clickable! That's right - just by clicking the order count for a particular status, you are instantly presented with a filtered orders list for just that order status.
This greatly increases the usefulness of the dashboard. Now you can instantly see how many orders for each order status AND jump between various order status lists all on one screen.

Getting Started
First you need to logically divide your order management process. For example, my procedures require the following status codes:

    Unpaid
    Unshipped
    Ready to Enter
    Ordered
    Shipped
    Problem
    Backorder-Full
    Backorder-Partial
    Waiting Response
    Pending Refund
    Charge Verify
    Fraud
    Cancelled
Some of these status codes were part of the default AC7 install. The rest were all created by me using the menu option Configure, Order Statuses.

Status Sequence
Notice the sequence of the order statuses I've listed? That's important because it closely matches the flow of my order management procedure. AC7 allows you to easily set the display order of your status codes...it makes any menu option that change an order status directly match that order. This further helps you keep a consistent workflow when managing orders.

Assigning an Order Status
There are a couple of easy ways to assign orders to a particular status code. You can do it from the Tasks menu on the order details screen one at a time. Or, you can assign multiple orders to the same status using the "Update Selected Orders" dropdown on the orders summary page.
So whether you work with a batch of orders or just one order, you can easily transfer them from one status to another.

Go ahead and get your order status codes set up and assign each order to its appropriate status.

The Daily Order Flow
My daily flow involves a tree-and-branch process. Each tree is a starting point for the order flow with some branches depending the action required for each order in that tree.

The first tree is "Problem" orders. Each day starts with a full review of History/Notes for every problem order. This is a great way to make sure the customers order gets the attention it needs. The branches on the "Problem Tree" are just the possible order statuses that can result from a Problem order. These include "Cancelled", "Refunded" or "Ready to Enter".
Starting out your day this way makes sure that customer order problems never get forgotten. Your customer service reps will thank you!

The second tree is the "Unshipped" status and has several branches. This order status is automatically set by AC7 when an order is paid in full, so it's always easy to tell what new orders you are going to have to deal with today. From the "Unshipped" tree, many branches are possible like "Ready to Enter", "Backordered-Full", "Response" or even "Charge Verify".
If the order is verified for accuracy and ready to be placed with the distributor, I move it to the "Ready to Enter" status.

The third tree is what I call the "action" tree. The branches on this tree involve back-end activities that generally don't involve the customer directly. Here is where I will work with the "Refund Pending", "Charge Verify", "Response" or "Fraud" categories.

The final tree is the "Ordered" tree. This tree is pretty simple and usually handled at the end of the day.
Everything I sell is drop-shipped. When I buy product from distributors, I take orders in the "Ready to Enter" status and move them to "Ordered","Backorder-Full", or "Backorder-Partial" status code.

At the end of the day, I need to update shipments and tracking numbers. That's easy to do now, because the only orders that could qualify for shipment-update are all nicely grouped in just those three status codes.

Remember: You can quickly hop between each different order status using the Dashboard Order Summary links

Staff Management
Now that orders are grouped logically, you can begin to assign specific company employees to specific order statuses. I'm doing this now with order entry. My part-time assistant will log in every day and check the "Ready to Enter" status. If it's "0", well then she gets the night off. This gives me the ability to review orders for accuracy beforehand.
My daily job involves getting as many orders as possible out of the other status codes and into the "Ready to Enter" code before the end of the day.
You can apply this same logic to shipping, cash receipts or charge verification depending on your business needs.

Advanced Programming
My next goal will be to automate the order entry to my distributors. Because my orders are well organized, I can easily write programming to pull just the "Ready to Enter" orders and transmit.

Conclusion
Leveraging the ability to classify your orders into logical groups has many benefits. AC7 gives you an well-written and easily implemented way to accomplish effective order management techniques.
Order management is a key cost center with any business. Efforts you make to streamline the order management process will save your business money. It will also reduce the potential for order processing errors and angry customers.

Tags: , , ,

AC7 Articles

Month List