Table of Contentsexpand_more
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
- In your Bubble editor, go to the Plugins tab and install Webhook Scheduler Pro.
- 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).
- Use the
Schedule Webhook
action in any backend workflow. NoappId
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
Field | Type | Description |
---|---|---|
URL | text | The full HTTPS endpoint to invoke. Must be a secure URL. |
HTTP Method | dropdown | The HTTP method (POST, GET, PUT, PATCH). Defaults to POST. |
Headers (JSON) | text | A JSON object for custom headers. E.g., {"Content-Type": "application/json"} . |
Body (JSON) | text | The JSON payload to send. Use Bubble's dynamic data and :format as JSON-safe . |
Execution Date | date | The exact date and time for execution. Must be at least 5 seconds in the future. |
Callback - Thing To Modify | text | (Optional) The unique ID of the Thing in your Bubble database that you want to update. |
Callback - Field To Update | text | (Optional) The name of the field on the Thing that you want to modify with the webhook's response. |
Callback - Data API URL | text | (Optional) The root URL of your Bubble app's Data API. Example: https://yourapp.bubbleapps.io/api/1.1/obj . |
Callback - Bubble API Key | text (private) | (Optional) Your private Bubble API key that has permission to modify the specified Thing. |
Callback - Response Path | text | (Optional) A dot-notation path to extract a specific value from the webhook's JSON response. Example: data.id . |
Usage Quotas
App Status | Daily Limit | Alert Emails | Notes |
---|---|---|---|
Pending Verification | 10 jobs / day / app | Up to 5 emails / day | Temporary cap until you sign in to the dashboard. |
Verified | 35,000 jobs / day / app~1M / month | Up 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.
Field | Type | Description |
---|---|---|
Task ID | text | The 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.
Field | Type | Description |
---|---|---|
Endpoint | text | Full HTTPS API URL to call (e.g., https://api.example.com/v1/data). |
HTTP Method | dropdown | GET, POST, PUT, PATCH, DELETE. Defaults to GET. |
Headers (JSON) | text | Optional. JSON object of custom headers (e.g., {"Authorization": "Bearer ..."} ). |
Body (JSON) | text | Optional. JSON payload for the request (ignored for GET/HEAD). |
Response Path | text | Optional. 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.
Name | Key Type | Description |
---|---|---|
success | yes/no | Returns "yes" if the API call and optional callback were successful. |
http_status | text | The HTTP status code from the external API response (e.g., "200", "404"). |
duration_ms | number | The total time taken for the API call in milliseconds. |
response_json | text | The full response body from the API, as a JSON string. |
selected_value | text | The 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
Field | Description |
---|---|
Callback - Thing To Modify | The unique ID of the Bubble Thing to update. |
Callback - Field To Update | The field name to write on that Thing. |
Callback - Data API URL | Your Bubble Data API base URL (e.g., https://app.bubbleapps.io/api/1.1/obj/user ). |
Callback - Bubble API Key | Private API Key with permission to modify the Thing. |
Callback - Response Path | Optional 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.
- Set Endpoint to:
https://api.open-meteo.com/v1/forecast?latitude=48.85&longitude=2.35¤t_weather=true
- Set HTTP Method to
GET
. - To get just the temperature, set Response Path to
current_weather.temperature
. - 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.
- In your workflow, choose your action (e.g., Schedule Webhook).
- 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). - Set Callback - Thing To Modify to
Current User's unique id
. - Set Callback - Field To Update to your user field, e.g.,
email_verified
(must be type text). - Set Callback - Data API URL to your app's Data API URL (e.g.,
https://yourapp.bubbleapps.io/api/1.1/obj/user
). - Set Callback - Bubble API Key to your private Bubble key.
- Set Callback - Response Path to
args.email_verified
. This will extract "yes" from the echo response. - 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 byappId
, 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.