Shop 1. 2. 3. Waterfall

I assume a few guys here are working with any sort of custom, or not-so-custom types of shop systems such as cartkit, shopkit, magento, opencart or others and i was just in for a little chat about the best methods to make the checkout process

  • as simple / user friendly as possible
  • as effective / most convertions
  • flexible?
    or questions such as with/out user registry…
    anything goes really…

just as a backstory i have relied on another shop system (which is quite the niche - so there weren’t too much options) and while the shop was doing alright in terms of functioning, it came with alot of quirks, flaws and a load of functions which were never used.

this ultimatively made me code my own niche system which had just this one straightforward way of doing what it’s supposed to do (obviously in terms of overall features much much less compact)

while the previous shop was running for about 3 years, after transitioning towards my custom shop, all expectations in terms of sales were blown away. quite quickly the sales were about 250 to 300 % in comparision.

so i am always looking for neat ways to adjust and advance.

It’s a difficult one to advise on without knowing the use case. Are you able to share the site your system is running on?

Having built quite a few eshops in the last 10+ years, (Magento, a dozen or so custom enterprise grade .NET stores from scratch, Lemonstand, Snipcart based stores, as well as a very niche custom built platform for a very specific industry), i can honestly say the best stores I have seen are Lemonstand and Snipcart.

Lemonstand is a heavyweight… if you were building something like a clothing store where you’ve got lots product variations and categories going on, its a dream to build with. (when i used it, there was a self hosted version. This is no longer, as far as i can tell, it’s all cloud now).

Snipcart is a beautiful piece of work that can be tied into a Kirby site in minutes (or any website.) It works by feeding stuff into a javascript cart via data attributes that is fully customisable. They even provide the Sass for the cart itself so you can totally reskin it if you want. If your building stores for people who make stuff or make music or crafters, its the way to go. It can handle digital downloads too. It can probably handle a lot of products, but I have only built sites with it that have less then 100 items for sale.

You would do well to try those two out and take away the best bits. For my money, if you refactored your system to work similar to Snipcart, that would de-couple if from the site itself. That way it can be used anywhere, not just on Kirby projects.

I’ve worked on both large e-commerce shops and very small niche stores. For larger projects I would always recommend Shopify or Magento. As soon as you need tons of products, variations, discounts, multiple payment & shipping options, etc… these systems are a godsend.

I have experimented with Kirby for small one-product stores and found both Cartkit and Stripe Checkout for Kirby to be really good solutions. I ended up implementing my own fork of SCK for a website without a cart.

From my experience, Kirby works great for storing a small numbers of products as subpages with a custom template. A basic blueprint will make it easy for the client to edit his products in the vanilla Kirby panel without more modifications. SCK allows you to simply slap a Stripe checkout button on the page with 2 custom fields in your blueprint. Combine these two and you can have a functioning store in less than an hour. Granted you don’t have any customization options at all if you go down this path, but it’s dirty easy to set up and stable as hell.

It’s a general talk… It’s not about do this and that. i have working things already set up, so i am not really looking for an replacement, but just thinking about ways to optimize what i already have.

I have already integrated several payment methods such as stripe which use the same methods all over again.

i have a friend who is working exclusively with magento and he said magento eats up resources like no other, so it probably only makes sense for bigger-ish retailers to go that way.
i also think many functions and the way magento works is set into stone.

the kinds of clients / and my own need i have, i would not need an all for one solution which is overwelming to use.

i have seen all those cartkit and shopkit, and my attempt is more in these kind of size.
my custom kirby store has put out about 700 orders in just a few days, so in terms of performance or “size restrictions” i wonder when i’ll hit the roof.

can we just forget the “I’d use shopify or magento talk” … i am just looking to optimize what i have.

to illustrate what i am looking for, there are several options to design checkout and payment process, such as

  1. cart
  2. checkout ( data + payment option selection )
  3. payment options ( gateway )
  4. success

in the code it’s most likely the order gets created at sometime and a customer has one shot to make the payment of his choice…

but it could also go this way:

  1. cart
  2. checkout
  3. showing order page (with selection for payments)
    customer can return at all times and choose different gateways
  4. further process after payment has been verified (ipn/stripe/etc.)

another question for me is

  • registering or not

anyone has made huge differences in providing a cart/shop without user registering in comparsion to having the need to register? i can just talk for myself, when i know i’ll probably buy from a certain store only once, having to register is kinda annoying.

Don’t force buyers to register before they can buy. Nobody likes filling out forms. Create them a basic account from what they enter during the transaction, and bash them an email afterwards to say they can check out faster in future if they save their details.

Another trick i have used on the custom systems i have built is to try and get their email address as soon as possible. That way, if they put stuff in the cart, and then leave without buying, you can email them and say “Are you still interested in these things? Click here to jump straight to the cart”.

You can also use javascript to detect the mouse moving off the top of the viewport. If the’ve put stuff in the cart and then head to the address bar to leave, you can pop a window to say HEY!!! DONT GO!!! YOU HAVENT GOT YOUR STUFF!!

In my experience, the battle is getting people to start the checkout process, and not so much the process it self (which of course should be as short and sweet as possible).

You can’t do this in Germany. You need consent of the potential customer to send them an email.

You do in the UK too. It’s usually done with a “Yes, I would like to receive marketing communications” tick box along side the email entry field. Some sites are crafty though, and make the tick box an opt out, rather then an opt in. Im guessing that would not be legal in Germany.

I don’t think this is legal, not 100% sure, but I find this behavior very annoying personally and the more these shops try to lure me into giving my data away all the time, the more I am inclined not to buy anything from them. This whole data collection stuff is really putting me off more and more. Luckily, there are at least some laws here, when I think about what they are doing in China :scream:

Oh me too, I am very private and give people nothing if I can get away with it.

I must admit, I did fall for the trick on the stacksocial site (owned by SitePoint). If you sit on the store for long enough without moving off the page, they pop a window asking for your email in exchange for 10% off your first order.

can we just forget the “I’d use shopify or magento talk” … i am just looking to optimize what i have.

I’m sorry if my reply came over like this. I deliberately used language like “I would recommend”, “I have experimented”, and “from my experience” to clearly state what my past experience with this kind of situation was and what insight I could maybe offer on this topic.

To reiterate my conclusion: I found that Kirby doesn’t really lend itself to cart-based shops, but it does work great for simple PayPal/Stripe payment buttons. This simplifies the checkout process to:

Product page with Stripe button -> Button gets clicked, modal opens -> Users pays through Stripe modal checkout -> Stripe has a callback function that you can use to redirect to a success page.

This solution eliminates the need for a cart and you keep track of your orders through your Stripe dashboard. It’s very basic, but it works for niche low-product sites, so I thought I’d share it in this thread.

@carstengrimm It would probably easier to get feedback if you would put in a link to your shop. Then we don’t need discussions about the right tools for a shop but you would actually get feedback on the experience. Without a clear view of what you already have, of your type of shop etc., you will probably not get the sort of answers you are looking for and this discussion takes place in a vacuum.

i assume german also regulate a basic idea of how a checkout process should look like, we have another topic about that here in the forums already.

i have been playing around where a temporary order gets saved everytime the cart changes, data such as customer details are saved as they go though the process of checking out, in the end let’s say if the cart was never picked up again, it’ll delete itself within a few days… sending emails like that would be a bit risky as @texnixe said.

i guess it depends on the product. for my case they can only buy it from me, so it’s either do or don’t. the process itself … i am not sure … as said when running another system the product was the same, the process different and yet, extremely better results after changing it to be easier for everyone. (simple checkout, no registering) not sure what was the main factors to triple sales…

I more then doubled the turnover on one of my stores simply by making the form more responsive and increasing the size of fields and text.

I also dropped the javascript datepicker on mobile devices so that it fell over to using the phones UI for date and time entry. This had a big, positive effect on sales.

Additionally, I took great care with the language used to describe the fields, and what the different bits did. For instance, if your usual demographic is people over 50, validating a name field with “Pop your name in here, my friend” might not got down as well as “Kindly enter your first name”. It might be worth looking at your Google Analytics data if you use it, because will give you your key demo graphic, so you can set the tone of language.

In general, steer clear of generic “Enter your name” messages, and put a little personality into it.

Also, consider using a postcode lookup service so that much of the address can filled out automatically from just entering the property number + postcode. Saves the user typing so much. I dont know how German postcodes and addresses work, in the UK this is enough to get the full address because the postcode pretty much identifies the road.

i have never seen any sort of date field while being on checkout pages …

i am using generic descriptions such as

{{field placeholder:Max}}

{{field placeholder:Mustermann}}

lookup service, i have been using google maps api at other projects before, i am not sure if that’s a guarantee that every entry is accurate… though… helping or not, most of the time when using the regular field names, it should already give suggestions on past entries. given the email field shows previously typed email adresses.

i have been living in the UK many years ago and for germans the postal code system there was a mess. Couldn’t figure out sh*t there. Here there are area codes each state, city and district has it’s own number starting with


it’s not tied to street adresses though. It’s not like i could figure out which city and postcode matches together. So in most cases it’s up to the user. If they put in gibberish but still valid in terms of entry, I’d contact them. If the user is providing a real address for a digital download … i am not doing ID checks…

I have seen users ordering with “noemail advertisementplease” as first and lastname, even though there was not any type of registering going on. oh well…

Sadly, I have for entering card expiry dates, and for some cards in the UK, a start date is also required, and you need to supply date of birth sometimes as well.

ah yes, i remember… they even have debit and credit card which act similar…

isn’t that something stripe / paypal would manage for you? or any other payment service which is being called by the process? since you are not charging the cards just like that i’d assume.

It depends. I really hate the process some stores take where you get redirected to a payment gateway to pay and then sent back to success page on the actual shop. I would never use something like Gumroad or Paypal, because of that.

It’s why I like SnipCart so much - although they use services like Stripe to actually process the transaction, you have control over the cart and you don’t get taken away to a third party during the process. SnipCart collects it all up front and the posts it to whatever payment service you configure in its control panel. The customer never leaves your site in the process. That is a huge plus for user experience.

they also rely on the same payment processors, so isn’t there the chance to mimic what they are doing but without giving up on another 2 % which they charge you?

stripe is semi not leaving the site,
paypal sucks in this regard, would love seeing some overlay
others i have tried also usually go though externally and come back to a success page

Well they probably use Stripes API to interact directly with Stripe, rather then the easier way of sending the customer off to a Stripe powered payment page on stripes servers. If you tapped into that directly, you could probably avoid the commission, or reduce it to a minimum.

I dont have the skills for that, its all API stuff and I worry about the security of doing it myself. Im super happy for SnipCart to deal with it for me, even if it means paying a small fee.

that would be for credit cards, i have read the stripe docs and there it describes to create a charge with a custom form and call the api, but paypal would still redirect externally? or let’s say mollie as well…

well security is important, they are confirming card details for you and return a response. you gotta still check it against your order that the charged amount and stuff still is the same. it’s not impossible …

that’s the neat thing with payment pages, you do not get to work with any sort of critical card details… if they entry it right into your own form, they might assume you’re the bad guy if anything gets out of hand…