=== PosLimitless Booking === Contributors: poslimitless Tags: booking, reservation, escape-game, gift-card, events Requires at least: 5.8 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 2.4.2 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Online booking system, client portal, gift cards and events for leisure centers. == Description == PosLimitless Booking integrates PosLimitless booking modules directly into your WordPress site. **Included modules:** * **Booking** — Full booking system with calendar, time slot selection and online payment (Stripe, Monetico, Sogecommerce, CAWL) * **Confirmation** — Summary and payment page with promo codes, gift cards and options * **Client Portal** — Secure client portal with booking history, gift cards and photos * **Gift Card** — Online gift card purchase with customization and live preview * **Events** — Display public center events with registration **Features:** * 5 visual styles per module (Classic, Grid, Glassmorphism, Immersive, Dashboard) * Full customization of colors, fonts and effects * 6 pre-configured color packs * Live preview in the WordPress admin * Dark mode / light mode * Mobile responsive * Secure multi-gateway payment == Installation == 1. Upload the `poslimitless-booking` folder to `/wp-content/plugins/` 2. Activate the plugin in the Plugins menu 3. Go to PosLimitless > Configuration 4. Enter your Center ID and API Key (available in POS Limitless > API Keys) 5. Insert shortcodes into your pages == Shortcodes == * `[poslimitless_booking]` — Booking module * `[poslimitless_espace_client]` — Client portal * `[poslimitless_bon_cadeau]` — Gift cards * `[poslimitless_verif_bon_cadeau]` — Gift card balance check * `[poslimitless_event]` — Events == Frequently Asked Questions == = Where can I find my Center ID and API Key? = Log in to POS Limitless (poslimitless.web.app), go to Configuration > API Keys. You will find your Center ID there and can generate your API Key. = How do I customize the appearance? = Each module has its own appearance page in the PosLimitless menu. You can choose from 5 visual styles and customize all colors. = Which payment methods are supported? = Stripe, Monetico, Sogecommerce and CAWL. Configuration is done in POS Limitless. == Changelog == = 2.4.2 = * Improved: smart wait for pixel network requests before redirecting to "thank you" page (sitewebmerci). Uses PerformanceObserver to detect when Meta, TikTok, and Google Ads pixel HTTP requests have actually been sent — redirects immediately when all configured pixels have fired (or after 5s safety timeout). Replaces the previous fixed 3s delay. * New: visual loader on the success page during the wait, with per-pixel status indicators (✓ Meta, ✓ TikTok, ✓ Google Ads). = 2.4.1 = * Fix: tracking pixel cache TTL reduced from 1h to 5 min, and cache key now includes plugin version. After updating Meta/TikTok pixel IDs in the PosLimitless dashboard, changes propagate within 5 minutes (instead of 1 hour). Plugin upgrades automatically invalidate the cache. = 2.4.0 = * Fix: 1.2s delay before redirect to "thank you page" (sitewebmerci) so browser pixels (Meta fbq, TikTok ttq, GA gtag) have time to fire. Previously the redirect was aborting the pixel requests, causing Purchase events to be missing on the Browser side (server-side was unaffected). = 2.3.9 = * New: full TikTok Pixel + Events API integration (ViewContent, InitiateCheckout, CompletePayment) with browser-server deduplication via event_id * New: enriched Meta Pixel events (Purchase eventID for Conversions API dedup) * New: capture of TikTok ttclid URL param + _ttp cookie for server-side attribution * Improved: ViewContent enriched with center.id and center.name for better audience matching = 2.3.7 = * Improved: "phone only" status now resolved server-side (honors per-day and per-period overrides on opening rules, lunch breaks and closures) = 2.3.6 = * New: dedicated "Service title" color in appearance settings (independent from text color) = 2.3.5 = * New: customizable colored border around service images (appearance settings) * Improved: per-badge color & emoji support (syncs with Poslimitless admin where each badge can have its own emoji and color) = 2.3.4 = * Fix: service info modal no longer clipped when embedded in pages with transformed ancestors (React Portal to document.body) * New: dedicated "Info badges" color in appearance settings (independent from accent color) = 2.3.3 = * Full i18n support: English source strings, French translation shipped (languages/poslimitless-booking-fr_FR.mo) * Plugin icon and banner published on wordpress.org = 2.3.2 = * New "transparent background" option per module (let the WordPress theme drive the page background) = 2.3.1 = * Renamed generic JavaScript globals to use unique poslbo prefix (WordPress.org review compliance) = 2.2.0 = * Added Events module * 5 visual styles for all modules (Classic, Grid, Glassmorphism, Immersive, Dashboard) * Live gift card preview with customization * Secure API Key field (wpApiKey) * Admin interface improvements = 2.0.0 = * Initial public release * Booking, Confirmation, Client Portal, Gift Card modules == External services == This plugin relies on the following third-party and external services: = PosLimitless API = This plugin connects to the PosLimitless API to manage bookings, payments, gift cards, client accounts and events. All booking data (customer name, email, phone, reservation details, payment information) is sent to this service when a visitor makes a reservation, purchases a gift card or accesses the client portal. * Service provider: PosLimitless SAS * Service URL: https://limitless-backend-624311789490.europe-west1.run.app * Terms of service: https://poslimitless.com/cgv * Privacy policy: https://poslimitless.com/confidentialite = Google Tag Manager / Google Analytics / Google Ads = When a center has configured Google tracking tags in PosLimitless, this plugin **only** loads Google scripts after the visitor has explicitly opted in via the cookie consent checkbox displayed on the confirmation page. No Google scripts are loaded and no data is sent to Google until the visitor grants consent. Once consent is granted, the plugin sends page views and purchase conversion events (transaction ID, amount, currency) to Google for analytics and advertising purposes. Google Consent Mode V2 is used with all storage types denied by default. * Data sent: page views, purchase events (transaction ID, amount, currency), Google click ID (gclid) * When sent: only after explicit visitor opt-in via the cookie consent checkbox * Service provider: Google LLC * Terms of service: https://policies.google.com/terms * Privacy policy: https://policies.google.com/privacy = Meta Pixel (Facebook) = When a center has configured a Meta Pixel ID in PosLimitless, this plugin **only** loads the Meta Pixel script after the visitor has explicitly opted in via the cookie consent checkbox displayed on the confirmation page. No Meta scripts are loaded and no data is sent to Meta until the visitor grants consent. Once consent is granted, it sends page views and purchase conversion events (amount, currency) to Meta for advertising purposes. * Data sent: page views, purchase events (amount, currency) * When sent: only after explicit visitor opt-in via the cookie consent checkbox * Service provider: Meta Platforms, Inc. * Terms of service: https://www.facebook.com/terms.php * Privacy policy: https://www.facebook.com/privacy/policy/ = TikTok Pixel = When a center has configured a TikTok Pixel ID in PosLimitless, this plugin **only** loads the TikTok Pixel script after the visitor has explicitly opted in via the cookie consent checkbox displayed on the confirmation page. No TikTok scripts are loaded and no data is sent to TikTok until the visitor grants consent. Once consent is granted, it sends page views and payment completion events (amount, currency) to TikTok for advertising purposes. * Data sent: page views, payment completion events (amount, currency) * When sent: only after explicit visitor opt-in via the cookie consent checkbox * Service provider: TikTok Inc. / ByteDance Ltd. * Terms of service: https://www.tiktok.com/legal/terms-of-service * Privacy policy: https://www.tiktok.com/legal/privacy-policy = Stripe = When a center uses Stripe as a payment gateway, payment is processed via the Stripe hosted checkout. The customer is redirected to Stripe to complete payment. No card data is handled by this plugin. * Service provider: Stripe, Inc. * Terms of service: https://stripe.com/legal * Privacy policy: https://stripe.com/privacy == Source code == The frontend module (`assets/booking.js`) is built from a React/TypeScript application using Vite. The source code is included in the `src/` directory of this plugin. Build tools used: Node.js, Vite, TypeScript, React. == Screenshots == 1. Booking page (Glassmorphism view) 2. Confirmation page with summary 3. Client portal with history 4. Gift card purchase with live preview 5. Color configuration in admin 6. Visual style selection