Introduce Trigger Functionality
A trigger is a type of Start node that allows your workflow to run automatically—either on a schedule or in response to events from external systems (such as GitHub, Gmail, or your internal services)—without requiring a user action or API call.
Triggers are ideal for automating repetitive processes and integrating workflows with third-party applications to enable seamless data synchronization and processing.
⚡️ Trigger = When something happens → then do something
Triggers form the foundation of event-driven Workflow capabilities and currently support the following types:
- Schedule — time-based triggers
- SaaS Integration Event — events from external SaaS platforms (e.g., Slack, GitHub, Linear) integrated through Plugins
- Webhook — HTTP callbacks from external systems
These trigger features are only available for Workflows. Chatflow, Agent, and BasicChat currently do not support triggers.
🧩 Marketplace
We provide several popular trigger plugins, which you can explore in our Marketplace.
😎 Enjoy the Experience
Sit back, relax, and let your workflows run themselves.
A big thanks to our contributor !
Thanks so much for the contributors in #23981 who helps us developed this feature! It's a big deal made by you guys! @ACAne0320 @hjlarry @lyzno1 @CathyL0 @zhangxuhe1
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.10.0
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- feat: add flatten_output configuration to iteration node by @Nov1c444 in #27502
- feat: implement MCP specification 2025-06-18 by @Nov1c444 in #25766
- feat: introduce RAG tool recommendations and refactor related components for improved plugin management by @WTW0313 in #27259
- feat: enhance tencent trace integration with LLM core metrics by @minimAluminiumalism in #27126
- feat: use id for webapp by @GareArc in #27576
- feat: enhance pipeline template list with marketplace feature toggle by @WTW0313 in #27604
- feat(api): Introduce workflow pause state management by @QuantumGhost in #27298
- feat: localization for hi-IN by @SmartDever02 in #27783
- feat: Add Audio Content Support for MCP Tools by @IthacaDream in #27979
- feat(api): Introduce Broadcast Channel by @QuantumGhost in #27835
- feat(api): Introduce WorkflowResumptionContext for pause state management by @QuantumGhost in #28122
- feat: introduce trigger functionality by @Yeuoly in #27644
- feat: add segments max number limit for SegmentApi.post by @ruanimal in #27745
- feat: enhance annotation API to support optional message_id and content fields by @liugddx in #27460
- feat: add validation to prevent saving empty opening statement in conversation opener modal by @Nov1c444 in #27843
- feat: change feedback to forum by @crazywoola in #27862
- feat: add draft trigger detection to app model and UI by @zhsama in #28163
- feat: enhance start node metadata to be undeletable in chat mode by @zhsama in #28173
- fix issues 27388, add missing env variable: ENFORCE_LANGGENIUS_PLUGIN… by @MaoJianwei in #27545
- fix: resolve 500 error when updating document chunk settings (#27551) by @quicksandznzn in #27574
- fix: iteration node cannot be viewed(#27759) by @redSun64 in #27786
- fix agent putout the output of workflow-tool twice (#26835) by @Cursx in #27706
- fix:knowledge base reference information is overwritten when using mu… by @zhengchangchun in #27799
- fix: installation_id is missing when in tools page by @crazywoola in #27849
- fix: avoid passing empty uniqueIdentifier to InstallFromMarketplace by @johnny0120 in #27802
- fix: python package vulnerability by @kenwoodjw in #27645
- fix(api): return timestamp as integer in document api by @invzhi in #27761
- fix: File model add known extra fields, fix issue about the tool of… by @CrabSAMA in #27607
- FIX Issue #27697: Add env variable in docker-compose(template) and make it take effect. by @Dave0126 in #27704
- fix: datasets weight settings embedding model does not change by @lcedaw in #27694
- fix: bump pyobvector to 0.2.17 by @kenwoodjw in #27791
- fix: elasticsearch_vector version by @huangzhuo1949 in #28028
- fix workflow default updated_at by @IthacaDream in #28047
- fix(api): Trace Hierarchy, Span Status, and Broken Workflow for Arize & Phoenix Integration by @ialisaleh in #27937
- fix Version 2.0.0-beta.2: Chat annotations Api Error #25506 by @Cursx in #27206
- fix: prevent fetch version info in enterprise edition by @douxc in #27923
- fix(api): fix VariablePool.get adding unexpected keys to variable_dictionary by @QuantumGhost in #26767
- fix: bump brotli to 1.2.0 resloved CVE-2025-6176 by @kenwoodjw in #27950
- refactor: update installed app component to handle missing params and improve type safety by @ZeroZ-lab in #27331
- refactor:Decouple Domain Models from Direct Database Access by @hieheihei in #27316
- refactor: update install status handling in plugin installation process by @WTW0313 in #27594
- refactor(api): add SQLAlchemy 2.x Mapped type hints to Message model by @laipz8200 in #27709
- refactor: replace hardcoded user plan strings with CloudPlan enum by @laipz8200 in #27675
- refactor: Use Repository Pattern for Model Layer by @hieheihei in #27663
- refactor(api): set default value for EasyUIBasedAppGenerateEntity.query by @laipz8200 in #27712
- refactor(web): reuse the same edit-custom-collection-modal component, and fix the pop up error by @yangzheli in #28003
- refactor(web): remove redundant add-tool-modal components and related code by @yangzheli in #27996
- chore: translate i18n files and update type definitions by @github-actions[bot] in #27423
- chore(deps): bump testcontainers from 4.10.0 to 4.13.2 in /api by @dependabot[bot] in #27469
- chore(deps-dev): bump @happy-dom/jest-environment from 20.0.7 to 20.0.8 in /web by @dependabot[bot] in #27465
- chore: add more stories by @hjlarry in #27403
- chore: improve mcp server url validation by @Nov1c444 in #27558
- Sync celery queue name list by @Eric-Guo in #27554
- chore: add web type check step to GitHub Actions workflow by @ZeroZ-lab in #27498
- chore: warning messages too long in model config caused ui issue by @iamjoel in #27542
- chore: add type-check to pre-commit by @lyzno1 in #28005
- chore(deps): bump tablestore from 6.2.0 to 6.3.7 in /api by @dependabot[bot] in #27736
- chore(deps): bump dayjs from 1.11.18 to 1.11.19 in /web by @dependabot[bot] in #27735
- chore(deps): bump scipy-stubs from 1.16.2.3 to 1.16.3.0 in /api by @dependabot[bot] in #28025
- chore: disable workflow logs auto-cleanup by default by @laipz8200 in #28136
- chore: not SaaS version can query long log time range by @iamjoel in #28109
- chore: improve the user experience of not login into apps by @iamjoel in #28120
- chore: Remove trailing space from migration filename by @IthacaDream in #28040
- chore: translate i18n files and update type definitions by @github-actions[bot] in #28054
- chore: remove unused enterprise bot from the readme by @crazywoola in #28073
New Contributors
- @gin-melodic made their first contribution in #25672
- @acro-k-tanaka made their first contribution in #27336
- @MaoJianwei made their first contribution in #27545
- @Vivecccccc made their first contribution in #26234
- @katakyo made their first contribution in #27680
- @SmartDever02 made their first contribution in #27665
- @tonghuaroot made their first contribution in #27731
- @SherlockShemol made their first contribution in #27776
- @dingweichen made their first contribution in #27718
- @invzhi made their first contribution in #27761
- @Dave0126 made their first contribution in #27704
- @y49 made their first contribution in #27546
- @redSun64 made their first contribution in #27786
- @Cursx made their first contribution in #27706
- @zhengchangchun made their first contribution in #27799
- @Elliott-byte made their first contribution in #27823
- @codomposer made their first contribution in #27850
- @kk-wangjifeng made their first contribution in #27867
- @OneZero-Y made their first contribution in #28007
- @mnasrautinno made their first contribution in #28091
- @ye4241 made their first contribution in #28151
- @Cerlancism made their first contribution in #28119
- @breath57 made their first contribution in #27934
- @zhsama made their first contribution in #28163
- @lilongfei2000 made their first contribution in #27871
- @hoffermei made their first contribution in #28116
Full Changelog: 1.9.2...1.10.0