In the last month before we started, the café took 435M IDR. In August it took 939M IDR — and we can show, guest by guest, how much of that advertising actually paid for.
Net revenue per month, millions of IDR, taken from the café’s own POS. Bali has a season, and part of this curve is the season — so the honest control is the same month a year earlier: August 2026 came in 40% above August 2025, when the café was running without advertising at a flat 21M IDR a day.
Google measures store visits from location data: someone saw the ad and later walked through the door. It is the only paid metric for a café that corresponds to a guest rather than a click — and it is the one we optimised against.
July and August answered a question worth asking out loud: the budget went up, the visits did not. The extra money was buying a more valuable guest, not a bigger queue — which is exactly the signal to stop raising the budget and start working on the bill.
Nobody books a café. They open Maps, look at four photos, read one line, and decide. That listing — not the website — is where a café is actually chosen.
We rewrote it, rebuilt the photo set and the menu, and started reading it as a channel with its own numbers, next to the campaigns feeding it. Views went from 20,329 in March to 204,017 in August.
A café’s own website is built for reading. An ad click needs something else — one screen where the next step is obvious: the menu, the route, a table, the delivery apps.
So we built that screen and pointed every campaign at it. It speaks ten languages, switching automatically to the guest’s own, and every tap on it is an event with a source attached — which is what made all the measurement on this page possible.
Most venues in Bali put a PDF behind a QR code. It cannot be edited without a designer, it cannot be measured at all, and on a phone it is unreadable.
We built the café its own constructor instead — not a page we hand over, but an admin panel the manager works in. Sections and dishes, prices, photographs, links to anything, and story-style cards for a new dessert or an event: added, reordered and switched off in a couple of minutes, without us and without a developer. Publishing is instant, in all ten languages.
And because it is a real page rather than a PDF, every opening is counted.
Someone who opened the menu is not a stranger any more. They were hungry, they were nearby, they read the prices. That is the most valuable audience a café has — and in most venues it disappears the moment the guest closes the tab.
The page carries the pixel, so it does not disappear. Menu readers, people who asked for the route, people who tapped to book — all of them collect into audiences and come back later as advertising: the evening menu to those who came for breakfast, a private event to those who kept returning.
And ASAI is not only a café. The same audience is the warmest one the spa, the villas and the gym in the same complex will ever get — a guest who has already been on the property. From the café page alone, 924 people opened the spa and 116 walked over to it. The converters are also synced into Google Ads as a signal, so Performance Max looks for more people like them.
Approximate audience sizes as Meta reports them, 180-day window. One person can be in several of them.
Meta was spending about 435,000 IDR a day and reporting plenty of activity: reach, engagement, taps on directions. On paper it looked like a working channel.
So we switched it off for a month and read the till. Bills per day moved by −1.2 — inside the ordinary day-to-day noise, while Google’s budget went up 44% over the same weeks. The traffic Meta was buying was largely local, cheap and it tapped “directions” without ever arriving.
The money moved to Google, where a visit that actually happened cost about 35,000 IDR. Meta came back later in a much smaller role, on the audiences it does win.
This is the part most reports skip. A channel’s own dashboard will always report success; the only way to know what it adds is to remove it and watch what the business does.
Bills per day went from 47 in March to 83 in August. Over the same months the average bill rose from 308,000 to 364,000 IDR — because the guest mix moved towards the international visitor that search brings, who orders a full breakfast rather than one coffee.
That second number is the quiet one. Revenue in a café can double without a single extra table if the room in front of you changes — and it only changes if you know which channel is bringing whom.
Every channel claims the same guest. So we built the model the other way round: the POS says how many people really paid today, and each channel has to explain its share of that number — with the coefficients calibrated on the two months when there was no advertising at all.
Roughly three guests in four arrive through Google — half of them paid, half of them the organic listing. Which is why the listing and the campaigns are managed as one thing, not two.
Share of paying dine-in guests, June 2026. Paid search is counted gross: some of those guests would have found the café anyway, and we hold the incremental figure closer to 22% when we decide about budget. We would rather show you both numbers than the flattering one.
A café is decided in ten seconds, on a phone, by someone standing two kilometres away. Nothing in that journey looks like a funnel, and almost none of it shows up in an ad account.
So we tied every channel to the one number that cannot lie — the POS — and let that decide where the money goes. Some channels grew. One got switched off.

A café in Bali is not sold, it is chosen. Nobody plans breakfast a week ahead or compares five places in a browser tab. Someone wakes up in a villa in Jimbaran, opens Google Maps, looks at what is within a few minutes’ drive, glances at the photos and the score, and drives. The whole decision takes less time than reading this paragraph.
That has two consequences for marketing a restaurant or café here. The first is that the Google Business Profile is the product page — the photos, the menu, the opening hours and the reviews do more selling than any website. The second is that the conversion is invisible: there is no form, no booking, no order confirmation. There is a route request, and then, maybe, a person at a table.
So the whole job becomes a measurement problem. For ASAI Café we optimised Google Ads towards store visits rather than clicks, ran the listing as a channel with its own reporting, split the campaigns by daypart — a separate evening campaign for dinner, a separate search campaign for private events — widened the radius to the 12 km that people in Bali will genuinely drive, and checked all of it against the POS every month.
And when a channel could not justify itself, we turned it off and measured what happened. That is the difference between a report and a decision. It is the same system we run for hospitality businesses across Bali — the service page for restaurant and café marketing in Bali explains how we start, the ASAI Spa case study shows the same approach in wellness, and the rest is in our case studies.
A café is not booked in advance — it is chosen on the spot, usually in Google Maps, by someone who is already within a few kilometres. So the base is a Google Business Profile run as a sales channel, plus Google Ads aimed at store visits rather than clicks. For ASAI Café in Jimbaran that combination produced 3,386 measured store visits in five months at about 35,000 IDR each, against an average bill of 364,000 IDR. Everything else is checked against the POS, because the till is the only honest count of who actually walked in. We start with a free audit.
For ASAI Café, Google does — both halves of it. In our attribution model, calibrated against the POS, Google Ads accounted for roughly 40% of paying dine-in guests and the organic Google Maps listing for another 34%. Repeat and nearby guests made up about 18%, villa guests 4%, and Meta about 3%. Social advertising drove reach and route taps but very few actual arrivals, which we confirmed by switching it off.
In this case they did not, and we could prove it. Meta was running at about 435,000 IDR a day and generating plenty of route taps. We switched it off for a month and compared the POS: bills per day moved by −1.2, which is inside the daily noise. The traffic was largely local, cheap, and it tapped directions without arriving. We moved that budget into Google, where a measured visit cost about 35,000 IDR. The point is not that Meta never works for F&B — it is that you can only find out by turning a channel off and reading the till.
It is the shop window. Over five months the ASAI Café profile was seen 830,000 times and produced 14,221 route requests and 7,684 menu views — the listing itself, before anyone reaches a website. Views went from 20,329 in March to 204,017 in August. For a café, the profile is where the decision is made, so it is worth writing, photographing and measuring as carefully as a landing page.
ASAI Café spent 158M IDR across Google and Meta over five months against 4.12 billion IDR of revenue — about 3.8% of turnover. That is a workable band for an established café, but the share matters far less than knowing what the marginal money buys. We raised the budget in steps and stopped each step when the extra spend stopped adding measured visits — which is how we found that beyond a certain point Google was buying a higher average bill rather than more guests.
We will go through your Google Ads, Meta, Google Maps listing and your POS numbers, and show you what works, what leaks, and where the budget should go.
Data: ASAI Café, Jimbaran, Bali, January — August 2026. Sources — the café’s Syrve POS (net revenue, bills, average bill), Google Ads (spend, store visits), Meta Ads (spend), Google Business Profile (views, route requests, menu views, website clicks). Revenue is the whole business, not advertising alone: a café’s till includes walk-ins and regulars with no digital trace, and we say so wherever we attribute a share of it.