Skip to content

What runs on a schedule ​

Background work, and when it happens. Generated from the app.

You do not run any of this. It is documented because "why did nothing publish" and "when do metrics arrive" are both answered here.

The two that matter most ​

Publishing ticks every minute. A slot at 09:10 publishes at 09:10, give or take the queue.

Metrics sync nightly. A post published this morning has no metrics until tomorrow. That is not a bug.

Times below are the deployment timezone

Not your posting-schedule timezone. Your posts go out in your configured timezone. See Posting schedule.

Schedule ​

Times are in the deployment timezone (Europe/Athens), which is separate from the posting-schedule timezone you set per brand in Settings.

CommandRunsCron
accounts:purge-pendingDaily at 03:000 3 * * *
lifecycle:sendDaily at 10:000 10 * * *
comments:fetchEvery minute* * * * *
publish:tickEvery minute* * * * *
social:refresh-tokensDaily at 07:000 7 * * *
research:sync-channelsEvery 6 hours0 */6 * * *
metrics:sync-postsDaily at 05:4545 5 * * *
metrics:snapshot-followersDaily at 07:3030 7 * * *
engage:syncDaily at 0*😗/5*/5 * * * *
automations:enrich-contactsDaily at 06:3030 6 * * *
metrics:reportMonthly on the 1st at 09:000 9 1 * *
videos:cleanup-stale-uploadsHourly0 * * * *
ai-models:sync-pricesDaily at 04:1515 4 * * *

Every command ​

CommandWhat it doesOptions
accounts:purge-pendingPermanently delete accounts that were soft-closed more than the grace period ago.--days
ai-models:sync-pricesQueue a sync of AI model token prices from the public price feed—
automations:enrich-contactsFill captured DM contacts' username/name from the Instagram messaging profile API--team
carousel:render <id>Render all slides of a carousel to JPEG and store them in the media library—
comments:fetchRead every due comment-outreach feed, once for the whole platform, paced against the Reddit budget—
competitors:refresh [competitor]Re-read competitor pricing pages into resources/data/competitor-pricing.json and report price changes--preview
content:repurpose <post>Repurpose one approved LinkedIn post draft into carousel + reel + IG caption assets--bg --profile --preview
dev:docs-contractEmit the public-surface contract (MCP tools, REST routes, enums, connectors, commands) as JSON for the docs site--pretty --section --silent
engage:syncPoll every connector implementing PollsConversations for new Engage conversation items--account --team
flow:sync-with-stripeSync local database with Stripe products and plans—
lifecycle:sendSend due lifecycle emails (onboarding, trial nurture, churn recovery)—
metrics:reportGenerate the monthly own-channel performance report for each team with metrics--month --team --force --preview
metrics:snapshot-followersSnapshot connected accounts' follower counts into account_stat_snapshots via each platform connector--team
metrics:sync-postsPull our own post metrics into metrics_snapshots for every platform whose connector reports them--platform --team --days
permissions:syncIdempotently sync the TeamPermission enum into Spatie's permissions table—
postlyra:import-workspace [path]Import the existing TS-prototype workspace (drafts, ideas, comments, schedule, metrics) into the DB--fresh
postlyra:match-metricsBackfill metrics_snapshots.post_id (+ pillar) against published drafts using the prefix heuristic--team
postlyra:seed-ownerCreate (or reset) the login-able owner user for the default team, for the app panel--email --password
publish:tickDispatch PublishPublicationJob for every due pending publication whose draft is approved; expire the rest; sweep repeat posts—
research:sync-channelsDispatch a sync job per tracked channel (or a single one via --channel)--channel
social:refresh-tokensRefresh social account tokens via each platform connector--force
videos:cleanup-stale-uploadsAbort R2 multipart uploads stuck in "uploading" past the grace period.--hours

Reading it ​

publish:tick dispatches due slots, every minute.

comments:fetch reads every due comment-outreach feed once a minute, one shared read per feed rather than per brand, paced against Reddit's rate limit. See Sources.

social:refresh-tokens refreshes connection tokens, with a policy per platform. TikTok's 24 hour tokens refresh every run, Instagram's 60 day tokens occasionally.

metrics:sync-posts pulls post metrics for every platform whose connector reports them: Instagram, Bluesky, TikTok, Threads and YouTube today. See Platform support for what each one actually sends back.

metrics:report generates the monthly performance report on the 1st. Read it under Insights.

automations:enrich-contacts fills in contact names and handles from the Instagram messaging profile API.

Running one now ​

Some of these have a matching button in Studio rather than a wait: Scan now on Sources, and Reconnect on Connections for a token that needs it.

The rest run only on the schedule.

Postlyra, by MAVA Design