custom_app

Building an OMS for made-to-order products with a custom app using Shopify metafields

Introduction

Our company's own apparel brands are also sold by order production.

One of the things that surprised me when I tried out my job to support building a Shopify site is that there are many businesses that have established their business in order-made production, which takes several months after receiving an order from customers and produces products.

If you have mass production and stock, the manufacturing cost per product will be lower, and we can respond to your needs for products right now.

However,

“I don’t want to risk it because I can’t figure out how much it will sell at the time of brand launch.
• With a small team focused on making things, we want to avoid taking on inventory risk

For other reasons, such companies have chosen to make their own orders.

Of course, in order to establish a custom-made production business, it is necessary to have the product power and brand power that customers want to buy from you even if they wait a little while.
Also: The EU bans the disposal of apparel As such, I think it is very favorable in the sense of creating a sustainable society.

User Payne: There’s No OMS For Order Production

One of the pains that such business operators have is the lack of an Order Management System (OMS) suitable for order production.
OMS is a system that manages the operations from order order to shipment, and usually products sold in stock are managed as follows at OMS.

  1. confirmation of payment for an order
  2. allocate inventory to an order
  3. issue of a shipping slip
  4. delivery of a pre-shipped notice

In the case of custom-made production, unlike above, it will be the following process.

  1. confirmation of payment for an order
  2. to collect orders for a certain period of time and order goods from the manufacturer
  3. contacted the customer that they had started manufacturing to resolve their concerns while waiting for the order-made product
  4. inspection from a manufacturer
  5. You’ll be notified that you are about to ship (and confirm the delivery date and time).
  6. issue of a shipping slip
  7. delivery of a pre-shipped notice

In other words, there is a process called “production management” between ordering and shipping, but the OMS in the world basically assumes an inventory business, so I decided to build my own OMS exclusively for order production on one project using Shopify’s custom app (a framework that allows Shopify to add its own features).

To make it an easy-to-operate app: A policy to build custom apps

Our company has the following policy when building custom apps.

The company says it’s working with existing apps to reduce the amount of time it takes to build a new app.
The company says it’s working to make sure that the data isn’t held on the app side, but rather on Shopify’s meta-objects, metafields and order tags so they can save development costs while also running a fast, low-cost server infrastructure.

technology stack

We built it with the following technology stack.

Servers: fly.io

Reasons for selection:

  • Easier App Deployment
  • The presence of the Tokyo Region allows for high-speed operation when used from Japan.
  • Redis Gets Free, Cost-Performance With A Delayed System That's Necessary for Shopify Communication

Reference: fly.io pricing structure

Resources free frame paid quota rate system
CPU 3 shared vCPUs are free. dedicated vCPU $0.0025/vCPU/hour (approximately $1.80/month)
memory three, 256MB total. additional memory $0.0000005/MB/sec (approximately $1.30/GB/month)
storage 3GB additional storage $0.15/GB/month
bandwidth 160GB/month additional bandwidth $0.10/GB
IPv4 address shared IP dedicated IP 2/month/IP
PostgreSQL (Fly Postgres) no free tier small-scale database a minimum of $5/month
Redis (Upstash) There is a free window. additional capacity variation according to the amount of

Main features:

  • Hobby Plan: Free Hosting 3 Apps (up to 256MB each)
  • Scaling up/out: a pay-as-you-go system that allows you to increase resources as needed
  • Region: Selectable from over 30 regions around the world
  • No Minimum Fee: You pay for what you use

Rails-specific considerations:

  • At least 512MB-1GB of memory is recommended for web apps
  • Efficient to Deploy an Additional Small VM for a Worker Process
  • Databases are typically run as a separate VM or managed service.

Framework: Ruby on Rails

Reasons for selection:

  • because i'm used to simplicity.
  • Tobi, the founder of Shopify, is also a well-known Rails core committer and I’m not a code writer but an image that super engineer runs.

Sending Email: Sendgrid

Reasons for selection:

  • You can easily send e-mail through APIs.

system conceptual diagram

We have implemented a system with the following features:

  1. Ability to automatically create meta-objects in an app and manage production contractor information

It is possible to register production contractor information through meta objects.

  1. the function of registering information on whether or not a product is commissioned production in commodity data through meta-fields and linking subcontractors registered by 1.

It is possible to register whether the product is contracted production or not by true/false, and link the product information with the production contractor registered in 1.

  1. the ability to tag orders from customers when they order a product, thereby narrowing down orders that contain the product on Shopify

When there is an order that includes the product of the order production based on the contents entered in 1 and 2, it was possible to narrow down by tagging the order.

  1. The ability to manage the order by true/false, whether it has been ordered from a subcontractor or delivered by a subcontractor; when that becomes true, we will automatically notify you via email and alleviate anxiety while waiting for your outsourced production order.

We set up a flag to manage whether we ordered each of our order information from the production contractor or delivered it from the production contractor, and built a mechanism to send e-mails to customers when they become YES.

  1. To efficiently perform an ordering operation to a production contractor by implementing a function for summarizing orders of consignment production for a specific period from the screen of an application by product number.

The order information for a specific period of time can be downloaded from the app dashboard in CSV data, making it easier to place an order with production contractors.

effect

What’s important in the EC business is not sales, but profit from sales.
Increased sales has to change others, but lowering costs can be done with their own actions.

Especially with the development of AI, I think that in an era when the success or failure of business is divided by how resources such as time rather than money are used, not only will mistakes be reduced due to this efficiency but also we can create time for dialogue with customers by making the work of staff related to E-Commerce easier.

In the non-standard world, we offer consultations and custom apps to improve the efficiency of backyard systems such as system construction. here Please contact us from here.

article category