Database Schema
< 1 min read
# Database Schema
Smart Cycle Discounts uses custom tables with the `wsscd_` prefix.
## Source of Truth
Schema evolves through migrations. Use these files as the authoritative reference:
– `includes/database/class-database-manager.php`
– `includes/database/migrations/001-initial-schema.php`
– `includes/database/migrations/*.php`
## Core Tables
The plugin registers these tables via `WSSCD_Database_Manager`:
– `{prefix}wsscd_campaigns`
– `{prefix}wsscd_campaign_conditions`
– `{prefix}wsscd_active_discounts`
– `{prefix}wsscd_analytics`
– `{prefix}wsscd_customer_usage`
– `{prefix}wsscd_campaign_recurring`
– `{prefix}wsscd_activity_log`
– `{prefix}wsscd_product_analytics`
– `{prefix}wsscd_recurring_cache`
– `{prefix}wsscd_migrations`
## Notes
– `{prefix}` already includes the trailing underscore from `$wpdb->prefix` (for example `wp_`).
– Table columns can change by plugin version because migrations are additive.
– For production-safe checks, query `INFORMATION_SCHEMA` or use repository classes rather than hardcoding old column sets.
## Example: Resolving a Full Table Name
“`php
global $wpdb;
$table = $wpdb->prefix . ‘wsscd_campaigns’;
“`
## Maintenance Examples
“`sql
OPTIMIZE TABLE {prefix}wsscd_campaigns;
OPTIMIZE TABLE {prefix}wsscd_analytics;
OPTIMIZE TABLE {prefix}wsscd_activity_log;
“`
“`sql
DELETE FROM {prefix}wsscd_analytics
WHERE created_at < DATE_SUB(NOW(), INTERVAL 1 YEAR);
```
Updated on February 17, 2026