Cron: 0 */12 * * *Runs twice daily starting at midnight (00:00 and 12:00 in your local timezone).Best for: High-frequency monitoring during active campaigns or product launches.
Cron: 0 {localHourToUTC(0)} * * *Runs once daily at 00:00 in your local timezone.Best for: Standard daily tracking with fresh morning data.
The schedule automatically converts your local midnight to UTC. For example, if you’re in EST (UTC-5), the cron becomes 0 5 * * *.
Cron: 0 {localHourToUTC(0)} */2 * *Runs every other day at midnight.Best for: Regular monitoring with reduced API costs.
Cron: 0 {localHourToUTC(0)} * * 0Runs weekly on Sunday at midnight.Best for: Low-frequency tracking or stable categories with slow AI training updates.
2
Save the Schedule
Click Save Schedule. OneGlance will:
Persist the cron expression to the database
Trigger an immediate run
Schedule future executions via pg_cron
// From apps/web/src/app/(auth)/schedule/page.tsx:134const handleSave = async () => { const result = await setScheduleMutation.mutateAsync({ workspaceId, schedule: selected, }); if (result.immediateRun?.status === 'queued') { toast.success('Schedule saved and immediate run started.'); } else if (result.immediateRun?.status === 'empty') { toast.warning('Schedule saved, but no prompts configured.'); }};
3
Monitor Next Run
The Next Scheduled Run card displays:
Time until next execution (“In 2 hours”)
Absolute timestamp for far-future runs
// From apps/web/src/app/(auth)/schedule/page.tsx:34function formatRelativeTime(timestamp: string | null): string { const date = new Date(timestamp); const diffHours = Math.floor((date.getTime() - now.getTime()) / 3600000); if (diffHours < 24) { return `In ${diffHours} hour${diffHours !== 1 ? 's' : ''}`; } // ... more formatting}
Schedules use your local timezone but are stored as UTC cron expressions.
// From apps/web/src/app/(auth)/schedule/page.tsx:10function localHourToUTC(localHour: number): number { const now = new Date(); now.setHours(localHour, 0, 0, 0); return now.getUTCHours();}// Example: User in EST (UTC-5) selects "Every day at midnight"const cronExpression = `0 ${localHourToUTC(0)} * * *`;// Result: "0 5 * * *" (5 AM UTC = midnight EST)
Daylight Saving Time shifts are not automatically adjusted. If you’re in a DST-observing timezone:
Spring forward: Schedule shifts 1 hour earlier
Fall back: Schedule shifts 1 hour later
Update your schedule after DST changes to maintain the desired local time.
No direct “Run Now” button exists on the dashboard. Navigate to Schedule → Save Schedule to trigger.
Workaround: To trigger a run without changing your schedule, temporarily select the same frequency you already have, then click Save. This queues an immediate run without modifying the cron expression.
If you publish blog posts, press releases, or major updates, schedule runs to measure impact:
Example:- Monday 9 AM: Publish blog post- Tuesday 12 AM: Scheduled run (24h after)- Thursday 12 AM: Scheduled run (72h after)- Next Monday 12 AM: Scheduled run (1 week after)Compare GEO scores before and after to measure lift.
Cause: The UI displays relative time (“In 5 hours”) which may appear incorrect if your system clock is wrong.Solution: Verify your computer’s timezone settings. The schedule uses your browser’s reported timezone, not the server’s.
Scheduled run didn't execute at expected time
Possible causes:
pg_cron extension not running (self-hosted only)
Database connection lost
Cron secret misconfigured
Diagnosis:
-- Check active cron jobsSELECT * FROM cron.job WHERE jobname LIKE 'auto_run_prompts_%';-- Check recent cron run historySELECT * FROM cron.job_run_detailsWHERE jobid IN (SELECT jobid FROM cron.job WHERE jobname LIKE 'auto_run_prompts_%')ORDER BY start_time DESCLIMIT 10;
Solution: For self-hosted deployments, ensure:
pg_cron is installed and running
API_BASE_URL and INTERNAL_CRON_SECRET env vars are set (packages/services/src/prompt/scheduler.ts:18)
Last Prompt Run shows 'Never' despite active schedule
Cause: No runs have completed successfully yet.Common scenarios:
Just created schedule (wait for first execution)
All previous runs failed
Database migration reset timestamps
Solution: Manually trigger a run by clicking Save Schedule again.
Immediate run on schedule save fails
Error message: “Schedule saved, but immediate run failed. It will run on the next cron cycle.”Non-blocking: The schedule is saved and future runs will work.Cause: Worker agents may be:
Temporarily down
Processing too many jobs (queue backlog)
Rate-limited by AI provider APIs
Solution: Wait 5-10 minutes and check the Dashboard. If data doesn’t appear, manually trigger another run.