Skip to content

Commit 8f70a06

Browse files
committed
fix: fixed formatting and added space after title
1 parent c9f1f36 commit 8f70a06

File tree

1 file changed

+41
-41
lines changed
  • sources/platform/integrations/workflows-and-notifications

1 file changed

+41
-41
lines changed

sources/platform/integrations/workflows-and-notifications/bubble.md

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ For security, avoid hardcoding the token in action settings. Store it on the `Us
5151

5252
1. In Bubble, go to **Data → Data types**, open `User`.
5353
1. Add a new field, for example `apify_api_token` (type: text).
54-
- ![Bubble data type](../images/bubble/data_type_api_key.png)
54+
- ![Bubble data type](../images/bubble/data_type_api_key.png)
5555
1. Go to **Data → Privacy** and check if only the **Current User** is allowed to view their own `apify_api_token`.
56-
- ![Bubble data type](../images/bubble/data_privacy.png)
56+
- ![Bubble data type](../images/bubble/data_privacy.png)
5757

5858
### Point Apify actions to the saved token
5959

@@ -96,7 +96,7 @@ Dynamic values are available across Apify plugin fields. Use Bubble's **Insert d
9696
- **Page/UI elements**: inputs, dropdowns, multi-selects, radio buttons, checkboxes
9797
- **Database Things and fields**
9898
- **Current User**
99-
- **Previous workflow steps** (e.g., Step 1's Run Actor result's `defaultDatasetId` or `runId`)
99+
- **Previous workflow steps** (e.g., Step 2's Run Actor result's `defaultDatasetId` or `runId`)
100100
- **Get Data from an External API**: data calls
101101

102102
#### Examples
@@ -122,20 +122,20 @@ When inserting dynamic data, Bubble replaces the selected text. Place your curso
122122
Create workflows that run Apify plugin actions in response to events in your Bubble app, such as button clicks or form submissions.
123123

124124
1. Open the **Workflow** tab and create a new workflow (for example, **When Run button is clicked**).
125-
- You can also click `Add workflow` button:
126-
- ![Adding workflow to button](../images/bubble/button_adding_workflow.png)
127-
- Or you can create it manually: `Workflows``+ New``An element is clicked`
128-
- ![Create workflow](../images/bubble/create_workflow.png)
129-
- Then select the correct UI button.
130-
- ![Adding workflow to button](../images/bubble/button_creating_workflow.png)
125+
- You can also click `Add workflow` button:
126+
- ![Adding workflow to button](../images/bubble/button_adding_workflow.png)
127+
- Or you can create it manually: `Workflows``+ New``An element is clicked`
128+
- ![Create workflow](../images/bubble/create_workflow.png)
129+
- Then select the correct UI button.
130+
- ![Adding workflow to button](../images/bubble/button_creating_workflow.png)
131131
1. Click `Add an action``Plugins` → choose one of the Apify actions:
132-
- For example `Run Actor` (run a specific Actor by ID)
133-
- ![Add action to workflow](../images/bubble/add_action_to_workflow.png)
132+
- For example `Run Actor` (run a specific Actor by ID)
133+
- ![Add action to workflow](../images/bubble/add_action_to_workflow.png)
134134
1. Configure the action:
135-
- **API token**: set to `Current User's apify_api_token` (check out the Step 2.3)
136-
- **Actor or Task**: paste an Actor ID
137-
- **Input overrides**: provide JSON and use dynamic expressions from page elements or things
138-
- **Timeout**: set in seconds (0 means no limit). Due to Bubble workflow time limits, set this explicitly. If you do not want to restrict the call duration, set it to 0.
135+
- **API token**: set to `Current User's apify_api_token` ([Point Apify actions to the saved token](#point-apify-actions-to-the-saved-token))
136+
- **Actor or Task**: paste an Actor ID
137+
- **Input overrides**: provide JSON and use dynamic expressions from page elements or things
138+
- **Timeout**: set in seconds (0 means no limit). Due to Bubble workflow time limits, set this explicitly. If you do not want to restrict the call duration, set it to 0.
139139

140140
### Where to find your IDs
141141

@@ -176,11 +176,11 @@ There are two common approaches:
176176
- This example lists the current user's datasets and displays them in a repeating group.
177177
- Add a **Repeating group** to the page.
178178
1. Add data to a variable: create a custom state (for example, on the page) that will hold the list of datasets, and set it to the plugin's **List User Datasets** data call.
179-
- ![Step 1 — Set variable with user's datasets](../images/bubble/user_dataset_repeating_group_set.png)
179+
- ![Step 1 — Set variable with user's datasets](../images/bubble/user_dataset_repeating_group_set.png)
180180
1. Set the type: in the repeating group's settings, set **Type of content** to match the dataset object your variable returns.
181-
- ![Step 2 — Repeating group type of content](../images/bubble/user_dataset_repeating_group.png)
181+
- ![Step 2 — Repeating group type of content](../images/bubble/user_dataset_repeating_group.png)
182182
1. Bind the variable: set the repeating group's **Data source** to the variable from Step 1.
183-
- ![Step 3 — Repeating group data source](../images/bubble/user_dataset_repeating_group_source.png)
183+
- ![Step 3 — Repeating group data source](../images/bubble/user_dataset_repeating_group_source.png)
184184
- Inside the repeating group cell, bind dataset fields (for example, `Current cell's item name`, `id`, `createdAt`).
185185
- ![Step 4 — Repeating group data cell](../images/bubble/user_dataset_repeating_group_cell.png)
186186

@@ -198,32 +198,31 @@ To receive webhooks from Apify, enable Bubble's public API workflows and copy yo
198198

199199
Use this URL as the Apify webhook target. Configure the webhook's authentication as needed (e.g., a shared secret or query string token) and verify it inside your Bubble workflow before processing.
200200

201-
202201
1. Trigger the scrape without waiting
203-
- In a workflow, add **Run Actor** (or **Run Actor Task**) and set **timeout** to 0.
204-
- Actor ID: `aYG0l9s7dbB7j3gbS` (`apify/website-content-crawler`).
205-
- Input: copy the Actor's input from the Actor's Input page, and map `crawlerType` and `url` to values from your UI.
206-
- ![Run scraping actor](../images/bubble/step1_scraping.png)
202+
- In a workflow, add **Run Actor** (or **Run Actor Task**) and set **timeout** to 0.
203+
- Actor ID: `aYG0l9s7dbB7j3gbS` (`apify/website-content-crawler`).
204+
- Input: copy the Actor's input from the Actor's Input page, and map `crawlerType` and `url` to values from your UI.
205+
- ![Run scraping actor](../images/bubble/step1_scraping.png)
207206
1. Notify Bubble when the run finishes
208-
- Create an Apify **Webhook** with event `ACTOR.RUN.SUCCEEDED`.
209-
- Set `actorId` from the Step 1 result.
210-
- Set `databaseId` from the Step 1 result, where actor will store the result.
211-
- Set `idempotencyKey` to random value.
212-
- Set `requestUrl` to your Bubble backend workflow URL, for example: `https://your-app.bubbleapps.io/version-test/api/1.1/wf/webhook`.
213-
- ![Create a webhook](../images/bubble/step2_scraping.png)
207+
- Create an Apify **Webhook** with event `ACTOR.RUN.SUCCEEDED`.
208+
- Set `actorId` from the Step 1 result.
209+
- Set `databaseId` from the Step 1 result, where actor will store the result.
210+
- Set `idempotencyKey` to random value.
211+
- Set `requestUrl` to your Bubble backend workflow URL, for example: `https://your-app.bubbleapps.io/version-test/api/1.1/wf/webhook`.
212+
- ![Create a webhook](../images/bubble/step2_scraping.png)
214213
1. Receive the webhook in Bubble and store the dataset ID
215-
- Create a public data type, for example, `ScrapingResults`.
216-
- Add a text field, for example, `result`, to store the dataset ID from the webhook.
217-
- ![Create a datatype with new field](../images/bubble/step3_scraping.png)
218-
- Create the backend workflow (`webhook`) that Bubble exposes at `/api/1.1/wf/webhook`. The workflow name defines the API route.
219-
- ![Create a backend webhook](../images/bubble/step4_scraping.png)
220-
- In that workflow, for each received webhook call, create a new thing in `ScrapingResults` and set `result` to the dataset ID from the request body. This stores one `datasetId` per call for later processing.
221-
- ![Add new result](../images/bubble/step5_scraping.png)
214+
- Create a public data type, for example, `ScrapingResults`.
215+
- Add a text field, for example, `result`, to store the dataset ID from the webhook.
216+
- ![Create a datatype with new field](../images/bubble/step3_scraping.png)
217+
- Create the backend workflow (`webhook`) that Bubble exposes at `/api/1.1/wf/webhook`. The workflow name defines the API route.
218+
- ![Create a backend webhook](../images/bubble/step4_scraping.png)
219+
- In that workflow, for each received webhook call, create a new thing in `ScrapingResults` and set `result` to the dataset ID from the request body. This stores one `datasetId` per call for later processing.
220+
- ![Add new result](../images/bubble/step5_scraping.png)
222221
1. Pick up the results asynchronously
223-
- In a (periodic) backend workflow, search `ScrapingResults` for pending entries (or for the expected `datasetId`).
224-
- If found, read its `result` (the `datasetId`), fetch items via the appropriate action (for example, **Fetch Data From Dataset JSON As Action**), update the UI or save to your DB, and then delete that `ScrapingResults` entry to avoid reprocessing.
225-
- If not found yet, do nothing and check again later.
226-
- ![Do every time](../images/bubble/step6_scraping.png)
222+
- In a (periodic) backend workflow, search `ScrapingResults` for pending entries (or for the expected `datasetId`).
223+
- If found, read its `result` (the `datasetId`), fetch items via the appropriate action (for example, **Fetch Data From Dataset JSON As Action**), update the UI or save to your DB, and then delete that `ScrapingResults` entry to avoid reprocessing.
224+
- If not found yet, do nothing and check again later.
225+
- ![Do every time](../images/bubble/step6_scraping.png)
227226

228227
This approach avoids Bubble timeouts, keeps the UI responsive, and scales to larger scrapes.
229228

@@ -235,7 +234,7 @@ This approach avoids Bubble timeouts, keeps the UI responsive, and scales to lar
235234

236235
## Available Apify actions and data sources
237236

238-
tip::: Check out the documentation
237+
::: tip Check out the documentation
239238

240239
Each API call links to the Apify documentation. To learn more about any plugin action or data call, go to the **Plugins** page in your app, select the Apify plugin, and use the documentation links in the field descriptions.
241240

@@ -273,6 +272,7 @@ The Apify plugin provides two main types of operations:
273272
- [Delete Webhook](https://docs.apify.com/api/v2/webhook-delete)
274273

275274
## Use the latest version of the plugin
275+
276276
To stay up to date with new features, make sure you're using the latest version of the plugin. You can check this on the **Plugins** page by selecting the Apify plugin and choosing the latest version from the drop-down menu. You'll also see a brief note describing what's changed in that version.
277277

278278
## Troubleshooting

0 commit comments

Comments
 (0)