[{"data":1,"prerenderedAt":356},["ShallowReactive",2],{"portfolio-en-/en/portfolio/podgorica-airport-taxi":3},{"project":4,"isFallback":336},{"id":5,"title":6,"body":7,"description":293,"extension":304,"head":305,"meta":306,"navigation":342,"path":343,"schemaOrg":305,"seo":344,"sitemap":347,"stem":354,"__hash__":355},"portfolio_en/en/portfolio/podgorica-airport-taxi.md","Podgorica Airport Taxi – Fixed-Price Transfers with SEO Route Pages",{"type":8,"value":9,"toc":292},"minimark",[10,15,25,28,36,39,43,46,53,60,63,65,69,72,78,81,87,90,93,121,129,131,135,141,144,151,154,169,171,175,178,193,196,198,202,205,212,214,218,224,230,236,242,248,254,262,264,268,278,280],[11,12,14],"h2",{"id":13},"a-second-entry-point-for-the-same-operator","A second entry point for the same operator",[16,17,18,19,24],"p",{},"Elite Ride Mugoša runs premium transfers in Montenegro. Their ",[20,21,23],"a",{"href":22},"/en/portfolio/elite-ride","main website"," sells the chauffeur service: limousines, weddings, business travel, discretion.",[16,26,27],{},"The problem is that a passenger landing at Podgorica Airport is not looking for a limousine. They want an answer to three questions: how much to Budva, is that the final price, and can I pay now. That is a different guest, a different intent and a different search.",[16,29,30,31,35],{},"So we built ",[32,33,34],"strong",{},"a separate transfer website",", with the same vehicles and the same dispatch system behind it, but with a message tailored to someone who is looking for a ride from the airport right now.",[37,38],"hr",{},[11,40,42],{"id":41},"price-before-the-enquiry-not-after","Price before the enquiry, not after",[16,44,45],{},"The key decision was to make the price visible immediately.",[16,47,48],{},[49,50],"img",{"alt":51,"src":52},"Podgorica Airport Taxi – homepage with a booking form and price check","/portfolio/podgorica-airport-taxi/home.webp",[16,54,55,56,59],{},"The guest enters pickup and drop-off through Google Places search, picks a date, a time and a passenger count, and gets a price for every vehicle class. The price does not come from a table of ours but ",[32,57,58],{},"live from the operator's dispatch system",", for exact coordinates and an exact pickup time, so it already includes every surcharge the operator applies: night driving, rush hour, airport fee, child seat, meet and greet.",[16,61,62],{},"The advantage is that there are never two price lists drifting apart. The operator changes prices in one place and the site picks that up immediately.",[37,64],{},[11,66,68],{"id":67},"programmatic-route-pages","Programmatic route pages",[16,70,71],{},"People do not search for \"airport transfer\". They search for \"taxi Podgorica airport Budva\". So every common route gets its own page.",[16,73,74],{},[49,75],{"alt":76,"src":77},"Podgorica Airport Taxi – popular routes overview with prices","/portfolio/podgorica-airport-taxi/transfers.webp",[16,79,80],{},"The pages are not written by hand. An admin adds a route with a pickup and a drop-off point, and the system generates the page, calculates the road distance and pulls prices per vehicle class.",[16,82,83],{},[49,84],{"alt":85,"src":86},"Podgorica Airport Taxi – route page with prices per vehicle class","/portfolio/podgorica-airport-taxi/route.webp",[16,88,89],{},"The admin can override the heading and the intro copy where it matters, so the page is not an empty template. Routes are also grouped by city, giving an entry point such as \"all transfers to Kotor\".",[16,91,92],{},"A few things mattered here:",[94,95,96,103,109,115],"ul",{},[97,98,99,102],"li",{},[32,100,101],{},"Road distance, not straight-line."," Distance is calculated through a routing service and cached for a month, with a fallback estimate if the service is unavailable, so the kilometre figure is never blank.",[97,104,105,108],{},[32,106,107],{},"Prices are cached, vehicles are not."," Prices are held for six hours, and only five minutes on failure, so an outage does not trigger a retry storm. Vehicle records are never cached, so editing a name or an image in the admin shows up instantly.",[97,110,111,114],{},[32,112,113],{},"The displayed price is a daytime price."," The \"from\" price is calculated for a representative midday slot, because a night surcharge would otherwise advertise an incomparably higher figure. The real price is recalculated as soon as the guest picks their own time.",[97,116,117,120],{},[32,118,119],{},"Prices are warmed in the background."," A scheduled job keeps the cache warm, so listing pages never wait on an external service.",[16,122,123,124,128],{},"We describe our general approach to websites for transport operators in our guide to ",[20,125,127],{"href":126},"/en/blog/rent-a-car-website-development-guide","building a car rental website",".",[37,130],{},[11,132,134],{"id":133},"fleet-and-trust","Fleet and trust",[16,136,137],{},[49,138],{"alt":139,"src":140},"Podgorica Airport Taxi – fleet overview by vehicle class","/portfolio/podgorica-airport-taxi/fleet.webp",[16,142,143],{},"Vehicle classes sync from the dispatch system, but the display order and visibility are controlled by the admin through drag and drop. The operator decides what the guest sees first, regardless of how the vehicles are filed in the back end.",[16,145,146,147,150],{},"The rating and reviews are pulled ",[32,148,149],{},"live from the Google profile",", filtered to those with real written text, cached per language, with a fallback so the badge never disappears if Google does not respond.",[16,152,153],{},"The site runs in two languages, English for travellers and Montenegrin for local guests, with a language prefix in the URL and hreflang tags.",[155,156,160,161,160,165],"div",{"className":157},[158,159],"markdown-image-grid","markdown-image-grid--thumbs","\n  ",[49,162],{"src":163,"alt":164},"/portfolio/podgorica-airport-taxi/lang-en.webp","Podgorica Airport Taxi – homepage in English",[49,166],{"src":167,"alt":168},"/portfolio/podgorica-airport-taxi/lang-me.webp","Podgorica Airport Taxi – homepage in Montenegrin",[37,170],{},[11,172,174],{"id":173},"payments-and-booking-rules","Payments and booking rules",[16,176,177],{},"Card payments were introduced carefully, because real money is involved and a bank has to approve the integration.",[94,179,180,183,190],{},[97,181,182],{},"Card payments go through 3-D Secure, with Visa and Mastercard identity verification",[97,184,185,186,189],{},"The card payment switch is enforced ",[32,187,188],{},"on the server",", not only in the interface, so until the bank approves, that path simply does not exist",[97,191,192],{},"The \"order and pay later\" option always works, so a booking never depends on the state of the gateway",[16,194,195],{},"Advance booking rules are configurable in the admin by distance band. Rides over a hundred kilometres from Podgorica require twenty-four hours' notice, because the operator has to schedule a driver.",[37,197],{},[11,199,201],{"id":200},"a-dashboard-that-watches-margin","A dashboard that watches margin",[16,203,204],{},"The admin panel is more than a list of bookings. The dashboard shows the count and value of bookings for today, this month and overall, paid versus unpaid, invested versus revenue per ride, a thirty-day trend and twelve months of revenue.",[16,206,207,208,211],{},"The interesting part is the ",[32,209,210],{},"calendar with ride chaining",": the system spots consecutive rides where one drop-off is close to the next pickup, so the dispatcher can see where two rides can be joined instead of sending a vehicle back empty.",[37,213],{},[11,215,217],{"id":216},"under-the-hood","Under the hood",[16,219,220,223],{},[32,221,222],{},"Backend:"," PHP 8.2, Laravel 13, Spatie packages (permission, translatable, sitemap, honeypot), Sentry, reCAPTCHA Enterprise alongside a honeypot on every form.",[16,225,226,229],{},[32,227,228],{},"Public site:"," Blade with Tailwind CSS v4, Alpine.js, Flatpickr. The site was written from scratch for this purpose rather than inheriting the theme from the main website.",[16,231,232,235],{},[32,233,234],{},"Admin:"," Inertia.js with Vue 3 and Vuetify, sixteen screens.",[16,237,238,241],{},[32,239,240],{},"Integrations:"," the operator's dispatch system for pricing and pushing bookings back, Google Places for address search (proxied and cached server-side), Google Places Details for reviews, a routing service for road distance.",[16,243,244,247],{},[32,245,246],{},"SEO:"," a sitemap with hreflang alternates per locale, seven JSON-LD schemas including LocalBusiness with geo data and an aggregate rating, plus a news module.",[16,249,250,253],{},[32,251,252],{},"Scope:"," 13 models, 29 migrations, two languages (English and Montenegrin).",[16,255,256,257,261],{},"More on integrations like this on our ",[20,258,260],{"href":259},"/en/services/system-integrations","System integrations"," page.",[37,263],{},[11,265,267],{"id":266},"visit-the-website","Visit the website",[16,269,270],{},[32,271,272],{},[20,273,277],{"href":274,"rel":275},"https://podgoricaairporttaxi.com",[276],"nofollow","podgoricaairporttaxi.com",[37,279],{},[16,281,282,283,287,288,128],{},"If you run transfers or a transport business and need a website that quotes a price before the enquiry, ",[20,284,286],{"href":285},"/en/contact","get in touch",". Have a look at the other ",[20,289,291],{"href":290},"/en/portfolio","projects in our portfolio",{"title":293,"searchDepth":294,"depth":294,"links":295},"",2,[296,297,298,299,300,301,302,303],{"id":13,"depth":294,"text":14},{"id":41,"depth":294,"text":42},{"id":67,"depth":294,"text":68},{"id":133,"depth":294,"text":134},{"id":173,"depth":294,"text":174},{"id":200,"depth":294,"text":201},{"id":216,"depth":294,"text":217},{"id":266,"depth":294,"text":267},"md",null,{"slug":307,"industry":308,"location":309,"countryCode":310,"year":311,"date":312,"cover":313,"gallery":316,"results":318,"pattern":331,"draft":336,"readingTime":337},"podgorica-airport-taxi","Airport transfers","Zeta, Podgorica","ME",2026,"2026-07-20",{"src":314,"alt":315},"/portfolio/podgorica-airport-taxi/cover.webp","Podgorica Airport Taxi shown on a laptop, tablet and phone",[52,77,86,140,317],"/portfolio/podgorica-airport-taxi/mobile.webp",[319,322,325,328],{"label":320,"value":321},"Pricing","live from dispatch",{"label":323,"value":324},"Routes","SEO page per route",{"label":326,"value":327},"Payments","card, 3-D Secure",{"label":329,"value":330},"Reviews","live from Google",{"context":332,"challenge":333,"solution":334,"results":335},"Elite Ride Mugoša runs airport transfers in Montenegro and already had a premium chauffeur website, but no entry point for guests searching specifically for a fixed-price airport taxi.","A passenger landing in Podgorica wants specifics: how much to Budva, is the price fixed, and can I pay now. That had to be answered before the click, not after an enquiry.","We built a separate transfer-focused website, with pricing pulled live from the operator's dispatch system and programmatic landing pages for every common route.","The site is in production in two languages, with fixed route prices, card payments, cached pricing for speed and a dashboard showing revenue and cost per ride.",false,{"text":338,"minutes":339,"time":340,"words":341},"5 min read",4.575,274500,915,true,"/en/portfolio/podgorica-airport-taxi",{"title":345,"description":346},"Podgorica Airport Taxi – Fixed-Price Airport Transfers","An airport transfer website: live pricing from the dispatch system, SEO landing pages per route, card payments and live Google reviews. Read the case study.",{"loc":343,"priority":348,"changefreq":349,"lastmod":312,"images":350},0.8,"monthly",[351],{"loc":352,"caption":353},"https://leovacdigital.me/portfolio/podgorica-airport-taxi/cover.webp","Podgorica Airport Taxi – airport transfer website for Montenegro","en/portfolio/podgorica-airport-taxi","lzTzHD0Nj3S5V4bZJc4hCgMoclA5XDbOMmU8f1m_f00",1785756106726]