Search and property links
The booking page is the end of a brand site, not all of it. The search page and each property page take the same dates and guest counts, so you can link a guest in at whatever depth suits the campaign and the trip follows them through to checkout.
Three pages, one vocabulary. checkin, checkout, adults
and children mean the same thing on all of them, and each page passes them on to the
next as the guest moves forward.
/ search, with filters indexable
/p/{slug} one property indexable
/book checkout noindex
Pick the deepest page that still makes sense for the click. An ad for one villa on known dates
should go to /book; an ad for a destination should go to the search page with the
dates filled in and let the guest choose.
A property page
/p/{slug}, where the slug is the same identifier a stay token uses.
Dates and guests here seed the property's own date picker and its Book now button, which
then builds the booking-page link for the guest.
| Field | Type | Required | Description |
|---|---|---|---|
checkin
|
date |
Required with checkout
|
Arrival as YYYY-MM-DD. Same three rules as the booking page: both or neither, departure after arrival, not in the past. Any failure clears both. |
checkout
|
date |
Required with checkin
|
Departure as YYYY-MM-DD. |
adults
|
integer | Optional | Defaults to 2. Clamped to the occupancy left after children. |
children
|
integer | Optional | Defaults to 0. Clamped to one below maximum occupancy. |
https://villas.doorloom.com/p/villa-alto?checkin=2026-12-24&checkout=2026-12-27&adults=4&children=2
Unlike the booking page, a property page always renders — there is no payment configuration to satisfy — so this is the safer landing page when you are not certain the brand takes online payments yet.
The search page
The brand home page doubles as its search page, and its filters are read on the server, so a link produces a fully rendered result set rather than an empty page that fills in afterwards. Good for ads, and good for sharing.
Filters
| Field | Type | Required | Description |
|---|---|---|---|
checkin
|
date | Optional | Together with checkout, restricts results to properties free for the whole range, and prices the cards. Carried onto every result link. |
checkout
|
date | Optional | As above. An unparseable pair is ignored rather than erroring. |
adults
|
integer | Optional | Added to children and matched against maximum occupancy. |
children
|
integer | Optional | As above. |
location
|
string, repeatable | Optional | A city. Repeat the key, or comma-join: location=Goa,Alibaug. Matched as a partial name, and several are combined as “any of”. |
property_type
|
string | Optional | An exact property type, for example villa. |
rooms
|
integer | Optional | Minimum number of bedrooms. |
pets
|
integer | Optional | 1 restricts to pet-friendly properties. |
categories
|
string, repeatable | Optional | Any of pure_veg, pool, pet_friendly. Several are combined as “all of”. |
amenities
|
string, repeatable | Optional | Amenity names, comma-joined or repeated. Combined as “all of”. |
min_price
|
number | Optional | Lower bound on the nightly base price, in rupees. |
max_price
|
number | Optional | Upper bound on the nightly base price, in rupees. |
https://villas.doorloom.com/?location=Goa&property_type=villa&categories=pool&pets=1
&checkin=2027-01-15&checkout=2027-01-17&adults=4&children=0
Send adults explicitly when you send dates
A missing adults is treated as two guests when filtering the list, but as
one guest when pricing the cards on it. The result is a correctly filtered page
whose prices are quoted for a single guest, which is not what a family reading the ad will pay.
Always include adults on a dated search link.
A filter it cannot make sense of is skipped rather than rejected, so a link built from a stale list of cities or amenities degrades into a broader result set instead of an error page. Convenient in production, easy to miss in testing — check that a filtered link actually narrows the results.
How the trip travels
Each page writes the current trip into the links it renders, so nothing has to be re-entered:
- Search to property. Dates and guest counts are appended to every result card and map pin, so a guest arriving on a dated search keeps those dates when they open a villa.
- Property to booking page. The Book now button turns the selected
dates, guests and property into a
staytoken and sends the guest to/book. - Inside the booking page. Every edit is written back to the address bar, so the link a guest copies mid-checkout reproduces their cart exactly. See booking page parameters.
The practical consequence for you: you only ever need to put dates on the first page in the journey. Putting them on a search link is enough for them to reach checkout.
Which to link for SEO
The search page and the property pages are indexable and are the right targets for organic
content, a blog post or a listing on another site. The booking page is not: it is
noindex, nofollow and disallowed in the brand's robots.txt, because a
checkout with a distinct URL per cart has no business in an index.
So a dated search link is a legitimate landing page you can publish. A dated
/book link belongs behind a click you control — a button, an email, a message, a paid
ad.