Inspect scheduled GymCore work.
GymCore uses WordPress’s scheduler and, where available, WooCommerce Action Scheduler to perform work after the page request ends. For owners, “scheduled” means queued—not completed. Verify the source record, the scheduled entry, and the final provider or customer result.
Recurring work registered by source
| Hook | Cadence/start | Purpose and dependency |
|---|---|---|
| `gym_core_report_delivery` | Daily, scheduled for 07:00 local time | Delivers due saved reports |
| `gym_core_churn_evaluate_daily` | Daily, scheduled for 06:00 local time | Recalculates churn scores |
| `gym_core_retention_daily` | Daily, scheduled for 18:05 local time | Runs retention processing; audited provider exits when SMS is disabled |
| `gym_core_pause_auto_resume` | Daily | Resumes eligible membership pauses |
| `gym_core_pause_reminder` | Daily | Processes pause reminders |
| `gym_core_anniversary_sweep` | Weekly | Evaluates membership anniversaries |
| `gym_core_license_check` | Daily | Refreshes license status |
| `gym_core_daily_maintenance` | Daily | Runs registered maintenance |
| `gym_core_ai_purge_conversations` | Daily | Purges expired AI conversations and messages; pending actions and all audit data are not included |
| `gym_core_ai_sms_scan_lapsed` | Daily, first run about one hour after scheduling | Scans lapsed-member automation when the AutomateWoo bootstrap is active |
| `gym_core_ai_sms_scan_promotion` | Daily, first run about two hours after scheduling | Scans promotion automation when the AutomateWoo bootstrap is active |
| `gym_core_briefing_sweep` | Daily through Action Scheduler | Finds due coach briefings and schedules `gym_core_send_briefing_sms` |
Times are created by plugin code using the site’s WordPress clock. A low-traffic site can run WP-Cron late; Action Scheduler availability and queue health are runtime dependencies.
One-time and asynchronous work
| Hook | Trigger |
|---|---|
| `gym_core_ai_send_sms_async` | Queued AI SMS send; Action Scheduler is preferred and WP-Cron is the fallback |
| `gym_core_ai_webhook_secret_cleanup` | Removes an old AI webhook secret after rotation |
| `gym_core_setup_import_batch` | Processes an onboarding import batch |
| `gym_core_qbo_sync_order` | QuickBooks order/refund/payout sync; normal delays include 10 seconds for order/refund and 30 seconds for payout |
| `gym_core_async_evaluate_badges` | Evaluates badges after relevant activity |
| `gym_core_evaluate_milestones` | Evaluates attendance milestones |
| `gym_core_invalidate_heatmap_cache` | Invalidates the schedule heatmap cache after a short delay; code can fall back to immediate invalidation |
| `gym_core_retry_public_trial_finalization` | Retries trial finalization after 60 seconds |
| `gym_core_seed_referral_codes` | Seeds referral codes |
| `gym_core_lead_follow_up_due`, `gym_core_trial_reminder_due`, `gym_core_no_show_recovery_due`, `gym_core_post_trial_follow_up_due`, `gym_core_internal_follow_up_due`, `gym_core_sms_follow_up_due`, `gym_core_email_follow_up_due` | Lead and trial follow-up events; Action Scheduler is preferred with WP-Cron fallback |
Manual QuickBooks re-sync schedules one action per matching order, up to 500, staggered by two seconds. A failed-sync note can schedule a retry after 60 seconds.
Exact steps
Safe stop: Inspect the queued action and its logs without running or retrying it; stop before a retry when the downstream result is unknown because messages and external writes can duplicate.
-
Record the source record ID, the expected hook, and the time the action should have been created.
Expected: The report can be tied to one order, member, lead, report, or maintenance purpose.
-
If WooCommerce Action Scheduler is active, open WooCommerce > Status > Scheduled Actions and search for the exact hook. Otherwise, have an administrator or engineer inspect WordPress cron events with the site’s approved tooling.
Expected: The hook is pending, complete, failed, or absent. Do not report completion from “pending.”
-
Open the action’s log or WordPress error log and compare its arguments with the source record.
Expected: The queued arguments identify the same record. A completed scheduler entry can still contain a downstream provider failure.
-
Check the final system: WooCommerce/QuickBooks for accounting, the SMS provider for delivery, GymCore tables for ranks/attendance/retention, or the license merchant service for entitlement.
Expected: The final source shows the intended result. If it does not, preserve the failed action and error before retrying; repeated jobs can duplicate messages or external writes.
Symptoms
- Many overdue WP-Cron events point to site traffic or cron configuration, not one GymCore record.
- Failed Action Scheduler entries with authentication errors point to the external provider or credentials.
- Retention work absent while SMS is disabled matches the audited gate.
- AI conversation purging does not remove every pending action or audit record; review those stores under the applicable retention policy.
Verified against: current recurring and single-event registrations in GymCore and GymCore AI source.
Need help?
Describe one problem and the installed versions. Never send passwords, license keys, API keys, payment details, or member records.