The Groundplan Education Add-on includes a Wait List functionality.  You'll want use a few helper functions to support the Wait List functionality in your theme.

The xdgp_edu_get_class_wait_list_url() function returns a wait list value when a class is both Sold out AND a Wait List URL has been set.  This allows education programs to prepare a wait list signup form and immediately activate it when a class is sold out.

Register Buttons with Wait List Support

Adapt this code when creating a "Register Button" to check for an active wait list and sold out class.

$post->ticket_url = xdgp_event_general_ticket_url($post);
$post->status = xdgp_get_event_status($post);
$buy_button_text = "Register"
$post->wait_list_url = xdgp_edu_get_class_wait_list_url($post);
  if (!empty($post->wait_list_url)) {
    $post->ticket_url = $post->wait_list_url;
    $post->status = 'wait-list';
    $buy_button_text = "Wait List";

echo '<a href="'.$post->ticket_url' title="'.$buy_button_text.'">'.$buy_button_text.'</a>';

Wait List Buttons on Calendar

Adapt this code to display Wait List calls to action under the Sold Out Status on each calendar.

 * Add Wait List button to Calendars
 * @return return HTML additional links

function xdgp_waitlist_link($extralink, $current_perf, $event, $link, $calendar_args) {
  if (function_exists('xdgp_edu_get_class_wait_list_url')) {
    $waitlist_url = xdgp_edu_get_class_wait_list_url($event);
    if (!empty($waitlist_url)) {
      $extralink = '<a href="'.$waitlist_url.'" title="Wait List" class="btn btn-secondary">Wait List</a>';
    } else if ($event->status == 'closed') {
      // no link
  return $extralink;

if (function_exists('xdgp_edu_get_class_wait_list_url')) {
  add_action('xdgp_calendar_additional_performance_link', 'xdgp_waitlist_link', 10, 5);