About Parfumado
Parfumado offers a monthly perfume subscription and delivers a perfume, of your choice, to your doorstep. It's a webshop that runs on top of Shopify. Shopify does not support recurring subscription payments for European payment methods, like: iDEAL, Bancontact, etc. To facilitate these EU payments methods, a fully custom checkout was written using a Shopify App Proxy. We implemented a custom payments processing flow through Mollie, which makes it possible to store bank accounts and credit cards mandates to enable recurring charges for active customers.
API integrations & Shopify extension
Because of the limitations of the standard Shopify functionality Parfumado required an external system to perform data processing. By creating a custom Ruby on Rails middleware application extending the ShopifyApp library we are able to consume the product and customer data present in the Shopify store and enrich it where needed. Through this solution we integrated external API's for services like Mollie, PostcodeNL, Mailchimp and more.
This also allowed for extra information being stored which made it possible to provide the customers with a calendar scheduling tool to manage their perfume selections. Besides enriching the data this middleware also provided highly customised pages and components which, through leveraging the Shopify App Proxy, are still run inside of the context of the Shopify store itself and thus maintaining a smooth and coherent user experience.
Due to the middleware running in a separate environment we also had the possibility to introduce high performance background processes, introducing optimisations based on Parfumado's steadily growing customer base. An example of one of these processes is the product locking which happens twice a month to confirm perfume selections, schedule recurring payments and create the monthly orders. This way thousands of orders are created in Shopify without the need of manual actions.
Mollie Recurring payments
When customers first checkout on Parfumado, powered by Mollie, their credit card or banking account is stored to make automatic subscription payments possible. Every month, all active subscription customers are charged automatically. For any subsequent subscription payments, the customers does not need to interact in any way with the Parfumado website and all funds are requested from their bank (using SEPA) or credit card network, automatically.
There are some scenarios where user interaction is necessary. If your subscription renewal payment fails for whatever reason, an automatic mailing is sent out by the Rails application warning the customer that their payment has failed. The most frequent reasons of failure are: insufficient funds, card network decline, SEPA mandate decline, and manual chargebacks. In case of a failure, the customer will still receives their perfume. Within the email that is sent to the customer, there is a link that they can follow the link in the email to fulfil their outstanding payment directly through Mollie.
Having this automatic retrying of failed payments is key when using SEPA for collecting money from customers.
Vue.js frontend
The interactive elements of the Shopify store is written in Vue.js. One of these elements is the perfume calender, where customers can drag and reorder their perfume choices for each month.
The custom checkout for Parfumado was also completely written in Vue.js. The checkout is assisted by country specific address autocompletion. Based on zipcode and house number, your address will be searched, validated and normalised to minimise risk of orders being recalled due to wrong addresses.
The account overview page are also powered by Vue components. Things like counting down to your delivery date, displaying your payment methods and choosing your referral rewards.