Articles on: React Flow

What React Flow can't do, and workarounds

What React Flow can't do, and workarounds


In this article:


React Flow covers most store automations, but some things work differently from what you might expect, and a few are not possible at all. This article lists those cases, explains why, and shows how to get the result another way. If your case isn't here, contact us at support@devit.software and we'll suggest a setup.


Runs and plan limits


Workflows don't stop when you reach your monthly runs.
Your workflows keep working after the plan limit, and each extra run is charged at your plan's rate, also during the trial.
Workaround: check the run numbers on the Activity page, turn off workflows you no longer need. Combine similar workflows into one: one workflow with five conditions uses one run per order, while five separate workflows use five. If you run large automations often, the Unlimited plan removes overage charges. For very large stores, the Enterprise plan offers custom terms; contact our team.


Fetch steps can use many runs from one event.
Every item a Fetch step returns counts as a separate run. A workflow that fetches 2,000 customers uses 2,000 runs, plus one for the trigger.
Workaround: filter the fetch with a query (for example by tag, date or segment) and set Maximum number of .... The Runs counter in the Fetch settings shows the number before you save.


The Pay as you go plan has a limit of active workflows.
On Pay as you go you can have up to 20 active workflows. When you reach the limit, React Flow asks you to turn off some workflows or upgrade.
Workaround: turn off or archive workflows you don't use, merge similar workflows, or switch to a paid plan, which has unlimited workflows.


Triggers and store data


Workflows don't run for past events.
An Automated workflow starts only for events that happen after you turn it on. Orders placed yesterday won't trigger a workflow you create today.
Workaround: use a One-Shot workflow with Fetch resources (for example Orders with a date filter) to process existing items once. For a regular check of existing data, use a Scheduled time trigger with a Fetch step.


"Updated" triggers skip the first change of existing items.
Order updated, Product updated, Draft order updated and Inventory level updated compare the new value with a stored one. Items that existed before the workflow have no stored value, so their first change only saves it and doesn't start the workflow.
Workaround: run a One-Shot workflow with Fetch resources and the Set observe data action once, to save the current values for all existing items. Each item counts as a run, so filter the fetch if you only need some items.


An "updated" trigger observes only one field.
You choose one field in Fields to observe, for example order tags.
Workaround: create a separate workflow for each field you want to track. Inside one workflow, you can still check any other field in a condition.


There is no trigger or action for my case.
The list of triggers and actions is fixed in the app.
Workaround:

  • The Send Admin API request action allows you to run additional Shopify Admin GraphQL mutations that don't have ready-made actions.
  • Run code runs JavaScript with access to the Shopify Admin API ($graphql) and external services (fetch).
  • Webhook event starts a workflow from any external service that can send an HTTP request.
  • Event from Shopify Flow and Send order data to Shopify Flow connect React Flow with Shopify Flow.
  • Ask us to add the trigger or action you need.


Scheduled triggers don't accept cron expressions.
Scheduled time works with a start date and a repeat interval in minutes, hours, days, weeks or months.
Workaround: click Add schedule to add several schedules to one trigger, for example "every Monday at 9:00" and "every Friday at 17:00", or add a Time condition to skip certain hours or days.


Building workflows


A Fetch step can't be placed inside another loop.
Nested fetches inside For each are not supported.
Workaround: use one Fetch with a precise query instead of two levels, or use Run code with $graphql to load the related data for each item.


React Flow uses LiquidJS, not Shopify's native Liquid implementation.
As a result, some Shopify-specific Liquid tags and filters may not be fully supported or may behave differently. React Flow supports standard Liquid tags and filters (if, for, assign, default, replace, downcase, date, json and others), while Shopify theme-specific filters such as handleize may return nothing or work differently.
Workaround: If a specific Shopify filter isn't supported, try to achieve the same result using more general Liquid filters that are supported by LiquidJS. For example, use {{ title | downcase | replace: " ", "-" }} instead of {{ title | handleize }}. Check the result with the Log output action.


Run code has technical limits.
The code runs in a sandbox: JavaScript (ECMAScript 2020) without Node.js APIs or module imports, up to 50,000 characters, 70 seconds, 10 MB of memory, 10 KB of output data and 2 KB of logs. Simulation is not available when a workflow uses Run code.
Workaround: move heavy processing to your own server and call it with fetch from Run code or with Send HTTP request. Test workflows with Run code using Execute on a test item.


Turning off a workflow cancels its waiting steps.
When you turn off or archive a workflow, delayed actions and fetches that haven't run yet are skipped.
Workaround: if runs are waiting in a Delay, keep the workflow on until they finish. To change a live workflow without losing them, duplicate it and edit the copy.


Playbook workflows can't be fully edited.
Workflows created by a Playbook keep their name locked, and their steps can't be deleted.
Workaround: adjust the Playbook from its page. For full freedom, build your own workflow from a template in Templates, or Copy the steps you need and Paste them into a regular workflow.


Emails and connectors


The built-in email has a daily limit and no delivery guarantee.
Emails sent through the default React Flow sender are limited to 500 per day, and some email providers may block the shared sender address.
Workaround: connect your own email in Connectors (SMTP or Microsoft). Emails sent through your own connector have no React Flow limit and come from your business address.


There is no connector for my service.
React Flow has connectors for SMTP, Twilio, Asana, Google (Sheets and Drive), Slack, Mailchimp, Xero, Microsoft, Judge.me and OpenAI. Other services don't have a pre-built connector in React Flow.
Workaround: most services have an API. Use Send HTTP request to send data to them, and the Webhook event trigger to receive data from them. If the service only works with Shopify Flow, use Send order data to Shopify Flow.


Twilio sends only from your Twilio numbers.
SMS and WhatsApp messages are sent from the numbers registered in your Twilio account.
Workaround: register the sender number or WhatsApp sender in Twilio first.


Files and AI


React Flow sees only its own files in Google Drive.
For your privacy, the Google connection gives React Flow access only to the files it creates or that you open with it, not to your whole Drive.
Workaround: let React Flow save the file (with Create PDF document, Generate Image or Transfer file from URL), then attach it from the Workflow or Google Drive tab in Send email.


Transfer file from URL accepts only public, small files.
The link must be a public HTTPS address, the file can be up to 5 MB, and only common types are allowed (PDF, images, CSV, TXT, ZIP and Office documents).
Workaround: host the file on a public HTTPS link, compress large files, or save large documents to Google Drive and share a link in the email instead of attaching the file.


PDF documents have a size limit.
The content of Create PDF document can be up to 20 MB with Shopify storage and 25 MB with Google Drive.
Workaround: use compressed images and avoid embedding large files in the document.


AI images and texts need your own OpenAI account.
Generate Image and Generate Text work with your OpenAI API key, and OpenAI bills the usage to your OpenAI account.
Workaround: create an API key in OpenAI, set spending limits there, and add conditions before the action so it runs only when needed.


Testing and reports


Webhook workflows need a real request to test.
To test a Webhook event workflow, the workflow must be turned on, and you need to send a request to the test URL.
Workaround: send the test request with a tool such as Postman or curl, or ask our support to help.


Activity charts cover up to 90 days.
The graphs on the Activity page can show a range of up to 90 days.
Workaround: to keep long-term records, add a Create spreadsheet row action to your workflow and log each run to Google Sheets, or use a Counter.


A/B tests don't show a winner automatically.
The A/B step splits runs between paths, but it doesn't compare their results.
Workaround: add a different tag in each path (for example variant-a and variant-b) and compare orders or customers with these tags in Shopify Analytics.



✔️ Next step


Check our articles to learn more about the app's functionality:


Updated on: 14/10/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!