diff --git a/sources/platform/integrations/images/workato/connection-selection.png b/sources/platform/integrations/images/workato/connection-selection.png deleted file mode 100644 index 80f740a6f3..0000000000 Binary files a/sources/platform/integrations/images/workato/connection-selection.png and /dev/null differ diff --git a/sources/platform/integrations/images/workato/create-connection-api-key.png b/sources/platform/integrations/images/workato/create-connection-api-key.png index b757a435c4..bc93b7ca97 100644 Binary files a/sources/platform/integrations/images/workato/create-connection-api-key.png and b/sources/platform/integrations/images/workato/create-connection-api-key.png differ diff --git a/sources/platform/integrations/images/workato/create-connection-api-success.png b/sources/platform/integrations/images/workato/create-connection-api-success.png index db4fe56aac..3c09b15ab5 100644 Binary files a/sources/platform/integrations/images/workato/create-connection-api-success.png and b/sources/platform/integrations/images/workato/create-connection-api-success.png differ diff --git a/sources/platform/integrations/images/workato/create-connection-oauth-success.png b/sources/platform/integrations/images/workato/create-connection-oauth-success.png deleted file mode 100644 index 8548e832c0..0000000000 Binary files a/sources/platform/integrations/images/workato/create-connection-oauth-success.png and /dev/null differ diff --git a/sources/platform/integrations/images/workato/create-connection-oauth.png b/sources/platform/integrations/images/workato/create-connection-oauth.png deleted file mode 100644 index cf6c9e2577..0000000000 Binary files a/sources/platform/integrations/images/workato/create-connection-oauth.png and /dev/null differ diff --git a/sources/platform/integrations/images/workato/release-connector.png b/sources/platform/integrations/images/workato/release-connector.png new file mode 100644 index 0000000000..1c54a9e455 Binary files /dev/null and b/sources/platform/integrations/images/workato/release-connector.png differ diff --git a/sources/platform/integrations/workflows-and-notifications/workato.md b/sources/platform/integrations/workflows-and-notifications/workato.md index 86595f873d..857d00c8dd 100644 --- a/sources/platform/integrations/workflows-and-notifications/workato.md +++ b/sources/platform/integrations/workflows-and-notifications/workato.md @@ -1,40 +1,47 @@ --- title: Workato integration -description: Connect Apify Actors to Workato recipes to run web scraping and automation jobs, monitor run events, and process results in your automated workflows. +description: Learn how to connect Apify Actors to Workato recipes to run web scraping jobs, monitor run events, and process results in automated workflows. sidebar_label: Workato -sidebar_position: 7 +sidebar_position: 7.0 slug: /integrations/workato --- -import ThirdPartyDisclaimer from '@site/sources/_partials/_third-party-integration.mdx'; +**Connect Apify Actors to Workato recipes to run web scraping and automation jobs, monitor run events, and process results.** -[Workato](https://www.workato.com/) is an automation platform where you can build recipes, automated workflows that connect your apps with no-code connectors. With the [Apify Connector](https://apify.com), you can run _Apify Actors_ inside your recipes to launch web scraping and automation jobs, watch for run events, and further work with the results. +--- + +[Workato](https://www.workato.com/) is an automation platform where you can build recipes, automated workflows that connect your apps with no-code connectors. With the Apify connector, you can run Apify Actors inside your recipes to launch web scraping and automation jobs, watch for run events, and further work with the results. ## Get started -To use the Apify integration with Workato, you will need: +To use the Apify integration with Workato, you need: - An [Apify account](https://console.apify.com/) - A [Workato account](https://www.workato.com/) -## Install the Apify Connector +## Install the Apify connector -The Apify Workato Connector is available in the Workato Community library. Here's how to install it: +The Apify Workato connector is available in the Workato Community library. Here's how to install it: 1. In your Workato workspace, navigate to **Community library**. 1. Click on **Custom connectors**. 1. Search for **Apify**. 1. Click on the connector and then click **Install**. -After installation, the Apify connector appears in **Connector SDK** under the **Tools** tab. After you release the connector, you can use it in your projects. +After installation, the Apify connector appears in **Connector SDK** under the **Tools** tab. To make it available in your projects, you need to release it: + +1. Go to **Tools** > **Connector SDK** and select the Apify connector. +1. Click **Release latest version** in the top-right corner. + +![Screenshot showing the Release latest version button in the Workato Connector SDK](../images/workato/release-connector.png) ## Connect your Apify account Before using the Apify connector in recipes, create a connection inside a Workato project. -### Create a project (if you don’t have one) +### Create a project (if you don't have one) 1. In Workato, go to **Workspace > Projects**. 1. Click **Create project**. @@ -48,89 +55,19 @@ Before using the Apify connector in recipes, create a connection inside a Workat 1. Open your project. 1. Click the **Create** button. 1. Select **Connection**. + ![Screenshot showing how to create connection](../images/workato/create-connection.png) 1. Search for **Apify** and choose the Apify connector. + ![Screenshot showing how to search for the Apify connector in Workato](../images/workato/create-connection-find-connector.png) +1. In the connection dialog, enter your **API Token**. In [Apify Console](https://console.apify.com), go to [Settings > Integrations](https://console.apify.com/account#/integrations) and copy your API token. + ![Screenshot of the Workato API Key authentication form](../images/workato/create-connection-api-key.png) +1. Click **Connect**. Workato tests the connection by making an authenticated call to verify your credentials. + ![Screenshot showing successful API Key authentication in Workato](../images/workato/create-connection-api-success.png) -![Screenshot showing how to search for the Apify connector in Workato](../images/workato/create-connection-find-connector.png) - -![Screenshot of the connection selection interface in Workato](../images/workato/connection-selection.png) - -### Choose authentication type - -You can authenticate the connection using either: - -- **Apify API token** -- **Sign in with Apify** (OAuth 2.0) - -#### Authenticate with API token - -1. In the Apify connection dialog, select **Apify API token** as the authentication type. -1. Enter your **API Token**. In Apify Console, go to [**Settings > Integrations**](https://console.apify.com/account#/integrations) and copy your API token. -1. Click **Connect**. Workato will test the connection by making an authenticated call to verify your credentials. - -![Screenshot of the Workato API Key authentication form](../images/workato/create-connection-api-key.png) -![Screenshot showing successful API Key authentication in Workato](../images/workato/create-connection-api-success.png) - -#### Authenticate with OAuth 2.0 - -1. In the Apify connection dialog, select **Sign in with Apify** as the authentication type. -1. Click **Connect** to start the OAuth flow. -1. Sign in to Apify and authorize Workato to access your account. -1. After authorizing, you'll be redirected back to Workato and the connection will be established. - -![Screenshot of the Workato OAuth 2.0 authentication interface](../images/workato/create-connection-oauth.png) -![Screenshot showing successful OAuth authentication in Workato](../images/workato/create-connection-oauth-success.png) - -Once the connection is created and authenticated, you can use it in any recipe. - -## Create your first recipe - -After connecting your Apify account, you can start creating recipes that use Apify triggers and actions. A recipe begins with a trigger (an event that starts the workflow) and includes one or more actions (operations to perform). - -### Selection and input methods - -_The Apify connector provides dynamic dropdown lists (pick lists) and flexible input methods to make configuration easier._ - -### Pick lists and selection methods - -- **Selection method (pick list vs. manual ID):** Choose from fetched lists or switch to manual and paste an ID. If an item doesn't appear, make sure it exists in your account and has been used at least once, or paste its ID manually. -- Available pick lists: - - **Actors**: Lists your recently used Actors or Apify Store Actors, displaying the title and username/name - - **Tasks**: Lists your saved tasks, displaying the task title and Actor name - - **Datasets**: Lists available datasets, sorted by most recent first - - **Key-value stores**: Lists available stores, sorted by most recent first - - **Store Keys**: Dynamically shows keys available in the selected store - -### Input types - -- **Input type (schema‑based vs. JSON):** For Actor inputs, when you choose an Actor from the pick list, the connector fetches the input schema and renders dynamic fields based on the Actor's configuration. If schema fetching fails or you switch to manual input, a JSON input field appears where you can paste valid JSON instead. For Task inputs, you can optionally provide an override input as JSON to modify the task's pre-configured settings. - -:::tip Copy the Actor/Task input JSON - -Open the Actor or Task Input page in Apify Console, switch format to JSON, and copy the canonical structure: -`https://console.apify.com/actors//input` -`https://console.apify.com/actors/tasks//input` - -::: - -![Screenshot showing different input modes available in the Workato connector](../images/workato/input-modes.png) - -#### Where to find your IDs +Once you create and authenticate the connection, you can use it in any recipe. -When using manual input instead of pick lists, you'll need to provide the correct resource IDs. Here's how to find them in Apify Console: +## Build recipes -- **Actor ID**: [Actor detail page](https://console.apify.com/actors) > API panel or URL. - - Example URL: `https://console.apify.com/actors/` - - Actor name format: owner~name (for example, `apify~website-scraper`) -- **Task ID**: [Task detail page](https://console.apify.com/actors/tasks) > API panel or URL. - - Example URL: `https://console.apify.com/actors/tasks/` -- **Dataset ID**: [Storage > Datasets](https://console.apify.com/storage/datasets) > Dataset detail > API panel or URL. - - Example URL: `https://console.apify.com/storage/datasets/` - - Also available in the table on the `Storage > Datasets` page -- **Key-value store ID**: [Storage > Key-value stores](https://console.apify.com/storage/Key-value-stores) > Store detail > API panel or URL. - - Example URL: `https://console.apify.com/storage/Key-value-stores/` - - Also available in the table on the `Storage > Key-value stores` page -- **Webhook ID**: [Actors](https://console.apify.com/actors) > Actor > Integrations. - - Example URL: `https://console.apify.com/actors//integrations/` +A recipe begins with a trigger (an event that starts the workflow) and includes one or more actions (operations to perform). The sections below describe the triggers and actions available in the Apify connector. ## Triggers @@ -142,45 +79,47 @@ Each connector trigger and action field in Workato includes inline help text des The Apify connector provides the following triggers that monitor your Apify account for task completions: -### Actor Run Finished +### Actor run finished -_Triggers when an Apify Actor run finishes (succeeds, fails, times out, or gets aborted)._ +Triggers when an Apify Actor run finishes (succeeds, fails, times out, or gets aborted). -This trigger monitors a specific Apify Actor and starts the recipe when any run of that Actor reaches a terminal status. You can: +This trigger monitors a specific Apify Actor and starts the recipe when any run of that Actor finishes, regardless of the outcome. You can: - Select the Actor from recently used Actors or Apify Store Actors - Choose to trigger on specific statuses (`ACTOR.RUN.SUCCEEDED`, `ACTOR.RUN.FAILED`, `ACTOR.RUN.TIMED_OUT`, `ACTOR.RUN.ABORTED`) - Access run details, status, and metadata in subsequent recipe steps -![Screenshot of the Actor Run Finished trigger configuration in Workato](../images/workato/trigger-actor.png) +![Screenshot of the Actor run finished trigger configuration in Workato](../images/workato/trigger-actor.png) -### Task Run Finished +### Task run finished -_Triggers when an Apify Task run finishes (succeeds, fails, times out, or gets aborted)._ +Triggers when an Apify task run finishes (succeeds, fails, times out, or gets aborted). -This trigger creates a webhook in your Apify account that will notify Workato when the selected Task run finishes with the specified statuses. This trigger watches a specific saved task (an Actor with preset inputs) and fires when that task's run completes with any terminal status. You can choose specific statuses to monitor (`ACTOR.RUN.SUCCEEDED`, `ACTOR.RUN.FAILED`, `ACTOR.RUN.TIMED_OUT`, `ACTOR.RUN.ABORTED`). This is particularly useful for: +This trigger creates a webhook in your Apify account that notifies Workato when the selected task run finishes. It watches a specific saved task (an Actor with preset inputs) and you can choose which statuses to monitor (`ACTOR.RUN.SUCCEEDED`, `ACTOR.RUN.FAILED`, `ACTOR.RUN.TIMED_OUT`, `ACTOR.RUN.ABORTED`). This is particularly useful for: - Monitoring scheduled or recurring tasks - Building workflows dependent on specific data collection tasks - Processing results from tasks with predefined configurations -![Screenshot of the Task Run Finished trigger configuration in Workato](../images/workato/trigger-task.png) +![Screenshot of the task run finished trigger configuration in Workato](../images/workato/trigger-task.png) ## Actions -_The Apify connector offers comprehensive actions to interact with the Apify platform._ +The Apify connector offers actions to interact with the Apify platform. ### Run Actor -_Run an Apify Actor with customizable execution parameters._ +Run an Apify Actor with customizable execution parameters. -This action runs an Apify Actor with your specified input and execution parameters. You can choose to wait for completion or start the run asynchronously. Actors are reusable serverless programs that can scrape websites, process data, and automate workflows. You can: +This action runs an Apify Actor with your specified input and execution parameters, either synchronously (wait for completion) or asynchronously. You can: - Select from your recently used Actors or Apify Store Actors - Provide input using dynamic schema-based fields or raw JSON -- Configure run options like memory allocation, timeout, and build version +- Configure run options: memory (128 MB to 32 GB), timeout, and build version (defaults to `latest`) - Choose between synchronous (wait for completion) or asynchronous execution +URL input fields are validated before the run starts. The dataset item limit rejects zero or negative values; leave it empty for no limit. + :::tip Input field descriptions Each input field includes helpful descriptions that guide you toward the correct format and expected values. @@ -189,23 +128,23 @@ Default values for input fields will be displayed as placeholders, giving you a ::: -![Screenshot of the Run Actor action configuration interface in Workato](../images/workato/run-actor.png) +![Screenshot of the run Actor action configuration in Workato](../images/workato/run-actor.png) -### Run Task +### Run task -_Run an Apify Actor task with optional input overrides._ +Run an Apify Actor task with optional input overrides. -This action runs an Apify Task with optional input overrides and execution parameters. Tasks are pre-configured Actor runs with saved input, making them ideal for repeated executions. You can optionally override the task's configured input. You can: +This action runs an Apify task with optional input overrides and execution parameters. Tasks are pre-configured Actor runs with saved input, making them ideal for repeated executions. You can: -- Select from your saved tasks or input specific Task ID +- Select from your saved tasks or input a specific task ID - Override the task's pre-configured input with new JSON if needed -- Configure task options like memory, build version, or timeout +- Configure task options: memory (128 MB to 32 GB), timeout, and build version (defaults to `latest`) -![Screenshot of the Run Task action configuration interface in Workato](../images/workato/run-task.png) +![Screenshot of the run task action configuration in Workato](../images/workato/run-task.png) ### Get dataset items -_Retrieves items from a dataset with dynamic field mapping._ +Retrieves items from a dataset with dynamic field mapping. Select a dataset to dynamically generate output fields and retrieve its items. This action automatically analyzes the dataset structure and creates appropriate output fields for your recipe. Key features: @@ -217,9 +156,9 @@ Select a dataset to dynamically generate output fields and retrieve its items. T The connector samples your dataset to create appropriate output fields: -- _Works best with consistent data_: When all items have the same field names and data types -- _May have limitations with mixed data_: If items have different structures or field types -- _Samples up to 25 items_: Fields that only appear after the first 25 items won't be detected +- Works best with consistent data - when all items have the same field names and data types +- May have limitations with mixed data - if items have different structures or field types +- Samples up to 25 items - fields that only appear after the first 25 items won't be detected :::tip Best practice @@ -227,77 +166,111 @@ For optimal results, use datasets where all items follow a consistent structure. ::: -![Screenshot of the Get Dataset Items action configuration interface in Workato](../images/workato/get-dataset.png) +![Screenshot of the get dataset items action configuration in Workato](../images/workato/get-dataset.png) ### Get key-value store record -_Retrieves a single record from a Key-value store._ +Retrieves a single record from a key-value store. -Select a Key-value store and a key to retrieve the corresponding record as a text string or binary file. Key-value stores often contain metadata, logs, or files from Actor runs. This action: +Select a key-value store and a key to retrieve the corresponding record as a text string or binary file. Key-value stores often contain metadata, logs, or files from Actor runs. This action: - Fetches named entries by key from specified stores with dynamic key selection - Accesses configuration data, screenshots, or custom outputs - Supports both text and binary content types - Enables flexible data retrieval for various use cases -![Screenshot of the Get Key-value store record action configuration interface in Workato](../images/workato/get-key-val.png) +![Screenshot of the get key-value store record action configuration in Workato](../images/workato/get-key-val.png) -### Scrape Single URL +### Scrape single URL -_Scrapes a single URL using a selected Apify crawler._ +Scrapes a single URL using a selected Apify crawler. Provide a single URL and a desired crawler type to get structured scraped data from that page as a JSON object. This action provides immediate, on-demand scraping capabilities: - Scrapes content from a single specified URL -- Offers multiple crawler types (Adaptive, Firefox, Cheerio, JSDOM) +- Supports three crawler types: **Adaptive Crawler** (Website Content Crawler), **Firefox Headless Browser**, and **Cheerio** (fast, raw HTTP) - Returns extracted content in structured format (text, markdown, HTML, metadata) -- Perfect for real-time data extraction triggered by recipes -![Screenshot of the Scrape Single URL action configuration interface in Workato](../images/workato/scrape-url.png) +![Screenshot of the scrape single URL action configuration in Workato](../images/workato/scrape-url.png) + +## Configure connector inputs + +When building recipes, the Apify connector provides several ways to select resources and configure inputs. + +### Pick lists + +The connector includes dynamic dropdown lists for selecting Apify resources. You can choose items from these lists or switch to manual input and paste an ID directly. If an item doesn't appear, make sure it exists in your account and has been run at least once, or paste its ID manually. + +Available pick lists: + +- **Actors** - Recently used Actors or Apify Store Actors, displaying the title and `owner/name` +- **Tasks** - Your saved tasks, displaying the task title and Actor name +- **Datasets** - Available datasets, sorted by most recent first +- **Key-value stores** - Available stores, sorted by most recent first +- **Store keys** - Keys available in the selected store + +### Input types + +When you choose an Actor from the pick list, the connector fetches its input schema and renders matching fields. If schema fetching fails or you switch to manual input, a JSON field appears where you can paste valid JSON. For task inputs, you can optionally provide override input as JSON to modify the task's preconfigured settings. + +:::tip Copy the Actor or task input JSON -## Long‑running scrapes and async pattern in Workato +If you use manual input instead of the dynamic fields, copy the JSON structure from Apify Console. Open the Actor or task input page, switch the format to JSON, and copy it. Replace the placeholder with your Actor or task ID: -Long-running scrapes can exceed typical step execution expectations. Use this asynchronous pattern to keep recipes reliable and scalable. +- `https://console.apify.com/actors//input` +- `https://console.apify.com/actors/tasks//input` + +When you use the pick list, the connector fetches input fields automatically - no manual JSON needed. + +::: + +![Screenshot showing different input modes available in the Workato connector](../images/workato/input-modes.png) + +### Where to find resource identifiers + +When using manual input instead of pick lists, you need to provide a resource identifier. Actors and tasks accept either an ID or a slug (e.g. `owner/actor-name`), so you can type the name directly without looking up the ID. For other resources, find the ID in Apify Console: + +- **Dataset**: [**Storage** > **Datasets**](https://console.apify.com/storage/datasets) > dataset detail > API panel or URL. + - Also visible in the table on the **Storage** > **Datasets** page +- **Key-value store**: [**Storage** > **Key-value stores**](https://console.apify.com/storage/key-value-stores) > store detail > API panel or URL. + - Also visible in the table on the **Storage** > **Key-value stores** page +- **Webhook**: [Actors](https://console.apify.com/actors) > Actor > **Integrations** tab. + +## Handle long-running scrapes + +If an Actor run takes more than a few minutes (for example, scraping thousands of pages), a synchronous recipe step may time out while waiting for results. Instead of waiting in a single step, split the work across two recipes using an asynchronous pattern: 1. Start the run without waiting - In a recipe, add the **Run Actor** action and configure inputs as needed. - Run asynchronously (do not block downstream steps on completion). - - ![Screenshot showing the Run Actor action configuration with async option in Workato](../images/workato/run-actor.png) + - ![Screenshot showing the run Actor action configuration with async option in Workato](../images/workato/run-actor.png) 1. Continue when the run finishes - - Build a separate recipe with the **Actor Run Finished** trigger. - - Filter for the specific Actor or Task you started in Step 1. - - ![Screenshot showing how to filter for specific Actor in the Run Finished trigger](../images/workato/trigger-actor.png) + - Build a separate recipe with the **Actor run finished** trigger. + - Filter for the specific Actor or task you started in step 1. + - ![Screenshot showing how to filter for a specific Actor in the run finished trigger](../images/workato/trigger-actor.png) 1. Fetch results and process - In the triggered recipe, add **Get Dataset Items** (use the dataset ID from the trigger payload) and continue processing. - - ![Screenshot showing how to use dataset ID from trigger payload in Get Dataset Items action](../images/workato/get-dataset.png) - -## Example use cases - -### Data mapping and workflow design - -Workato's visual interface makes it easy to connect Apify data with other business applications: - -- _Data pills:_ Use output fields from Apify triggers and actions as inputs for subsequent steps -- _Field mapping:_ Visually map scraped data fields to CRM, database, or spreadsheet columns -- _Conditional logic:_ Build workflows that respond differently based on Actor run status or data content -- _Data transformation:_ Apply filters, formatting, and calculations to scraped data before sending to target systems + - ![Screenshot showing how to use dataset ID from trigger payload in get dataset items action](../images/workato/get-dataset.png) -### Best practices +## Tips and best practices -- _Use tasks for recurring workflows:_ Create and use Apify tasks for consistent, repeatable scraping jobs -- _Handle async operations:_ For long-running Actors, use asynchronous execution and separate triggers to monitor completion -- _Error handling:_ Implement proper error handling for failed Actor runs using Workato's conditional logic -- _Rate limiting:_ Be mindful of API rate limits when designing high-frequency workflows -- _Data validation:_ Validate scraped data before sending to critical business systems +- Use output fields from Apify triggers and actions (called *data pills* in Workato) as inputs for subsequent steps. +- Map scraped data fields to CRM, database, or spreadsheet columns using Workato's visual interface. +- Build workflows that respond differently based on Actor run status or data content. +- Create Apify tasks for consistent, repeatable scraping jobs. +- For long-running Actors, use asynchronous execution and a separate trigger to monitor completion. +- Implement error handling for failed Actor runs using Workato's conditional logic. +- Be mindful of API rate limits when designing high-frequency workflows. +- Validate scraped data before sending to target systems. ## Troubleshooting -- _Connection issues:_ Verify your API token has the necessary permissions and hasn't expired -- _Actor selection:_ If an Actor doesn't appear in dropdowns, ensure it has been run at least once -- _Timeout errors:_ For long-running Actors, use asynchronous execution rather than waiting for completion -- _Data format:_ Ensure JSON inputs are properly formatted and match expected Actor input schema -- _OAuth issues:_ If using OAuth, make sure the redirect URI matches your Workato region (US or EU) -- _Resource not found errors:_ Check that IDs are correct and case-sensitive -- _Dataset field mapping issues:_ If you experience incorrect data types or missing fields in the Get Dataset Items action data pill, this may be caused by non-homogeneous data in your dataset. The connector samples only the first 25 items to determine field types, so inconsistent data structures can lead to mapping problems. Try to ensure your dataset has consistent field names and data types across all items. +- If the connection fails, verify your API token has the necessary permissions and hasn't expired. +- If an Actor doesn't appear in dropdowns, make sure it has been run at least once in your account. +- If a recipe times out waiting for results, use asynchronous execution and a separate trigger instead of waiting for completion. +- If JSON input is rejected, check that it's properly formatted and matches the expected Actor input schema. +- If URL or item limit validation fails, ensure URLs include a protocol (`https://`) and item limits are positive integers or empty. +- If a resource isn't found, check that IDs are correct and case-sensitive. +- If dataset items have missing or wrong fields, the connector may have sampled inconsistent data. It only checks the first 25 items to detect fields and types. Make sure your dataset has consistent field names and data types across all items. -If you have any questions or need help, feel free to reach out on the [Apify Discord channel](https://discord.com/invite/jyEM2PRvMU). +For questions or help, join the [Apify developer community on Discord](https://discord.com/invite/jyEM2PRvMU).