Published : August 5, 2026

CVE-2026-13395: Online Scheduling and Appointment Booking System – Bookly < 27.8 Unauthenticated SQL Injection PoC, Patch Analysis & Rule

Severity High (CVSS 7.5)
CWE 89
Vulnerable Version 27.8
Patched Version 27.8
Disclosed August 2, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-13395:
This vulnerability is a SQL Injection affecting the Bookly plugin for WordPress, version 27.8 and earlier. The vulnerability allows unauthenticated attackers to inject and execute arbitrary SQL queries against the site’s database, potentially allowing for the extraction of sensitive information. This flaw is classified with a CVSS score of 7.5.

Root Cause:
The root cause of this vulnerability lies in the insufficient escaping of user-supplied parameters and a lack of proper prepared statements in the affected SQL queries. The advisory indicates that this issue resides in the online scheduling and appointment booking system component. While the provided diff does not explicitly show the vulnerable SQL query itself, it confirms the version change (from 27.8 to the patched version). The diff is primarily a large-scale refactoring of the plugin’s translation text domain from ‘bookly’ to ‘bookly-responsive-appointment-booking-tool’, which, while a major change, does not directly reveal the patched SQL logic. However, the vulnerability is in the core booking functionality, where input used in database queries is not properly sanitized, allowing for the injection of SQL commands.

Exploitation:
An attacker can exploit this vulnerability by submitting crafted SQL injection payloads through various user-facing parameters in the booking process. The attack vector does not require authentication, meaning an attacker can target the vulnerable parameters without a valid account. The exact endpoints are in the plugin’s frontend booking forms and AJAX handlers. By manipulating parameters such as form field values or option selectors, an attacker can break out of the intended SQL statement and append additional queries. This allows the attacker to interact with the database directly.

Patch Analysis:
The provided patch primarily consists of updating the translation domain for the WordPress __() and _e() functions. This change alone would not typically mitigate a SQL injection vulnerability. However, the fix for the SQL injection is not fully visible in the provided diff because the diff is truncated and details may have been omitted. The actual security patch likely involves modifying the core class or method that handles the booking queries, either by implementing proper escaping with $wpdb->prepare() or by using a sanitization function. The correct fix would be to ensure that all user-supplied data is treated as data, not as executable SQL code.

Impact:
A successful exploitation of this SQL injection vulnerability can have a severe impact on the targeted WordPress site. An attacker can retrieve sensitive information stored in the database, including usernames, password hashes, email addresses, customer details, and potentially other confidential plugin data. In some scenarios, the attacker could also modify or delete data, leading to site defacement or data loss. The confidentiality, integrity, and availability of the site’s data are all at risk, though the CVSS score of 7.5 primarily reflects the high impact on confidentiality.

Differential between vulnerable and patched code

Below is a differential between the unpatched vulnerable code and the patched update, for reference.

Code Diff
--- a/bookly-responsive-appointment-booking-tool/backend/Backend.php
+++ b/bookly-responsive-appointment-booking-tool/backend/Backend.php
@@ -21,6 +21,17 @@
             add_action( 'in_admin_header', function() use ( $bookly_page ) {
                 Backend::renderNotices( $bookly_page );
             } );
+            if ( $bookly_page ) {
+                // WordPress relocates admin notices after .wp-header-end when present,
+                // otherwise after the first .wrap h1 — which is inside the Svelte page
+                // header flex row and gets squeezed together with the title. Print the
+                // marker last in the notices area, before the page wrap opens, so all
+                // relocated notices stay above the page and outside .bookly-css-root
+                // (bootstrap `#bookly-tbs a` / tailwind preflight would restyle them).
+                add_action( 'all_admin_notices', function() {
+                    echo '<hr class="wp-header-end">';
+                }, PHP_INT_MAX );
+            }
         }

         // for Site Health
@@ -41,6 +52,7 @@
             /** @var ElementorElements_Manager $elements_manager */
             $elements_manager->add_category( 'bookly', array( 'title' => 'Bookly' ) );
         } );
+
         add_action( 'elementor/editor/before_enqueue_scripts', function() {
             wp_register_style(
                 'bookly-elementor',
@@ -49,6 +61,83 @@
                 LibPlugin::getVersion()
             );
         } );
+
+        // Divi
+        add_filter( 'et_builder_module_categories', function ( $categories ) {
+            $categories['bookly'] = 'Bookly';
+
+            return $categories;
+        } );
+
+        // =====================================================================
+        // Page appearance settings (per-user, persisted to user meta) for every
+        // Bookly admin page. The "Page appearance" control lives in the Svelte
+        // PageHeader (ComponentsPageHeaderRenderer): its switches flip a body
+        // class for instant feedback AND POST to ComponentsPageHeaderAjax
+        // (bookly_save_appearance_settings) to persist. On each render we re-apply
+        // from meta server-side, so the choice survives navigation with no flash.
+        // Fullscreen mirrors WP core's own block-editor pattern
+        // (`body.js.is-fullscreen-mode` -> display:none of the known core chrome),
+        // gated on `.js` so the page degrades to a normal screen without JS.
+        // =====================================================================
+        if ( isset( $_REQUEST['page'] ) && strncmp( $_REQUEST['page'], 'bookly-', 7 ) === 0 ) {
+            add_filter( 'admin_body_class', function ( $classes ) {
+                $ap = get_user_meta( get_current_user_id(), 'bookly_appearance', true );
+                if ( ! is_array( $ap ) ) {
+                    return $classes;
+                }
+                if ( ! empty( $ap['fullscreen'] ) )  { $classes .= ' bookly-fullscreen-active'; }
+                if ( ! empty( $ap['fixed_width'] ) ) { $classes .= ' bookly-fixed-width'; }
+                return $classes;
+            } );
+            add_action( 'admin_head', function () {
+                // Rules only bite when the matching body class is present (added
+                // from meta above, or toggled at runtime by the appearance panel).
+                echo '<style id="bookly-appearance-css">'
+                    // Fullscreen: hide the known WP core chrome (display:none — immune
+                    // to z-index/stacking/timing) + overlay our page as a backstop for
+                    // anything unknown. `.js`-gated, matching WP's own fullscreen.
+                    . 'body.js.bookly-fullscreen-active #wpadminbar,'
+                    . 'body.js.bookly-fullscreen-active #adminmenumain,'
+                    . 'body.js.bookly-fullscreen-active #wpfooter{display:none!important;}'
+                    // Lock the document scroll so only the fixed overlay scrolls
+                    // (otherwise html/body scroll behind it = a second scrollbar).
+                    . 'html:has(body.js.bookly-fullscreen-active){padding-top:0!important;overflow:hidden!important;}'
+                    . 'body.js.bookly-fullscreen-active{overflow:hidden!important;}'
+                    . 'body.js.bookly-fullscreen-active #wpcontent{margin-left:0!important;}'
+                    // background uses !important: bootstrap resets #bookly-tbs to
+                    // background-color:transparent (ID specificity) — a class can never
+                    // out-specify an ID. Drop the !important once #bookly-tbs is gone.
+                    . 'body.js.bookly-fullscreen-active .bookly-main-page-wrap{position:fixed;inset:0;z-index:100049;margin:0;padding:10px 20px;overflow:auto;background:#f0f0f1!important;}'
+                    // Fixed page width: cap the content column and centre it.
+                    . 'body.js.bookly-fixed-width .bookly-main-page-wrap{max-width:1180px;margin-inline:auto;}'
+                    // ...and the Bookly admin notices, which WP renders as .wrap
+                    // siblings directly under #wpcontent (via in_admin_header) — so
+                    // they line up with the centred content instead of spanning full.
+                    . 'body.js.bookly-fixed-width #wpcontent>.wrap{max-width:1180px;margin-inline:auto;}'
+                    // When also fullscreen, the wrap is a full-width fixed scroller
+                    // (inset:0) — max-width + auto margins fight it, so centre via padding.
+                    . 'body.js.bookly-fullscreen-active.bookly-fixed-width .bookly-main-page-wrap{max-width:none;margin-inline:0;padding-inline:max(20px,calc((100% - 1180px) / 2));}'
+                    // Fullscreen left sidebar (the Svelte nav, w-60 = 240px) is shown only at >=md
+                    // and pinned to the viewport — offset the page content right by it (240 + 20
+                    // gutter). Below md the sidebar is an off-canvas drawer, so no offset there.
+                    . '@media(min-width:768px){body.js.bookly-fullscreen-active .bookly-main-page-wrap{padding-left:260px;}}'
+                    // ...and with fixed width too: centre the 1180px column within the space to the
+                    // RIGHT of the sidebar (left = sidebar + gutter, right = matching gutter).
+                    . '@media(min-width:768px){body.js.bookly-fullscreen-active.bookly-fixed-width .bookly-main-page-wrap{padding-left:calc(240px + max(20px,(100% - 240px - 1180px) / 2));padding-right:max(20px,(100% - 240px - 1180px) / 2);}}'
+                    // Loading-window placeholder: a blank panel matching the sidebar footprint
+                    // (240px, card bg, right border), shown only in fullscreen >= md and sitting
+                    // one z-index below the real Svelte <aside> (z-40), which covers it on mount.
+                    . '.bookly-fs-sidebar-placeholder{display:none;}'
+                    . '@media(min-width:768px){body.js.bookly-fullscreen-active .bookly-fs-sidebar-placeholder{display:block;position:fixed;left:0;top:0;bottom:0;width:240px;z-index:39;background:#fff;border-right:1px solid #e5e7eb;}}'
+                    // Sidebar nav scroller: hide the (ugly) scrollbar and fade whichever edges have
+                    // more content beyond them. The header JS feeds the edge sizes via --bookly-fade-*
+                    // (0px = no fade); a single mask covers top + bottom in any combination.
+                    . '.bookly-fs-nav-scroll{scrollbar-width:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--bookly-fade-top,0px),#000 calc(100% - var(--bookly-fade-bottom,0px)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--bookly-fade-top,0px),#000 calc(100% - var(--bookly-fade-bottom,0px)),transparent 100%);}'
+                    . '.bookly-fs-nav-scroll::-webkit-scrollbar{width:0;height:0;display:none;}'
+                    . '</style>';
+            } );
+        }
     }

     /**
@@ -120,7 +209,7 @@
                     plugins_url( 'resources/images/menu.png', __FILE__ ), $dynamic_position );
             }
             if ( LibConfig::setupMode() ) {
-                $setup = __( 'Initial setup', 'bookly' );
+                $setup = __( 'Initial setup', 'bookly-responsive-appointment-booking-tool' );
                 add_submenu_page( 'bookly-menu', $setup, $setup, $required_capability, ModulesSetupPage::pageSlug(), function() { ModulesSetupPage::render(); } );
             } elseif ( LibProxyPro::graceExpired() ) {
                 LibProxyPro::addLicenseBooklyMenuItem();
@@ -129,17 +218,17 @@
                 }
             } else {
                 // Translated submenu pages.
-                $dashboard = __( 'Dashboard', 'bookly' );
-                $appointments = __( 'Appointments', 'bookly' );
-                $staff_members = __( 'Staff Members', 'bookly' );
-                $services = __( 'Services', 'bookly' );
-                $notifications = __( 'Email Notifications', 'bookly' );
-                $customers = __( 'Customers', 'bookly' );
-                $payments = __( 'Payments', 'bookly' );
-                $appearance = __( 'Appearance', 'bookly' );
-                $settings = __( 'Settings', 'bookly' );
-                $products = __( 'Products', 'bookly' );
-                $billing = __( 'Billing', 'bookly' );
+                $dashboard = __( 'Dashboard', 'bookly-responsive-appointment-booking-tool' );
+                $appointments = __( 'Appointments', 'bookly-responsive-appointment-booking-tool' );
+                $staff_members = __( 'Staff Members', 'bookly-responsive-appointment-booking-tool' );
+                $services = __( 'Services', 'bookly-responsive-appointment-booking-tool' );
+                $notifications = __( 'Email Notifications', 'bookly-responsive-appointment-booking-tool' );
+                $customers = __( 'Customers', 'bookly-responsive-appointment-booking-tool' );
+                $payments = __( 'Payments', 'bookly-responsive-appointment-booking-tool' );
+                $appearance = __( 'Appearance', 'bookly-responsive-appointment-booking-tool' );
+                $settings = __( 'Settings', 'bookly-responsive-appointment-booking-tool' );
+                $products = __( 'Products', 'bookly-responsive-appointment-booking-tool' );
+                $billing = __( 'Billing', 'bookly-responsive-appointment-booking-tool' );

                 add_submenu_page( 'bookly-menu', $dashboard, $dashboard, $required_capability,
                     ModulesDashboardPage::pageSlug(), function() { ModulesDashboardPage::render(); } );
@@ -158,7 +247,7 @@
                         ModulesStaffPage::pageSlug(), function() { ModulesStaffPage::render(); } );
                 } elseif ( $is_staff ) {
                     if ( get_option( 'bookly_gen_allow_staff_edit_profile' ) == 1 ) {
-                        add_submenu_page( 'bookly-menu', __( 'Profile', 'bookly' ), __( 'Profile', 'bookly' ), 'read',
+                        add_submenu_page( 'bookly-menu', __( 'Profile', 'bookly-responsive-appointment-booking-tool' ), __( 'Profile', 'bookly-responsive-appointment-booking-tool' ), 'read',
                             ModulesStaffPage::pageSlug(), function() { ModulesStaffPage::render(); } );
                     }
                 }
@@ -193,7 +282,7 @@
                 ModulesShopPage::addBooklyMenuItem();

                 if ( ! LibConfig::proActive() ) {
-                    $submenu['bookly-menu'][] = array( esc_attr__( 'Get Bookly Pro', 'bookly' ) . ' <i class="fas fa-fw fa-certificate" style="color: #f4662f"></i>', 'read', LibUtilsCommon::prepareUrlReferrers( 'https://www.booking-wp-plugin.com/pricing', 'admin_menu' ), );
+                    $submenu['bookly-menu'][] = array( esc_attr__( 'Get Bookly Pro', 'bookly-responsive-appointment-booking-tool' ) . ' <i class="fas fa-fw fa-certificate" style="color: #f4662f"></i>', 'read', LibUtilsCommon::prepareUrlReferrers( 'https://www.booking-wp-plugin.com/pricing', 'admin_menu' ), );
                 }

                 // Bookly Cloud menu
--- a/bookly-responsive-appointment-booking-tool/backend/components/ace/templates/editor.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/ace/templates/editor.php
@@ -7,5 +7,5 @@
 ?>
 <div id="<?php echo esc_attr( $id ) ?>" class="bookly-ace-editor<?php if ( $additional_classes ) echo ' ' . esc_attr( $additional_classes ) ?>"<?php if ( $codes ) : ?> data-codes="<?php echo esc_attr( $codes ) ?>"<?php endif ?> data-value="<?php echo esc_attr( $value ) ?>"></div>
 <?php if ( $doc_slug ) : ?>
-    <small class="form-text text-muted"><?php printf( __( 'Start typing "{" to see the available codes. For more information, see the <a href="%s" target="_blank">documentation</a> page', 'bookly' ), 'https://hub.bookly.pro/go/' . $doc_slug ) ?></small>
+    <small class="form-text text-muted"><?php printf( __( 'Start typing "{" to see the available codes. For more information, see the <a href="%s" target="_blank">documentation</a> page', 'bookly-responsive-appointment-booking-tool' ), 'https://hub.bookly.pro/go/' . $doc_slug ) ?></small>
 <?php endif ?>
 No newline at end of file
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/Ajax.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/Ajax.php
@@ -59,7 +59,7 @@
                 wp_send_json_success();
             }
         } else {
-            wp_send_json_error( array( 'message' => __( 'Please accept terms and conditions.', 'bookly' ) ) );
+            wp_send_json_error( array( 'message' => __( 'Please accept terms and conditions.', 'bookly-responsive-appointment-booking-tool' ) ) );
         }

         wp_send_json_error( array( 'message' => current( $cloud->getErrors() ) ) );
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/Panel.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/Panel.php
@@ -37,8 +37,8 @@
         ) );

         wp_localize_script( 'bookly-cloud-auth.js', 'BooklyCloudAuthL10n', array(
-            'passwords_not_match' => __( 'Passwords don't match', 'bookly' ),
-            'noResults' => __( 'No records.', 'bookly' ),
+            'passwords_not_match' => __( 'Passwords don't match', 'bookly-responsive-appointment-booking-tool' ),
+            'noResults' => __( 'No records.', 'bookly-responsive-appointment-booking-tool' ),
         ) );

         $promotions = get_option( 'bookly_cloud_promotions', array() );
@@ -87,29 +87,29 @@

         $l10n = array(
             'productsUrl' => Common::escAdminUrl( ModulesCloudProductsPage::pageSlug() ),
-            'auto_recharge_text' => $cloud->account->autoRechargeEnabled() ? __( 'Auto-Recharge is enabled', 'bookly' ) : '',
-            'auto_recharge_payment_method' => $cloud->account->autoRechargeEnabled() ? sprintf( __( 'Payment method: %s', 'bookly' ), $cloud->account->getAutoRechargeTitle() ) : '',
-            'auto_recharge_end_date' => $cloud->account->autoRechargeEnabled() && $cloud->account->getAutoRechargeEndAt() ? sprintf( __( 'End date: %s', 'bookly' ), LibUtilsDateTime::formatDate( $cloud->account->getAutoRechargeEndAt() ) ) : '',
-            'auto_recharge_button' => __( 'Change', 'bookly' ),
+            'auto_recharge_text' => $cloud->account->autoRechargeEnabled() ? __( 'Auto-Recharge is enabled', 'bookly-responsive-appointment-booking-tool' ) : '',
+            'auto_recharge_payment_method' => $cloud->account->autoRechargeEnabled() ? sprintf( __( 'Payment method: %s', 'bookly-responsive-appointment-booking-tool' ), $cloud->account->getAutoRechargeTitle() ) : '',
+            'auto_recharge_end_date' => $cloud->account->autoRechargeEnabled() && $cloud->account->getAutoRechargeEndAt() ? sprintf( __( 'End date: %s', 'bookly-responsive-appointment-booking-tool' ), LibUtilsDateTime::formatDate( $cloud->account->getAutoRechargeEndAt() ) ) : '',
+            'auto_recharge_button' => __( 'Change', 'bookly-responsive-appointment-booking-tool' ),
             'cloud_support_text' => $support_days < 0
-                ? __( 'Support has expired', 'bookly' )
+                ? __( 'Support has expired', 'bookly-responsive-appointment-booking-tool' )
                 : ( $support_days <= 3
-                    ? __( 'Support is about to expire', 'bookly' )
-                    : __( 'Support is active', 'bookly' )
+                    ? __( 'Support is about to expire', 'bookly-responsive-appointment-booking-tool' )
+                    : __( 'Support is active', 'bookly-responsive-appointment-booking-tool' )
                 ),
             'cloud_support_exp_date' => $cloud->account->getCloudSupportEndAt() === null
                 ? ''
-                : sprintf( __( 'Expiration date: %s', 'bookly' ), LibUtilsDateTime::formatDate( $cloud->account->getCloudSupportEndAt() ) ),
-            'cloud_support_hiw' => __( 'How it works', 'bookly' ),
-            'cloud_support_extend' => __( 'Extend support', 'bookly' ),
+                : sprintf( __( 'Expiration date: %s', 'bookly-responsive-appointment-booking-tool' ), LibUtilsDateTime::formatDate( $cloud->account->getCloudSupportEndAt() ) ),
+            'cloud_support_hiw' => __( 'How it works', 'bookly-responsive-appointment-booking-tool' ),
+            'cloud_support_extend' => __( 'Extend support', 'bookly-responsive-appointment-booking-tool' ),
         );

         if ( ! $cloud->account->getCountry() ) {
-            $l10n['noResults'] = __( 'No records.', 'bookly' );
-            $l10n['settingsSaved'] = __( 'Settings saved.', 'bookly' );
+            $l10n['noResults'] = __( 'No records.', 'bookly-responsive-appointment-booking-tool' );
+            $l10n['settingsSaved'] = __( 'Settings saved.', 'bookly-responsive-appointment-booking-tool' );
         }
         if ( ! $cloud->account->getEmailConfirmed() ) {
-            $l10n['confirm_email_code_resent'] = __( 'An email containing the confirmation code has been sent to your email address.', 'bookly' );
+            $l10n['confirm_email_code_resent'] = __( 'An email containing the confirmation code has been sent to your email address.', 'bookly-responsive-appointment-booking-tool' );
             $l10n['show_confirm_email_dialog'] = ! get_user_meta( get_current_user_id(), 'bookly_dismiss_cloud_confirm_email', true );
         }
         wp_localize_script( 'bookly-cloud-panel.js', 'BooklyCloudPanelL10n', $l10n );
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_balance.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_balance.php
@@ -10,13 +10,13 @@
 <div class="btn-group">
     <div class="border rounded-left pl-2 d-flex align-items-center" id="bookly-cloud-balance">
         <div class="col pl-0 pr-2 d-none d-md-inline">
-            <h6 class="small text-muted m-0"><?php _e( 'current<br/>balance', 'bookly' ) ?></h6>
+            <h6 class="small text-muted m-0"><?php _e( 'current<br/>balance', 'bookly-responsive-appointment-booking-tool' ) ?></h6>
         </div>
         <div class="col pl-0 pr-2">
             <span class="lead <?php echo esc_attr( $txt_class ) ?>">$<?php echo number_format( $balance, 2 ) ?></span>
         </div>
     </div>
     <button type="button" class="btn btn-success text-nowrap bookly-js-recharge-dialog-activator">
-        <i class="fas fa-coins"></i><span class="d-none d-md-inline ml-2"><?php esc_html_e( 'Recharge', 'bookly' ) ?></span>
+        <i class="fas fa-coins"></i><span class="d-none d-md-inline ml-2"><?php esc_html_e( 'Recharge', 'bookly-responsive-appointment-booking-tool' ) ?></span>
     </button>
 </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_confirm_email.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_confirm_email.php
@@ -5,35 +5,35 @@
     <div class="modal-dialog">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title"><?php esc_html_e( 'Thank you for registration.', 'bookly' ) ?></h5>
+                <h5 class="modal-title"><?php esc_html_e( 'Thank you for registration.', 'bookly-responsive-appointment-booking-tool' ) ?></h5>
                 <button type="button" class="close" data-dismiss="bookly-modal"><span>×</span></button>
             </div>
             <div class="modal-body">
                 <p>
-                    <?php esc_html_e( 'You're almost ready to get started with Bookly Cloud.', 'bookly' ) ?>
-                    <?php esc_html_e( 'An email containing the confirmation code has been sent to your email address.', 'bookly' ) ?>
+                    <?php esc_html_e( 'You're almost ready to get started with Bookly Cloud.', 'bookly-responsive-appointment-booking-tool' ) ?>
+                    <?php esc_html_e( 'An email containing the confirmation code has been sent to your email address.', 'bookly-responsive-appointment-booking-tool' ) ?>
                 </p>
-                <p><?php esc_html_e( 'To complete registration, please enter the confirmation code below.', 'bookly' ) ?></p>
+                <p><?php esc_html_e( 'To complete registration, please enter the confirmation code below.', 'bookly-responsive-appointment-booking-tool' ) ?></p>
                 <div class="input-group mb-4">
-                    <input type="text" class="form-control bookly-js-confirmation-code" id="bookly-confirmation-code" placeholder="<?php esc_attr_e( 'Confirmation code', 'bookly' ) ?>" />
+                    <input type="text" class="form-control bookly-js-confirmation-code" id="bookly-confirmation-code" placeholder="<?php esc_attr_e( 'Confirmation code', 'bookly-responsive-appointment-booking-tool' ) ?>" />
                     <div class="input-group-append">
-                        <?php Buttons::renderSubmit( 'bookly-apply-confirmation-code', null, __( 'Confirm', 'bookly' ), array( 'name' => 'submit' ) ) ?>
+                        <?php Buttons::renderSubmit( 'bookly-apply-confirmation-code', null, __( 'Confirm', 'bookly-responsive-appointment-booking-tool' ), array( 'name' => 'submit' ) ) ?>
                     </div>
                 </div>
                 <h6>
-                    <b><?php esc_html_e( 'Didn't receive the email?', 'bookly' ) ?></b>
+                    <b><?php esc_html_e( 'Didn't receive the email?', 'bookly-responsive-appointment-booking-tool' ) ?></b>
                 </h6>
                 <ol>
                     <li>
-                        <?php esc_html_e( 'Check your spam folder.', 'bookly' ) ?>
+                        <?php esc_html_e( 'Check your spam folder.', 'bookly-responsive-appointment-booking-tool' ) ?>
                     </li>
                     <li>
-                        <?php printf( esc_html__( 'Click %s here %s to resend the email.', 'bookly' ), '<a href="#" class="bookly-js-resend-confirmation">', '</a>' ) ?>
+                        <?php printf( esc_html__( 'Click %s here %s to resend the email.', 'bookly-responsive-appointment-booking-tool' ), '<a href="#" class="bookly-js-resend-confirmation">', '</a>' ) ?>
                     </li>
                 </ol>
             </div>
             <div class="modal-footer">
-                <?php Buttons::renderCancel( __( 'I'll do it later', 'bookly' ) ) ?>
+                <?php Buttons::renderCancel( __( 'I'll do it later', 'bookly-responsive-appointment-booking-tool' ) ) ?>
             </div>
         </div>
     </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_setup_country.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_setup_country.php
@@ -5,26 +5,26 @@
     <div class="modal-dialog">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title"><?php esc_html_e( 'Setup your country', 'bookly' ) ?></h5>
+                <h5 class="modal-title"><?php esc_html_e( 'Setup your country', 'bookly-responsive-appointment-booking-tool' ) ?></h5>
                 <button type="button" class="close" data-dismiss="bookly-modal" aria-label="Close"><span aria-hidden="true">×</span></button>
             </div>
             <div class="modal-body">
                 <div class="alert alert-danger" role="alert">
                     <p>
-                        <?php esc_html_e( 'Please spend a minute to setup your country. This will help us provide you with appropriate payment methods when replenishing your account.', 'bookly' ) ?>
+                        <?php esc_html_e( 'Please spend a minute to setup your country. This will help us provide you with appropriate payment methods when replenishing your account.', 'bookly-responsive-appointment-booking-tool' ) ?>
                     </p>
                     <p class="mb-0">
-                        <?php esc_html_e( 'The country will also be displayed in the invoice on a separate line below the company address. Make sure the other fields in the invoice do not contain the name of the country.', 'bookly' ) ?>
+                        <?php esc_html_e( 'The country will also be displayed in the invoice on a separate line below the company address. Make sure the other fields in the invoice do not contain the name of the country.', 'bookly-responsive-appointment-booking-tool' ) ?>
                     </p>
                 </div>
                 <div class="form-group mt-2">
                     <select id="bookly-s-country"></select>
-                    <small class="text-muted"><?php esc_html_e( 'Your country is the location from where you consume Bookly SMS services and is used to provide you with the payment methods available in that country', 'bookly' ) ?></small>
+                    <small class="text-muted"><?php esc_html_e( 'Your country is the location from where you consume Bookly SMS services and is used to provide you with the payment methods available in that country', 'bookly-responsive-appointment-booking-tool' ) ?></small>
                 </div>
             </div>
             <div class="modal-footer">
-                <?php Buttons::renderSubmit( 'bookly-set-country', null, __( 'Set country', 'bookly' ) ) ?>
-                <?php Buttons::renderCancel( __( 'I'll do it later', 'bookly' ) ) ?>
+                <?php Buttons::renderSubmit( 'bookly-set-country', null, __( 'Set country', 'bookly-responsive-appointment-booking-tool' ) ) ?>
+                <?php Buttons::renderCancel( __( 'I'll do it later', 'bookly-responsive-appointment-booking-tool' ) ) ?>
             </div>
         </div>
     </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_support.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/_support.php
@@ -12,6 +12,6 @@
 <span class="badge rounded-pill <?php echo esc_attr( $color_class ) ?> font-weight-normal p-2" id="bookly-cloud-support">
     <i class="fas fa-headset fa-sm"></i>
     <?php if ( $days >= 0 ): ?>
-        <?php printf( _n( '%d day', '%d days', $days, 'bookly' ), $days ) ?>
+        <?php printf( _n( '%d day', '%d days', $days, 'bookly-responsive-appointment-booking-tool' ), $days ) ?>
     <?php endif ?>
 </span>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/auth.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/auth.php
@@ -5,10 +5,10 @@
 ?>
 <div class="btn-group">
     <button id="bookly-cloud-register-button" type="button" class="btn btn-success">
-        <i class="fas fa-user-plus mr-2"></i><?php esc_html_e( 'Register', 'bookly' ) ?>
+        <i class="fas fa-user-plus mr-2"></i><?php esc_html_e( 'Register', 'bookly-responsive-appointment-booking-tool' ) ?>
     </button>
     <button id="bookly-cloud-login-button" type="button" class="btn btn-info">
-        <i class="fas fa-sign-in-alt mr-2"></i><?php esc_html_e( 'Log In', 'bookly' ) ?>
+        <i class="fas fa-sign-in-alt mr-2"></i><?php esc_html_e( 'Log In', 'bookly-responsive-appointment-booking-tool' ) ?>
     </button>
 </div>

@@ -17,9 +17,9 @@
         <div class="modal-content">
             <div class="modal-header">
                 <h4 class="modal-title">
-                    <span class="bookly-js-modal-title bookly-js-title-register"><?php esc_html_e( 'Registration', 'bookly' ) ?></span>
-                    <span class="bookly-js-modal-title bookly-js-title-login"><?php esc_html_e( 'Login', 'bookly' ) ?></span>
-                    <span class="bookly-js-modal-title bookly-js-title-forgot bookly-js-title-recovery-code bookly-js-title-recovery-password"><?php esc_html_e( 'Forgot password', 'bookly' ) ?></span>
+                    <span class="bookly-js-modal-title bookly-js-title-register"><?php esc_html_e( 'Registration', 'bookly-responsive-appointment-booking-tool' ) ?></span>
+                    <span class="bookly-js-modal-title bookly-js-title-login"><?php esc_html_e( 'Login', 'bookly-responsive-appointment-booking-tool' ) ?></span>
+                    <span class="bookly-js-modal-title bookly-js-title-forgot bookly-js-title-recovery-code bookly-js-title-recovery-password"><?php esc_html_e( 'Forgot password', 'bookly-responsive-appointment-booking-tool' ) ?></span>
                 </h4>
                 <button type="button" class="close" data-dismiss="bookly-modal"><span>×</span></button>
             </div>
@@ -29,70 +29,70 @@
                         <div class="form-group"><?php echo Common::stripScripts( $promo_texts['form'] ) ?></div>
                     <?php endif ?>
                     <div class="form-group">
-                        <label for="bookly-r-username"><?php esc_html_e( 'Email', 'bookly' ) ?></label>
+                        <label for="bookly-r-username"><?php esc_html_e( 'Email', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-r-username" name="username" class="form-control" required="required" value="" type="text">
                     </div>
                     <div class="form-group">
-                        <label for="bookly-r-password"><?php esc_html_e( 'Password', 'bookly' ) ?></label>
+                        <label for="bookly-r-password"><?php esc_html_e( 'Password', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-r-password" name="password" class="form-control" required="required" value="" type="password">
                     </div>
                     <div class="form-group">
-                        <label for="bookly-r-repeat-password"><?php esc_html_e( 'Repeat password', 'bookly' ) ?></label>
+                        <label for="bookly-r-repeat-password"><?php esc_html_e( 'Repeat password', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-r-repeat-password" name="password_repeat" class="form-control" required="required" value="" type="password">
                     </div>
                     <div class="form-group">
-                        <label for="bookly-r-country"><?php esc_html_e( 'Country', 'bookly' ) ?></label>
+                        <label for="bookly-r-country"><?php esc_html_e( 'Country', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <select id="bookly-r-country" class="form-control" name="country"></select>
-                        <small class="text-muted"><?php esc_html_e( 'Your country is the location from where you consume Bookly SMS services and is used to provide you with the payment methods available in that country', 'bookly' ) ?></small>
+                        <small class="text-muted"><?php esc_html_e( 'Your country is the location from where you consume Bookly SMS services and is used to provide you with the payment methods available in that country', 'bookly-responsive-appointment-booking-tool' ) ?></small>
                     </div>
                     <div class="form-group">
                         <div class="custom-control custom-checkbox">
                             <input class="custom-control-input" type="checkbox" id="bookly-r-tos" name="accept_tos" required="required" value="1">
                             <label class="custom-control-label" for="bookly-r-tos">
-                                <?php printf( __( 'I accept <a href="%1$s" target="_blank">Service Terms</a> and <a href="%2$s" target="_blank">Privacy Policy</a>', 'bookly' ), 'https://www.booking-wp-plugin.com/terms/', 'https://www.booking-wp-plugin.com/privacy/' ) ?>
+                                <?php printf( __( 'I accept <a href="%1$s" target="_blank">Service Terms</a> and <a href="%2$s" target="_blank">Privacy Policy</a>', 'bookly-responsive-appointment-booking-tool' ), 'https://www.booking-wp-plugin.com/terms/', 'https://www.booking-wp-plugin.com/privacy/' ) ?>
                             </label>
                         </div>
                     </div>
                 </div>
                 <div id="bookly-form-login" class="bookly-js-modal-form">
                     <div class="form-group">
-                        <label for="bookly-username"><?php esc_html_e( 'Email', 'bookly' ) ?></label>
+                        <label for="bookly-username"><?php esc_html_e( 'Email', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-username" class="form-control" type="text" required="required" value="" name="username"/>
                     </div>
                     <div class="form-group">
-                        <label for="bookly-password"><?php esc_html_e( 'Password', 'bookly' ) ?></label>
+                        <label for="bookly-password"><?php esc_html_e( 'Password', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-password" class="form-control" type="password" required="required" name="password"/>
                     </div>
                 </div>
                 <div id="bookly-form-forgot" class="bookly-js-modal-form">
                     <div class="form-group">
-                        <label for="bookly-f-username"><?php esc_html_e( 'Email', 'bookly' ) ?></label>
+                        <label for="bookly-f-username"><?php esc_html_e( 'Email', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-f-username" class="form-control" type="text" name="username" value=""/>
                     </div>
                 </div>
                 <div id="bookly-form-recovery-code" class="bookly-js-modal-form">
                     <div class="form-group">
-                        <label for="bookly-f-code"><?php esc_html_e( 'Enter code from email', 'bookly' ) ?></label>
+                        <label for="bookly-f-code"><?php esc_html_e( 'Enter code from email', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-f-code" name="code" class="form-control" value="" type="text"/>
                     </div>
                 </div>
                 <div id="bookly-form-recovery-password" class="bookly-js-modal-form">
                     <div class="form-group">
-                        <label for="bookly-f-password"><?php esc_html_e( 'New password', 'bookly' ) ?></label>
+                        <label for="bookly-f-password"><?php esc_html_e( 'New password', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-f-password" name="password" class="form-control" value="" type="password"/>
                     </div>
                     <div class="form-group">
-                        <label for="bookly-f-password-repeat"><?php esc_html_e( 'Repeat new password', 'bookly' ) ?></label>
+                        <label for="bookly-f-password-repeat"><?php esc_html_e( 'Repeat new password', 'bookly-responsive-appointment-booking-tool' ) ?></label>
                         <input id="bookly-f-password-repeat" name="password_repeat" class="form-control" value="" type="password"/>
                     </div>
                 </div>
             </div>
             <div class="modal-footer">
                 <div class="bookly-js-modal-buttons bookly-js-buttons-register mr-auto">
-                    <a href="#" class="bookly-js-modal-form-switch" data-target="login"><?php esc_html_e( 'Log In', 'bookly' ) ?></a>
+                    <a href="#" class="bookly-js-modal-form-switch" data-target="login"><?php esc_html_e( 'Log In', 'bookly-responsive-appointment-booking-tool' ) ?></a>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-register btn-group">
-                    <?php ControlsButtons::renderSubmit( null, null, __( 'Register', 'bookly' ), array( 'name' => 'form-register' ) ) ?>
+                    <?php ControlsButtons::renderSubmit( null, null, __( 'Register', 'bookly-responsive-appointment-booking-tool' ), array( 'name' => 'form-register' ) ) ?>
                     <?php if ( $promo_texts['button'] ) : ?>
                         <div class="border border-left-0 rounded px-2 d-flex align-items-center">
                             <h6 class="m-0"><?php echo Common::stripScripts( $promo_texts['button'] ) ?></h6>
@@ -100,25 +100,25 @@
                     <?php endif ?>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-login mr-auto">
-                    <a href="#" class="bookly-js-modal-form-switch" data-target="register"><?php esc_html_e( 'Register', 'bookly' ) ?></a><br/>
-                    <a href="#" class="bookly-js-modal-form-switch" data-target="forgot"><?php esc_html_e( 'Forgot password', 'bookly' ) ?></a>
+                    <a href="#" class="bookly-js-modal-form-switch" data-target="register"><?php esc_html_e( 'Register', 'bookly-responsive-appointment-booking-tool' ) ?></a><br/>
+                    <a href="#" class="bookly-js-modal-form-switch" data-target="forgot"><?php esc_html_e( 'Forgot password', 'bookly-responsive-appointment-booking-tool' ) ?></a>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-login">
-                    <?php ControlsButtons::renderSubmit( null, null, __( 'Log In', 'bookly' ), array( 'name' => 'form-login' ) ) ?>
+                    <?php ControlsButtons::renderSubmit( null, null, __( 'Log In', 'bookly-responsive-appointment-booking-tool' ), array( 'name' => 'form-login' ) ) ?>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-forgot mr-auto">
-                    <a href="#" class="bookly-js-modal-form-switch" data-target="login"><?php esc_html_e( 'Log In', 'bookly' ) ?></a>
+                    <a href="#" class="bookly-js-modal-form-switch" data-target="login"><?php esc_html_e( 'Log In', 'bookly-responsive-appointment-booking-tool' ) ?></a>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-forgot">
-                    <?php ControlsButtons::renderSubmit( null, null, __( 'Next', 'bookly' ), array( 'name' => 'form-forgot', 'data-step' => 0, 'data-next' => 'recovery-code' ) ) ?>
+                    <?php ControlsButtons::renderSubmit( null, null, __( 'Next', 'bookly-responsive-appointment-booking-tool' ), array( 'name' => 'form-forgot', 'data-step' => 0, 'data-next' => 'recovery-code' ) ) ?>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-recovery-code">
-                    <?php ControlsButtons::renderSubmit( null, null, __( 'Next', 'bookly' ), array( 'name' => 'form-forgot', 'data-step' => 1, 'data-next' => 'recovery-password' ) ) ?>
+                    <?php ControlsButtons::renderSubmit( null, null, __( 'Next', 'bookly-responsive-appointment-booking-tool' ), array( 'name' => 'form-forgot', 'data-step' => 1, 'data-next' => 'recovery-password' ) ) ?>
                 </div>
                 <div class="bookly-js-modal-buttons bookly-js-buttons-recovery-password">
-                    <?php ControlsButtons::renderSubmit( null, null, __( 'Apply', 'bookly' ), array( 'name' => 'form-forgot', 'data-step' => 2, 'data-next' => 'login' ) ) ?>
+                    <?php ControlsButtons::renderSubmit( null, null, __( 'Apply', 'bookly-responsive-appointment-booking-tool' ), array( 'name' => 'form-forgot', 'data-step' => 2, 'data-next' => 'login' ) ) ?>
                 </div>
-                <?php ControlsButtons::renderCancel( __( 'Close', 'bookly' ) ) ?>
+                <?php ControlsButtons::renderCancel( __( 'Close', 'bookly-responsive-appointment-booking-tool' ) ) ?>
             </div>
         </div>
     </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/panel.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/account/templates/panel.php
@@ -25,14 +25,14 @@
             <div class="bookly-dropdown-menu bookly-dropdown-menu-compact bookly-dropdown-menu-right" aria-labelledby="bookly-open-account-settings">
                 <?php if ( ! $cloud->account->getEmailConfirmed() ) : ?>
                     <a id="bookly-open-email-confirm" class="bookly-dropdown-item text-danger" href="#">
-                        <i class="fas fa-exclamation-circle mr-2"></i><?php esc_html_e( 'Confirm email', 'bookly' ) ?>
+                        <i class="fas fa-exclamation-circle mr-2"></i><?php esc_html_e( 'Confirm email', 'bookly-responsive-appointment-booking-tool' ) ?>
                     </a>
                 <?php endif ?>
                 <a class="bookly-dropdown-item bookly-js-ladda" href="<?php echo Common::escAdminUrl( BooklyBackendModulesCloudSettingsPage::pageSlug() ) ?>">
-                    <i class="fas fa-cog mr-2"></i><?php esc_html_e( 'Settings', 'bookly' ) ?>
+                    <i class="fas fa-cog mr-2"></i><?php esc_html_e( 'Settings', 'bookly-responsive-appointment-booking-tool' ) ?>
                 </a>
                 <a id="bookly-logout" class="bookly-dropdown-item bookly-js-ladda" href="#">
-                    <i class="fas fa-sign-out-alt mr-2"></i><?php esc_html_e( 'Log out', 'bookly' ) ?>
+                    <i class="fas fa-sign-out-alt mr-2"></i><?php esc_html_e( 'Log out', 'bookly-responsive-appointment-booking-tool' ) ?>
                 </a>
             </div>
         </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/login_required/templates/index.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/login_required/templates/index.php
@@ -1,18 +1,15 @@
 <?php defined( 'ABSPATH' ) || exit; // Exit if accessed directly
-use BooklyBackendComponentsSupport;
+use BooklyBackendComponentsPageHeaderRenderer as PageHeaderRenderer;
 use BooklyBackendComponentsCloud;
 /**
  * @var string $title
  * @var string $slug
  */
 ?>
-<div id="bookly-tbs" class="wrap">
-    <div class="form-row align-items-center mb-3">
-        <h4 class="col m-0"><?php echo esc_html( $title ) ?></h4>
-        <?php SupportButtons::render( $slug ) ?>
-    </div>
-    <div id="bookly-login-required" class="card mb-4" style="min-height: 600px;">
-        <div class="card-body">
+<div id="bookly-tbs" class="wrap bookly-css-root bookly-main-page-wrap">
+    <?php PageHeaderRenderer::render( $slug, $title ) ?>
+    <div id="bookly-login-required" class="bookly:card mb-4" style="min-height: 600px;">
+        <div class="bookly:card-body">
             <div class="row pb-3">
                 <div class="col">
                 </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/Ajax.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/Ajax.php
@@ -20,7 +20,7 @@
             wp_send_json_success( array( 'paypal_preapproval' => $url ) );
         } else {
             $errors = $cloud->getErrors();
-            $message = __( 'Auto-Recharge has failed, please replenish your balance directly.', 'bookly' );
+            $message = __( 'Auto-Recharge has failed, please replenish your balance directly.', 'bookly-responsive-appointment-booking-tool' );
             if ( array_key_exists( 'ERROR_PROMOTION_NOT_AVAILABLE', $errors ) ) {
                 $message = $errors['ERROR_PROMOTION_NOT_AVAILABLE'];
             }
@@ -29,12 +29,12 @@
     }

     /**
-     * Create Stripe Checkout session
+     * Create Checkout session
      */
-    public static function createStripeCheckoutSession()
+    public static function createCheckoutSession()
     {
         $cloud = LibCloudAPI::getInstance();
-        $result = $cloud->account->createStripeCheckoutSession(
+        $result = $cloud->account->createCheckoutSession(
             self::parameter( 'recharge' ),
             self::parameter( 'promo_code' ),
             self::parameter( 'mode' ),
@@ -46,7 +46,7 @@
             if ( array_key_exists( 'ERROR_RECHARGE_NOT_AVAILABLE', $errors ) ) {
                 wp_send_json_error( array( 'message' => $errors['ERROR_RECHARGE_NOT_AVAILABLE'] ) );
             } else {
-                wp_send_json_error( array( 'message' => __( 'Card payment has failed, please use another payment option', 'bookly' ) ) );
+                wp_send_json_error( array( 'message' => __( 'Card payment has failed, please use another payment option', 'bookly-responsive-appointment-booking-tool' ) ) );
             }
         } else {
             wp_send_json( $result );
@@ -70,7 +70,7 @@
             if ( array_key_exists( 'ERROR_RECHARGE_NOT_AVAILABLE', $errors ) ) {
                 wp_send_json_error( array( 'message' => $errors['ERROR_RECHARGE_NOT_AVAILABLE'] ) );
             } else {
-                wp_send_json_error( array( 'message' => __( 'Payment has failed, please use another payment option', 'bookly' ) ) );
+                wp_send_json_error( array( 'message' => __( 'Payment has failed, please use another payment option', 'bookly-responsive-appointment-booking-tool' ) ) );
             }
         } else {
             wp_send_json_success( compact( 'order_url' ) );
@@ -85,9 +85,9 @@
         $disabled = LibCloudAPI::getInstance()->account->disableAutoRecharge();
         if ( $disabled !== false ) {
             update_option( 'bookly_cloud_auto_recharge_gateway', '' );
-            wp_send_json_success( array( 'message' => __( 'Auto-Recharge disabled', 'bookly' ) ) );
+            wp_send_json_success( array( 'message' => __( 'Auto-Recharge disabled', 'bookly-responsive-appointment-booking-tool' ) ) );
         } else {
-            wp_send_json_error( array( 'message' => sprintf( __( 'Can't disable Auto-Recharge, please contact us at %s', 'bookly' ), '<a href="mailto:support@bookly.info">support@bookly.info</a>' ) ) );
+            wp_send_json_error( array( 'message' => sprintf( __( 'Can't disable Auto-Recharge, please contact us at %s', 'bookly-responsive-appointment-booking-tool' ), '<a href="mailto:support@bookly.info">support@bookly.info</a>' ) ) );
         }
     }

--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/Dialog.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/Dialog.php
@@ -24,15 +24,15 @@
                 'no_card' => $recharge['no_card'],
                 'payment' => array(
                     'manual' => array(
-                        'action' => __( 'Pay using', 'bookly' ),
-                        'accepted' => __( 'Your payment has been accepted for processing', 'bookly' ),
-                        'cancelled' => __( 'Your payment has been cancelled', 'bookly' ),
+                        'action' => __( 'Pay using', 'bookly-responsive-appointment-booking-tool' ),
+                        'accepted' => __( 'Your payment has been accepted for processing', 'bookly-responsive-appointment-booking-tool' ),
+                        'cancelled' => __( 'Your payment has been cancelled', 'bookly-responsive-appointment-booking-tool' ),
                     ),
                     'auto' => array(
-                        'action' => __( 'Continue with', 'bookly' ),
-                        'cancelled' => __( 'Auto-Recharge has been cancelled', 'bookly' ),
-                        'enabled' => __( 'Auto-Recharge has been enabled', 'bookly' ),
-                        'renewed' => __( 'Auto-Recharge has been renewed', 'bookly' ),
+                        'action' => __( 'Continue with', 'bookly-responsive-appointment-booking-tool' ),
+                        'cancelled' => __( 'Auto-Recharge has been cancelled', 'bookly-responsive-appointment-booking-tool' ),
+                        'enabled' => __( 'Auto-Recharge has been enabled', 'bookly-responsive-appointment-booking-tool' ),
+                        'renewed' => __( 'Auto-Recharge has been renewed', 'bookly-responsive-appointment-booking-tool' ),
                     ),
                 ),
                 'auto_recharge' => array(
@@ -40,8 +40,8 @@
                     'amount' => $cloud->account->getAutoRechargeAmount(),
                     'bonus' => $cloud->account->getAutoRechargeBonus(),
                 ),
-                'dont_have_auto_recharge' => __( 'You don't have active auto-recharge', 'bookly' ),
-                'promo_percentage_info' => __( 'You'll receive a %s bonus on your top-up', 'bookly' ),
+                'dont_have_auto_recharge' => __( 'You don't have active auto-recharge', 'bookly-responsive-appointment-booking-tool' ),
+                'promo_percentage_info' => __( 'You'll receive a %s bonus on your top-up', 'bookly-responsive-appointment-booking-tool' ),
             ) );

             self::renderTemplate( 'dialog', compact( 'cloud' ) );
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_accepted.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_accepted.php
@@ -24,8 +24,8 @@
         transform: rotate(45deg)
     }
 </style>
-<h3 class="text-success text-center pb-0 mb-0"><?php esc_html_e( 'Thank you', 'bookly' ) ?>!</h3>
+<h3 class="text-success text-center pb-0 mb-0"><?php esc_html_e( 'Thank you', 'bookly-responsive-appointment-booking-tool' ) ?>!</h3>
 <div class="text-success py-5">
     <i class="mx-auto bookly-success-icon"></i>
 </div>
-<p class="text-center bookly-js-message"><?php esc_html_e( 'Your payment has been accepted for processing', 'bookly' ) ?>!</p>
 No newline at end of file
+<p class="text-center bookly-js-message"><?php esc_html_e( 'Your payment has been accepted for processing', 'bookly-responsive-appointment-booking-tool' ) ?>!</p>
 No newline at end of file
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_amounts.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_amounts.php
@@ -12,22 +12,22 @@

 <div class="bookly-js-auto-recharge-text">
     <?php if ( ! $cloud->account->autoRechargeEnabled() ) : ?>
-        <h4 class="text-center mt-3"><?php esc_html_e( 'Please select an amount and enable Auto-Recharge', 'bookly' ) ?></h4>
+        <h4 class="text-center mt-3"><?php esc_html_e( 'Please select an amount and enable Auto-Recharge', 'bookly-responsive-appointment-booking-tool' ) ?></h4>
     <?php endif ?>
     <div class="mb-3 mt-4">
         <div class="text-center">
             <a class="text-muted" style="text-decoration:underline dotted" data-toggle="bookly-collapse" href="#how-auto-recharge-works">
-                <?php esc_html_e( 'How it works', 'bookly' ) ?> <i class="fas fa-question-circle"></i>
+                <?php esc_html_e( 'How it works', 'bookly-responsive-appointment-booking-tool' ) ?> <i class="fas fa-question-circle"></i>
             </a>
         </div>
         <div class="bookly-collapse alert alert-info text-justify mx-5" id="how-auto-recharge-works">
-            <?php printf( __( 'Your account will be topped up with the selected amount <b>now</b> if your balance is less than %1$s, and <b>automatically later</b> when the balance falls below %1$s.', 'bookly' ), '$10' ) ?>
+            <?php printf( __( 'Your account will be topped up with the selected amount <b>now</b> if your balance is less than %1$s, and <b>automatically later</b> when the balance falls below %1$s.', 'bookly-responsive-appointment-booking-tool' ), '$10' ) ?>
         </div>
     </div>
 </div>

 <div class="bookly-js-manual-recharge-text">
-    <h4 class="text-center mt-3 mb-4"><?php esc_html_e( 'Please select an amount and recharge your account', 'bookly' ) ?></h4>
+    <h4 class="text-center mt-3 mb-4"><?php esc_html_e( 'Please select an amount and recharge your account', 'bookly-responsive-appointment-booking-tool' ) ?></h4>
 </div>

 <div class="form-row bookly-js-manual-recharges mt-4" style="display: none;">
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_button.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_button.php
@@ -10,9 +10,9 @@
 <div class="bookly-js-recharge card mx-2 mb-4<?php if ( $custom_color ) : ?><?php echo esc_attr( ' border-' . $custom_color ); ?><?php endif ?>" style="border-width: 2px; min-height: 200px;<?php if ( $disabled ) : ?> opacity: 0.5<?php endif ?>">
     <div class="card-body text-center">
         <?php if ( in_array( 'best_offer', $recharge['tags'] ) ) : ?>
-            <span class="bg-bookly px-3 py-1 text-truncate text-nowrap text-uppercase text-white" style="position: absolute; top:0; right: 0; font-size: 0.7rem;"><b><?php esc_html_e( 'best offer', 'bookly' ) ?></b></span>
+            <span class="bg-bookly px-3 py-1 text-truncate text-nowrap text-uppercase text-white" style="position: absolute; top:0; right: 0; font-size: 0.7rem;"><b><?php esc_html_e( 'best offer', 'bookly-responsive-appointment-booking-tool' ) ?></b></span>
         <?php elseif ( in_array( 'users_choice', $recharge['tags'] ) ) : ?>
-            <span class="bg-success px-3 py-1 text-truncate text-nowrap text-uppercase text-white" style="position: absolute; top:0; right: 0; font-size: 0.7rem;"><b><?php esc_html_e( 'users choice', 'bookly' ) ?></b></span>
+            <span class="bg-success px-3 py-1 text-truncate text-nowrap text-uppercase text-white" style="position: absolute; top:0; right: 0; font-size: 0.7rem;"><b><?php esc_html_e( 'users choice', 'bookly-responsive-appointment-booking-tool' ) ?></b></span>
         <?php endif ?>
         <div class="text-center">
             <span style="vertical-align: bottom;line-height: 4.8rem;font-size: 2rem">$</span>
@@ -23,15 +23,15 @@
             <?php if ( isset( $recharge['extend_support'] ) && $recharge['extend_support'] > 0 ) : ?>
                 <div class="text-muted mx-4 mb-3" style=" margin-top: -10px; background: #faf2cc; background: radial-gradient(circle, #faf2cc 0%, #fff 100%);">
                     <i class="fas fa-headset"></i>
-                    <b> + <?php printf( _n( '%d day', '%d days', $recharge['extend_support'], 'bookly' ),  $recharge['extend_support'] ) ?></b>
+                    <b> + <?php printf( _n( '%d day', '%d days', $recharge['extend_support'], 'bookly-responsive-appointment-booking-tool' ),  $recharge['extend_support'] ) ?></b>
                 </div>
             <?php endif ?>
         </div>
         <div class="text-center w-100">
             <?php if ( $type === Amounts::RECHARGE_TYPE_AUTO && $recharge['amount'] === $cloud->account->getAutoRechargeAmount() ) : ?>
-                <button class="btn btn-danger btn-lg btn-block text-uppercase bookly-disable-auto-recharge" style="white-space: normal;"><?php esc_html_e( 'Disable', 'bookly' ) ?></button>
+                <button class="btn btn-danger btn-lg btn-block text-uppercase bookly-disable-auto-recharge" style="white-space: normal;"><?php esc_html_e( 'Disable', 'bookly-responsive-appointment-booking-tool' ) ?></button>
             <?php else : ?>
-                <button <?php disabled( $disabled ) ?> class="btn <?php if ( $custom_color ) : ?><?php echo esc_attr( 'btn-' . $custom_color ); ?><?php else : ?>btn-primary<?php endif ?> btn-lg btn-block text-uppercase" style="white-space: normal;" data-recharge-type="<?php echo esc_attr( $type ) ?>" data-recharge=<?php echo json_encode( $recharge ) ?>><?php esc_html_e( 'Select', 'bookly' ) ?></button>
+                <button <?php disabled( $disabled ) ?> class="btn <?php if ( $custom_color ) : ?><?php echo esc_attr( 'btn-' . $custom_color ); ?><?php else : ?>btn-primary<?php endif ?> btn-lg btn-block text-uppercase" style="white-space: normal;" data-recharge-type="<?php echo esc_attr( $type ) ?>" data-recharge=<?php echo json_encode( $recharge ) ?>><?php esc_html_e( 'Select', 'bookly-responsive-appointment-booking-tool' ) ?></button>
             <?php endif; ?>
         </div>
     </div>
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_cancelled.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_cancelled.php
@@ -27,8 +27,8 @@
         transform: rotate(-45deg)
     }
 </style>
-<h3 class="text-danger text-center pb-0 mb-0"><?php esc_html_e( 'Oops', 'bookly' ) ?>!</h3>
+<h3 class="text-danger text-center pb-0 mb-0"><?php esc_html_e( 'Oops', 'bookly-responsive-appointment-booking-tool' ) ?>!</h3>
 <div class="text-danger py-5">
     <i class="mx-auto bookly-fail-icon"></i>
 </div>
-<p class="text-center bookly-js-message"><?php esc_html_e( 'Your payment has been cancelled', 'bookly' ) ?>!</p>
 No newline at end of file
+<p class="text-center bookly-js-message"><?php esc_html_e( 'Your payment has been cancelled', 'bookly-responsive-appointment-booking-tool' ) ?>!</p>
 No newline at end of file
--- a/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_confirm_modal.php
+++ b/bookly-responsive-appointment-booking-tool/backend/components/cloud/recharge/templates/_confirm_modal.php
@@ -5,18 +5,18 @@
     <div class="modal-dialog" role="document">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title"><?php esc_html_e( 'Disable Auto-Recharge', 'bookly' ) ?></h5>
+                <h5 class="modal-title"><?php esc_html_e( 'Disable Auto-Recharge', 'bookly-responsive-appointment-booking-tool' ) ?></h5>
                 <button type="button" class="close" data-dismiss="bookly-modal" aria-label="Close">
                     <span aria-hidden="true">×</span>
                 </button>
             </div>
             <div class="modal-body">
-                <p class="text-danger"><?php esc_html_e( 'Are you sure you want to disable Auto-Recharge?', 'bookly' ) ?></p>
+                <p class="text-danger"><?php esc_html_e( 'Are you sure you want to disable Auto-Recharge?', 'bookly-responsive-appointment-booking-tool' ) ?></p>
                 <?php esc_html_e( 'Amount' ) ?>: $<span class="bookly-js-amount"></span>
             </div>
             <div class="modal-footer">
-                <?php Buttons::render( 'bookly-js-auto-recharge-disable', 'btn-danger', __( 'Disable', 'bookly' ) ) ?>
-                <?php Buttons::renderCancel( __( 'Close', 'bookly' ) ) ?>
+                <?php Buttons::render( 'bookly-js-auto-recharge-disable', 'btn-dange

Frequently Asked Questions

Atomic Edge WAF security layer inspecting website traffic.

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Black & McDonald logo representing Enterprise tier security and support for Atomic Edge WAF.Covenant House Toronto logo featuring a dove and text for Atomic Edge Enterprise planAlzheimer Society Canada logo representing trusted organizations and security partners.University of Toronto logo representing trusted organizations using Atomic Edge WAFSpecsavvers logo, trusted developers and organizations using Atomic Edge securityHarvard Medical School logo representing trusted organizations using Atomic Edge WAF.