=== REDORZO TOP CALENDAR — Booking System for Appointments, Rentals & Events ===
Contributors: redorzo
Tags: booking, booking calendar, appointment booking, reservation, rental
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Booking calendar and reservation system for appointments, rentals, stays, classes, tours and restaurants, with a mobile form and a waiting list.

== Description ==

**One booking plugin for every trade that takes bookings: outings, classes, appointments, rentals, stays, workshops and restaurant tables. Your customers book from their phone in a few taps; you run the day from one clear screen.**

REDORZO TOP CALENDAR is a complete booking system for WordPress: outings, appointments, stays, classes, workshops, restaurant tables and rentals. Customers pick a day, a time and how many people, and receive a confirmation with a private link to manage their booking — no account, no password. You see what needs your attention today, move a booking by dragging it, and take a booking on the phone in seconds.

Every booking is checked on your server before it is saved: the same place, room or table is never sold twice, even when two customers click at the same moment.

Works with block themes and classic themes: the booking form sits inside your theme, with your header, menus and footer, in light or dark colours. Your customers' data stays on your site.

Free, with no limit on activities, dates, places or bookings, and no time limit. Online payment, equipment and reports come with TOP CALENDAR Plus, a separate extension (see below).

= Made for your trade =

The first time you open it, a short welcome screen asks what you do, your opening hours and your first activity. Every screen then speaks your trade:

* **Outings and activities**: guides, clubs, water sports centres, adventure parks.
* **Appointments**: practices, salons, studios, consultants.
* **Stays**: holiday cottages, B&Bs, campsites, booked by the night.
* **Classes**: yoga, dance, music, sport.
* **Workshops and events**: tastings, talks, courses.
* **Tables**: restaurants, bars, wine cellars, counted in covers.
* **Rentals**: bikes, boats, vehicles, equipment, counted in items.
* **Something else**: neutral words, which can be changed later.

= A booking form made for phones =

* Five short steps: what, how many, who, payment, done. Going back or refreshing never loses what was typed, with or without JavaScript.
* A strip of days shows at a glance which dates are open or full, and every time slot says how many places are left.
* A full date is never a dead end: the nearest open dates come first, then the waiting list.
* Every button can be tapped with a thumb, every text can be read, in light and dark.
* A booking page is created for you; a block and a shortcode place the calendar on any page, in five views: list, month, day, year and cards.
* A booking can last an hour, a day, or several nights.

= Customers manage their own booking =

The confirmation email carries a private link. From that page, a customer sees the booking, moves it to another date, changes the number of people, adds it to their calendar, or cancels it while your rules allow it. Emails read well on a phone and in dark mode, go out in the language of the booking, and "Reply" reaches you.

= A waiting list that fills the gaps =

When a date is full, visitors join the waiting list and say how many places they need. When a place frees up, "Offer a place" writes to the next person in one click.

= A console built around today =

* **Today**: what needs your attention, who still has to pay, the day hour by hour, and tomorrow already.
* **Planning** by month, week, day and agenda. Drag a booking to move it: the screen says what the move frees and what it takes before anything is saved.
* **New booking**: take a booking on the phone or at the counter, with the places left shown as you type.
* **Requests**: the bookings that wait for your answer, and how long each one still holds its place.
* **Close a morning, an afternoon or a whole day**, and see first which bookings it affects.
* **Search** by name, email or booking reference, from every screen.
* **Customer files**, **staff** with their colour and time off, **four team roles**, a **history** for every booking and a **Journal** of every change.
* **Write to a customer** from the console: the email leaves from your site and is noted in the booking history.

= Prices, and payment on the day =

Put a price on any activity. Customers see the total before they book, and what is left to pay on the day. At the desk, record cash, card terminal, cheque or bank transfer, as a deposit or in full. The payment receipt can carry a numbered PDF invoice, made on your own server.

= Calendar sync, import and export =

* **Google Calendar, Outlook or Apple Calendar** through iCal: a private feed of your schedule to subscribe to, and private calendars read back so busy times close the dates on your site.
* **Import** an existing agenda from an .ics file or a spreadsheet.
* **Export** bookings, customers, the waiting list and departure lists to CSV, or everything at once.

= Accessible, translated, yours =

* Booking form, customer page and console checked against WCAG 2.2 level AA, and usable with the keyboard alone.
* Seven translations included: French, German, Spanish, Italian, Dutch, Polish and Brazilian Portuguese.
* A counter QR code that leads to your booking page, with a poster ready to print.
* WordPress's Export and Erase Personal Data tools cover your customers' data.

= What this plugin does not do =

* **No online payment.** Customers pay on the day, and you record the payment at the desk. Card payment and WooCommerce come with TOP CALENDAR Plus.
* **Nothing leaves your site.** No account, no key, no tracking, no remote fonts or scripts. The only outside connection is the calendar sync, and only if you set it up.
* **No text messages.** Confirmations, changes and cancellations go by email.

= Want to take payment online? =

TOP CALENDAR Plus, by REDORZO, is a separate extension, €179 a year with updates and support, sold at https://redorzo.com/top-calendar. It installs next to this plugin and adds:

* online payment by card with Stripe, or through your WooCommerce checkout, with deposits and refunds;
* a WooCommerce product page that sells a time slot of an activity;
* prices by season and by duration, paid extras and discount codes;
* equipment: named units, stock and maintenance, and a planning by resource;
* reports;
* the automatic reminder email before each booking.

Buy it from your own site, under **TOP CALENDAR → My account → TOP CALENDAR Plus**: you pay on redorzo.com, come back to your site, install the extension, and Plus opens on its own, with no key to copy. Without Plus, the Equipment and Reports entries stay in the menu, greyed out, and say what they do. Removing Plus never deletes a booking, a customer or a setting.

== Installation ==

1. In your WordPress admin, go to **Plugins → Add New**, search for "REDORZO TOP CALENDAR", then click **Install Now** and **Activate**. You can also upload the zip file from **Plugins → Add New → Upload Plugin**.
2. Open the **TOP CALENDAR** menu. A short welcome screen asks for your trade, your opening hours and your first activity.
3. A public **Bookings** page is created with the booking form. Add it to your menu, or place the TOP CALENDAR block or the `[top_calendar]` shortcode on any page.
4. Print the counter QR code from the end of the welcome screen if you take walk-in customers.

== Frequently Asked Questions ==

= Is TOP CALENDAR really free? =

Yes. The free plugin has no limit on activities, dates, places or bookings, and no time limit. Online payment, equipment, reports and the automatic reminder come with the paid TOP CALENDAR Plus extension.

= Can I take payments online? =

Not with the free plugin alone. Customers see the price and pay on the day, and the console records the payment. Online card payment with Stripe, or through WooCommerce, comes with TOP CALENDAR Plus.

= Does it need WooCommerce? =

No. WooCommerce is only used by TOP CALENDAR Plus, to take payments through your shop's checkout and to sell a time slot from a product page.

= Can I use it for appointments? =

Yes. Choose "Appointment" on the welcome screen: an appointment is a booking for one person, and the screens then speak of sessions and patients. Staff can be given their own colour and time off.

= Can I rent out rooms, cottages or equipment? =

Yes. Choose "Stay" to book by the night (a two-night stay is charged two nights, and no night is sold twice), or "Rental" to count items instead of people. Named units with their own maintenance record come with TOP CALENDAR Plus.

= Does it work for restaurants? =

Yes. Choose "Table": bookings are counted in covers, by sitting.

= Can customers change or cancel their booking? =

Yes, from the private link in their emails, with no account. You decide until when cancelling online is allowed; after that, the page says how to get in touch.

= Can I add the booking calendar to any page? =

Yes. Use the TOP CALENDAR block in the editor, or the `[top_calendar]` shortcode. The booking shows inside your theme by default; full screen is a setting under **TOP CALENDAR → Settings → General**.

= Does it sync with Google Calendar? =

Yes, through iCal. Your schedule is published as a private feed that Google Calendar, Outlook or Apple Calendar can subscribe to, and the private iCal address of a personal calendar can be read back so its busy times close dates on your site.

= Does it send reminders? =

Booking confirmations, changes and cancellations are sent by the free plugin. The automatic reminder before the booking comes with TOP CALENDAR Plus.

= Is it GDPR-friendly? =

The plugin plugs into WordPress's Export and Erase Personal Data tools and contacts no outside service of its own. Its cookies are first-party and short-lived: the language chosen on the booking form, the link to a place offered from the waiting list, and, for two hours, whether the visitor arrived through the counter QR code. Erasing keeps the date, amount and status of a paid booking, because it is an accounting record.

= How do I delete a test booking? =

Cancel it, then choose "Delete permanently" in its menu. To clear several, tick them in Bookings and click "Delete the cancelled ones". A booking with an invoice or a payment record is kept as an accounting record, and the screen offers to anonymise the customer instead.

= What happens to my data if I delete the plugin? =

By default, bookings, customers and settings are kept, so reinstalling finds everything where it was. Scheduled tasks, roles and temporary data are always removed. To remove everything, tick the option in the settings before deleting the plugin.

= What happens if I remove TOP CALENDAR Plus? =

Nothing is deleted: bookings, customers, prices and settings belong to this plugin, and reinstalling Plus finds them where they were.

== Screenshots ==

1. One plugin, every trade: pick your line of work and the console speaks it — Outings, Classes, Sessions, Rentals, Workshops or Sittings; Instructors, Teachers, Practitioners or Hosts; Customers, Members, Patients, Visitors or Diners.
2. The booking page: the next date first, the places left at every time, and booked from a phone in a few taps.
3. Today: what needs your attention, the day as it goes, and the day in three figures.
4. Planning: the month at a glance; press + on any day to open a session in a centred window, with just a name and the seats.
5. Your trade: eight lines of work to choose from — outings, appointments, rentals, stays, classes, workshops, tables or neutral words. It changes the words, never the engine, and can be changed at any time.
6. New booking: who, how many, what and when, typed in one go, with the places left and the total, all on one screen.
7. Customer page: a private link in every email to add the booking to a calendar, change it or write to you, with no account.
8. Payments: card payment through Stripe or your WooCommerce checkout, deposits, and an invoice attached to the receipt (TOP CALENDAR Plus).

== External services ==

This plugin does not contact any service of its own. It never contacts redorzo.com: it has no licence and no update channel, and it is updated by WordPress.org like every other plugin in the directory.

Calendar sync is the only feature that reaches outside your site, and only when you set it up. If you paste the private iCal address of a calendar (for example Google Calendar, Outlook or Apple Calendar) under **TOP CALENDAR → Settings → Calendars**, the plugin downloads that address about every fifteen minutes to read its busy times. The request goes to the address you entered and carries nothing about your customers. The provider's own terms and privacy policy apply, for example https://policies.google.com/terms and https://policies.google.com/privacy for Google Calendar. Removing the address stops the requests.

The "Your calendar app" card in **My account** offers two buttons that open another site in the user's browser, only when the user clicks them: "Add to Google Calendar" opens https://calendar.google.com, and "Add to Outlook" opens https://outlook.live.com. Each one carries the user's private, read-only calendar link, so that Google or Microsoft can subscribe to it; that service then downloads the link from time to time to show the user's departures (first names and numbers of places only, or numbers of places alone if the user chose so). The plugin itself sends nothing to these services. Google: https://policies.google.com/terms and https://policies.google.com/privacy. Microsoft: https://www.microsoft.com/servicesagreement and https://privacy.microsoft.com/privacystatement. "Regenerate the link" stops every subscription made with the old one.

The separate paid extension, TOP CALENDAR Plus, is not part of this plugin and declares its own services (Stripe, and its own update channel).

== Privacy ==

The console's fonts are bundled with the plugin. No administrator's IP address reaches a third party when a screen is opened.

The plugin stores the personal data your customers give when they book: name, email address, phone number, and the address fields you choose to ask for. It plugs into WordPress's own privacy tools, so **Tools → Export Personal Data** and **Tools → Erase Personal Data** cover TOP CALENDAR without any extra step.

Erasing does not delete bookings: it removes everything that identifies a person and keeps the date, the amount and the status, because a paid booking is an accounting record. The report returned to you says what was kept.

The figures on the "Your public page" screen are counters added up per day: visits, how many on a phone, bookings, the server's response time and the time from the form to the booking. There is no cookie, no IP address and no identifier: the browser's user agent is read on the spot (robot or not, phone or not) and not stored. Robots are not counted. The counters are kept 35 days, and "delete all data" on uninstall removes them.

== Changelog ==

= 1.0.1 =
* "Try Plus free for 14 days" now links to redorzo.com: a free REDORZO account (no bank card) is all it takes. The free plugin still contacts no server.

= 1.0.0 =
* First release.

== Upgrade Notice ==

= 1.0.1 =
A link to try TOP CALENDAR Plus for 14 days.

= 1.0.0 =
First release.
