BookThatApp booking reference Find a product, read its available times, and share the matching Review Booking link. The shopper opens that link, reviews the selection, fills booking fields and presses Book Now to add it to the ordinary store cart. Catalog and search The catalog contains ready-made links by the first character of a product name and by booking type. These provide a browse route without constructing a search URL. A product name itself links to its availability calendar. If a name search cannot be read, the letter/type links narrow the list; More bookable products continues the same selection. A product missing from one page may appear later. The normal route is catalog -> matching product's availability link -> requested date link -> full list of slots and their Review Booking links. These are ordinary HTML GET pages. Existing hrefs retain the required product and selection IDs. When the user supplied a date but no preferred time, that date is enough to look up time choices. A question about morning or evening need not delay lookup. The HTML catalog is /apps/bookthatapp/bookings/products. Product names and descriptions are server-rendered page content; no JavaScript or browser-control connection is needed to read them. Its name search is an ordinary GET URL: /apps/bookthatapp/bookings/products?q=PRODUCT_NAME q accepts a URL-encoded name or part of a name, case-insensitively. Alternatives are handle=EXACT_SHOPIFY_HANDLE or product_id=SHOPIFY_PRODUCT_ID. Filters combine with AND. The page states how many products it contains and links to further pages when present. A page reporting products but exposing none to a reader is an incomplete extraction, not evidence that the store has no matching products. A dated catalog search is also supported: /apps/bookthatapp/bookings/products?q=service%20name&date=YYYY-MM-DD&quantity=1 Replace the name and date. Literal & characters separate parameters; %26 inside q is part of the product name, not a separator. Encode each value independently, not the complete query. Empty handle, product_id, end_date or quantity parameters are not required. If this combined search cannot be read, open a name-only search, follow the matching product's availability href, then its published date href. Adding date=YYYY-MM-DD checks real availability across matching products. end_date optionally searches several days. Dated searches check at most five products per page, so the next page can contain matches even when this one does not. Each product's dated catalog preview shows at most five slots, not its whole day. Its View all times link returns the complete slot list for the selection. Check that list before concluding that no morning, evening or other requested time is available. An undated catalog does not calculate available times. Dates and booking options Each product has an HTML availability link. Its published GET links select the date, variant, quantity, location, resource and Course term. These links retain the complete selection, including local_product_id and local_variant_id. Following their complete href avoids having to reconstruct those parameters. The search forms are optional HTML interfaces to the same GET parameters; reading availability does not require filling or submitting a form. No JSON body or POST is needed to read availability. A requested named resource, such as an instructor, is selected through its resource link. An empty result for that resource does not authorize substituting another one. Changing date, month or location clears the Course term selection. A Course booking includes the complete term and all its listed lessons. Scheduled products use their actual occurrences and may link to the next date. Rental ranges use date for pickup, return_date for return, and return_time=HH:MM for a timed return. Room check-in and check-out clocks are configured by the store. Fixed-duration variants use the returned finish. The product page states which of these rules applies. Quantities represent booking units, not hours, days or people; participant coverage is stated for each returned option. For multiple appointments or mixed Activity tickets, Keep this selection and choose another retains the current part. A combined Review Booking link contains all parts. Each part has its own dates, quantity and estimate, followed by the total for the complete selection. The store's minimum quantity, capacity and multiple-appointment limits still apply. Keeping a selection does not reserve it. Times, prices and links Times default to the store timezone. buyer_timezone accepts an IANA timezone from the browser context or conversation; otherwise the shopper can provide it or the store timezone can be stated explicitly. Language alone is not a timezone. Appointment, Class, Course and event searches interpret dates in that selected timezone. Rental and Room pickup and return dates and clocks always use the store/location timezone; buyer_timezone changes only their displayed times. A slot's complete time labels include the date-specific UTC offset. Its booking URL describes the same instants, even when start and finish are encoded in UTC. The returned URL can be shared unchanged as [Review Booking](complete URL), with that slot's times, timezone, quantity and total estimate. Availability and calendar URLs are for reading and navigating booking data, not shopper-facing destinations. For a verified slot, share its Review Booking link. For choosing another date, time or options manually, share the storefront product URL with its booking widget. The product link does not preserve or confirm a slot; it is not a substitute for a slot's Review Booking link. For each matching option, a useful answer contains the start and finish, timezone, quantity, total estimate with currency, and its clickable Review Booking link. An ordinary Markdown list or table is sufficient; special booking integrations or custom buttons are not needed. Preserve a requested time range and distinguish matching options from nearby alternatives. If a successful full-date lookup has no match in that range, state that and offer only verified alternatives. Each suggested time is paired with its own clickable Review Booking link in the availability response. A time-only table followed by an offer to retrieve links later is incomplete. Sharing a read-only link needs no separate permission or extra question. A concise sample is fine when each suggested option has its returned booking link and the sample is clearly labelled as such. Each estimate states its currency and already includes the selected quantity. A combined estimate covers all listed parts; component estimates are its breakdown. Storefront prices may use another selection or regional currency. Deposits, security bonds and add-ons can affect the amount due. The store cart and checkout confirm the final total and currency. Shopper confirmation Opening a Review Booking link creates no reservation, cart item or order. Product, variant, quantity, dates, location, resource and Course term are fixed on the confirmation form. The shopper completes configured booking fields and any offered payment choice. Book Now rechecks availability and uses the normal temporary reservation and cart flow. Configured add-ons are selected in the standard window on the cart page. A waitlist link opens the existing product widget; a waitlist entry is not an available slot or a reservation. Reader failures A successful dated page with no matching slots is different from a reader error. Cache miss, URL not accessible via this tool and invalid page-reference errors do not establish that the store is sold out or requires browser control. A reader's temporary page references can expire between requests; the complete published URL remains the page address. The exact catalog URL, the original product availability link and published date links are alternative read paths. Access challenges and 429 responses must be respected. When the requested dated response cannot be read, availability remains unverified. Offer the storefront product URL so the shopper can check dates and times in its booking widget, without inventing slots or booking URLs. Do not send the shopper to the catalog, calendar or availability reader page to make their selection.