Automatic discounts for bookings

I’m having trouble with:

Bookings - discounts for site members with specific label/badge or coupon that varies depending on course type

Working in

Wix Studio Editor/Velo Code

What I’m trying to do

Building a site with annual membership that affords certain perks - specifically, a variety of discounts on courses/events. I’m trying to make this as easy as possible for members to utilize - automatic if possible, or one-coupon-fits-all. However, the discounts vary depending on type (Some courses the discount is $20, some its only $10, and others its other values or are excluded from discount) and events also have their own discount. I would even settle for being able to create one coupon that applies to a given category.

What I’ve tried so far

Manually creating a coupon (can only choose all services or one service - not user-friendly)

Automatically creating coupons for a user when approved for annual membership (same issue as above)

Using automated discounts (not available for bookings or events)

Extra context
I’m trying to avoid having to create separate bookings to put on member-only site, as that would create a nightmare of tracking how many spots are left in non-member vs member for each course as well as having a staff member technically double-booked which looks awful on the calendar, but that’s my fallback if absolutely necessary. We don’t want to use honor-system for varied pricing.

This can de achieved using a custom coded solution.

Really? Which element(s) can achieve this? I’m code savvy but didnt think I saw anything to handle dynamic pricing or allow a coupon to handle more than one service

Using the Bookings Custom Pricing Service Plugin you can get the Contact ID of the member making the booking and customise the rate based on the labels / badges, etc associated with the respective Contact ID.

However the only catch is that the update price will reflect only on the checkout page at the very end of the booking flow, as far as I remember.

Here’s the tutorial: