Webhook Scheduler Pro

Version: 2.3.0 • Last Updated: August 22, 2025

Welcome to the official documentation. This guide will walk you through the setup and usage of this reliable, enterprise-grade solution for your Bubble application.

Go Beyond Bubble's Native Capabilities

While Bubble is powerful, building professional-grade applications often requires going beyond its native limits. Webhook Scheduler Pro is designed to elevate your app with an enterprise-level infrastructure for managing all your asynchronous tasks.

Our solution is built on a modern, serverless architecture powered by Google Cloud, giving you access to features normally reserved for large tech companies:

  • Full Control with a Management Dashboard: Monitor job statuses, inspect logs, and manually retry or cancel tasks from a powerful and intuitive interface.
  • Advanced Workflow Automation: Use Callbacks to write the results of your webhooks directly back into your Bubble database, creating deeply integrated and automated systems.
  • Enterprise-Grade Reliability: Benefit from a system with smart retries, concurrency locks, and a zero-workload architecture that keeps your app fast and your costs low.

Setup & Configuration

The 60-Second Setup

  1. In your Bubble editor, go to the Plugins tab and install Webhook Scheduler Pro.
  2. Open Plugins → Additional keys and add two private keys:
    • ADMIN_EMAIL: your admin email (used for alerts and dashboard access).
    • ADMIN_PRIVATE_PHRASE: a long, secret phrase (store it securely).
  3. Use the Schedule Webhook action in any backend workflow. No appId is required; isolation is handled server-side.
You will receive a verification email with a secure link to the /portal. Log in once to mark your app as verified and unlock full quotas.
If you don’t see the email, please check your Spam/Junk folder and mark it as “Not Spam”. To trigger the email, simply run a Schedule Webhook action once.

Plugin Actions

Action: Schedule Webhook

This is the core server-side action of the plugin. Use it in any backend workflow to schedule a task.

Input Fields

FieldTypeDescription
URLtextThe full HTTPS endpoint to invoke. Must be a secure URL.
HTTP MethoddropdownThe HTTP method (POST, GET, PUT, PATCH). Defaults to POST.
Headers (JSON)textA JSON object for custom headers. E.g., {"Content-Type": "application/json"}.
Body (JSON)textThe JSON payload to send. Use Bubble's dynamic data and :format as JSON-safe.
Execution DatedateThe exact date and time for execution. Must be at least 5 seconds in the future.
Callback - Thing To Modifytext(Optional) The unique ID of the Thing in your Bubble database that you want to update.
Callback - Field To Updatetext(Optional) The name of the field on the Thing that you want to modify with the webhook's response.
Callback - Data API URLtext(Optional) The root URL of your Bubble app's Data API. Example: https://yourapp.bubbleapps.io/api/1.1/obj.
Callback - Bubble API Keytext (private)(Optional) Your private Bubble API key that has permission to modify the specified Thing.
Callback - Response Pathtext(Optional) A dot-notation path to extract a specific value from the webhook's JSON response. Example: data.id.

Usage Quotas

App StatusDaily LimitAlert EmailsNotes
Pending Verification10 jobs / day / appUp to 5 emails / dayTemporary cap until you sign in to the dashboard.
Verified35,000 jobs / day / app~1M / monthUp to 5 emails / day (configurable)Jobs always remain visible in the dashboard.

Limits are applied per application. Alert emails do not affect job execution or visibility in your dashboard.

Return Values

  • success (yes/no): Returns "yes" if the task was successfully scheduled.
  • jobId (text): A unique ID for this job in our system. Useful for tracking in your database.
  • taskId (text): The unique Google Cloud identifier for this task. Important: Save this ID if you plan to cancel the task later.

Action: Cancel Webhook

This action allows you to delete a scheduled job before it runs.

FieldTypeDescription
Task IDtextThe unique taskId you received and saved when you first scheduled the job.

Action: Call API Now

Use this action to immediately call an external API, get the response, and optionally write a value back into your Bubble database via a Callback. This is perfect for on-demand queries and quick integration tests.

FieldTypeDescription
EndpointtextFull HTTPS API URL to call (e.g., https://api.example.com/v1/data).
HTTP MethoddropdownGET, POST, PUT, PATCH, DELETE. Defaults to GET.
Headers (JSON)textOptional. JSON object of custom headers (e.g., {"Authorization": "Bearer ..."}).
Body (JSON)textOptional. JSON payload for the request (ignored for GET/HEAD).
Response PathtextOptional. Dot-notation to extract a value from the JSON response (e.g., slip.advice).

Callback (optional)

This action supports the Callback feature to write the API response directly to your Bubble database. See the Callback Deep-Dive section for a full tutorial and examples.

Return Values

These keys define the JSON object your function will return in Bubble.

NameKey TypeDescription
successyes/noReturns "yes" if the API call and optional callback were successful.
http_statustextThe HTTP status code from the external API response (e.g., "200", "404").
duration_msnumberThe total time taken for the API call in milliseconds.
response_jsontextThe full response body from the API, as a JSON string.
selected_valuetextThe specific value extracted using the Response Path, as a JSON string.

Callback Deep-Dive

Important: The Callback feature relies on Bubble's Data API. To use it, your Bubble application must be on a paid plan that allows data modifications (write access) via the API.

The Callback feature is available for both Schedule Webhook and Call API Now actions. It allows you to take the response from your webhook or API call and write it directly into a field in your Bubble database. This is incredibly powerful for automating workflows.

How It Works

When your webhook or API call completes, we compute a valueToUpdate to write back to your database:

  • If Response Path is empty: the entire HTTP response body is used. Text/HTML is sent as is; JSON objects are sent as JSON (a long text field is recommended).
  • If Response Path is provided: we extract the value using dot-notation (e.g., data.id, json.status). Use this when your Bubble field is a primitive type (text/number/yes-no).

Callback Fields

FieldDescription
Callback - Thing To ModifyThe unique ID of the Bubble Thing to update.
Callback - Field To UpdateThe field name to write on that Thing.
Callback - Data API URLYour Bubble Data API base URL (e.g., https://app.bubbleapps.io/api/1.1/obj/user).
Callback - Bubble API KeyPrivate API Key with permission to modify the Thing.
Callback - Response PathOptional dot-notation to extract a specific value for the field. If different from the main Response Path.

Use Cases & Examples

Example 1: Fetching Live Weather Data

Instantly get data from an external API. Let's fetch the current temperature in Paris using the free Open-Meteo API. This example is best suited for the Call API Now action.

  1. Set Endpoint to: https://api.open-meteo.com/v1/forecast?latitude=48.85&longitude=2.35&current_weather=true
  2. Set HTTP Method to GET.
  3. To get just the temperature, set Response Path to current_weather.temperature.
  4. The action's returned value `selected_value` will now contain the current temperature, which you can display in a text element in Bubble.

Example 2: Flagging an Email Verification

Update your Bubble database after an action. Here, we'll set a user's `email_verified` field to `yes`. This can be used with Schedule Webhook (e.g., to confirm a welcome email was sent 1 hour after signup) or with Call API Now.

  1. In your workflow, choose your action (e.g., Schedule Webhook).
  2. Set the main URL to an echo service that returns a value, e.g., https://postman-echo.com/get?email_verified=yes. (For a real scenario, this could be your email provider's API).
  3. Set Callback - Thing To Modify to Current User's unique id.
  4. Set Callback - Field To Update to your user field, e.g., email_verified (must be type text).
  5. Set Callback - Data API URL to your app's Data API URL (e.g., https://yourapp.bubbleapps.io/api/1.1/obj/user).
  6. Set Callback - Bubble API Key to your private Bubble key.
  7. Set Callback - Response Path to args.email_verified. This will extract "yes" from the echo response.
  8. When the action runs (either immediately or on schedule), the user's `email_verified` field will be updated to "yes" in your database.

The Management Dashboard

After your first scheduled job, you will receive a verification email pointing to the /portal. Log in with your admin email and private phrase to verify your app and access the dashboard. You can also use a permanent magic link to jump directly to the dashboard. If no email arrives, check your Spam/Junk folder and run a Schedule Webhook action to trigger the email.

  • Real-time Monitoring: See all queued, running, successful, and failed jobs at a glance.
  • Detailed Logs: Inspect the payload, headers, and error messages for any job.
  • Manual Actions: Manually retry a failed job or cancel a queued job with a single click.
  • Performance Analytics: Track your success rate, average response times, and API usage over time.
  • Daily Email Alerts: Receive up to 5 job alerts per day by email (configurable). All subsequent jobs are still visible in the dashboard.

Security & Reliability

  • Secure by Design: All communication is over HTTPS. Anti-SSRF checks block internal/malicious targets.
  • Powered by Google Cloud: Managed via Cloud Tasks/Run for reliability and scale.
  • Data Isolation: The appId is resolved server-side from your admin email + private phrase. All Redis keys are namespaced by appId, preventing cross-tenant access.

FAQ

Q: How do I get access to my dashboard?
A: Schedule your first webhook. You'll receive a verification email with a link to the /portal. Log in once with your admin email and private phrase to unlock access.

Q: I'm not receiving email alerts for every job. Why?
A: We send up to 5 alert emails per day/app (configurable in settings). All jobs still appear in the dashboard. If you don’t see emails, check your Spam/Junk folder. To trigger emails (including the first verification), run a Schedule Webhook action.

Q: How do I cancel a scheduled webhook?
A: Save the taskId from the scheduling response. Use the Cancel Webhook action with that taskId. The plugin adds the same private headers; no appId is needed.