Blog

Customer Data Integrity & Magento One-Page Checkout

Do you have clients who are reporting that their customers are unable to checkout, but you can't find any problem with your client's Magento checkout process? Are customers of your Magento site complaining that they have to re-enter their address because they can't check out? We may have an answer for you!

Yesterday, we discovered the source of a particularly ugly issue that has been plaguing one of our clients.

For months, customers of this client's Magento site have been complaining of problems checking out, but we've never been able to reproduce their issues. We found out yesterday that their was a gap in some of the customer data that had been imported into Magento when the site was first built. Some customers have customer accounts with saved addresses, but those addresses do not have phone numbers. This discovery came from a detailed email sent by a very kind customer talking about their problems.

When a customer logged into their account and attempted to check out using an address with no phone number, Magento was showing them an error like this: http://files.classyllama.com/c689cb8e/customer_address_warning.png

The big problem here is that there is no readily apparent way for customer to fix this issue. Customers ended up becoming irritated and were abandoning orders and leaving the site.

If your client is reporting the following kinds of problems with their Magento site, they may potentially be affected by this bug:

"My customers complain that Magento won't let them checkout."
"Magento is telling my customers there is something wrong with their address."
"My customers complain that they have to enter their billing/shipping address again in order to be able to checkout."
"Magento is telling my customers they need to enter a phone number, but they can't figure out how to do it."

This problem can only occur when addresses have been imported without phone numbers. A customer can never enter a new address in Magento without a phone number. So, if this problem is being reported but no customer data was ever imported, then the problem has a different root cause. However, if customer data was imported, what is most likely happening is that some customer addresses were imported without phone numbers.

The simplest fix for this problem is to locate all the customer addresses in the Magento database which do not have phone numbers, and populate the phone number field with a string of seven 0s (0000000000). This will allow a customer to check out without being blocked by this error outlined above.

The important takeaway for any new Magento build is this: when importing customer data, ALL CUSTOMER ADDRESSES MUST HAVE PHONE NUMBERS. You must check to make sure that there are no gaps in the phone number data, and if there are, you must work with your client to identify a way to fill these gaps - whether with 0s or real data. These gaps must be filled so that the error outlined here does not occur.

For reasons all of the technical folks reading this article will understand, this is a very ugly bug that can be extremely troublesome for customers, but nearly impossible to catch and diagnose. Knowing this information will help you prevent your clients from falling prey to this problem, or help them fix it if they have the problem already.

Cheers!

Posted on June 14, 2012

Posted by Rob Tull

Comments

Gen's picture

Hi, not sure if to do with

Hi,
not sure if to do with this same issue somehow but at least can't find an answer. The telephone number that we are collecting in our Magento billingaddress form is coming via email totally fine through but it is not saved correctly in the database. If a customer writes like "045 1234567", the order email has this same phone number correctly but the database and the admin shows only "45". So, it removes the first "0" and everything after a space.

The form has input type="text", not a number. But it looks like that it is trying to save a number to the database. The funny thing is that it comes totally correctly via email though.

Adam Jessup's picture

Why is your "TrackBack URL"

Why is your "TrackBack URL" written in what appears to be Arabic? Is this blog outsourced?

Cheers!

rob.tull's picture

LOL! I think it's Hebrew, and

LOL! I think it's Hebrew, and based on Google Translate, appears to be spam. Also, the trackback URL is in English. What you saw was the post that tracked back. Not sure why a Hebrew spam site picked up our post trackback. Go figure…

Jason Wyatt's picture

While working with the client

While working with the client to fill these initial gaps, would it be beneficial, in the meantime, to also work towards developing a script to to fix this issue? As you'd identified that "all customer addresses must have phone numbers," the following would be my suggestion:

Prompt existing customers, upon login, to update their account information, making the phone number a required field. All information in the database related to their account should already be prefilled and make any missing "required information" prominent (bold, color, highlight, etc.). Provide a tooltip as to why the phone number is necessary. As long as the seller is upfront and can clarify it as a means of contacting you regarding purchase order problems only, most customers won't hesitate to provide it. This goes for new accounts as well. In my experience, UPS and FedEx, are both requiring phone numbers to be included on shipping labels as well.

Regards, and good work. It's awesome you guys are openly discussing issues rather than keeping them inhouse!

rob.tull's picture

Thanks for the feedback!

One thing to note is that this problem can only appear as a data integrity problem resulting from an import or direct manipulation of data in the Magento database. The Magento application actually does require the phone number field, and any customer or admin user entering an address on a customer account must enter a phone number to go along with it. Magento validates the data any time it tries to save the address to make sure that all the fields are present. It is therefore a reasonable assumption within the application that any saved address will have a phone number.

That being said, your approach is much cleaner than our solution. It would really solve the underlying problem, which is missing data.

Ultimately, we went the route we did because our client was much more concerned with turning the fix around quickly, and does't particularly care to spend extra effort trying to collect the missing information. For them, making sure the checkout works is top priority, and getting customers to update their accounts doesn't matter very much.

As I'm sure you know, every solution is a trade between time/cost and the results it provides. Thanks for the thoughts!

Add comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options