# Advanced Scheduler > Advanced Scheduler is a Heroku add-on that provides task scheduling as a service. It executes recurring and one-off tasks as Heroku one-off dynos — recurring schedules are defined with standard cron expressions (or a schedule helper), one-off schedules with a specific date and time. It is language-agnostic and works with any language supported by Heroku. It is built on the same principles as **Heroku Scheduler** but is a separate product. Compared to Heroku Scheduler it adds selectable dyno types, per-trigger timeouts (up to 86400 seconds), execution history, failure monitoring and email alerts, real-time execution logs, a Service API, and a Heroku CLI plugin. Existing Heroku Scheduler jobs can be imported and behave identically after import. A scheduled unit of work is called a **trigger**. Because tasks run as one-off dynos, they count toward the app's dyno usage and its concurrent one-off dyno limit. Canonical documentation is hosted in the Heroku Dev Center; the section links below point into that article. ## Heroku Documentation - [Advanced Scheduler — Heroku Dev Center](https://devcenter.heroku.com/articles/advanced-scheduler): The complete, authoritative documentation for the add-on. Covers provisioning, defining and scheduling tasks, dyno types, logs, monitoring, the Service API, the CLI plugin, limits, plan migration, and removal. ## Getting Started - [Provisioning the add-on](https://devcenter.heroku.com/articles/advanced-scheduler#provisioning-the-add-on): Installing Advanced Scheduler on a Heroku app via the CLI or the Heroku Dashboard. - [Quick Start (5 minutes)](https://devcenter.heroku.com/articles/advanced-scheduler#quick-start-5-minutes): End-to-end walkthrough — install, define a task, test it, schedule it, verify execution and logs. - [Defining tasks](https://devcenter.heroku.com/articles/advanced-scheduler#defining-tasks): How to write the command a trigger runs, with per-language examples for Node.js, Python, PHP, Ruby, Java, Go, Scala, and Clojure. - [Testing tasks](https://devcenter.heroku.com/articles/advanced-scheduler#testing-tasks): Verifying a task runs correctly as a one-off dyno before scheduling it. ## Scheduling - [Scheduling tasks](https://devcenter.heroku.com/articles/advanced-scheduler#scheduling-tasks): Creating triggers — one-off (date and time) vs. recurring (cron expression or schedule helper), using process types instead of raw commands, and activating or deactivating triggers. - [Dyno Type](https://devcenter.heroku.com/articles/advanced-scheduler#dyno-type): Which one-off dyno sizes a trigger can use, constrained by the app's dyno tier (Eco, Basic, Professional). - [Long-running tasks](https://devcenter.heroku.com/articles/advanced-scheduler#long-running-tasks): Guidance on execution intervals, avoiding overlapping runs, and the 24-hour maximum task duration. - [Tasks timing out](https://devcenter.heroku.com/articles/advanced-scheduler#tasks-timing-out): Per-trigger timeout values and how a task is forced to exit. ## API - [Advanced Scheduler Postman API Docs](https://documentation.advancedscheduler.io): Published API reference for programmatic trigger management. Note: rendered client-side as a Postman collection, so it may not be readable by crawlers that do not execute JavaScript. - [Service API overview](https://devcenter.heroku.com/articles/advanced-scheduler#service-api): Which plans include API access and how the `ADVANCED_SCHEDULER_API_TOKEN` config var is provisioned. - [Service API Reference](https://devcenter.heroku.com/articles/advanced-scheduler#service-api-reference): Authentication, response codes and errors, and the full endpoint reference for the Trigger and Trigger Execution resources (create, get, list, update, delete triggers; create, get, list trigger executions). ## CLI - [Advanced Scheduler CLI plugin (GitHub)](https://github.com/oavanruiten/advanced-scheduler): Source and command reference for the Heroku CLI plugin — `heroku triggers`, `triggers:create`, `triggers:update`, `triggers:activate`, `triggers:deactivate`, `triggers:delete`. - [Heroku CLI Plugin usage](https://devcenter.heroku.com/articles/advanced-scheduler#heroku-cli-plugin): Installing with `heroku plugins:install advanced-scheduler` and example output. ## Monitoring and Troubleshooting - [Debugging tasks](https://devcenter.heroku.com/articles/advanced-scheduler#debugging-tasks): Inspecting task output via the dashboard, `heroku logs -d advanced-scheduler`, or a logging add-on. - [Execution Logs](https://devcenter.heroku.com/articles/advanced-scheduler#execution-logs): How logs are streamed directly from Heroku to the browser using Heroku log sessions, retention caveats, and how enabling log streaming changes the one-off dyno process name. - [Task monitoring](https://devcenter.heroku.com/articles/advanced-scheduler#task-monitoring): Success and failure determined by process exit code, plus email alerts on the first failed execution each day. - [Advanced Scheduler and Container Registry](https://devcenter.heroku.com/articles/advanced-scheduler#advanced-scheduler-and-container-registry): Behavior for apps deployed with Docker via Heroku Container Registry. - [Status page](https://advancedscheduler.statuspage.io/): Current and historical service availability. ## Limits and Operational Behavior - [Concurrent one-off dyno limits](https://devcenter.heroku.com/articles/advanced-scheduler#concurrent-one-off-dyno-limits): Why exceeding the app's concurrent one-off dyno limit can cause a task to be skipped, and how to avoid a backlog. - [Migrating between plans](https://devcenter.heroku.com/articles/advanced-scheduler#migrating-between-plans): Using `heroku addons:upgrade`, and what happens to the API token when downgrading. - [Removing the add-on](https://devcenter.heroku.com/articles/advanced-scheduler#removing-the-add-on): Destroying the add-on and its data. ## Heroku Scheduler: Migration and Comparison - [Import Heroku Scheduler Jobs](https://devcenter.heroku.com/articles/advanced-scheduler#import-heroku-scheduler-jobs): Importing existing Heroku Scheduler jobs — imported jobs arrive inactive to avoid duplicate runs — and the Heroku API token used to read them. - [Heroku Scheduler documentation](https://devcenter.heroku.com/articles/scheduler): The separate, Heroku-provided Scheduler add-on, for comparison and disambiguation. ## Pricing and Support - [Plans and pricing on Heroku Elements](https://elements.heroku.com/addons/advanced-scheduler): Authoritative plan list (Trial through Standard 4), trigger and execution limits per plan, history retention, and regional availability. - [Support](https://devcenter.heroku.com/articles/advanced-scheduler#support): Support and runtime issues go through Heroku Support; product feedback goes to support@advancedscheduler.io. - [Heroku Support](https://help.heroku.com/): The support channel for all Advanced Scheduler runtime issues. - [Product feedback](https://www.advancedscheduler.io/feedback): Feature requests and non-support feedback. ## Optional - [Working with one-off dynos](https://devcenter.heroku.com/articles/one-off-dynos): Heroku platform behavior for the dyno type every Advanced Scheduler task runs on. - [Dyno types](https://devcenter.heroku.com/articles/dyno-types): Heroku dyno tiers and sizes that constrain a trigger's dyno selection. - [Heroku limits](https://devcenter.heroku.com/articles/limits): Platform-level limits, including concurrent one-off dynos. - [Scheduled jobs and custom clock processes](https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes): Heroku's guidance on custom clock processes, recommended over any scheduler add-on when scheduled tasks are business-critical. - [Managing add-ons](https://devcenter.heroku.com/articles/managing-add-ons): Generic Heroku add-on provisioning, upgrade, and removal workflow.