Skip to content

AI is brilliant at building. Wasteful at repeating.

AI writes the automation. It runs the same way, every time.

Describe it in plain words. Whenever writes real code you own and runs it across any of your tools. No coding needed, and no ceiling when you want one.

Free AI building has weekly usage limits. You pay per run.

Used by teams behind

Your agent is still thinking. Whenever is done.

An agent stops to reason through every invoice, so work piles up behind it, and now and then it gets one wrong. Whenever runs your workflow as code. The only AI step is the one you add, like writing the vendor email.

An agent

Done
5
Waiting
15
Wrong
0

Whenever

Done
15
Waiting
0
Wrong
0
Illustrative workflow, not a benchmark.

Same result, every run

For invoices, refunds and payouts, a 1% error rate is too much. Whenever makes the same decision every time.

Faster

Whenever runs your workflow in milliseconds. Nothing waits for a model to think it through again.

Cheaper

Whenever uses AI once, to write your workflow. After that, every run is almost free.

AI where it helps

Need a reply written, a PDF read or a judgment call? Add an AI step in Whenever, only where you want it.

Any API, even the one nobody supports.

1,402 integrations in the catalogue. Not in the list? Name the service and Whenever reads its API documentation, tells you which pages it used, and writes the integration. Nothing published? Paste the docs you do have.

1,402 integrations in the catalogue. Not listed? Name it, and Whenever reads the docs and writes the integration.

+1,392 more
Whenever
+ Connect to

DentaDeskDentaDesk

The CRM your dental clinic runs on

Not in the cataloguedocs.dentadesk.io
/auth/patients/appts
Connected ✓
+ Connect to

StockPilot 3.2StockPilot 3.2

A warehouse system from 2011

Not in the cataloguepasted PDF manual
p.4p.12p.19
Connected ✓
+ Connect to

admin.acme.internaladmin.acme.internal

Your team’s own admin API

Not in the catalogueopenapi.json
/users/refunds/audit
Connected ✓
+ Connect to

FitSlotFitSlot

The booking app at your local gym

Not in the catalogueapi.fitslot.app/docs
/members/classes/bookings
Connected ✓

For the workflows your canvas can’t hold

Look inside the black box.

Node builders hide complex logic in Code nodes that nobody can read. Whenever writes the whole workflow as code, so every step reads in plain words.

  1. Trigger
    Schedule

    Every hour

  2. Shopify

    Get new orders

  3. Custom step

    Skip test orders and staff accounts

  4. LoopEach order
    1. Custom step

      Add up line items and tax

    2. Custom step

      Apply EU VAT for EU customers

    3. Condition

      If the order is over $1,000

      Yes

      1. Slack

        Post it to #finance

      Otherwise, continue to Sheets

    4. Sheets

      Add a row to “Orders”

Your agent works in chat. Now make it run on its own.

Paste the prompt behind your assistant’s scheduled task, or send it from your coding agent through our MCP server. Whenever makes it run on its own.

mcp.whenever.dev
MCP Setup Guide
  1. Ask your coding agent

    Every weekday at 8am, find yesterday’s Stripe refunds over $200 and post a summary to #finance with each customer and the reason. Use https://www.whenever.dev/skill.md

    Created refund-summary. Runs every weekday at 8am.

  2. Get a workflow

    1. Trigger
      Schedule

      Every weekday at 8:00

    2. Stripe

      List yesterday’s refunds

    3. Filter

      Keep refunds over $200

    4. Slack

      Post a summary to #finance

    refund-summary.workflow.ts
    export const listRefunds = defineStep('List yesterday’s Stripe refunds', async (ctx) => {
      const day = 24 * 60 * 60 * 1000;
      const today = Math.floor(ctx.now() / day) * day;
      return ctx.integrations.stripe.listRefunds({
        createdAfter: today - day, createdBefore: today,
      });
    });
    
    export const filterRefunds = defineStep('Keep refunds over $200', async (ctx, refunds) => {
      return refunds.filter((refund) => refund.amount > 200);
    });
    
    export const postSummary = defineStep('Post a summary to #finance', async (ctx, refunds) => {
      const lines = refunds.map((r) => `${r.customer} · $${r.amount} · ${r.reason}`);
      await ctx.integrations.slack.postMessage({
        channelId: ctx.config.FINANCE_CHANNEL_ID,
        text: [`${refunds.length} refunds over $200 yesterday`, ...lines].join('\n'),
      });
    });
    
    export const manifest = {
      name: 'Refund summary',
      triggers: [schedule('0 8 * * 1-5', { key: 'weekdays' })],
    };
    
    export default defineWorkflow(async (ctx) => {
      await postSummary(ctx, await filterRefunds(ctx, await listRefunds(ctx)));
    });
  3. It’s live

    On · runs weekdays at 8:00

    • Fri 08:00Completed · 1.2s
    • Thu 08:00Completed · 1.2s
    • Wed 08:00Completed · 1.2s

    #finance

    [Your Bot Name]APP

    3 refunds over $200 yesterday

    • Hollis Bakery · $480 · damaged
    • Northfield Dental · $260 · duplicate
    • Marlow & Co · $1,120 · cancelled

Start from a brief that already works

Real automations, not demos. Pick the one closest to what you need and Whenever writes it against your accounts; the code is yours to change from there.

Free to start. Pay per run.

Start with one free workflow, no credit card. Upgrade when you need more workflows or runs. No per-step or per-item counting: one run is one run, however many steps it has.

Hobby

$0/mo

Get access to:
  • 100 runs** monthly
  • One active workflow, no credit card.
Paid plans from

Loading price…

Upgrade as you go for more workflows, features and support:
  • 10,000 runs** monthly
  • In-app code edits

* One run = one workflow execution, start to finish. Free AI building and editing have weekly usage limits.

Or bring one over and stop tracing it node by node

Describe the automation you already have and Whenever rebuilds it as one file you read top to bottom instead of a canvas you follow with your finger, testable before it goes live.

The things people ask first

Do I have to write code?

No. You describe what you want in plain language and Whenever writes the workflow. The code is there when you want it, to read, to review, or to edit, and ignoring it is a perfectly normal way to use Whenever.

What does "workflow-as-code" mean?

A language model writes your automation once, as a typed TypeScript module. Every run after that just executes that code, so run one thousand behaves exactly like run one.

If I add an AI step, does every run still give the same result?

Not for that step. Everything around it runs the same way every time, but an AI step asks a model, and a model can word its answer differently, or decide differently, from one run to the next. The rest of the workflow can check that answer before anything acts on it. An AI step also draws on your plan’s AI allowance on the runs where it happens.

What happens when an API changes?

Nothing changes shape under you: the workflow keeps running the code it was given. When a call starts failing, your run history shows which step broke, and you can ask Whenever to rewrite that step against the new API.

How do triggers work?

A workflow runs on a webhook, on a cron schedule, or on demand. Credentials are managed for you and there is nothing to host, so there is no server to babysit between runs.

What happens if a run fails? Are there retries and alerts?

The run stays in your run history with the step that failed, its error, and what the run returned, so you can see where it broke rather than guessing from a log line. Whenever does not re-run a failed run for you, and it does not send failure alerts on its own. If you want a retry, or a Slack or email message when something fails, ask Whenever to write it into the workflow.

Can I see the history of past runs?

Yes. Every workflow has a run history: when each run happened, what started it, which version ran, and whether it succeeded. Open a run to see each step, how long it took, where it failed and what it returned. Runs and their steps are kept for 90 days.

Are my workflows versioned? Can I roll back?

Every saved change becomes a new numbered version, and your live workflow keeps running the version you turned on until you turn on the new one. Each run shows which version it used. There is no one-click rollback yet: to go back, describe the change you want undone and Whenever edits the workflow again.

Can I export my workflows?

Yes. A workflow is a TypeScript module, not a diagram locked inside a database, so you can take it with you.

Who builds Whenever?

Wix.com Ltd, the Nasdaq-listed company (ticker WIX). Whenever is one of its products, not a site built on the Wix website platform.

Agents should build your automations, not be them

Describe your first workflow in plain words. AI building is free within weekly usage limits; you pay when it runs.