How to Send Webhooks With Claude Cowork Scheduled Tasks

No-code

Claude Cowork's Scheduled feature lets you create recurring AI tasks that run automatically on a timetable you define. When you pair a scheduled task with an HTTP action step, Claude becomes a proactive notification system — checking sources, reasoning about what it found, and POSTing structured results to a webhook endpoint without any manual intervention. This guide covers the exact steps to make that work.

What You'll Need

Step 1: Open the Scheduled Tasks Panel

  1. Log in to Claude Cowork and navigate to your workspace.
  2. Locate the Scheduled option in the left sidebar or top navigation. Depending on your plan and UI version, this may be labeled "Automations," "Scheduled Tasks," or appear under a "+" icon for new task types.
  3. Click New Scheduled Task (or equivalent button in your UI version).
  4. Give the task a clear, descriptive name — you'll use this to find and manage it later. Example: "Daily competitor blog digest → Slack webhook".

Step 2: Write the Task Prompt

The quality of your webhook payload depends almost entirely on how precisely you write this prompt. Claude will execute it on every scheduled run, so clarity and output format specificity are critical.

  1. Define the source material. Tell Claude what to read, fetch, or reason about. Examples:
    • "Fetch the RSS feed at https://example.com/feed.xml and extract the titles and URLs of any items published in the last 24 hours."
    • "Search for news articles about [topic] published today. Summarize the top 3 results."
    • "Review the contents of the document I've attached and identify any items that match [criteria]."
  2. Define any filter condition. If the webhook should only fire when something relevant was found (not on every run regardless), make this explicit: "If no new articles were found, end the task without calling any HTTP action."
  3. Specify the exact output format. Tell Claude to produce a specific JSON structure and nothing else:
    Return only the following JSON, with no additional text:
    {
      "summary": "<2-3 sentence summary of findings>",
      "items": [
        { "title": "...", "url": "...", "published": "..." }
      ],
      "item_count": <number>,
      "run_at": "<ISO 8601 timestamp>"
    }
  4. Keep the prompt under 500 words if possible. Longer prompts increase the risk of Claude adding explanatory prose around the JSON output, which breaks downstream parsing.

Step 3: Set the Schedule

  1. In the scheduling section of the task configuration, choose your frequency:
    • Fixed interval: every hour, every 6 hours, once daily, once weekly
    • Specific time: 8:00am every weekday, 9:00am every Monday
    • Cron expression (if your plan supports it): gives full control for complex schedules like "every weekday at 7:45am and 4:45pm"
  2. Set your timezone. Many users miss this — the default is UTC, which means an "8am" task actually runs at 1am Pacific or 4am Eastern. Always verify the displayed local run time before saving.
  3. If this is a time-bounded task (e.g., monitoring a product launch window), set an end date so you don't leave it running and incurring API calls indefinitely.

Step 4: Add the HTTP Webhook Action

  1. In the task builder, look for an Actions or Then do… step after the prompt.
  2. Add a new action and choose HTTP Request or Send Webhook.
  3. Set the method to POST.
  4. Paste your test webhook URL (webhook.site or RequestBin) into the endpoint field.
  5. Set Content-Type: application/json in the headers.
  6. Set the request body to Claude's output. In Claude Cowork, this is typically referenced as {{task.output}} or {{response}} — check your UI for the correct variable name.
  7. If your real endpoint requires a secret token, add an Authorization: Bearer YOUR_TOKEN header. Store the token in Cowork's credential vault rather than hardcoding it in the task.
  8. If you included a "do nothing if no results" condition in your prompt from Step 2, verify that this action is set to only run if the previous step produced output — most task builders have a conditional toggle for this.

Step 5: Run a Manual Test

  1. Click Run Now (or equivalent) to trigger the task immediately without waiting for the schedule.
  2. Open your webhook.site URL in another browser tab and watch for the incoming POST request.
  3. Verify:
    • The payload arrived and is valid JSON (not wrapped in a code block or prefaced with "Here is the JSON:")
    • The field names match what you specified in your prompt
    • Dynamic values like timestamps and URLs are populated correctly, not left as placeholder text
  4. If the JSON is malformed or wrapped in prose, return to your prompt and add a stronger instruction at the end: "Respond with only the raw JSON. Do not include any explanation, code fences, or surrounding text."
  5. Run the test a second time if your task depends on "what changed since last run" — the first run sets the baseline state, the second run exercises the comparison logic.
  6. Check the task's execution log for any errors — common issues are tool call failures (Claude couldn't fetch the URL), timeout errors on slow pages, and variable reference mismatches in the action step.

Step 6: Switch to Your Real Endpoint and Activate

  1. Replace the webhook.site test URL with your real destination:
    • Slack: use a Slack incoming webhook URL (Settings → Integrations → Incoming Webhooks)
    • Database: point at your own API endpoint that writes the payload to a table
    • Zapier/Make: use their "catch webhook" URL to hand off to further automation steps
    • Pipedream: use a Pipedream HTTP trigger URL to run additional processing before final delivery
  2. Save the task and click Activate (or toggle it to Active/On).
  3. Confirm the next scheduled run time is shown and looks correct for your timezone.
  4. Monitor the first 2–3 live runs in the execution history. Confirm the real endpoint is accepting the payload and your downstream system (Slack channel, database, etc.) is receiving data correctly.
  5. Set up a failure alert so you're notified if the task errors out — Claude Cowork can typically send an email on task failure; configure this under the task's notification settings.

Common Use Cases

Troubleshooting

Privacy Policy