# Step 22 Manual Test Checklist

- [ ] Apply migration 014 only after 001–013 on the new database.
- [ ] Confirm all five marketing tables exist and foreign keys point to users/orders/carts correctly.
- [ ] Guest/non-admin cannot open `admin-marketing.php`; admin can.
- [ ] Campaign creation rejects empty name/message and invalid enums; stored text renders escaped.
- [ ] Referral code can be created for active user; existing user's code is refreshed, and inactive/nonexistent IDs are rejected.
- [ ] Reminder queue only considers logged-in users with non-empty carts older than 24 hours.
- [ ] Re-running queue generation for unchanged cart does not create a duplicate reminder.
- [ ] No email/SMS/WhatsApp provider is called; the page clearly says queue-only.
- [ ] Verify behavior on MySQL 8 and actual cPanel PHP version in staging before production.
