Imagine you're a user filling in a registration form on a website. The form has about 20 required fields, so it's not a small form. Because the entire form uses inline validation, you're confident you filled in the entire form correctly. However, when clicking "submit", a network connection or unexpected server problem occurs and the registration cannot complete. Result: you'll have to register at a later time, when this problem is fixed.

Now, let's say the program automatically takes you back to the registration form, with all previous entered fields filled in automatically. You try again, but you get the same problem. You will actually have to wait one hour or more until the problem is really fixed.

What could be a possible mechanism to prevent users from having to type everything in again? Because the server was down for an unspecified time, the data could not be stored on the server (otherwise the registration would have succeeded). But I cannot rely on the use keeping the website open all the time.

Perhaps I could test a stable server connection right before the user starts filling in the registration form, because it is very likely the connection will still be up a small time later?


Non-sensitive data can be stored on the users computer. Local Storage, cookies, whatever mechanism you find appropiate. have alternate server or alternate mechanism of sumission are all possible solutions.

Thing you should think about are :

  1. Public computers. People may be filling the form on another person or public computer, saving data in this scenario is really bad.
  2. Sensitive data can easily be stolen if stored on local machine, specially in cookies.
  3. User may not come back so that data will be stored 'until someone delete it' or expires.

Some possible approachs :

  1. You can ask the user to save the information locally when network connection problem detected. With an expiration 'date'.
  2. You can give them the option to send the form as email using their email program (as they already handle offline connections). Then some process should actually submit the email to the system (automatic, manual, whatever).
  3. You can have a 'mirror' system that saves the data and process saved data to main server. On error, save to secondary.
  4. Implement a Geolocated different servers (like using Microsoft Azure or any cloud service) to guarantee server uptime. (Working application is not guaranteed).
  5. Save data as soon as are entered, and keep the 'form' in a partial submission state. If the user come back, retrieve missing data. (this has security concerns if we are talking about annonymous users) and user would not be able to finish the task 'offline'.

All this solutions comes from free to costly, from poor to ideal. It depends a lot on the really need of it.

I don't know the importance or situation of your current web application, but for most common app needs, asking the user to save the data locally for later submission will be the most cost/benefit, but as I said, depends on context I don't know.

| improve this answer | |
  • The context is users who bought our product registrating themself on our site for additional news/support. Unfortunately, I'm unable to setup multiple servers. But, your second suggestion, "send an e-mail" is a wonderful backup solution. The user will feel like he is actually going forward, and we can still process the registration manually and not lose the customer (data). – user1884155 Aug 16 '14 at 21:27
  • I agree with you, in that context I will also go with a send by email backup solution. – Bart Calixto Aug 17 '14 at 0:43

You could use a cookie for the data or store it in a browser database via html5. Even flash cookies might be a workaround.

It depends a little on security aspect of data - I wouldnt store banking data offline - and the browser settings.

You might find some more ideas if you search web for techniques for evercookie and mobile offline.

And the user flow: Hard to say if it's better to get data first and find a solution for remember him/her to restart a registration later. Or check connectivity, while he/she is typing something. Or give them a task in order to get time for resending data. Or to check connectivity first - which might loose a customer easily. Depends on your website and customer journey. I would prefer get the data and try to remember. Which means get email adress first!

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.