Appointly
For service businesses that can’t sell flat-rate. Where every appointment needs a custom quote before it becomes a booking. Appointly is a quote-based booking system for WordPress that puts you back in the loop. Instead of automatic scheduling and fixed prices, customers submit booking inquiries, you review each one, send a personalized quote (with or without pricing), and the customer accepts or declines. Every booking is deliberate, every price is yours to set, every customer gets a personal touch. Perfect for lawyers, consultants, tradespeople, event planners, hair & beauty salons, tattoo artists, photographers, yoga and fitness studios, tutors, and any service business that quotes before it confirms. Why Appointly? Most booking plugins force automatic scheduling with fixed prices. Appointly is different: Customer picks a date or time slot and submits an inquiry You review the request in the admin dashboard You send a personalized quote with a price and personal note Customer accepts or declines via a link in the email Booking confirmed, everyone gets notified This quote workflow gives you the flexibility to adjust pricing per request, check availability manually, and add a personal touch before confirming any booking. Exactly what service businesses with variable pricing need. Features: Booking Calendar: Beautiful, responsive appointment calendar with real-time availability. Day-mode (whole-day) and timeslot mode (customer picks a time slot of configurable length within a daily window) Unlimited Services: Create as many services as you need, with title, description, image, and base price Personal Offer Workflow: Review every inquiry and send customised offers with automatic email delivery and one-click Accept / Decline links SMTP Email Delivery: Reliable email delivery with presets for Gmail, Outlook, Yahoo, iCloud, IONOS, Strato, World4You, Host Europe, ALL-INKL, Hetzner, and more Default Email Templates: Five polished HTML email templates (inquiry, admin notification, offer, confirmation, cancellation) with light and dark modes, fully translatable Dark Mode: Calendar automatically adapts to the visitor’s colour scheme Accessibility: WCAG AA compliant with keyboard navigation Gutenberg Block & Shortcodes: Add the calendar via block editor or shortcode Setup Wizard: Guided onboarding in four steps GDPR Ready: Consent checkbox on the booking form, personal data exporter and eraser integration, encrypted SMTP credentials Multilingual: Full i18n support. German translation included (de_DE, de_DE_formal, de_AT, de_CH, de_CH_informal) Appointly Pro: Appointly Pro is a separate companion plugin that extends Appointly with professional booking features. It is sold on https://appointly.tscholene.com for €2.99 per month and is NOT distributed through the WordPress.org Plugin Directory. The free plugin remains fully functional without Pro. Pro is an opt-in upgrade, not a lock on existing features. Currently shipped in Appointly Pro: Custom Branding: Primary colour, accent colour, and logo applied across the frontend booking form and all customer emails. Custom Email Template Editor: Live preview editor for all 10 customer-facing and admin notification templates with placeholder picker. Custom Service Fields: Build your own booking form per service with text, textarea, number, select, and checkbox fields. Validation rules, drag-and-drop reordering, conditional rendering. Service Addons & Upsells: Offer extras with configurable pricing, quantity, and per-service availability. Per-line pricing in offer and confirmation emails. Recurring Bookings: Automatic re-booking for weekly, bi-weekly, and monthly sessions. Ideal for yoga teachers, therapists, coaches, and anyone running regular appointments. Direct Booking (Auto-Confirm): Per-service auto-confirm for fixed-price services. Customers book instantly without admin approval. Configurable lead-time and cancellation window. Blocked Dates: Block individual dates globally or per service, plus date-range blocks (“block December 20 to January 3”). Customer Self-Cancel: Secure email-link cancellation for direct-booking services. No admin contact needed. Planned for upcoming Pro releases (no timeline commitment): Booking Reminders: Automatic reminder emails sent before each appointment, plus an optional daily admin digest. Multi-day Bookings: Date-range bookings for multi-day events, workshops, retreats, and courses. Group Bookings: Multiple seats per time slot for classes and small-group events. Customer Self-Service Reschedule: Token-authenticated reschedule on top of the existing self-cancel flow. Cancellation Policies: Rule-based cutoff times and fees per service. Per-weekday Slot Schedules: Different availability windows per weekday (e.g. Mon/Wed/Fri morning + afternoon, Tue/Thu only afternoons) on top of the basic timeslot mode shipped in Appointly 2.1.0. iCal Feed: Subscribe to bookings in Google Calendar / Apple Calendar / Outlook. Deposit Collection via Stripe (using your own Stripe keys, no middleman). Learn more at https://appointly.tscholene.com Shortcodes & Block: Gutenberg Block: Search “Booking Calendar” in the block editor [appointly_calendar]: Display the booking calendar [appointly_calendar service="2"]: Calendar for a specific service [appointly_form service="2"]: Standalone booking form External services Appointly loads Google Fonts on the WordPress admin pages so the admin UI can render with the Appointly brand typography (Instrument Serif for hero headings, Plus Jakarta Sans for body text, DM Mono for data labels). This is the only external service that the free plugin connects to. Service: Google Fonts (https://fonts.google.com) Purpose: Loading three web font families so the admin SPA renders with the Appointly brand typography Data sent: Your browser’s IP address and User-Agent are sent to fonts.googleapis.com and fonts.gstatic.com when an admin user opens any Appointly admin page. No booking, customer, or plugin-specific data is transmitted. When: Only when an authenticated WordPress administrator opens an Appointly admin page. Fonts are never loaded on customer-facing booking pages, iCal feed requests, or REST API calls. Terms of use: https://developers.google.com/fonts/faq#what_does_using_the_google_fonts_api_mean_for_the_privacy_of_my_users Privacy policy: https://policies.google.com/privacy If you prefer to block Google Fonts entirely (for example in a privacy-hardened admin environment), the admin UI degrades gracefully to a system font stack (system-ui / BlinkMacSystemFont / Segoe UI / ui-serif / Menlo) and remains fully functional. No other external services are contacted by the free plugin. Appointly does not call any payment providers (Stripe, PayPal), analytics services, license servers, or telemetry endpoints. Appointly Pro, the separate companion plugin sold on https://appointly.tscholene.com, will, when installed, connect to appointly.tscholene.com for license validation (once per day) and plugin update checks. That connection is a feature of the Pro plugin and does not affect this free plugin. Appointly Pro ships with its own readme, privacy disclosures, and external-services documentation. The free plugin on this page does not make any requests to appointly.tscholene.com at runtime. Build Instructions The admin dashboard and the Gutenberg block are pre-built with @wordpress/scripts (webpack) and ship as the compiled admin/build/ and blocks/build/ artefacts. To inspect or rebuild from source, clone the repository at https://github.com/jolenelederer/appointly (uncompiled admin/src/ + blocks/src/ are not shipped in the WP.org distribution since 2.1.0. They are dev-only). Source rebuild: cd admin && npm install && npm run build cd blocks && npm install && npm run build The public frontend calendar (public/js/appointly-calendar.js) and stylesheet (public/css/appointly-calendar.css) are not compiled: they are vanilla JavaScript and CSS, human-readable as-is.
Mocursor Smart TOC
Mocursor Smart TOC is a lightweight, feature-packed Gutenberg block that automatically generates a linked table of contents from the headings in your posts and pages. Simply drop it into your content — it just works. Also available as a [mctoc] shortcode for classic editor users. The block is fully dynamic, accessible, lightweight, and theme-aware. It uses WordPress design tokens and CSS custom properties so it inherits your theme’s colors, fonts, and spacing automatically. Shortcode Support The Mocursor Smart TOC block is also available as a [mctoc] shortcode for use in the classic editor, widgets, or theme templates. Basic usage: [mctoc] With options: [mctoc title="On This Page" include_h2="true" include_h3="true" include_h4="false" numbering="nested" collapsed="true" sticky="true" offset="100" skip="1" exclude_headings="Related Posts,Comments" back_to_top="true" align="right" justify=""] Available shortcode attributes: title — TOC heading text (default: “Table of Contents”) include_h2 — Include H2 headings: “true” or “false” (default: “true”) include_h3 — Include H3 headings: “true” or “false” (default: “true”) include_h4 — Include H4 headings: “true” or “false” (default: “true”) exclude_headings — Comma-separated heading texts to exclude numbering — Numbering style: “none”, “decimal”, or “nested” (default: “none”) collapsed — Start collapsed: “true” or “false” (default: “false”) sticky — Enable sticky mode: “true” or “false” (default: “false”) offset — Scroll offset in pixels for fixed headers (default: 80) skip — Number of headings to skip from the start (default: 0) back_to_top — Show “Back to Top” link: “true” or “false” (default: “false”) align — Floating block alignment: “left”, “center”, or “right”. Left/right allow nearby content to wrap beside the TOC. justify — No-wrap TOC position: “left”, “center”, or “right”. Surrounding content stays above and below the TOC. Ideal Use Cases Mocursor Smart TOC is perfect for: Long-form blog posts — Help readers navigate 2,000+ word articles with ease. Documentation and knowledge bases — Technical docs, how-to guides, and reference pages. Online courses and tutorials — Give learners a clear roadmap of every lesson section. Legal, policy, and compliance pages — Terms of service, privacy policies, and similar documents. Product and feature pages — Long product descriptions with multiple sections. Recipe and travel blogs — Readers can jump to the section they care about. Wiki-style internal sites — Any WordPress site used as an internal wiki or resource library. Accessibility-focused sites — The TOC gives keyboard and screen reader users a reliable way to navigate. Classic editor users — The shortcode works perfectly in the classic editor. Why Choose Mocursor Smart TOC? Zero configuration needed — Drop the block in and it works immediately. 100% Gutenberg-native + Shortcode — Built as a real Gutenberg block with a classic shortcode fallback. Dynamic and always up to date — Server-rendered, always matches the current content. Incredibly lightweight — No JavaScript frameworks. Pure vanilla JS for all interactivity. Deeply customizable — Rich inspector controls for heading levels, numbering, collapsibility, sticky mode, and more. Accessible by default — Proper ARIA attributes, keyboard navigation, semantic HTML, and focus management. Theme-aware — Uses WordPress design tokens and CSS custom properties. No lock-in — Deactivate the plugin and your content is untouched. Privacy-friendly — No external requests, no tracking, no analytics, no cookies. Open source — Licensed under GPLv2. Block Features Automatic heading detection for H2, H3, and H4 Heading level filtering with individual checkboxes Exclude specific headings by text Skip first N headings option Three numbering styles: None, Decimal, Nested Collapsible TOC with configurable default state Smooth scrolling with configurable offset Active heading highlight via IntersectionObserver Back to Top link Sticky mode Live editor preview Full block editor design controls (colors, typography, spacing, borders) Left, center, and right floating alignment using native block controls Left, center, and right no-wrap justification for positioning without shifting surrounding content beside the TOC Shortcode support with full attribute control How to Use Method 1: Block Editor Install and activate the plugin. Open any post or page in the block editor. Click the block inserter (+), search for “Mocursor Smart TOC”, and insert the block. For a floating layout where text can wrap beside the TOC, use the block toolbar alignment (left, center, or right). For positioning without text wrapping, open Layout → Justify TOC (No Text Wrap) and choose Left, Center, or Right. Publish — the TOC renders with smooth scrolling and active heading tracking. Method 2: Shortcode In any post, page, or widget, type [mctoc]. Optionally use floating alignment: [mctoc title="Contents" numbering="decimal" align="left"]. Or use no-wrap positioning: [mctoc title="Contents" numbering="decimal" justify="right"]. Method 3: PHP Template Tips: Place the TOC inside a Group block with a max-width for a contained look. Enable sticky mode for sidebar layouts. Use the shortcode in classic editor widgets or template files.