An online booking service for beauty salons in Almaty charges a salon 12,000 ₸ a month after two free weeks. It has no sales team. A salon owner finds the service on Instagram or in search, signs up, sets it up herself or with a receptionist, and decides on her own whether to pay. In the monthly report the marketer writes: "200 new salons at an average of 7,800 ₸ per sign-up." The founder replies with one question: "And how many of them paid?" The numbers in this lesson are made up.

What product-led growth is and why a marketer should care
Product-led growth, or PLG, is a model in which the product sells itself. People try it for free, with no call from a salesperson and no demo, and pay once they have already got something out of it. A sales-led company works the other way round: first the demo and the negotiation, then access.
For a marketer this has an awkward consequence: in this model a sign-up is the middle of the funnel. Two weeks pass between the ad click and the payment, and during that time the salon is working inside the product: adding staff, setting up the schedule, waiting for clients. Whether it pays or leaves depends on those two weeks, and what happens in them is visible only in product data. The ad account and GA4 finished their part of the job at the sign-up.
The image shows the same gap on a reporting service: the person looked at the demo data but only solved their problem once they saw their own spend and sales. The booking service has its own version. A salon opens a calendar filled with sample bookings and has not got any value yet.
The funnel: from sign-up to payment
Before the service, a salon books clients through WhatsApp and Instagram direct messages. The service promises that clients will book themselves through a link. Until that link is live, the salon just has one more calendar to fill in by hand. Here is the funnel for one month of new salons:
| Stage | What the salon did | Event | Salons |
|---|---|---|---|
| Sign-up | Created a salon account | salon_signed_up | 200 |
| Setup | Added staff and services | service_added | 130 |
| Activation | Turned on online booking within the first 7 days | online_booking_enabled | 80 |
| Aha moment | Got its first booking from a client before the trial ended | booking_created with source = online | 60 |
| Payment | Paid for the subscription after the two free weeks | subscription_paid | 50 |
This is not a strict funnel: three salons got a booking after turning it on later than day 7, and four paid without any online booking. And the 50 paying salons can only be counted once the trial has ended for the last salon of the month.
Activation is the first step after which the product can deliver any value at all. Online booking is on, and a client can book without going through the receptionist. Until then the salon has got nothing, however many stylists it has added. The team is trying to raise the share of salons that turn on booking within 7 days with an A/B test of a guided setup, and right now it is 40%.
The aha moment comes when a person sees the value in their own data. The receptionist opens the calendar in the morning and finds a booking a client made on her own at 11:40 pm, without a single WhatsApp message. The salon reaches activation by itself, but the aha moment also depends on its clients, so it comes later and not for everyone: of the 80 salons that turned on booking in the first week, 57 got their first online booking before the trial ended, plus three of the salons that turned it on later.
Time to value is how many days pass from sign-up to the aha moment.
Finding the aha moment in the data
The first online booking is only a candidate so far. To call it the aha moment, you compare the share of paying salons among those who reached it and among the rest. Of the 60 salons that got an online booking during the trial, 46 paid, or 77%. Of the other 140, four paid, under 3%. For a candidate that is a good sign: the event almost splits salons into those who stay and those who leave.
The link says nothing about cause. A salon with lots of regular clients and a tidy schedule will get a booking through the link sooner and will be more willing to pay, so the booking may be a result of how ready the salon was rather than the reason it paid. Only a test can show whether payments go up if the first booking comes sooner. The same check is done on retention, and the retention curves for those who did the action and for everyone else are each built on their own number of salons.
The link is useful even without a test: it tells you whom to watch in the first week. A salon that has not turned on booking by day seven will most likely not pay. In the table below there are 120 such salons, and four of them paid.
Time to value and the trial
The median time from sign-up to the first online booking for those 60 salons is 5 days. The median only counts those who got there, so next to it you always write how many did: "60 of 200, median 5 days." Without the second number a team can speed up the path for the fastest salons, lose the rest and report an improvement.
The trial lasts 14 days, and this is where time to value turns into money. Let's split the salons by when they turned on online booking:
| When they turned on online booking | Salons | Got an online booking during the trial | Paid |
|---|---|---|---|
| In the first 3 days | 50 | 45 | 36 |
| On days 4-7 | 30 | 12 | 10 |
| Not within 7 days | 120 | 3 | 4 |
| Total | 200 | 60 | 50 |
Salons that turned on booking in the first three days got a booking from a client before the trial ended in 9 cases out of 10. Those that did it on days 4-7 managed in 12 cases out of 30, and they had 7-10 days left for clients instead of 11-13. It looks as if some salons simply run out of time: the two weeks end before clients find the link. But there may be another explanation. A salon that drags its feet on setup may not need the service that much.
Changes to the product can tell the two explanations apart. You could count the 14 days from the moment booking is turned on rather than from sign-up. You could help the salons that are stuck: on day three, send a WhatsApp message to every salon that still hasn't turned on booking and offer to set it up together over the phone. A call doesn't break PLG as long as it comes where the salon got stuck. Each change is tested on new salons, and at 200 sign-ups a month a test takes several months. Comparing salons that accepted the call with those that declined is quicker, but it gives no answer: the ones who accept are the interested ones.
Channels: count paying salons, not sign-ups
Now back to the marketer's report, with the same funnel split by channel:
| Channel | Sign-ups | Turned on booking within 7 days | Paid | Spend | Per sign-up | Per paying salon |
|---|---|---|---|---|---|---|
| Instagram ads (Meta) | 120 | 36 | 20 | 960,000 ₸ | 8,000 ₸ | 48,000 ₸ |
| Google Search | 50 | 26 | 16 | 600,000 ₸ | 12,000 ₸ | 37,500 ₸ |
| Booking page link and referrals | 30 | 18 | 14 | - | - | - |
| Total | 200 | 80 | 50 | 1,560,000 ₸ | 7,800 ₸ | 31,200 ₸ |
On cost per sign-up Instagram wins: 8,000 ₸ against 12,000 ₸ for search. On cost per paying salon it is the other way round, 48,000 ₸ against 37,500 ₸. For Instagram that is four months of subscription, for search a little over three. One in six salons that signed up from Instagram paid, and almost one in three from search.
The table does not say why. A plausible hypothesis: in search the salon is looking for booking software itself, so it already has the problem, while Instagram ads also reach salons that never thought about online booking. For one month the gap in the share of paying salons, 17% against 32%, is already noticeable, but it is a single cohort. Wait for next month before you move budget.
The third row is the product acting as a channel. Every salon's booking page carries a "Booked via" link with the service's name, and clients see it, some of whom own salons themselves. Through this link and through referrals, 30 salons arrived without any ads, and 14 of them paid. To see this channel as its own row, the link gets UTM tags following the shared scheme, and the sign-up source is stored in the event analytics.
There is one more consequence for the ad account. It is tempting to give Meta activation as the optimization event so the algorithm looks for salons that will turn on booking. But Instagram brought 36 such salons in a month, about eight a week, and an ad set gets the Learning limited status when it is unlikely to get about 50 optimization events in a week. Even sign-ups from Instagram run at about 28 a week, also below the threshold. Sign-up is the most frequent event the campaign has, so the campaign learns on it and runs as one ad set rather than splitting the budget. The marketer judges the ads directly, by activations and payments in the product analytics.
Which questions to put to event analytics
Some answers are already in the service's database. It has the date each salon signed up, the date it turned on booking and the payment date, and a developer can get the monthly activation rate with one query. Event analytics is for questions about the path: at which step, after what, in what order and from which channel. For the booking service the list looks like this:
| Question | What the tool has to do |
|---|---|
| What share of salons that signed up this week turned on booking within 7 days? | A funnel with a 7-day window, by sign-up week |
| At which setup step do salons get stuck? | A step-by-step funnel: staff, services, schedule, turning on booking |
| How many days until the first online booking, and how many salons got one? | Time to convert by salon, shown together with the share who converted |
| How did paying salons behave differently in their first week? | Behavioral cohorts and a comparison of their actions |
| Which channel brings the salons that pay? | The sign-up source stored on the user and a funnel filter by it |
| Do salons keep receiving online bookings after paying? | Weekly retention on the booking event |
There is also a question about the data itself. The salon pays and the salon gets activated, but the people working in it are the owner, receptionists and stylists, and the first online booking is made by a client. If the owner signed up and a receptionist turned on online booking, a funnel built on people loses that salon. You need to count salons, and in Amplitude and Mixpanel counting by account is a paid add-on. Without it, the share of activated salons and the time to the first online booking are counted in the database.
Exercise: a PLG funnel for your product
You need a product with sign-up and a free trial or free plan: your client's service, an app you work on, or the booking service from this lesson.
Now a situation. Two months later the team adds a video guide to setup and posts in the chat: "Median time to the first online booking dropped from 5 days to 3." Out of 200 new salons, 40 got their first online booking. What do you reply?
The median was calculated over 40 salons, and two months earlier over 60, so fewer salons got there: 20% instead of 30%. Maybe the video sped up the salons that were fast anyway and put the rest off with an extra step. Or maybe the month was just different: the season, other ads, other salons. A before-and-after comparison cannot tell these apart. In your reply, give both numbers, "40 of 200, median 3 days; two months earlier 60 of 200 and 5 days", wait for this month's payments and, if the team decides to keep the video, compare it in a test on half of the new salons.
Video: an introduction to Product-Led Growth
The opening part of a session on product-led growth from Creative Farm.