{"slug":"classpilot-booking","name":"ClassPilot Booking","description":"A self-contained WordPress booking plugin — manage class schedules, bookings, and customer credits directly in your WordPress site.","author":"griffinforms","active_installs":0,"version":"1.0.0","wp_org_url":"https://wordpress.org/plugins/classpilot-booking/","is_closed":false,"cleanup":{"has_uninstall_hook":true,"drops_tables_on_uninstall":false,"deletes_options_on_uninstall":false},"tables":[{"table_name":"classpilot_bookings","full_table_name":"wp_classpilot_bookings","description":"Stores classpilot bookings data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"session_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"customer_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"status","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"payment_mode","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"stripe_session_id","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"pack_credit_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"attendance_status","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"idempotency_key","type":"varchar(100)","nullable":false,"primary_key":false},{"name":"note","type":"text","nullable":false,"primary_key":false},{"name":"created_at","type":"datetime","nullable":false,"primary_key":false},{"name":"updated_at","type":"datetime","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_bookings ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, session_id bigint(20) unsigned NOT NULL, customer_id bigint(20) unsigned NOT NULL, status varchar(20) NOT NULL DEFAULT 'pending', payment_mode varchar(20) NOT NULL DEFAULT 'stripe', stripe_session_id varchar(200) NOT NULL DEFAULT '', checkout_expires_at datetime NULL DEFAULT NULL, pack_credit_id bigint(20) unsigned NOT NULL DEFAULT 0, attendance_status varchar(20) NOT NULL DEFAULT 'unknown', idempotency_key varchar(100) NOT NULL DEFAULT '', note text NOT NULL, created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY idempotency (idempotency_key), KEY session_id (session_id), KEY customer_id (customer_id), KEY status (status), KEY pending_expiry (status, checkout_expires_at) ) {$charset};\" );"},{"table_name":"classpilot_classes","full_table_name":"wp_classpilot_classes","description":"Stores classpilot classes data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"title","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"description","type":"longtext","nullable":false,"primary_key":false},{"name":"schedule_type","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"booking_mode","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"drop_in_price_minor","type":"int unsigned","nullable":false,"primary_key":false},{"name":"drop_in_currency","type":"varchar(3)","nullable":false,"primary_key":false},{"name":"duration_minutes","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"default_capacity","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"location_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"instructor_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"policy_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"gallery_image_ids","type":"text","nullable":true,"primary_key":false},{"name":"published","type":"tinyint(1)","nullable":false,"primary_key":false},{"name":"archived","type":"tinyint(1)","nullable":false,"primary_key":false},{"name":"booking_open_hours_before","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"booking_close_hours_before","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"created_at","type":"datetime","nullable":false,"primary_key":false},{"name":"updated_at","type":"datetime","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_classes ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, title varchar(200) NOT NULL DEFAULT '', description longtext NOT NULL, schedule_type varchar(20) NOT NULL DEFAULT 'recurring', booking_mode varchar(20) NOT NULL DEFAULT 'drop-in', drop_in_price_minor int unsigned NOT NULL DEFAULT 0, drop_in_currency varchar(3) NOT NULL DEFAULT 'USD', duration_minutes smallint unsigned NOT NULL DEFAULT 60, default_capacity smallint unsigned NOT NULL DEFAULT 10, location_id bigint(20) unsigned NOT NULL DEFAULT 0, instructor_id bigint(20) unsigned NOT NULL DEFAULT 0, policy_id bigint(20) unsigned NOT NULL DEFAULT 0, gallery_image_ids text, published tinyint(1) NOT NULL DEFAULT 0, archived tinyint(1) NOT NULL DEFAULT 0, booking_open_hours_before smallint unsigned NOT NULL DEFAULT 0, booking_close_hours_before smallint unsigned NOT NULL DEFAULT 1, created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY published_archived (published, archived) ) {$charset};\" );"},{"table_name":"classpilot_customers","full_table_name":"wp_classpilot_customers","description":"Stores classpilot customers data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"wp_user_id","type":"bigint(20) unsigned","nullable":true,"primary_key":false},{"name":"display_name","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"email","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"created_at","type":"datetime","nullable":false,"primary_key":false},{"name":"updated_at","type":"datetime","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_customers ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, wp_user_id bigint(20) unsigned DEFAULT NULL, display_name varchar(200) NOT NULL DEFAULT '', email varchar(200) NOT NULL DEFAULT '', created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY wp_user_id (wp_user_id), KEY email (email) ) {$charset_collate};\" );"},{"table_name":"classpilot_instructors","full_table_name":"wp_classpilot_instructors","description":"Stores classpilot instructors data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"name","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"bio","type":"text","nullable":true,"primary_key":false},{"name":"image_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"active","type":"tinyint(1)","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_instructors ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, name varchar(200) NOT NULL DEFAULT '', bio text, image_id bigint(20) unsigned NOT NULL DEFAULT 0, active tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (id) ) {$charset_collate};\" );"},{"table_name":"classpilot_locations","full_table_name":"wp_classpilot_locations","description":"Stores classpilot locations data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"name","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"address","type":"text","nullable":false,"primary_key":false},{"name":"description","type":"longtext","nullable":false,"primary_key":false},{"name":"arrival_instructions","type":"text","nullable":false,"primary_key":false},{"name":"gallery_image_ids","type":"text","nullable":true,"primary_key":false},{"name":"active","type":"tinyint(1)","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_locations ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, name varchar(200) NOT NULL DEFAULT '', address text NOT NULL, description longtext NOT NULL, arrival_instructions text NOT NULL, gallery_image_ids text, active tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (id) ) {$charset};\" );"},{"table_name":"classpilot_pack_credits","full_table_name":"wp_classpilot_pack_credits","description":"Stores classpilot pack credits data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"customer_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"pack_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"credits_total","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"credits_remaining","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"stripe_session_id","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"purchased_at","type":"datetime","nullable":false,"primary_key":false},{"name":"expires_at","type":"datetime","nullable":false,"primary_key":false},{"name":"created_at","type":"datetime","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_pack_credits ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, customer_id bigint(20) unsigned NOT NULL, pack_id bigint(20) unsigned NOT NULL, credits_total smallint unsigned NOT NULL DEFAULT 0, credits_remaining smallint unsigned NOT NULL DEFAULT 0, stripe_session_id varchar(200) NOT NULL DEFAULT '', purchased_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, expires_at datetime NOT NULL, created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY customer_pack (customer_id, pack_id), KEY stripe_session_id (stripe_session_id), KEY expires_at (expires_at) ) {$charset};\" );"},{"table_name":"classpilot_packs","full_table_name":"wp_classpilot_packs","description":"Stores classpilot packs data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"name","type":"varchar(200)","nullable":false,"primary_key":false},{"name":"description","type":"longtext","nullable":false,"primary_key":false},{"name":"credits","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"price_minor","type":"int unsigned","nullable":false,"primary_key":false},{"name":"currency","type":"varchar(3)","nullable":false,"primary_key":false},{"name":"validity_days","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"status","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"created_at","type":"datetime","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_packs ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, name varchar(200) NOT NULL DEFAULT '', description longtext NOT NULL, credits smallint unsigned NOT NULL DEFAULT 1, price_minor int unsigned NOT NULL DEFAULT 0, currency varchar(3) NOT NULL DEFAULT 'USD', validity_days smallint unsigned NOT NULL DEFAULT 0, status varchar(20) NOT NULL DEFAULT 'active', created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY status (status) ) {$charset_collate};\" );"},{"table_name":"classpilot_sessions","full_table_name":"wp_classpilot_sessions","description":"Stores session data for tracking user or visitor state.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"bigint(20) unsigned","nullable":false,"primary_key":true},{"name":"class_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"starts_at","type":"datetime","nullable":false,"primary_key":false},{"name":"ends_at","type":"datetime","nullable":false,"primary_key":false},{"name":"capacity","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"seats_booked","type":"smallint unsigned","nullable":false,"primary_key":false},{"name":"instructor_id","type":"bigint(20) unsigned","nullable":false,"primary_key":false},{"name":"status","type":"varchar(20)","nullable":false,"primary_key":false},{"name":"created_at","type":"datetime","nullable":false,"primary_key":false},{"name":"updated_at","type":"datetime","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_classpilot_sessions ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, class_id bigint(20) unsigned NOT NULL, starts_at datetime NOT NULL, ends_at datetime NOT NULL, capacity smallint unsigned NOT NULL DEFAULT 10, seats_booked smallint unsigned NOT NULL DEFAULT 0, instructor_id bigint(20) unsigned NOT NULL DEFAULT 0, status varchar(20) NOT NULL DEFAULT 'scheduled', created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY class_starts (class_id, starts_at), KEY status (status) ) {$charset_collate};\" );"}],"table_count":8}