The Road to a Merchant SuperApp


By Sooraj Rajmohan

Earlier this year, during a visit to Gojek’s HQ in Jakarta, a few of us from the Gojek Marketing team had a craving to try Indonesia’s famed fried delicacy — pisang goreng.

Today, fulfilling such food cravings is a simple process. GoFood — Gojek’s food delivery product — lists 400,000+ merchants. You search for the outlet you want to order from, select the item and quantity, check out, and pay either via cash or Gojek’s digital wallet GoPay. Then, you sit back and watch the little Gojek driver partner on the screen zoom their way to the restaurant, and bring you some fried banana goodness. 😍

Simple. Fast. Reliable.

Rewind a few years, and things didn’t look so good.

First, some context

When GoFood launched in 2015, expansion and adoption happened rapidly. The orders started piling in, and we were struggling to keep up with demand. Initially, we’d simply list food merchants on our marketplace, send demand their way, and fulfil it through our fleet of driver partners.

We were building for our consumers and driver partners, but merchants were always a key component of our ecosystem. If Gojek is an iceberg, the consumer-facing Super App is the part above water. In this story, we’ll dive beneath the surface to explore another key component — GoBiz, our merchant SuperApp.

But before GoBiz, there was GoResto.

The Merchant Problem

If we had ordered ourselves that pisang goreng in the early days of GoFood, things would have worked very differently.

You see, merchants were onboarded by the GoFood team by uploading their menus to our systems. We’d look through these menus to find our fried banana of choice, and make an order, which would be relayed directly to a driver partner. This partner would then go to the restaurant and place the order (which is when the merchant partner gets involved in the process).

So, while our bananas are fried, the driver partner would wait around, and when the order is ready, pay in cash. The problem with this approach was that there was no record of the transaction besides a booking on GoFood and a receipt handed to the driver partner.

This was an inefficient system, for driver partners, and our customers.

Oh, and those merchants? Things weren’t rosy for them either.

Let’s assume our pisang goreng place is a GoFood partner (meaning Gojek collects commissions for the increased demand we send their way), and also part of a larger chain. When we place the order, GoFood will assign it to one outlet of the chain. However, our driver partner may decide to visit another outlet and pick up the order from there.

At the end of the month, our restaurant partners would be invoiced for commission that was due to us, based on sales as reported by the GoFood app. This meant we were charging some merchants commission for sales their outlet may have never made.

We spent a lot of time and resources addressing merchant complaints. 🤦‍♂️

Then there was the matter of control.

If a merchant partner was not open for business on a particular day, wanted to update their menu, or indicate items as out of stock, they had to call Gojek Customer Care. During this time, orders might still be coming in.

Let’s just say we weren’t doing ourselves any favours. 🤷🏻‍♂️

There was a lot that needed fixing here, and it could only be done by integrating merchants more deeply into our ecosystem. So that’s what we did.

The birth of GoResto

Towards the end of 2016, a concept was developed for an app that would cater to GoFood merchant partners, and by early 2017 GoResto — which is what we called it at the time — was ready. You can read more about the product research process that went into making GoResto here).

With GoResto, we addressed some of the problems outlined earlier.

1. Electronic payments

All of Gojek’s driver partners had GoPay e-wallets associated with their accounts. With GoResto, we did the same for GoFood merchants. Transactions between driver and merchant partners would now be wallet-to-wallet, not cash. Gojek would deduct any applicable commission immediately from the merchant wallet. This made the reconciliation process with merchants simpler.

2. PIN exchange for restaurant verification

To eliminate fraud, driver partners would also need to share a PIN with the merchant while picking up the order. This electronic handshake helped us verify they were indeed picking up the right order from the right outlet.

It was a decent solution. If all went according to plan, we could breathe easy.

As you might have guessed, all did not go according to plan. 🙇‍♂️

In the first iteration, the wallet creation process required collaboration with the GoPay team, which was itself facing bandwidth constraints due to rapid growth (which we’ll talk about a little later).

Also, the merchant onboarding to GoResto at this point was still a manual process. In our first month, we onboarded only 26 merchants. 😣

We needed a more scalable solution.

Here’s a quick note on Gojek company culture. When the chips are down, it’s important for organisations to have core values to guide decision-making. One of our values happens to be:

This line is an affirmation to all stakeholders to take the best decision for a particular situation based on available information. Such decisions are then respected by everyone else.

We made two drastic decisions:

  1. Merchant onboarding was completely frozen until we could build a platform to automate the process.
  2. Engineers from the Merchants team were embedded within GoPay, building required capacities on GoPay systems while core GoPay engineers continued work on scaling the platform.
In three months, as summer rolled around, GoResto was back.

We weren’t out of the woods yet though. All this was happening before Gojek had deprecated its legacy codebase, Stan Marsh, in favour of microservices, so system stability was not exactly excellent. As a result, we still faced sync issues between GoFood and GoResto order management systems. This, in turn, began to reflect on us publicly.

Our app store rating at this point slid down to 3.2.

Make It Work, Then Make It Better

We clearly had a long way to go to make GoResto the app our merchants deserved. Things were bad, but as they say — sometimes the only way out is through.

Challenge accepted. 💪

First things first, we went about fixing the sync issues by building a second system to replace our unreliable version. Not only was this accomplished, but all onboarded merchants were migrated to the new system, with zero downtime. Read more about how this was done in this post.

One small win.

Now for the real problems, giving merchants the control they needed over how they were represented on GoFood. The first self-serve feature we introduced to GoResto was allowing merchants to update their restaurant status in real time.

Another small win.

We had unlocked a critical component in product design — empathy for the people you’re building for. The question now was — what can we do that will make life easier for our merchants?

Item availability? Understood.
Menu updation? Got it.
Pricing adjustments? Why not.
Add categories? Move items between categories? Update images?

Done, done… and done. ✅

Our systems were stable, early teething troubles were addressed, we were finally solving the problems that needed solving.

Build It Right, And They Will Come

As GoResto grew in functionality, we began

slowly earning back the goodwill of our merchant community. Soon, our app store rating began to reflect that.

App store ratings reflecting how customer goodwill can be earned back ✌️

We didn’t need to push GoResto to merchants anymore, it was adopted due to the ease of doing business it offered.

It was long overdue, but we had accomplished what we had set out to do. There was finally a moment to sit back and enjoy the sunrise.

Or so we thought.

The rest was short-lived. Southeast Asia was abuzz with activity. According to this report, the value of the Internet economy in the region tripled in the years since 2015. The Gross Merchandise Value (GMV) projection for 2025 is estimated to be $300 billion.

To put that in perspective — in 2016, that projection was $100 billion.

Even as GoResto was being built, there was another behemoth stirring under the rich waters of Indonesia’s digital payments landscape. GoPay, which had been rapidly growing in this favourable environment since its arrival in 2016, was now being used by roughly three-quarters of digital payments users in Indonesia.

But we wanted more.

In 2018, GoPay introduced offline acceptance, bringing a whole new category of merchant partners into our ecosystem.

Our existing solution wasn’t good enough anymore. It was time to evolve.

Keep watching this space for the continued story charting GoResto’s evolution into our full-fledged merchants platform — GoBiz.


Want our updates beamed straight to your inbox? Sign up for our newsletter!