Dec 27, 2011

15th Street Studio

If you’re looking for a Boulder art gallery with a great selection of original contemporary artwork, check out 15th Street Studio, located on 15th and Arapahoe Streets in Boulder. They also do museum-quality custom framing, including preservation framing and conservation framing. The staff is extremely helpful, and they have been selling art and art framing in Boulder for over 25 years.
Dec 12, 2011

Magento Case Study: Integrating a 3rd Party API, Adding Affiliate Tracking, and Importing Products

By Senior Magento Developer Alan Barber

This week my team celebrated the completion of our most recent project: TeachMeToday.com. This is a heavily customized version of Magento which allows users the opportunity to pay for a membership which gives them access to over 400 eLearning courses.

    We developed the following custom functionality

 

  • Category and Product Import : TeachMeToday’s catalog was imported entirely from a 3rd party provider. We developed an extension to import a category hiearchy and assign products to these categories based on the external catalog. We also created a script to perform daily synching between the two catalog versions
  • Private Sales Functionality : We modified Magento so that a user must pay for a membership before they can view any of the eLearning courses
  • Recurring Memberships (Subscriptions) : We developed a custom extension which allows TeachMeToday to charge their active members on a monthly basis using Authorize.net’s CIM
  • Affiliate Landing Pages with Custom Checkout : My team integrated an external checkout path with TeachMeToday’s Magento installation. Essentially, affiliate traffic signs up on a highly optimized version of the Magento checkout (which is normally very clunky)
  • Affiliate Tracking / Reporting : We added some functionality to the Magento success page and admin area that tracks conversions and rejections

Each of these areas could have a full article written about them, but I will try and provide a few paragraphs about how we accomplished each

 

3rd Party Category and Product Import

This was probably the largest piece of the project. TeachMeToday had ~400 products and ~80 categories in an external catalog. Each of the products was essential an online “course” which launched a java application on the user’s computer. While we couldn’t import the java apps themselves, we could import the category hierarchy and metadata for individual courses. The process we developed for this is as follows:

 

  1. Create your module : We created a custom module in app/code/local.
  2. Add a sql update script to track custom data : Inside our module’s SQL directory we added an install script to add a custom attribute to both products and categories, which would serve to hold a serialized object representing metadata from our 3rd party catalog
  3. Add a helper to connect with the API : our 3rd party catalog provided a soap API to retrieve data. We created an API helper in our module which extended the php SoapClass. We used PHP’s magic functionsto allow the rest of our module to access API methods in the form of
    Mage::helper("apihelper")->{api_method_name}
    — cool huh? The the other objects in the module, the API calls were just regular method calls…our soap class had built in functions to handle soap faults as errors and to parse the soap response.
  4. Get a parsable version of the external catalog : In our case, this was a giant XML tree of the entire catalog: Magento XML Tree
  5. Recursively walk through the tree and update the catalog: This is a big step. A few things were invloved:
    1. I wrote models to represent the different types of nodes in the xml tree : In the external catalog, categories were tagged as “groups” and products tagged as “assets”. I wrote some models which extracted relevent data from each of these node types
    2. I wrote a model to represent the tree as a whole : We needed a model to poll the 3rd party service, retrieve the tree as xml, parse it into php SimpleXML and then recursively walk down each branch of the tree. Depending on the current node’s type, a different operations was performed
    3. I wrote helper models to map the xml nodes into Magento models : Helper were created which took in a <group> and mapped it into a category (in the appropriate place in the category tree) and took an <asset> tag and mapped it into a product (and assigned it to the correct category). The helpers were also smart enough to make a distinction between: creating a new model and updating an existing model
    4. Handle errors : Seems simple, but you ABSOLUTELY NEED functions built in to methodically log and report errors. We could not have done this process without such logic. Magentohas a wonderful function:
      Mage::log({message}, null, {filename})
      which allows you to put a custom log at var/log/{filename}
  6. Setup a cron job to recursively walk through the tree every night : In case the 3rd party catalog changed, we wanted our catalog to represent those changes. So we setup a cron in our config.xml to update the tree every night. Magento Crontab

Private Sales Functionality

TeachMeToday is based on a membership which gives users access to all products in the system. Be default, the community edition of Magento doesn’t enable this functionality. However it is surprisingly simple to implement this:

 

  1. Rewrite the customer account controller in your module’s config.xml
  2. Override the creatAction() in AccountController.php : In our case, we overwrote the create action to redirect the user to one of our landing pages so they could sign up. In this way, a user cannot navigate to /customer/account/create and get a new account…no matter how many times they try, they will alows get redirected to our custom landing pages Magento Controller Overload
  3. Remove the “launch course” option for user’s that aren’t active in the system: All of TeachMeToday’s products are virtual courses, and as part of the private sales piece, we needed to make sure a user that didn’t have a membership (or had an expired membership) could not launch the courses. We created a helper that checks a special customer attribute which is a Boolean flag specifying whether or not the user was active. So we use
    Mage::getSingleton("customer/session")->getCustomer()
    to grab the current customer instance and check their is_active flag.
  4. Update the customer flag when a user signs up for a membership: We created a custom event for this. On our landing pages (which have custom checkout functionality) we call
    Mage::dispatchEvent("our_custom_event", array("customer" => $customer))
    which passes the newly-signed-up customer to our custom module (which then updates the appropriate customer attributes). We created a similar event for when the customer is deleted or fails billing.

Recurring Memberships (Subscriptions)

We needed a way to continually charge customers (since the product they were purchasing was a monthly membership/subscription). However, it requires a lot of legwork and special infrastructure to store credit cards with and be PCI Compliant — and the community edition of Magento is not PCI compliant. Therefore, we decided to use Authorize.net’s CIM. CIM allows you as merchant to store credit card information on authorize.net’s servers, and then provides you a handle for each customer with which you can rebill them without storing their info — cool huh?
Our process was as follows:

 

  1. Create the CIM customer and payment profiles when the user signs up, and store the CIM token (handle) : We used the IDP Magento Extension to handle the requests to authorize.net (no point in reinventing the wheel, and this module does a great job creating a Magento Paygate-mapping to authorize.net).
  2. Create a cron task to bill customers: My team created a script (which runs nightly) that does a few things:
    1. Check which customers are due for a rebill : Using varien data collections we find a list of all customers which are due for a re-bill
    2. Attempt to rebill appropriate customers through their CIM token : try and bill the customer through their CIM handle (which bills them based on the credit card info they have stored in authorize.net)
    3. If payment failed, change their “is_active” flag, if not, create a new order

Magento Affiliate Landing Pages with Custom Checkout

>We needed a number of different landing pages for TeachMeToday to AB test affiliate traffic to. These landing pages needed to be highly optimized for conversions. The process for creating landing pages that could create orders in Magento was as follows:

 

Magento Custom CheckoutCreate CMS Pages with each landing page URL

    : If you wanted your landing page to be: TeachMeToday.com/signup-now, you would make a cms page with URL identifier of “signup-now”
  1. Set the CMS page layout to empty
  2. Add custom stylesheets via layout xml in cms_page–>design : If you need custom styles, you can add them on a per landing page basis there
  3. Create a phtml block in the CMS page to place your landing page code in : We had vastly different looking landing pages…which were all their own layout. The way I did this was to place a block as the sole content in each CMS page as: {{block type=”page/html” name=”signup.now.page” as = “signupNowPage” template=”landing/signup_now/body.phtml”}} Now the page would load its content from my custom phtml file:
  4. Create your custom checkout controller that your landing page submits to : This step is a pain in the @!@ … essentially you need to replicate everything Magentodoes when it creates an order, which is as follows:
    1. Validate customer billing info
    2. Create a new customer with an auto-generated password
    3. Create a quote model and load it with customer and product data : You will need to assign the quote to a customer and add a product to the quote. I’m not going to go into detail on how to do it as its a complicated process. Googling for “create a Magento order programatically” returns some relevent results
    4. Use a service quote to attempt to transform the quote into an order (and therefore charge the customer’s credit card)
    5. If the service quote threw an error, notify the user their payment info was invalid. Otherwise, get the new order from the service quote and move the user to /checkout/onepage/success

Magento Affiliate Tracking / Reporting

Since TeachMeToday receives a large amount of affiliate traffic, they needed to do a few things:

 

  • Store email addresses of leads: Even if a user didn’t not checkout, we needed to store all the email addresses that came through. We did this by associating everyone who comes through the site as a newsletter subscriber (
    Mage::getModel("newsletter/subscriber")
    )
  • Track conversions: Magento by default has a .phtml file in template/checkout/onepage/success.phtml that gets loaded on the checkout confirmation page. This is a great place to drop in tracking pixels or javascript for affiliate tracking (most affiliates will require their tracking pixel on the confirmation page). We passed in the current affiliate’s id in the url string to the confirmation page (as /checkout/onepage/success?aid={affiliate_id}). We then logged every order that had an affiliate id set in a custom table in our database (calling
    Mage::getSingleton("checkout/session")->getLastRealOrderId() will give you the order id).
  • Create reports in the back end of Magento : I’m not going to go into how to add reports to the adminhtml. However, we used the aforementioned table that we stored aid=>order_id associations in to populate several custom reports for each affiliate

Conclusion

I’ve outlined a lot of complicated processes above. It was a considerable amount of work—but it goes to show how Magento’s modular structure allows you to do just about anything with it (and how awesome our Customer Paradigm Team is!).
Alan Barber is a Senior Magento Programmer at Customer Paradigm who specializes in systems architecture and application troubleshooting. For more information, or to get Magento help now, visit customerparadigm.com.

Dec 6, 2011

Great post about why NOT to use overseas / cheap Indian Programmers

The dad of one of our lead Magento Developers here at Customer Paradigm found this article about why he doesn’t fear losing his job to overseas talent, and it’s a great article: http://blog.jpl-consulting.com/2011/12/why-i-will-never-feel-threatened-by-programmers-in-india/ When I first started our company, I was lured into using inexpensive overseas programmers to handle building websites, etc. What I found by hiring an all US-based team of programmers for Magento Development and php programming was that: – The code the US programmers wrote is a lot better – The programmers here in the office were at least 5 to 10 times more efficient – Turnaround times were are lot faster – Customers like being able to talk to a real programmer – Project management costs and frustrations are way down / reduced by 2 to 4 times – There’s a huge premium for having programmers sit together in an office and tackle problems efficiently. Today, we have two of our top programmers traveling to visit one of our clients in San Francisco, CA – a short 2 hour flight from here. Thanks, Alan’s Dad!

Dec 4, 2011

What Photography Gear Did I Bring on a 2.5 Week Trip to Israel?

A lot of people have asked me what I brought on a 2.5 week trip, for successful photography — while not going crazy.

Travel Photography - What to Take on a 2.5 week trip

Travel Photography - What to Take on a 2.5 week trip

Here’s the list: Canon 50D. I normally shoot with the vertical grip attached, but I left it at home due to space. Seven batteries for the camera. I wasn’t sure how often I would be able to charge them. One of the batteries failed during the trip (wouldn’t keep a charge) Lens cleaner, lens cleaning cloth, air blower. It’s the desert, so everything gets dusty and sandy. Every memory card I own... over 125+ GB worth. A cable to plug in the camera directly to my computer. I thought about bringing a card reader, but to save space, I connected directly to the computer. Macbook Pro, with Lightroom 3.0 installed. With Lightroom, I could keep shooting until cards were completely full, and it would handle not importing duplicates into the system. I used Lightroom to pick the winner photos (usually about 10% of the ones I shoot are worthy of really keeping), and then export them in two different sizes: 700 pixels wide for uploading to Facebook, and full JPG size for printing. 500 GB backup hard drive. All images were also backed up there as well. I kept this separate from the computer, so that if the computer was stolen, I’d still have a copy of all of the RAW images and files. Plug adapters for Israel. I did find on a couple of occasions that the chargers would “heat up” and would stop working. If I unplugged them for about an hour, they started to work again. Probably an issue with 220 volt electricity. I did bring a small powerstrip, but it didn’t work in some cases (I needed the plug adapter, then the powerstrip, then a charger, and it was too heavy and fell out of the wall). USB thumb drive. I used this to backup all of the “final” jpg images, and kept this in a different location than everything else. I also used this to print a few images at a local photo lab as presents to some cousins. Lenses: I tried to bring just what I needed for the trip, without going overboard. 10-20 mm Wide Angle lens. Perfect for desert shots or tight spaces. 28-70 mm f/2.8 L zoom lens, for all-around photos. 50 mm f/1.4 lens, great for tooling around, portraits, and low-light shots. 70-200 mm f/2.8 lens, for getting in closer. 2x converter for the 70-200 mm, for wildlife shots. 580 EXII flash, plus three sets of rechargeable batteries. I didn’t use the flash that often, as it’s pretty conspicuous. I used it on some bright-day outdoor shots. A green canvas Domke bag for keeping everything in. This made it a lot easier to keep everything organized and ready. Things I didn’t bring: – I didn’t bring a second camera body, as I figured that I could always purchase another one there if mine went south. – I didn’t bring a tripod or a monopod. I thought about it, but it was too much space. – Additional flashes, diffusers, reflectors, etc. Things I wish I had brought: – Perhaps a second 500 GB backup drive, for even more peace of mind. They are really lightweight, and keep a full copy of all of the images. – A second battery charger, or a vertical grip so I could use AA batteries if I was stuck. Batteries were a single point of failure with only one charger. – A couple of extra high-capacity USB thumb drives for backing up final images.

Dec 2, 2011

Magento Wishlist Module . . . Stop Playing Around With Me

by Customer Paradigm Magento programmer Brandon Lemire Configuring MagentoMagento Wishlist Module, why are you only showing your name? Don’t you realize that you are not of use if you don’t let us in, give use some information about yourself? When My Wishlist is clicked, the expectation is that one will see a list of items tucked away to review at a later date. What does one see? The home page . . . what is up with that? After a “Why are you doing this to me?” the search began for a solution to this issue. Many questions similar to mine were returned by our favorite answer man, Google, and yet only vague solutions were provided. One discussion seemed to intimate that this was a bug in the Magneto code base . . . but there was no reference to a bug report nor a patch provided to resolve the issue. None of the suggested solutions provided the key to unlock the list of items secretly held by My Wishlist. Are you kidding? Does anyone have a solution? This treasure trove of information is held by a key member of the Magento core and to not have access has become unbelievably frustrating. Can you relate? Are you ready to pull out your hair? Well, take a deep breathe and read on … as the issue was due a breakdown in communication between My Wishlist and the rest of the core Links group they belong to. Here is how we helped My Wishlist to communicate nicely with the core Links group. You need to navigate to app/code/core/Mage/Wishlist/Block/Links.php add the function public function getUrl() { Return $this->_url; } Now My Wishlist will allow us now to see the information once hidden. For more information about configuring modules in Magento , or for Magento Programming help now, visit customerparadigm.com/ or contact us to speak to a real person about Magento web development.
Nov 29, 2011

Tips for Safe Holiday Shopping on the Web

Cyber Monday marked the beginning of an annual online shopping spree, where online shoppers hurry from site to site, looking for great deals and exclusive offers from online stores. While it’s a great way to skip the long lines, it can also be a time where credit card fraud, hackers, and scammers run rampant.  Here are some tips with words of caution for you as you make your online purchases. Tips to help fight crooked online retailers, scammers and hackers: Guard your Computer Make sure your computer has been updated with the most recent versions of spam filters, anti-virus and anti-spyware software and has a secure firewall. Make sure you’re shopping on a trusted website Shoppers should check the seller’s reputation and record for customer satisfaction. Make sure the site is real: there are some sites out there that copy seals to appear genuine. Keep your personal information private Read the Privacy Policy and get a handle on what kind of personal information you will need to reveal and how it will be used. If you can’t find a privacy policy on the site, that is a huge sign that the site may be unsafe and your information may end up getting used or sold without your permission. Be cautious of “too good to be true” deals When you find offers online with extremely low prices on high-demand, expensive items, it can sound too good to be true…and it usually is. Make sure to trust your gut and don’t be afraid to forgo deals that could end up costing you much more in the end. Look out for Phishing If you get an email from a business claiming they have issues with your order or your account, and if they ask you to reveal any financial information, we recommend calling the contact number on the site where your purchase was made, just to make sure there really was a problem with the transaction in the first place. Confirm your online purchase is secure When you are making a payment online, make sure you check the URL on the top of your screen for the “s” in https:// and look for the “lock” icon in the lower right-hand corner. If you have some questions on the security of the site, we recommend right-clicking anywhere on the page and select “Properties.” This will let you see the real web address and the dialog box will reveal if the site is encrypted or not. Save your order confirmationsWhen you complete your order online, make sure to save the final confirmation page and any confirmation emails received. Just in case an issue comes up with your order, it’s always good to have a record of your order on hand for future reference.

We hope that you have a safe online holiday shopping experience this season!

Nov 18, 2011

Adapting Google Content to Magento 1.5.0.1

by James Slahor, Customer Paradigm Magento Programmer

Configuring Magento to incorporate Google Content post-Magento Base

Hi everybody. Today I want to talk about a process that I used to adapt Magento to incorporate Google Content for a site called Love ‘n Lace (http://www.lovenlace.com/). I hope that you will find this information useful.

Installing the right Magento extension key

I started by uninstalling the previous Google shopping extension via Magento Connect. Next, I used the the http://connect20.magentocommerce.com/community/Mage_GoogleShopping-0.2.12 extension key to install the extension. This key is compatible with Magento 1.5.0.1.

Creating a new Magento product attribute

Magento Ecommerce Programming Help

After I had installed the extension, I added a new product attribute: ‘availibility.’ (Catalog -> Attributes -> Manage Attributes). drop-down (as opposed to text field) required values = yes scope = global apply to all product types Manage Label / Options Manage Titles Admin = Availability Manage Options 1. ‘in stock,’ position 0, default value 2. ‘available for order,’ position 1 3. ‘out of stock,’ position 2 4. ‘preorder,’ position 3 I then added ‘availability’ under the Default attribute set (Catalog -> Attributes -> Manage Attribute Sets) under the ‘general’ category.

Managing My Magento Products

After I added my new attribute, I went to Catalog -> Manage Products (Love n’ Lace currently has Enhanced Manage Products), and applied the default ‘availability’ values to all products. Since ‘in stock’ is the default value, this forced all products to have ‘availability’ = ‘in stock.’ Next, I went to Catalog -> Google Content -> Manage Attributes, and set default attribute mapping. a. Attribute = Availability, Google Content Attribute = Availability b. Attribute = Price, Google Content Attribute = Price c. Attribute = Product Type, Google Content Attribute = Product Type (Category) d. Attribute = Color, Google Content Attribute = Color

Submitting Google Content

Finally, I went to Catalog -> Google Content -> Manage Items. a. View Available Products b. Select all available products c. Actions -> add to Google content d. Submit! This process may take a while depending on how many products you applied the ‘availability’ attribute to and how many products you are uploading. For Love n’ Lace, about 3000 products took about 20-25 minutes to run successfully. For more information, or for Magento Programming help now, call us at 888.772.0777 or contact us to speak with a real person.
Nov 11, 2011

When Should I Upgrade Magento?

By Customer Paradigm’s Magento Consultant Gillian Owen .

Upgrading MagentoThat’s a question we hear from a lot of our Magento eCommerce clients. The fact is that upgrading Magento can be costly, time consuming and often results in downtime of the store. So, do you really need to upgrade Magento every time a new version comes out? The simple answer is no. Every new version of Magento contains maybe a handful of improvements and a ton of bug fixes. You can see all of the improvements and fixes in each version of Magento here.

We recommend upgrading Magneto when:

  • Magento is more than two versions out of date (example Magento has released 1.6, so if you are still running 1.3 it’s time to upgrade).
  • If you need or want a new feature that is available on a newer version (example, you’d like to have a mobile version of your site and this is available on 1.5+)
  • If a newer version includes a fix for a bug you commonly encounter (example, you frequently need to import customers and run into errors when importing customers from a CSV so you need to upgrade to 1.6)
  • If an extension you require is only available/compatible on a newer version of Magento.

For more information about upgrading magento, or to get Magento programming help now, call us at 888.772.0777 or contact us to speak to a real person now.

Nov 11, 2011

When Should I Upgrade Magento?

eLearning Series

by When Should I Upgrade Magento? That’s a question we hear from a lot of our Magento eCommerce clients. The fact is that updating Magento can be costly, time consuming and often results in downtime of the store. So, do you really need to upgrade Magento every time a new version comes out? The simple answer is no. Every new version of Magento contains maybe a handful of improvements and a ton of bug fixes. You can see all of the improvements and fixes in each version of Magento here. We recommend upgrading when: Magento is more than two versions out of date (example Magento has released 1.6, so if you are still running 1.3 it’s time to upgrade). If you need or want a new feature that is available on a newer version (example, you’d like to have a mobile version of your site and this is available on 1.5+) If a newer version includes a fix for a bug you commonly encounter (example, you frequently need to import customers and run into errors when importing customers from a CSV so you need to upgrade to 1.6)

Nov 10, 2011

iPhone's Camera Has a Secret

Today we discovered that the iPhone camera that has secretly hidden a Panorama Mode which allows you to capture a big panoramic scene using multiple photos.

Nov 10, 2011

iPhone’s Camera Has a Secret

Today we discovered that the iPhone camera that has secretly hidden a Panorama Mode which allows you to capture a big panoramic scene using multiple photos.

Nov 9, 2011

A Magento Upgrade for K9 Power

by Customer Paradigm Magento Programmers Alan Barber and Gillian Owen

K9 Power Magento UpgradeWhile eCommerce stores running Magento’s Professional or Enterprise editions are PCI compliant, having PCI compliance on the Community edition of Magento is a little more complicated. The easiest and perhaps most affordable solution is to use a hosted payment method such as Paypal’s PayFlow Link. However, our client K9Power was running an early version of Magento ( 1.4.2) which did not include this PCI compliant payment option. So the decision was made to upgrade them to 1.6.

To start we made a copy of the live site and preceded with a regular upgrade to 1.6 following the usual methods for upgrading magento. However, we ran into a problem during the database upgrade—Magento kept erroring out on a SQL call to drop a foreign key in the `sales_flat_order_item` table. To discover the exact call being made, we hacked the Mage::printException function to see a full error dump. We then manually dropped the problematic key and resumed the database upgrade (which completed successfully).

The next step was to move over the design and custom extensions from the 1.4.2 installation to the 1.6 installation. The design was easily ported, however we ran into an issue with the OrganicInternet Simple Configurable Products extension —it became apparent this module was not compatible with 1.6. After finding a forum discussion about it, we installed an updated version from github, which seemed to resolve the compatibility issue.

Now K9power is running successfully on 1.6 and can utilize Paypal’s PayFlow Link for PCI compliant payment processing. Plus they have the added benefit of now being able to use Magento’s new Persistent Shopping Cart, which saves the shopping cart for a customer even if they leave the site. During this upgrade we also added Memcache and APC cache to increase speed, installed One Step Checkout to stream line the checkout process, and installed the Constant Contact extension to sync his mailing lists.

For more information on upgrading magento, or to get Magento programming help now, call us at 888.772.0777 or contact us to speak to a real person now.
Nov 7, 2011

Lion photo from the weekend

Here’s a quick shot from an urban safari (i.e. trip to the zoo) this past weekend:

Lion in Denver, CO

Lion in Denver, CO

Nov 7, 2011

Blackberry is down today – November 7, 2011

It seems that Blackberry is down again today, Monday, November 7, 2011. I was wondering why I didn’t receive any emails this morning from 7:00 am on through the Blackberry Internet service… :( Update: 9:29 am, November 7, 2011: I just received a test email I sent to myself. It was sent at 8:15 am; it just arrived at 9:30 am. Perhaps it’s clearing through the queue?

Nov 4, 2011

Customer Paradigm How-to Guide: Upgrading Magento

Upgrade MagentoCustomer Paradigm Senior Magento programmer Alan Barber has just published a comprehensive guide to upgrading your Magento installation. Basically, there are three steps to any Magento Upgrade: 1. Install a fresh version the Magento file tree (the version you are trying to upgrade to) 2. Run the installer from this file tree on-top of the outdated database (thereby upgrading the database) 3. Move over themes and custom extensions from the old version to the current version of Magento. Read more about Upgrading Magento. Check back in for more informational articles from Customer Paradigm about Magento programming and search engine marketing. To get Magento help now call us at 888.772.0777 to speak to a real person about Magento web development.
Nov 2, 2011

New eBook Available from Marc Sotkin

My friend, Marc Sotkin, has another book available… and you can preview it before you buy it: Book: Time off for good behavior by Marc Sotkin More information – Get the book – click here.

Nov 1, 2011

Affordable Magento Hosting Provider – $6 per month

If you’re looking for an affordable Magento hosting provider, and don’t need a fully-dedicated server, you might want to check out Host Knox Magento Hosting. Their shared hosting plans start at $8 per month ($6.00) per month for their annual plan, and they will throw in some extras as well. Need A Magento Developer for your Magento site? Call us – 303.473.4400 or visit here to have a real person contact you now about Magento Development.
Nov 1, 2011

Magento Ecommerce Solutions for the Holidays!

Developer MagentoWith the holiday season rapidly approaching it’s time to focus on your online marketing strategy! Starting well in advance of the holiday season with “Early Bird Discounts” and “Sneak Peeks” is a great way to ensure that you have a successful and profitable final quarter this year.

Make a marketing plan today for the months of November, December and January. Your plan should include a schedule of what sales you will run, how you will run them and what customer groups should receive each sale (be it via email, advertised directly on the site, or through social media). To maximize your sales this season be sure and look over your previous campaigns for the year. Try and replicate your most profitable campaigns for the holiday season.

Other great ideas for Magento sales this holiday season include:

  • Special pricing on your best selling product.
  • Buy-One-Get-One-Free (or % off)
  • Special pricing on “Holiday Bundles” which include several of your best sellers
  • “Stocking Stuffers” sale
Another of my favorite tactics is to create new a new category in Magento called “Gifts” for the holidays. Then segment this category down to “For Moms,” “For Dads,” “For Kids,” etc. Once you have these categories live use them for a couple of your holiday campaigns, it makes finding the perfect gift easy on your customers which of course helps to increase conversions. There is more to having a successful holiday season then just coming up with innovative sales. Retaining prior customers can be difficult, and turning that first conversion into a second is critical for success at any time of the year. Email marketing and social media provide a perfect opportunity to re-market to current customers and attract new ones.

Three Keys for Magento Store Success (All Year Round!):

  1. Abandoned shopping cart emails
  2. Refer a friend
  3. Cross sells, up sells and related products.
Sending out an abandoned shopping cart email to a customer after they have left your Magento store is an easy way to increase conversions. Many customers just need a little extra push to purchase something online. Including a coupon for free shipping or an extra 10% off is a great way to push a customer towards making that purchase. Another easy way to increase revenue and gain new customers is to reward them for their friend’s purchases. A great example of this is to give out a discount to your customer for every friend who makes a purchase.  It’s best to do this through both social media and email marketing so that your customer can decide the best way to contact their friends. Finally make sure you have set up Cross Sells, Up Sells and Related Products for all your products in Magento. In some cases you may need to modify your current theme to show these for your products. Generally though you can set up each of these features by going to your Magento Admin Dashboard, going to Catalog -> Manage Products and then selecting the product you’d like to add these too. Then just go to the sidebar find Cross Sells, Up Sells or Related Products. Once you’re in one of those tabs just change “Yes” to “Any” and click search, now you can select your product and check it off to add it. For help upgrading Magento and other Magento programming solutions, contact Customer Paradigm now to speak to a real person.
Oct 28, 2011

Why does Facebook show HTML code when I share or like a product in my Magento Store?

This morning one of our Magento customers pointed out that when you go to share or like a product from their site you end up with HTML code showing in the description. See the bellow example: Magento Displaying HTML for Facebook Obviously most people who are interested in sharing or liking your products will not want to share once they see that! So we investigated and discovered that none of the meta descriptions had been set up for those products. In Magento you can add a meta description by going to Catalog -> Manage Products -> Product -> Meta Information. Then just copy over your description as plain text without any HTML and place it into the meta description. Now your products can be shared without any funky code showing up. Magento Programming for Facebook
Oct 14, 2011

Installing Magento Go Custom Theme

After banging our heads against the wall for a bit about trying to install a third-party Magento Go Theme, I think we figured out a way to make it work. Go into the Design –> Themes Editor –> Select a standard design, and them duplicate a template. Then, you can delete what you need, and implement the CSS, Javascript and other image files. Not as clean as using the Magento Community Version where you can upload things easily via FTP. In Magento Go, implementing a Magento Go theme requires a lot of changing things via the web interface. Need help? Our Magento Developers are experts in helping modify your Magento eCommere system. Call today – 303.473.4400 or click here to have someone contact you now about Magento Development & Programming >>
Oct 9, 2011

Black Bear at Chautauqua on the trail

I was helping lead Adventure Rabbi’s Yom Kippurclosing service, and we saw this rather large black bear just off the trail:

Brown Bear for Yom Kippur in Boulder, Colorado

Brown Bear for Yom Kippur in Boulder, Colorado

Oct 6, 2011

So You’ve Installed Magento… Now what?

So you’ve installed Magento on your server and your ready to start developing your new store, but your not quite sure where to start. You know you don’t want Google to index your site until it’s ready to go live and you know you will need to configure some initial settings in the system, but exactly what should you do? Here are my steps to configuring your new Magento store for development, once your are ready to go live a couple things will need to be changed back. The things that will need to be turned back on are in BOLD.

Theme

To start it’s always easiest to pick an existing Magento theme and install it by uploading the app, skin and media folders your root directory. You should merge these files and if necessary you may need to overwrite some files. Once you have uploaded the theme log in to your backend of your Magento Administration and go to “System”→ “Configuration “→”Design”. Open the “Themes” tab, then enter the identifier of the theme you are setting up (for example: hellocanvas) in the fields: “Templates” , “Skin (Images / CSS)” , “Layout” , “Default” , and then click “Save Config”.

General Maintenance

Clear out the Messages Inbox: System → Notifications. Then Select All and Actions: Mark As Read and Submit.

Go to System  → Index Management, and reindex all of the indexes.

Disable the Cache in System → Cache Management

Finally update all the Configurations, go to System → Configuration

Under General

Update with Locale Options and Store Information.

In Web update Unsecure and Secure Base URLs to be your store’s URL, if you are developing on a development domain you will need to update these URLs when your store goes live.

In Design update your HTML Headers, and make sure Default Robots is set to “NOINDEX, NOFOLLOW”

Then update information in Header and Footer to reflect your business.

In Store Email Addresses update with correct emails for your business.

In Contacts update the Email options with the correct email.

Under Catalog

Catalog go to Frontend and use Flat Catalog Category and Use Flat Catalog Product to Yes.

Under Inventory

If you are not using Magento to manage your inventory then under Product Stock Options change Manage Stock to No. Otherwise leave as is you will update your inventory for products in each individual product’s page.

Under Sales

In Sales, update the invoice and Packing slip with Address & logo.

In Tax, update Default Tax Destination Calculation with correct Country, State, and Zip.

In Shipping Settings, update Origin with address. In Shipping Methods make sure you set up at least one shipping method.

In Google API add your Google analytics account numeber.

In Payment Methods, set up your Authorize.net account or whatever other payment gateway is needed.

Disable Unused Modules, go to Advanced →Advanced.

Disable modules like Find_Feed, Newsletter, Polls, ect anything that won’t get used.

Changing out Logos

First get your logo, open up FTP and go to store/skin/frontend/theme and replace

i. Logo.gif

ii. Logo_email.gif

iii. Logo_print.gif

Next replace the “No Image” default pictures in catalog/products/placeholder/

i. Image.jpg

ii. Small_image.jpg

iii. Thumbnail.jpg

Removing Test Data

Go to CMS → Polls and delete the test poll Go to CMS → Static Blocks and remove or edit the Footer Links (if using a hello themes them you’ll need to replace with the supplied ones in the folder → staticblock) Go to CMS → Pages and remove or edit the About Us, Customer Service, and Home Page pages.

Finally go to System →Index Management and Reindex all your indexes.

When your website is ready to go live make sure you go back through and update your web URLs, Default Robots and remove the Demo Store Notice. I personally always make a list of settings I feel need to be updated when a Magento store goes live, this way I do not miss any and I highly suggest you do the same!

Sep 30, 2011

Rosh Hashanah Reflections (Literally)

I helped guide the Rosh Hashanah Retreat in the Rockies with Adventure Rabbi, and took lots and lots of photos. The holiday is a time to reflect back on the year that has passed, and think about what you want to do this next year. These photos of a participant looking into the lake, with the reflection of the yellow Aspen trees were some of my favorites:

Rosh Hashanah Reflections

Rosh Hashanah Reflections

Here’s the view from a bit of a wider angle:

Rosh Hashanah Reflections - Wider angle

Rosh Hashanah Reflections - Wider angle

And here’s one of a person casting a stone into the water:

Rosh Hashanah Casting Into the Water

Rosh Hashanah Casting Into the Water

Sep 14, 2011

New Homepage Design for Discount Decorating

Yesterday, Discount Decorating went live with a new home page layout design that is intended to increase usability of the site and increase shopping. The new look was designed by Gillian to simplify the page, and direct users to the parts of the site that will be highlighted each week or month.

Sep 14, 2011

SEO Guest Blogging Contest Sponsor

Customer Paradigm is a proud sponsor of the 2nd Annual The Bad Ass SEO Guest Blogging Contest hosted by The Search Engine Marketing Group. Started by Gerald Weber, the blog has become one of the premier sources of SEM content online. The contest brings together the SEO community by showcasing the awesome guest blogging skills of SEOs and Internet marketers. It began on 9.12.11 and goes until 10.12.11. Acceptable guest post topics include anything related to SEO, Internet marketing or social media. For more info, visit here. Know some great writers who want to show off their SEO savvy? Spread the word. It’s a great chance to connect and bring the SEO community together.

Sep 14, 2011

Magento Extension Fixed for A Happy Client

We recently did a Magento extension fix for Work Place Safety Manuals, and the client had great things to say about us:
“The service I requested much completed much faster than expected. Additionally, the representative was flexible and offered to look into my Magento issues before I had to make payment. If I ever need Magento work, I’ll definitely be using Customer Paradigm.” – Aaron West
Sep 14, 2011

Research shows Americans Spent 53.5 billion Minutes on Facebook in May, 2011

Think about how much time you spend on Facebook. New research from a Nielsen study released today concluded that Americans spent a total of 53.5 billion minutes on Facebook in May 2011 – more than any other website – as part of the firm’s “State of the Media” quarterly report on social networking. Here’s an excerpt from the article in the San Francisco Chronicle:

…Yahoo was second with 17.2 billion minutes in May, with Google third at 12.5 billion minutes. With Americans now spending one-quarter of their overall Internet time on social networks and blogs, Nielsen said the results show “how powerful this influence is on consumer behavior, both online and off.” “Whether it’s a brand icon inviting consumers to connect with a company on LinkedIn, a news ticker promoting an anchor’s Twitter handle or an advertisement asking a consumer to ‘Like’ a product on Facebook, people are constantly being driven to social media,” the study said. Read more here.

If you’re a business or run an eCommerce site, how are you capturing the attention of all these social media users?

Sep 11, 2011

Best, Affordable Plumber in Boulder, Colorado

When I had a sewer line issue at our home in Boulder, Colorado, I called Shannon from Aspen Creek HVAC (we built a website in an afternoon for them). She referred me to McAdams Plumbing. A really nice company, very affordable plumber serving Boulder, Colorado. I highly recommend them!