Booking Add-On – Selecting Game on Booking Widget
Have you ever wanted the ability for your customers to choose a game when they book a session? Now you can! This comes in handy when you have a virtual reality escape game experience where customers can only play one escape game for a certain amount of time, choosing the game will inform the operator which game the customer group wants to play and the operator can be prepared and make the necessary arrangement for this experience. Setup – Step 1 Please make sure Your experience supports this feature. If you are not familiar with how to create an experience, please check this knowledge base article. Once you have created the desired experience, On the Experience – Advanced Tab: make sure to Enable Yes on Enable game selection for the booking widgets option as shown below: Setup – Step 2 and 3 Create a Business Rule that will only have one assigned game category as well as the maximum number of games to 1 as shown below: For more information on how to setup Business Rules please click here. For more information about setting up Game Categories please click here. End Result Upon booking a session the game will be automatically selected for the operator so he/she can launch it.
Booking Add-On – upon successful booking, redirect to a confirmation page
In case you want to track your website conversion through third party widgets or code (like Google Analytics or Facebook Pixel), you’ll have to redirect your website visitors to a page on your website that has the necessary code. To do the redirect, please add the following code under the “Add HTML before the BODY tag closure” setting of your Booking Widget: <script> window.onSVR_SuccessfulBooking = function(bookingData){ try { var passData = new Object(); bookingData.email = window.svr.selection.email; var redirectUrl = ‘https://yourdomain.com/thankyou?id=’ + btoa(unescape(encodeURIComponent(JSON.stringify(bookingData)))); window.top.location.href = redirectUrl; } catch (err) { alert(err); } } </script> Don’t forget to replace yourdomain.com with your actual domain name, as well as ensure that you have a “thankyou” page.
Synthesis VR API – Booking Widget
API As explained, the booking widget just utilizes the API and gives a ready to use example. However, in many cases, that may not be enough and as you may want to better match your website design, integrate your own payment processor, use a different language and so on. What usually would be enough is to open the widget page, copy all the source code in your own site and start editing the HTML / Javascript. However, this still may not be sufficient for some of you, so here comes the direct API integration. If you are not a developer and you don’t have such on hand, please stick to the widget. The next would just confuse you unnecessary. API CALL – AVAILABILITY URL = https://api.synthesisvr.com/ Method = GET Resource = /web/<public_key>/availability Accepted parameters: Parameter Format Description people Integer the number of VR stations you wants to book experience Integer the id of the experience type. If not provided, SynthesisVR would use the first experience type that is assigned on the widget date String ; YYYY- MM-DD A date that isn’t in the past duration Integer a duration that exists under your work hour rules customer_token String (optional) A token obtained via the /web/<public_key>/customers/auth API call JSON Response: Name Type Description balance String Shows the balance for the given customer_token or $0.00 if no balance is available coupons Array Shows the available vouchers against the given customer_token. Some vouchers may not appear if they are not allowed for the desired “people” ; “experience” ; “date” and “duration” parameters dows Integer Array From 0 to 6. Points to the days of the week when reservations can be booked. 0 = Monday ; 6 = Sunday special_days Array If a day of the week is disabled via the dows parameter, but there are exceptions. stations Key – Object pairs The key refers to experience type id. Check the “Experience Type Object” for the object values. times Key – Object pairs Represents the daily availability. Check the “Availability Object” for detailed description. Experience Type Object: Name Type Description book_all Boolean This reservations requests to book all stations. descr Text Description of the experience type durations Integer Array Available durations in minutes pcs String Array The SynthesisVR IDs of the VR stations pos Integer If there are multiple experience types – the position of the current one stations Integer The total number of PCs under this experience type title String Title of the experience type Availability Object: Name Type Description cost Float The final cost to be charged per station endTimePre Timestamp – ISO 8601 A timestamp object pointing to when the session would end moreOptions Key – Object pairs Additional paid options for the current object precost Float The cost per station before discounts startTime String The startTimePre parameter in a human readable format startTimePre Timestamp – ISO 8601 A timestamp object pointing to when the session would start stations Integer The number of available (free) stations. value Time String – format HH:MM The “time” value to be used with the /web/<public_key>/book API call API CALL – VALIDATE EMAIL URL = https://api.synthesisvr.com/ Method = POST Resource = /web/<public_key>/customers/validateEmail Accepted parameters: Parameter Format Description email String (optional) Email string to validate JSON Response: Name Type Description status Boolean True = there is a customer with such email address. You could proceed to authentication. False = no such customer exists. You could proceed with a signup process API CALL – CUSTOMER AUTHENTICATION URL = https://api.synthesisvr.com/ Method = POST Resource = /web/<public_key>/customers/auth Accepted parameters: Parameter Format Description email String Email string to authenticate password String (optional) Password related to the given email service String (optional) The name of an authentication service. Example: “facebook” serviceString String (optional) The value to be authenticated for the given service string. JSON Response: Name Type Description cc String Last 4 digits of the CC associated with the account (e.g. XXXX1234) msg String Text description of the API call result name String Customer name pm String “0” = No payment method and no CC data collection is needed status Integer 1 = Authenticated ; 0 = Invalid credentials token String A string to be used with the AVAILABILITY and BOOK API calls API CALL – CUSTOMER CREATION URL = https://api.synthesisvr.com/ Method = POST Resource = /web/<public_key>/customers/create Accepted parameters: Parameter Format Description email String Email string to authenticate password String (optional) Password related to the given email service String (optional) The name of an authentication service. Example: “facebook” serviceString String (optional) The value to be authenticated for the given service string. name String Full customer’s name additional JSON key-value pairs Additional information to keep per customer. Example: {“birthday”:”1st April, 1985″,”phone”:”12135559999″} The API response is the same JSON as for: /web/<public_key>/customers/auth API CALL – CUSTOMER UPDATE CC URL = https://api.synthesisvr.com/ Method = POST Resource = /web/<public_key>/customers/updateCC Accepted parameters: Parameter Format Description customer_token String The token obtained from an “auth” or “create” API call json JSON key-value pairs The complete CC data. See below for field description. Note: the key-value pairs may vary between the payment processors JSON Response: Name Type Description status Integer 1 = Success ; 0 = Failure, use “msg” to lookup the error msg String Text description of the error. PayPal Here – JSON object: Name Type Description credit_card Integer 1 = Success ; 0 = Failure, use “msg” to lookup the error security_digits String Text description of the error. exp_date1 Integer CC expiration Month exp_date2 Integer CC expiration Year first_name String First Name last_name String Last Name cardholder_address String Address of the CC owner cardholder_city String City cardholder_country String Country cardholder_state String State cardholder_zip String ZIP code cardholder_phone String Phone number API CALL – CUSTOMER ASSIGN VOUCHER URL = https://api.synthesisvr.com/ Method = POST Resource = /web/<public_key>/customers/assignVoucher Accepted parameters: Parameter Format Description customer_token String The token obtained from an “auth” or “create” API call code String The voucher / coupon code JSON Response: Name Type Description status Integer 1 = Success ; 0 = Failure, use “msg” to lookup
Booking Add-On – disable opening / closing hours from booking
Due to multiple reasons (as example, having a lot of foot traffic), you may want to hide periods of the day from your booking widgets. To avoid creating new experience type with different hours and extra logic that may complicate your setup, you can simply extend the booking widget with some custom code. To make it even easier for you, we already built that code and simplified it to the possible minimum. You may want to hide times based on day of the week or based on experience type (or both together). For that purpose, you have to build your logic and few lines of javascript code. Considering the days of week are: Monday => 1 Tuesday => 2 Wednesday => 3 Thursday => 4 Friday => 5 Saturday => 6 Sunday => 7 If you want to hide options from the widgets for only Monday + Thursday + Sunday, then you’ll have to use the following combination: 1,4,7 If it is to apply for Monday to Thursday, then use: 1,2,3,4 Next, you need your experience type ID (can be found on the Experience Types management page). Let say you work with the default “Immersive” experience type => 1 Then, your rule will looks like this: 1_1,4,7 => the _ character is used as a separator between the experience type and the days of the week 1 => in this case, you don’t have any specified days, so we assume your rule apply everyday *_1,2,3,4 => applies for ALL experience types between Monday ot Thursday Note: you can’t list multiple experience types separated by comma. You have to create multiple rules instead. You can use asterisk (*) to apply the rule for all your experience types What the actual code looks like: Default line (no changes on it): window.svr.hideTimes = new Object(); [‘hide_before’,’hide_after’].forEach(function(i){ window.svr.hideTimes[i] = new Object(); }); Your rules: window.svr.hideTimes[“hide_before”][“*_1,2,3,4”] = “13:00”; window.svr.hideTimes[“hide_before”][“1”] = “14:00”; window.svr.hideTimes[“hide_after”][“*”] = “20:00″; All your rules have to be enclosed in a <script> tag. You also have to load the actual custom logic: <script src=”//api.synthesisvr.com/widgetPlugins/skipTimeOptions.js” crossorigin=”anonymous”></script> Examples 1) If you don’t want to accept bookings before 1pm and after 8pm: <script> window.svr.hideTimes = new Object(); [‘hide_before’,’hide_after’].forEach(function(i){ window.svr.hideTimes[i] = new Object(); }); window.svr.hideTimes[“hide_before”][“*”] = “13:00”; window.svr.hideTimes[“hide_after”][“*”] = “20:00″; </script> <script src=”//api.synthesisvr.com/widgetPlugins/skipTimeOptions.js” crossorigin=”anonymous”></script> Example 2) To skip late booking (after 6pm) for the Immersive experience type during the busy days (Friday to Sunday): <script> window.svr.hideTimes = new Object(); [‘hide_before’,’hide_after’].forEach(function(i){ window.svr.hideTimes[i] = new Object(); }); window.svr.hideTimes[“hide_after”][“*_5,6,7”] = “18:00″; </script> <script src=”//api.synthesisvr.com/widgetPlugins/skipTimeOptions.js” crossorigin=”anonymous”></script> You need to append the final code to the “Add HTML before the BODY tag closure” option under the Booking Widget settings (the Edit button).
Booking Add-On – Booking Widget Setup

This Documentation will provide a step by step guide to setting up your booking widget, integrating it in to your WordPress website and other advanced configurations.On your left menu click Administration Click Advanced Settings – Web Widgets as shown below This takes you to the Widgets Page. On the Booking Widgets TAB – Click the + sign to create a new web widget. This will open up a pop up menu to create a new widget. Widgets Pop Up Settings 1. Title – A Suitable title for your widget 2. Predefined Template – Select Template Version 5 from the drop down menu as shown below 3. Click the Experience Type+ buttonSelect the correct Experience from the dropdown menu this widget is going to apply. You can have multiple Experiences on the same widget. Make sure to click Experience Types+ button to add more experience. 4. Take Out Time Options+ (Optional) By default the booking will show all your time slots. Example: You have a 15, 30, 45 and 60 minutes duration on your Booking Rules for VR Experience. Online you only want to show the 30,45 and 60 minutes option and do not want customers booking 15 minutes, then you can use this Take Out Time Options+ and not show the 15 minutes duration as shown below. 5. Waiver Template (Optional)If you want your customers to select a waiver before checkout select the correct Waiver Template from the drop down as shown below: 6. About Field – (Optional)Here you can add text explaining the booking widgets or conditions. 7. Payment moduleSynthesis VR can integrate multiple merchant processors for free. Here you can select the correct Payment module that is to applied for taking customers’ payment online. **This module has to be setup prior to selecting from the drop down. 8. Collect More Information About Your Customers+ (Optional)By default only Email, Password and Full Name is entered when a customer is making a booking online. If you want to collect more information you can use this button to add multiple fields. All fields are default text inputs, but limitations can be set as shown below.**For more customization options check the booking customization section. 9.Booking Confirmation Points+ (Optional)You can create points that the customer would check off using this. For example, something like “I agree to come 15 minutes prior to my session start”. This checkbox would be required to be checked off. 10. Add HTML to the HEAD and BODY tag (Optional)These fields are used to customize various options on your widget settings. Using this you can pretty much customize and enhance various options according to your own individual requirements. **This is clearly explained in the customization section with multiple examples as use case scenarios.11. Customer can pay in your locationIf you want your customers to pay at your Arcade instead of ONLINE, select YES, If the customer has to Pay ONLINE, select NO 12. Disable enforcing account registrationIf you want to enforce customers to register before checkout. This option will be OBSOLETE if ONLINE PAYMENT OPTION is selected, customer will have to create a profile before checking out. 13.Arcade Image (Optional)Upload your logo or image of choosing for the widget 14. External CSS URL (Optional)Synthesis VR supports external styling using CSS. Please input URL to enable external styling.15. Time FormatAs shown below, which format of time you want to use in your widget. AM/PM or Military style Time. 16. Pre-selected duration upon loading the widget (Optional)If you want a certain duration to load by default based on your booking duration, input the duration in minutes as shown below. This will load the 30 minutes duration by default on the booking page. 17. Earlier Possible Time After (Optional)This is an extremely valuable field for events and party bookings. For special events and parties if you require a certain duration then use this field.Type Digit and Type of Duration as shown below. This will require a 24 hour notice before they can make a reservation online. This will prevent same day reservations and have to be used carefully. Once you have setup everything please click the Save Changes button.