{"id":282436,"date":"2026-02-26T18:56:49","date_gmt":"2026-02-26T18:56:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/expo-booth-booking\/"},"modified":"2026-02-27T17:51:31","modified_gmt":"2026-02-27T17:51:31","slug":"expo-booth-booking","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/expo-booth-booking\/","author":23453123,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.1.3","stable_tag":"0.1.3","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Expo Booth Booking","header_author":"BrandJaws","header_description":"Interactive expo\/trade show booth\/seat booking: Elementor widget\/shortcode overlaying a map image with clickable booths\/seat tied to WooCommerce products.","assets_banners_color":"d9f3ff","last_updated":"2026-02-27 17:51:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/brandjaws.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":352,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"brandjaws","date":"2026-02-26 19:03:17"},"0.1.2":{"tag":"0.1.2","author":"brandjaws","date":"2026-02-27 17:20:56"},"0.1.3":{"tag":"0.1.3","author":"brandjaws","date":"2026-02-27 17:51:31"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3471220,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3471220,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1","0.1.2","0.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.PNG":{"filename":"screenshot-1.PNG","revision":3471248,"resolution":"1","location":"assets","locale":""},"screenshot-2.PNG":{"filename":"screenshot-2.PNG","revision":3471248,"resolution":"2","location":"assets","locale":""},"screenshot-3.PNG":{"filename":"screenshot-3.PNG","revision":3471248,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Expo Map editor screen (upload floor image and configure booths)","2":"JSON booth configuration example (including admin_booked usage)","3":"Frontend interactive booth map with available booths","4":"Booth selected with Full Name and Email fields","5":"WooCommerce cart showing booth with exhibitor details","6":"WooCommerce order screen displaying booth owner info","7":"Elementor widget settings panel"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[269,15885,2431,162140,286],"plugin_category":[40,45],"plugin_contributors":[256688],"plugin_business_model":[],"class_list":["post-282436","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-booth","plugin_tags-event","plugin_tags-expo","plugin_tags-woocommerce","plugin_category-calendar-and-events","plugin_category-ecommerce","plugin_contributors-brandjaws","plugin_committers-brandjaws"],"banners":{"banner":"https:\/\/ps.w.org\/expo-booth-booking\/assets\/banner-772x250.png?rev=3471220","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/expo-booth-booking\/assets\/icon-256x256.png?rev=3471220","icon_2x":"https:\/\/ps.w.org\/expo-booth-booking\/assets\/icon-256x256.png?rev=3471220","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/expo-booth-booking\/assets\/screenshot-1.PNG?rev=3471248","caption":"Expo Map editor screen (upload floor image and configure booths)"},{"src":"https:\/\/ps.w.org\/expo-booth-booking\/assets\/screenshot-2.PNG?rev=3471248","caption":"JSON booth configuration example (including admin_booked usage)"},{"src":"https:\/\/ps.w.org\/expo-booth-booking\/assets\/screenshot-3.PNG?rev=3471248","caption":"Frontend interactive booth map with available booths"}],"raw_content":"<!--section=description-->\n<p>Expo Booth Booking allows event organizers to sell exhibition booths visually using an interactive floor map instead of a traditional product list.<\/p>\n\n<p>Upload your expo layout image, place clickable booths anywhere on the map, link them to WooCommerce products, and let exhibitors reserve and purchase booths directly from the layout.<\/p>\n\n<p>Perfect for:\n- Trade shows\n- Business expos\n- Conferences\n- Startup events\n- University fairs\n- Property exhibitions\n- Mall shop bookings<\/p>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Create an Expo Map (Custom Post Type).<\/li>\n<li>Upload your event floor layout image.<\/li>\n<li>Define booths using JSON with:\n\n<ul>\n<li>id<\/li>\n<li>x \/ y position (percentage-based)<\/li>\n<li>type<\/li>\n<li>product_id<\/li>\n<li>price (optional display)<\/li>\n<li>admin_booked (optional manual booking control)<\/li>\n<\/ul><\/li>\n<li>Link each booth to a WooCommerce product.<\/li>\n<li>Display the map using:\n\n<ul>\n<li>Shortcode: [brandjaws_ebb_booth_map id=\"123\"]<\/li>\n<li>Elementor widget<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<p>Users click a booth \u2192 enter details \u2192 booth becomes reserved \u2192 product is added to cart via AJAX \u2192 checkout is completed through WooCommerce.<\/p>\n\n<h4>Key Features<\/h4>\n\n<h4>Interactive Floor Map<\/h4>\n\n<ul>\n<li>Upload custom expo map image<\/li>\n<li>Clickable booth markers<\/li>\n<li>Responsive percentage-based positioning<\/li>\n<li>Visual booth states:\n\n<ul>\n<li>Available<\/li>\n<li>Temporarily Reserved<\/li>\n<li>Booked<\/li>\n<li>Admin Booked<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>WooCommerce Integration<\/h4>\n\n<ul>\n<li>Each booth linked to a WooCommerce product<\/li>\n<li>AJAX add-to-cart functionality<\/li>\n<li>Uses WooCommerce stock system<\/li>\n<li>Final booking confirmed after successful checkout<\/li>\n<\/ul>\n\n<h4>Exhibitor Details Collection<\/h4>\n\n<p>When selecting a booth, users must enter:\n- Full Name\n- Email Address<\/p>\n\n<p>These details:\n- Are stored with the cart item\n- Appear in WooCommerce order details\n- Allow admin to identify booth owner easily\n- Are visible inside WooCommerce \u2192 Orders<\/p>\n\n<h4>Temporary Reservation System<\/h4>\n\n<ul>\n<li>Booth is temporarily reserved when added to cart<\/li>\n<li>Prevents multiple users from booking the same booth<\/li>\n<li>Reservation uses WordPress transients (~10 minutes)<\/li>\n<li>If checkout is not completed, booth becomes available again<\/li>\n<li>Final confirmation depends on WooCommerce stock<\/li>\n<\/ul>\n\n<h4>Admin Manual Booking Control<\/h4>\n\n<p>Admins can manually mark booths as already booked.<\/p>\n\n<p>To do this, add the following inside booth JSON:<\/p>\n\n<p>{\n    \"id\" : \"A1\",\n    \"x\" : 12.5,\n    \"y\" : 30.2,\n    \"type\" : \"cp_outside\",\n    \"type_label\" : \"CP Outside\",\n    \"color\" : \"#00a65a\",\n    \"product_id\" : 123,\n    \"price\" : 3500,\n    \"admin_booked\" : true\n }<\/p>\n\n<p>When admin_booked is set to true:\n- Booth appears as fully booked on frontend\n- Cannot be clicked or reserved\n- Ignores WooCommerce stock\n- Useful for offline bookings, VIP reservations, sponsor booths, or manual allocations<\/p>\n\n<h4>Elementor Support<\/h4>\n\n<ul>\n<li>Dedicated Elementor widget<\/li>\n<li>Drag-and-drop placement<\/li>\n<li>No coding required<\/li>\n<li>Fully responsive<\/li>\n<\/ul>\n\n<h4>Developer Friendly<\/h4>\n\n<ul>\n<li>JSON-based booth configuration<\/li>\n<li>Clean architecture<\/li>\n<li>Easy to extend<\/li>\n<li>Ready for future enhancements<\/li>\n<\/ul>\n\n<h4>Benefits for Event Organizers<\/h4>\n\n<ul>\n<li>Visual booth selling increases conversions<\/li>\n<li>Prevents double booking<\/li>\n<li>Supports manual offline allocations<\/li>\n<li>Easily identify booth owners via name &amp; email<\/li>\n<li>Works with all WooCommerce payment gateways<\/li>\n<li>Simple setup<\/li>\n<\/ul>\n\n<h4>Benefits for Exhibitors<\/h4>\n\n<ul>\n<li>Instantly see available booths<\/li>\n<li>Transparent pricing<\/li>\n<li>Clear booth status<\/li>\n<li>One-click reservation<\/li>\n<li>Secure checkout<\/li>\n<li>Simple detail submission<\/li>\n<\/ul>\n\n<h3>Getting Started<\/h3>\n\n<p>After activation:<\/p>\n\n<ol>\n<li>Install &amp; activate WooCommerce<\/li>\n<li>Create WooCommerce products (one per booth)\n\n<ul>\n<li>Set stock quantity = 1<\/li>\n<li>Use Simple product type<\/li>\n<\/ul><\/li>\n<li>Go to WP Admin \u2192 Expo Maps<\/li>\n<li>Upload your floor layout image<\/li>\n<li>Add booth JSON configuration<\/li>\n<li>Publish the Expo Map<\/li>\n<li>Add shortcode to a page or use Elementor widget<\/li>\n<\/ol>\n\n<p>Your interactive booth booking system is ready.<\/p>\n\n<!--section=installation-->\n<h4>Minimum Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8+<\/li>\n<li>PHP 7.4+<\/li>\n<li>WooCommerce installed and activated<\/li>\n<\/ul>\n\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Go to Plugins \u2192 Add New<\/li>\n<li>Search for \"Expo Booth Booking\"<\/li>\n<li>Click Install Now<\/li>\n<li>Activate the plugin<\/li>\n<li>Ensure WooCommerce is active<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Upload the expo-booth-booking folder to:\n\/wp-content\/plugins\/<\/li>\n<li>Activate via WordPress Admin \u2192 Plugins<\/li>\n<li>Create your first Expo Map<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce is required for cart, checkout, and stock handling.<\/p><\/dd>\n<dt id=\"how%20does%20booth%20reservation%20work%3F\"><h3>How does booth reservation work?<\/h3><\/dt>\n<dd><p>When a booth is added to cart:\n- It becomes temporarily reserved\n- The reservation lasts approximately 10 minutes\n- If checkout is completed, WooCommerce stock makes it permanently unavailable\n- If cart expires or order is not completed, the booth becomes available again<\/p><\/dd>\n<dt id=\"can%20admin%20manually%20block%20booths%3F\"><h3>Can admin manually block booths?<\/h3><\/dt>\n<dd><p>Yes. Add \"admin_booked\": true inside booth JSON to mark it as booked manually.<\/p><\/dd>\n<dt id=\"can%20two%20users%20book%20the%20same%20booth%3F\"><h3>Can two users book the same booth?<\/h3><\/dt>\n<dd><p>No. If product stock is set to 1 and one user completes checkout, the booth becomes unavailable.<\/p><\/dd>\n<dt id=\"are%20exhibitor%20details%20stored%3F\"><h3>Are exhibitor details stored?<\/h3><\/dt>\n<dd><p>Yes. Full Name and Email entered during booth selection are stored in WooCommerce order item meta.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20data%20externally%20or%20track%20users%3F\"><h3>Does this plugin send data externally or track users?<\/h3><\/dt>\n<dd><p>No. The plugin does not send data to external services and does not track users.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20elementor%3F\"><h3>Is it compatible with Elementor?<\/h3><\/dt>\n<dd><p>Yes. A dedicated Elementor widget is included.<\/p><\/dd>\n<dt id=\"can%20i%20use%20variable%20products%3F\"><h3>Can I use variable products?<\/h3><\/dt>\n<dd><p>It is strongly recommended to use Simple Products with stock quantity set to 1 for each booth.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Updated tags and short description<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Added admin manual booking control (admin_booked)<\/li>\n<li>Added exhibitor Full Name and Email collection<\/li>\n<li>Improved reservation handling<\/li>\n<li>Enhanced documentation<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Updated assets<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Interactive expo booth booking with clickable floor map and WooCommerce integration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282436"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brandjaws"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282436"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282436"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282436"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282436"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282436"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}