I am working on a website where customers can order a number of products and each product will require several photos (often hundreds) to be uploaded by the customer - the number of photos varies depending on the product.

I am now considering what is better from a UX point of view and for conversions.

Our options are:

  1. Should the customer upload their photos on the product page and then pay for their order - which might require them to register first so they can save photos to return later. Snapfish does something similar.
  2. Let the customer complete checkout and request the photos required afterwards.

I am in favour of No. 2 for these reasons:

  • In theory, higher conversions as there are less steps to checkout.
  • Captures impulse buyers - uploading photos gives them a chance to second-guess their purchase.
  • Currently the website is operating using No. 1 and we are seeing a high abandonment rate - possibly because of upload issues and customers will be more likely to report upload issues post-checkout.

Can someone help advise which option would be the preferred for this situation?

A bit of background: The website provides a variety of photo gifts, but unlike others it offers more of a direct customer service and there is a lot of interaction between staff and the customer during the order process - including a final approval of the finished item before despatch.

  • Can you post the URL? My gut tells me option 1 is best, but it's hard to say without seeing exactly what you're doing. Commented Oct 1, 2015 at 22:13

3 Answers 3


I already built something similar, and the answer for us was number one. Think about this:

Option 1: As an user, I upload photos. Once I have uploaded them, you request me to pay. Oh, well, I already uploaded the photos, let's continue or I'll have to upload everything somewhere else.

Option 2: You ask me to pay. For what? You didn't do anything and you are asking me for money? Let's see what other options do I have! (checking Google)

Keep in mind abandonment rates might be caused for many different reasons, most common being slow servers and "fishy" schemes. So just be upfront: "you want this service, it's obvious you'll have to pay at some point, but let's start with the service itself".

Just for reference, the app we built was for a printing company. What we used was an automated final version (the photo printed over an object selected by user) and gave the user full access to everything (image editing tools), so s/he could play around and get the product s/he wanted. We engaged the user by making s/he part of the product build up. Once s/he was totally happy with the product, we made the user pay: not before, not after, just at the exact moment the user was excited and prone to take the wallet out. Needless to say conversions went to the roof.

In short: I'd say Option 1 is the right choice, your problems might be caused for many reasons, so you'll need to test. Maybe implement a quick survey on user abandonment before you change anything?

  • Thank you for your reply. Please see my updated question for a better of idea of what the website does. Based on this, would you still recommend number 1? Commented Oct 2, 2015 at 20:04
  • indeed. Even more. Without testing and data on my hand, I'd bet your abandonment problem comes from your lack of preview and customers having to pay for something intangible to an unknown person. I'd include some reviews from other users so people has an idea of what they're paying for and you increase trust (I know you have some testimonials, but they look extremely fake, which causes the opposite reaction to what you intend. At least add a name!). Either way, it's worth tracking and testing why your users are leaving,
    – Devin
    Commented Oct 2, 2015 at 22:30

The 2nd approach seems more reasonable to me. The 1st approach seems like "pay first and then see items in your basket." I think users need to get feedback that items that they are about to order have been downloaded successfully. One option to keep people from leaving is to allow upload without registering and allow check out as a guest. My guess is that the 1st approach might lead to even more people leaving since users might get hesitant to check out without option to confirm that the pictures they are about to order are correct. Looks like a key issue is to get upload working reliably.



Some customers may want to see how their product looks before committing to buying. At the same time, less steps generally implies better conversions. Why not solve for both?

  • User wants to buy a t-shirt that can have up to "x" unique colors

Okay. I see it in my cart, and I can purchase at this point. But a call out as simple as: "Want to see product with your design on it? Follow us here"

That way you can have the best of both worlds. Forcing every user to mock their product before they buy would be bad UX, so would not allowing your customer to see a draft before committing to purchase. Emphasize the most likely case, and supply an easy route to catch the stragglers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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