Kapil Dev and Sahil have been driving cabs out of Kangra since 2018. They own the cars, they do the driving, and until last year almost every booking reached them through somebody else — a commission agent, a hotel desk, a call centre that had never seen the road to Chintpurni.
That is the normal arrangement in Himachal, and it is a bad one. The person who owns the customer relationship sets the price and keeps the margin. The person doing the work absorbs the fuel, the hours and the risk.
In June 2026 they got a website. Here is what it did in the seven weeks that followed, what specifically caused it, and the part of the data that is less flattering than a case study normally admits.
The numbers, with the window stated
Google Search Console, domain property, web search, for the three-month report ending 8 August 2026. The traffic curve begins at effectively zero on 21 June, so this is functionally the site's first seven weeks:
| Metric | Value |
|---|---|
| Total impressions | 19,100 |
| Total clicks | 261 |
| Average CTR | 1.4% |
| Average position | 5.4 |
Two things about that table before anyone quotes it.
First, the shape matters more than the totals. The impressions line starts at zero, climbs through July, and is at its steepest in the final week of the window. A cumulative total from a growth curve understates where the site is now — the last seven days of that chart are running at several times the rate of the first seven.
Second, a 1.4% click-through rate at position 5.4 is not a good ratio, and I am not going to bury it. I will come back to it, because it is the most useful thing in this entire dataset.
What actually caused the impressions
The site is ten pages. There is no blog, no content calendar, nobody writing weekly articles about the beauty of the Kangra valley. The whole strategy fits in one sentence:
Publish the fare.
Twenty-seven point-to-point routes, each with an all-in price stated as text on the page. Dharamshala to Gaggal airport. Kangra to Chintpurni. Palampur to Manali. The full six-temple Devi Darshan circuit, priced as a package with the stops named.
That is it. That is the thing almost nobody in the category does.
Why hiding the price costs you the search
Go and look at how taxi operators build websites. The pricing page says call for quote. The routes page says we cover all of North India. The homepage talks about a commitment to safe, comfortable and reliable journeys.
Now think about what somebody actually types. They type gaggal airport to dharamshala taxi fare. They are asking a question with a number as its answer.
A page saying "call for quote" has no number on it. There is nothing for the query to match, nothing for a snippet to pull, and nothing for an AI assistant to quote when it answers the question directly. A page saying "₹X, all inclusive, 40 minutes, Innova or Dzire" matches on every axis at once.
The objection I hear is always the same: competitors will see our prices. They will. They could also have phoned and asked, any day for the last six years. Your competitors were never the constraint. The customer who couldn't find an answer was.
The structural work underneath
Publishing fares is the strategy. These are the mechanics that let it land, all of which are ordinary and none of which are clever:
- One page per intent. Airport transfers, outstation runs, the Devi Darshan yatra and local sightseeing are four different jobs a customer is hiring a car for. They are four pages, not four paragraphs on one page.
- A complete LocalBusiness schema graph. Name, geography, service area, opening hours, the routes as offerings, the temple circuit described as what it is. This does not push rankings up. It makes the business machine-legible, so that anything answering on the operator's behalf gets the facts right.
- Static HTML, fast on a bad connection. Built on Astro. The customer is often standing outside an airport on patchy 4G, which is a hostile environment for a heavy site.
- One-tap WhatsApp with context pre-filled. Tapping the button on the Chintpurni page opens a message that already says which route. Nobody in this market is going to fill in a six-field enquiry form.
- An
llms.txtat the root. Honestly: this is the least important item on the list, and I have written at length about why the file is oversold. It costs ten minutes. It is not why the site works.
The uncomfortable part: rank is not traffic
Back to that 1.4%.
Historically, an average position around five would return something in the region of a 4–6% click-through rate. This site gets a quarter of that. The pages are not badly titled, and the queries are relevant. Something else is taking the click.
Open a travel or local query on a phone and count what sits above the organic results: a map pack with three businesses and a directions button, frequently an AI overview that answers the question in place, aggregator listings that have bought the term, and paid results above all of it. An average position of 5.4 can sit below that entire stack. The user got their answer and never scrolled.
So the impressions are doing real work — they prove the pages match genuine demand, and they are the reason the phone rings — but anyone selling you an average-position number as though it were traffic is selling you the wrong metric. I have the same pattern in my own Search Console, on a completely different kind of site, and wrote about it separately.
The right response is not to chase rank harder. It is to be the result that gets picked out of a crowded page — which means the fare visible in the snippet, the reviews visible in the map pack, and the facts structured well enough that when an AI overview answers, it answers with your name in it.
What transfers to other businesses
This was a taxi operator, but nothing here is about taxis:
- Find the question your customers ask that has a number as its answer. A fare, a fee, a duration, a capacity, a delivery window. Publish it as text.
- Give each real intent its own page. If a customer would phrase it as a separate question, it is a separate page.
- Make the enquiry one tap, on the channel your customers already use. In India that is usually WhatsApp, not a form.
- Structure your facts so machines don't have to guess them.
- Measure enquiries, not position. Position is a diagnostic. Enquiries are the business.
Ten pages, seven weeks, no advertising budget, no content mill. The operators own the site and the code. They still do their own driving — they just stopped paying somebody else for permission to be found.
I'm Divyansh Sood. I build custom-coded websites from Himachal Pradesh — this one is written up in full on the Baglamukhi Travels case study, alongside another Kangra operator who had the same problem. If you run a business here and everything arrives through an agent, that's the work I do.