Configuration: Golf - EZLinks Tee Time Reservations
- 1 Setup Checklist
- 2 Prerequisite Tasks
- 3 Detailed Setup Guide
- 3.1 1. Create Golf Course Product
- 3.2 2. Assign the line of business to the product
- 3.3 3. Set the Course display order
- 3.4 4. Add Course Notes (Optional)
- 3.5 5. Add Discounts (Optional)
- 3.6 6. Collect credit card during checkout for $0 orders [Optional]
- 3.7 7. Enable Online Check-in/Customer Pre-Pay (Optional)
- 3.8 8. Disable Online Check-In when out of Season (Optional)
Setup Checklist
EZLinks Tasks |
|
Contact EZLinks and complete required setup. Required
| Prerequisites |
Infrastructure Tasks |
|
1. Provide Aspenware Azure information (reccomended to use secure upload and not send via email) Required
2. AW rep tasks: Required
| PrerequisiteS |
Aspenware Commerce Tasks |
|
1. Set up “Golf” Category Required 2. Create Golf Attributes Required 3. Enable store to route to Golf Required 4. Set the Default Sponsor ID Required 5. Map Customer Role(s) to the corresponding EZLinks Sponsor ID(s) Required 6. Add Language Strings Required 7. Add Widgets Required | PrerequisiteS |
1. Create Golf Course Product Required 2. Assign the line of business to the product Required 3. Set the course display order optional 6. Add Course Notes optional 7. Add Discounts optional 8. Enable Online Checkin optional 9. Disable Online Checkin Out of Season optional | Detailed setup |
Prerequisite Tasks
EZLinks Tasks
Contact EZLinks and complete the required setup.
Purchase an EZLinks subscription.
Setup a web reservation channel.
Determine SponsorID(s) for 18 holes, 9 holes, and any Member roles.
Determine CourseID(s) from EZLinks for any courses.
Use the Golf Setup Data template to record information from various systems and send it to your Aspenware representative when complete.
NOTE: Each channel represents a set of golf tee time inventory. Meaning, there may be different pricing, booking policies, etc. For Aspenware to handle online reservations for “Public Golfers” and “Resort Members”, in this example there will be 2 SponsorIDs.
Infrastructure Tasks
1. Provide Aspenware Azure information (recommended to use secure upload and not send via email)
Application (Client) ID
Directory (Tenent) ID
Client Secret for the Aspenware DevOps app registration
Navigate to Azure Active Directory/App Registrations and click on Owned applications
Go into the dev-ops App Registration and provide the IDs to AW. Recommended to use a secure upload and not send via email.
From there you can go into Certificates and Secrets and create a new key secret and set it to never expire. A new one won't overwrite the others. Provide this key to AW. Recommended to use a secure upload and not send via email.
2. Aspenware Representative Tasks:
NOTE: See Monday Board for specifics to complete tasks.
Provide EZLinks with technical requests
Request connection info from EZlinks
Install Plugins (Golf, Routing, Roles, Discounts, Discount Requirements)
Point AWC test to EZLinks Test and AWC Live to EZLinks Live
Ensure “Unity.Discount” Configuration > Widgets is enabled
Ensure “Cache product prices” is unchecked Configuration > Settings > Catalog Settings
Add Category Template System > Templates > Category Templates
Name: Golf
View path: CategoryTemplate.GolfProducts
Display order: 2
Add Product Template System > Template > Product Templates
Name: Golf product
View path: ProductTemplate.Golf
Display order: 11
Ignored product type IDs (advanced): [leave blank]
Aspenware uses this value to make calls when we don’t know a user’s password and have to do something with their EZL account. A salt is added to the hashing process to force their uniqueness, increase their complexity without increasing user requirements, and to mitigate password related attacks.
These should be placed under the EzLinksSettings:
"EzLinksSaltValue": "4$p3N$4Lt",
POS Tasks
Create General Program Profiles in RTP for each golf member role. There should be a corresponding SponsorID in EZLinks for each golf member role (GPP) that is created in RTP. For example, if you have Membership A that only gives access to course A, Membership B that only gives access to course B, and Membership C that gives access to both courses A and B, then you would created three unique general program profiles for Member A, Member B, and Member C. Record the GPP ID(s) in the Golf Setup Data sheet (linked above) and send the completed sheet to Aspenware.
Create a GL account in RTP for golf transactions and share with Aspenware.
Aspenware Commerce Tasks
1. Set up “Golf” Category
Go to Catalog > Categories > Add New and set up a category titled “Tee Times.”
Set up this category according to the Category Configuration Guide, however, you must also toggle on the “Advanced” view and set the Category template to “Golf”.
When assigning Tee Time products to the Golf category, keep in mind that display order is respected. Updating the display order will affect how Tee Times are shown, even if they are unavailable for the selected date. In Commerce 3.6.1, unavailable Tee Times will still appear in their designated display order, rather than being automatically moved to the bottom of the list.
WARNING: Golf configuration does not support subcategories.
2. Create Golf Attributes
Go to Catalog > Attributes > Product attributes and create the following attributes:
Course Id
Entitlement Id
Fee Id
Fee Name
Fee Options
Reservation Date
Reservation Time
Reservation Holes
Reservation Price
Slot Nbr
Slot Name
Slot ID
Force Checkin
3. Enable store to route to Golf
If “Golf” is not already present go to Aspenware Commerce > Routing > Manage Lines of Business and add “Golf” while leaving Ski as the default.
4. Set the Default Sponsor ID
Aspenware references EZLinks' 18 holes, 9 holes, and membership Sponsor IDs in order to retrieve the correct tee times and pricing for specific customers. Since rates can vary for “club members” and “public players”, Aspenware requires a “Default Sponsor ID” which should be mapped to the public player sponsorID for 18 holes and 9 holes if applicable. This ensures a guest without a special Role is priced at the public rate.
Go to Aspenware Commerce > Golf Configuration and enter the Sponsor IDs and click Map
5. Map Customer Role(s) to the corresponding EZLinks Sponsor ID(s)
Because rates can vary for “club members” and “public players,” Aspenware references Sponsor IDs that are set up in EZLinks, GPPs, which are set up in RTP|One, and Customer Roles, set up in Aspenware Commerce, in order to retrieve the correct tee times and pricing for specific customers. In order to ensure that members who are logged in receive membership rates, a customer role must also be created in Aspenware Commerce. For each membership role created there should be a corresponding SponsorID from EZLinks and a corresponding GPP from RTP configured in earlier steps. The corresponding “roles” from all three systems (EZLinks, RTP|One, and Aspenware Commerce) will be tied together in this step.
First, go to Customers > Customer Roles and select Add New.
Name the customer role in accordance with the membership General Program Profile in RTP|One and the Membership SponsorID name in EZLinks.
Ensure Active is checked and DO NOT UPDATE ANY OTHER FIELDS.
Select Save and repeat this process for all roles.
Next, go to Aspenware Commerce > Role Configuration and complete the following:
Roles: Select the role from the drop-down that was just created in the step above.
External Role ID: Input the General Program Profile ID from RTP|One in the External Role ID field.
Sales Channel ID: Input the EZLInks SponsorID from EZLinks in the Sales Channel ID field.
Membership Type ID: Input the EZLinks Membership Type ID in the Membership Type ID field.
Click Map and repeat this process for all roles.
Customers who log in with a certain role can skip entering their credit card to store in the case of no-shows if that role is configured with these permissions. To configure this, once roles are created using the steps above, check the corresponding “Skip Payment Step” box in the table of configured roles. There is no save button, the setting will save upon checking the box.
6. Add language strings
The most up-to-date language strings can be found here: Language Strings Library and the following are related to golf:
Language String | Default Value |
---|---|
Messages.Order.DueAtCourse | Due at Course: |
golf.catalog.viewteetimes | View Tee Times |
golf.checkin.slotmissingcustomer | Missing Customer Info: Slot customer is missing |
Golf.CheckIn.NoReservation.Title | No Reservation Found |
Golf.CheckIn.NoReservation.Message | Online check-in is only available on the date of play. Check your reservation details and try again. |
Golf.CheckIn.TooLate.Title | You are a bit too late to check in |
Golf.CheckIn.TooLate.Message | Online check in is only available on the date of play. You are searching for a reservation for ${DateOfPlay}. Come back on that date to check in. Thanks for choosing BOYNE Golf! |
Golf.CheckIn.TooEarly.Title | You are a bit too early to check in |
Golf.CheckIn.TooEarly.Message | You are a bit too early to check in. “Online check-in is only available on the date of play. You are searching for a reservation for <Date of Play>; please come back on that date to check in. Thanks for choosing BOYNE Golf! |
Golf.CheckIn.Button.Search | Search |
Golf.CheckIn.Button.SearchNew | New |
Golf.CheckIn.Button.Next | Next |
7. Add Widgets
The most up-to-date widgets and process to add can be found here: Configuration and Library: HTML Widgets | 1. Find the Desired HTML Widget and the following are related to golf:
HTML Widget Name | Use | Code | Config Options | Widget Zones | Location | Example(s) Click to expand |
---|---|---|---|---|---|---|
Golf Reservation Message | Because Tee-Times are $0 down products, this explains why a credit card is being collected for carts with tee-times |
<div class="payment-message" style="padding: 1.6rem; background: #e8edf0; margin: 0 1.2rem; line-height: 1.5;" v-if="requiresCreditCard">A credit card is being collected to reserve your tee time. {{ personalization.TotalPriceDisplay }} is due online. {{ personalization.TotalCustomerEnteredPriceValue | currency }} will be due at the course.</div> | Can edit some phrasing | checkout_payment_method_bottom | Checkout - Payment Page | |
Golf Confirmation Page Message | Reiterate the amount due at course and highlight terms and conditions before guest completes booking |
<div class="payment-message" style="padding: 1.6rem; background: #e8edf0; margin: 0 1.2rem; line-height: 1.5;" v-if="requiresCreditCard"><strong>{{ personalization.TotalCustomerEnteredPriceValue | currency }} DUE AT COURSE<br /><br />
Cancellation/No Show Policy:</strong><br />All guests are responsible for their reserved tee times. No payment will be collected to reserve a tee time; in the event of a no show, the credit card associated with the tee time reservation will be charged as follows:
Tee time cancelled more than 48 hours before tee time, no fee charged. Tee time canceled 24 - 48 hours before tee time, 50% of greens fee will be charged. Tee time canceled less than 24 hours before tee time will be charged 100% of greens fees.
This cancellation policy and associated penalties is applicable to all non-Full Golf Member players.</div>
| Must edit cancellation policy to match own policy | checkout_confirm_bottom | Checkout - Order Confirm Page | |
Golf Tee Times Check-in Help | If online check-in enabled for golf, this widget zone gives instructions for how to use online tee time check in on the Tee Time Check in page |
<div id="“maincontent”">
<h2>How to Check In For Your Round</h2>
<hr class="“bluelinerule”" />
<div class="“introdescription" intro-body="">
<div class="”" introdesctext="">
<p><i>Online check-in is only available on day of play from midnight up to your tee time.</i></p>
<h3>How to Check In For Your Round:</h3>
<ol>
<li>Choose your course, enter your confirmation number and your last name. If you clicked on the <i>Check In</i> link in your email, these fields will be pre-populated.</li>
<li>Choose one or more slots to check in and pay in a single transaction, click Next.</li>
<li>You may choose to check out as a guest or login with your account. If you are a BoyneRewards member, please log in to receive your points.</li>
<li>Playing with friends on your reservation? Simply forward your confirmation email with the link to them or copy the link above and they can check in their slot and pay online too.</li>
<li>Show up and enjoy your round of golf!</li>
</ol></div>
</div>
</div> | Text | checkin_teetimes_bottom AND body_start_html_tag_after |
| Tee Time Check-In Page when ACTIVE |
Online Check-in Unavailable | Turn this on ONLY when online check-in is not available, for example before the golf course is open for the season |
| Text | checkin_teetimes_bottom AND body_start_html_tag_after |
| Tee Time Check-In Page when INACTIVE |
Detailed Setup Guide
1. Create Golf Course Product
Go to Catalog > Products > Add New and set up a product according to standard product shell configuration [see: Configuration: Product Shell] with the following differences:
Product Info Tab
Product Name: Enter the name of the product. Optionally, a dash “-” can be used to add an additional line of larger text below the course name on the category page and the PDP.
Short & Long Description: Enter your short description. Golf product descriptions allow the use of anchor tags, enabling links to external platforms like Noteefy, a tee time waitlist product. Please note that these links should be set to open in a new tab.
SKU: Input the EZLinks Course ID
Categories: Add the product to the “Golf” category
Product Template: Change product template to “Golf product”
Price tab
Price: Set to $0.
Customer enters price: Check this box
Minimum amount: Leave as 0.00
Maximum amount: Leave as 1000.00
Tax exempt: Check this box
Inventory tab
Inventory method: Don’t track inventory
Minimum cart qty: 1
Maximum cart qty: 4
Allowed quantites: 1,2,3,4
Pictures tab
Follow the standard upload process with key differences that only a single image needs to be uploaded and the recommended specs are 1770x541 for optimal display.
Product attributes tab
In order to properly display the data populated from EZLinks on the PDP, add the golf attributes exactly as displayed below:
To hide extra attributes that should not show in cart card e.g. slot id etc. Navigate to Configuration > Settings > All settings.
Find “catalogsettings.hiddenattributes” and in the value section, enter the exact attribute names that you would like not shown in the cart separated by a comma.
Select Update.
2. Assign the line of business to the product
Go to Aspenware Commers > Routing then select each course from the Product drop-down, select Golf from the Line of Business drop-down, and click Assign.
3. Set the Course display order
Courses can be configured to display dynamically based on course availability or desired order. If the setup is based upon availability and multiple courses have availability, then the Courses will display in the order in which they were created.
Go to Catalog > Categories > select the “Golf” category > Scroll down to Products and click edit on the desired golf course.
To display courses dynamically based on availability set all display orders to 1.
To display courses in a specified order set the values in numerical order.
4. Add Course Notes (Optional)
Course notes can be added to provide guests more information about their purchase.
If not already set up Go to Catalog > Attributes > Specification attributes > Add New and create a specification attribute named “Course Note”. Click Add a new option and add “Course Note” then click Save.
Then go to Catalog > Products > and select your golf course. Scroll down to Specification attributes and click Add attribute. Add the specification attribute “Course Note” and click Save.
Attribute type: Custome text
Attribute: Course Note
Value: {enter the text you want guests to see}
Show on product page: checked
Display order: 0
5. Add Discounts (Optional)
Discount codes can be used on golf products and often utilize start/end dates and specific times. They must meet the following setup requirements from the discount guide here: Configuration: Discounts.
6. Collect credit card during checkout for $0 orders [Optional]
If you are using a payment provider that supports storing the credit card in the POS from Aspenware, you can collect the credit card during the checkout process even if the order total is $0.
If the “Requires CC in checkout” classification does not exist add it. Go to Aspenware Commerce > Product Classifications > Add Classification and add a new classification for collecting the credit card and click Add.
Then assign this classification to the Category (assigning directly to the product is not required)
7. Enable Online Check-in/Customer Pre-Pay (Optional)
Resorts can optionally allow guests to check-in and prepay for their course ahead of their tee times. This check-in functionality is only supported on the day of the reserved tee time.
Create a Generic Tee Time Check-In Product
For every golf installation that is using customer pre-pay, a single tee time check-in product must be created. This product only needs to be set up once but must be present to power the check-in functionality.
From Catalog>Products, click Add New to create a new product.
From here, switch to the “Advanced” tab, providing access to all required fields
Change ‘Product Template’ to Golf product
Update the following fields:
Product name - Enter “Tee Time”
Short description - Leave blank
SKU - Enter “checkin”
Published - Check to publish the product. If the product is published and belongs to a published category, it will be accessible publicly.
Price - Set to $0. The price when a customer checks out is $0. The price displayed to show what will be charged at the time of guest check-in comes from EZLinks.
Customer enters price - Check this
Minimum amount - Enter 0
Maximum amount - Enter 1000
Tax exempt - Check this
Tax Category - If this appears, set to None. This field will not appear if Tax exempt is checked.
Maximum cart qty - Must be set to 1. Minimum cart qty. should stay default of 1
Categories - Do not add to any categories
Click Save and Continue Edit
Next, go to the Product attributes tab.
In order to properly display the data populated from EZLinks on the PDP, add the golf attributes exactly as displayed below:
Record the product ID from the “Tee Time” product so you can use the id in the settings required in the step below.
Create Categories for each Golf Shop
Navigate to Catalog > Categories
If Golf Shop Categories are not yet created
Select Add New > Enter Golf Shop Name e.g. Alpine Golf Shop
Select Display > Under Category Template > Select“Golf”
Select Products > Add a new product
Add each course that belongs within the Golf Shop
Record the Category ID so that you can create it as a hidden category in the next step.
Add the required settings for check-in
Go to Configuration > Settings > All Settings and search for the following settings:
“golfsettings.checkin.teetimeproductid” add the id for the Tee Time product created in the step above.
“catalogsettings.hiddencategories” add the id for the category created for the Golf Shop in the step above
“GolfSettings.CustomerCheckin.EmailCheckinButtonBaseUrl”. Add this setting if not present and ensure the setting’s value is set to your store’s URL ending with “/checkinteetimes” example:
Add Golf check-in link to order confirmation emails
Go to Content Management > Message Templates > and click Edit next to the OrderPlaced.CustomerNotification template.
Click Tools > Source Code” and add the tag %Order.CallToAction% after %Order.Product(s)% in the HTML
Then, click Save and Continue Edit
Having this token will display the following message in an order confirmation that has a tee time reservation
Turn off/on $0 check-in
Go to Configuration > Settings > All Settings and search for “GolfSettings.CustomerCheckin.AllowZeroDollarCheckin”. Add this setting if not present and set to “True” or “False”.
True - $0 orders will be allowed to check-in. (Set to true if you want to allow members to check-in online)
False - $0 orders will be prevented from being allowed to check-in. (Set to false if only guests who have paid for tee times should be allowed to check-in online)
8. Disable Online Check-In when out of Season (Optional)
Navigate to Nop Templates > Plugins > Html Widgets > Manage Html Widgets
Find and Edit “Online Check-In Unavailable”
Select Visible to DISABLE customer prepay.