Configuration: Golf - EZLinks Tee Time Reservations

 

Setup Checklist

EZLinks Tasks

 

Contact EZLinks and complete required setup. Required

  • Purchase an EZLinks subscription. Required

  • Setup a web reservation channel. Required

  • Provide AW with SponsorID(s), Course ID(s), etc. Required

  • Complete misc. EZLinks tasks. Required

Prerequisites

Infrastructure Tasks

 

1. Provide Aspenware Azure information (reccomended to use secure upload and not send via email) Required

  • Application (Client) ID

  • Directory (Tenent) ID

  • Client Secret for the Aspenware DevOps app registration

2. AW rep tasks: Required

  • 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

  • Add Product Template System > Template > Product Templates

  • Set up salt values in EZLinks settings

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

  1. 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.

  2. 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:

  1. Course Id

  2. Entitlement Id

  3. Fee Id

  4. Fee Name

  5. Fee Options

  6. Reservation Date 

  7. Reservation Time

  8. Reservation Holes

  9. Reservation Price

  10. Slot Nbr

  11. Slot Name

  12. Slot ID

  13. 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

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

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.

    1. To display courses dynamically based on availability set all display orders to 1.

    2. 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:

    1. Product name - Enter “Tee Time”

    2. Short description - Leave blank

    3. SKU - Enter “checkin”

    4. Published - Check to publish the product. If the product is published and belongs to a published category, it will be accessible publicly.

    5. 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.

    6. Customer enters price - Check this

    7. Minimum amount - Enter 0

    8. Maximum amount - Enter 1000

    9. Tax exempt - Check this

    10. Tax Category - If this appears, set to None. This field will not appear if Tax exempt is checked.

    11. Maximum cart qty - Must be set to 1. Minimum cart qty. should stay default of 1

    12. 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

  1. Navigate to Catalog > Categories

  2. If Golf Shop Categories are not yet created

    1. Select Add New > Enter Golf Shop Name e.g. Alpine Golf Shop

    2. Select Display > Under Category Template > Select“Golf”

    3. Select Products > Add a new product

      1. Add each course that belongs within the Golf Shop

    4. 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”.

    1. True - $0 orders will be allowed to check-in. (Set to true if you want to allow members to check-in online)

    2. 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.