Workflow changes in November 2026
With the workflow update of November 2026, some workflow nodes behave differently. Here is what changed, who notices it and what to do.
10 min readUpdated
In short
We checked every node in the workflow builder. Along the way we tightened protections, fixed bugs and switched on new nodes for GitHub, Notion and Asana. Most workflows keep running as they are. For a few you need to set one option. The changes are grouped by node:
- Triggers: Webhook, Schedule, Chat and Document processed
- Send email (SMTP)
- Google Calendar, Google Docs and Google Drive
- Microsoft, OneDrive and downloads
- HubSpot
- App action: money movements are blocked
- AI Agent and its tools
- anymize nodes
- Trello, Linear, GitLab and other integrations
- Error messages without provider text
- Other small changes
- New: GitHub, Notion, Asana and mail attachments
- When something stops working
A workflow that is already live is not stopped by new required fields. The check only applies the next time you take it live.
Triggers: Webhook, Schedule, Chat and Document processed
| Change | Who notices | What to do |
|---|---|---|
| Webhook: the trigger now passes only selected headers to the workflow, such as content type, length, request IDs and the event headers of GitHub, GitLab, Bitbucket and Shopify. Long values are cut after 2048 characters. This also applies when you rerun an old run. | Workflows that read another header, for example x-shop-id. The value is now empty. | Add the name in the "Pass on more headers" field under Advanced. This also lets signature and idempotency headers of other services through, such as stripe-signature or idempotency-key. Headers with credentials are never passed on, even if you add them: Authorization, cookies, names containing words such as auth, token, secret, password, session or key (except idempotency headers), and the headers the trigger itself uses to check access and the signature. |
| Webhook from an n8n import: the same list applies. The field "Pass on more headers" works the same way here, also when you rerun an old run. | Imported n8n workflows that read their own headers. | Add the name in the "Pass on more headers" field under Advanced. |
| Schedule: nothing changes when it runs. New schedules use Europe/Berlin as before. A schedule saved without a time zone, for example through the API, runs in UTC as before. The "Timezone" field now explains this. | Schedules saved without a time zone. The "Timezone" field then shows no selection, and the runs are one or two hours off German time. | Pick your time zone in the "Timezone" field, for example Europe/Berlin. If you create a schedule through the API, always include the time zone. |
| Chat: the output history is no longer listed. It was always empty, and old references keep working. chat_id is only filled when an assistant starts the workflow as a tool. | Workflows that rely on history or chat_id. | Do not build on history, and check whether chat_id is empty. |
| Anymize: Document processed: nothing changes here. New triggers still do not start for Klartext recordings: the "Source" field says "Documents & texts". A trigger saved without a source, for example through the API, still starts for every source, Klartext included. | Triggers without a saved source, if you also use separate triggers for Klartext. The workflow may then start twice. | Under Advanced, choose "Documents & texts" in the "Source" field. |
Send email (SMTP)
| Change | Who notices | What to do |
|---|---|---|
| Before every send the node checks the mail server. It must be a public name: no IP address, no localhost, no names ending in .local or .internal, and no name that points into a private network. | Credentials with an IP address or an internal server. | Enter the public name of your mail server, for example mail.lawfirm.com. |
| Only ports 25, 465, 587, 2465, 2525, 2587 and 8025 are allowed. On 465 and 2465 the connection is encrypted from the start, on the others through STARTTLS. The connection needs at least TLS 1.2 and a valid certificate. Error messages now name only the server's reply number, not its text. | Unusual ports and very old mail servers. | Use port 587 (STARTTLS) or 465 (TLS). |
| Content comes in through the inputs text and html. The old input body is no longer listed. An existing connection to body is still read. | Workflows that once wired a connection to body. | Move the connection to text or html the next time you edit. Otherwise it may get lost when you save. |
| When you go live, anymize checks that credentials, recipient and sender are set. | Workflows you take live for the first time or again. | Fill in the three fields or connect recipient and sender to an earlier step. |
Google Calendar, Google Docs and Google Drive
| Change | Who notices | What to do |
|---|---|---|
| These three nodes now go through the same checks as Gmail and Google Sheets: they need your Google BYO profile under Workflows > Keys with the right permission, the area (Calendar, Docs, Drive) must be switched on in the connection, and your team's rules apply on every call. | Accounts that used these nodes without a Google BYO profile or without the right permission. The step then reports that Google is not connected or that access is missing. | Set up the Google BYO profile with Calendar, Docs or Drive and switch the area on in the connection. |
| Write actions follow the autonomy level your team allows. A calendar invitation with attendees counts as sending to others. | Teams whose admin set the highest allowed autonomy below "Auto". | Talk to your team admin if these workflows should write. |
| Google Drive now really uploads a file into the chosen folder, no longer into the root folder. | Workflows with a target folder for uploads. | Check whether a later step still looks for the file in the root folder. |
Microsoft, OneDrive and downloads
| Change | Who notices | What to do |
|---|---|---|
| Downloads from OneDrive and Google Drive are stored once as a file. The content directly in the output (content) is only included up to 1 MB. For larger files the output says content_omitted: true. | Later steps that read {{ $json.content }} for large files. | Use the step's file reference instead of the content. |
| Microsoft actions in the App action and as an AI Agent tool used to fail every time. They now run. | Anyone who built a workaround because of that. | You can replace the workaround with the App action again. |
| Microsoft nodes have fixed time limits (60 seconds, 180 seconds for upload and download) and stop when you cancel a run. | Very large files or slow connections. | Split large jobs into smaller steps. |
| Outlook now sends only as Text or HTML. Any other format choice, including "Outlook default", goes out as Text. Excel refuses an empty row when appending. Microsoft Calendar has a new option for the time zone of the day window, and the default stays as before. | Workflows with another format or empty rows. | Pick Text or HTML and check that the row has values. |
HubSpot
| Change | Who notices | What to do |
|---|---|---|
| If HubSpot refuses a change (create, update, upsert or delete), the step now stops with an error. Previously it carried on as if successful and only put the error in the output. | Workflows that branch on output.error after a write. | Check the record and the fields. HubSpot nodes have no switch that simply lets the step carry on after an error. To keep a batch going, switch on "Run once per item" under Advanced and choose "Skip it and carry on" under "If one item fails". A refused item then carries the error code in its error field, and a later step can branch on it. |
| Read actions still report an error in the output, but only with the HTTP status number, without HubSpot's own text. | Anyone who checked HubSpot's error text. | Check the status number instead of the text. |
| When updating contacts and deals, the field "Unique ID property" (under Advanced) now really takes effect. | Anyone who had set it. Previously it was ignored. | Check that the field really holds the property you want to match on. |
App action: money movements are blocked
| Change | Who notices | What to do |
|---|---|---|
| In the App action and as an AI Agent tool, write actions of Stripe, Qonto and Personio never run anymore. The same goes for every action of any app, your own MCP server included, whose technical name sounds like moving money, such as refund, payout, payment, charge, transfer, purchase, Überweisung, Zahlung or paiement. This applies even when the provider marks the action as read-only. These actions disappear from the picker. Plain lookups such as a list of payments stay possible, and so do actions that only mark an invoice as paid. | Saved workflows with such an action, for example a Stripe refund. An AI Agent with such a tool row stops right at the start, even if it would never call the tool. | Remove the step or the tool row. Handle payments yourself in the provider's own tool. |
| The check goes by the action's technical name. It is an extra safeguard, not a complete list: an action with such a word in its name can be refused even if no money moves, and an action that moves money under a completely different name is not caught. | Teams with their own MCP servers. | Rename the action on your server. Only give workflows access that cannot move money. |
The dedicated Stripe node that works with your own Stripe key is not affected. It still creates customers and creates payment intents without confirming them.
AI Agent and its tools
| Change | Who notices | What to do |
|---|---|---|
| Fields that only you set while building are no longer offered to the model: accounts, connections, credentials, senders and mailboxes. What you entered is still used. An empty field stays empty. Anything the model sends outside the offered fields is dropped. | Agents where the model picked an account, a sender or a mailbox itself. "Send email (SMTP)" without a fixed mailbox now fails. | Fill in these fields yourself in the tool row. |
| Ready-made tools such as DeepL, "Send email (SMTP)" and the App action can now be added as tools. | Anyone who missed them so far. | Add them in the AI Agent under its tools. |
anymize nodes
| Change | Who notices | What to do |
|---|---|---|
| "List jobs", "List project documents" and "Fetch meeting / transcript" now only see data of the account the workflow runs in. "Create project" creates the project in exactly that account. | Anyone who works with several accounts, for example as a partner for clients. Fewer entries may show up there. Projects a workflow created before the change may be missing from these lists. | Run the workflow in the account that owns the data. |
Trello, Linear, GitLab and other integrations
| Change | Who notices | What to do |
|---|---|---|
| Trello, Linear and GitLab have a new option "Result" under Advanced. The default still returns one item per entry. "One list with count" returns a single item with the list and the count, so even an empty list reaches the next step. | Nobody, as long as you do not change the option. | Choose "One list with count" where an empty result should not stop the flow. |
| In Stripe, Mailchimp, Airtable, Linear, PagerDuty and Zendesk, number, switch and object fields now accept connections and templates like {{ $json.amount }}. If a template comes out empty, the node's default applies. | Fields where {{ }} was meant as plain text. | Usually nothing. |
| Discord returns ok: true on success. Zendesk can process items one by one (off by default), and "List tickets" counts as a read. | Workflows that read Discord's output. | Check the new output in your next test run. |
| Values that arrive over a connection from an earlier step are passed on unchanged by GitHub, Notion, Asana, HubSpot, the JSON fields of Telegram and the "Extra fields" field of Mailchimp. If they contain {{ }}, for example in a template from a file or an issue, it is no longer evaluated. Templates you type into a field yourself work as before. | Workflows where a step deliberately produces text with {{ }} for the next node to fill in. | Build the value in the step that produces it. |
Error messages without provider text
Errors no longer contain the provider's text. A step fails with a fixed error code, and the run view shows a clear sentence for it in your language. The integrations (Stripe, Mailchimp, Airtable, Trello, ClickUp, Linear, GitLab, Discord, Telegram, Zendesk, Supabase) only name the HTTP status number. The HTTP node with "On HTTP error: Stop the workflow" reports the number without an excerpt of the response.
| Change | Who notices | What to do |
|---|---|---|
| Error code and sentence instead of provider text. | Anyone who checked for an error text in a later step or in their own monitoring. An AI Agent now also gets the code instead of the provider's message. | Branch on the code or the HTTP status number, not on the text. |
Other small changes
- HTTP Request: with "Keep going, error in the output" the workflow now also continues when the address cannot be resolved or is blocked, or when the workflow secret is missing. Nothing is sent in these cases.
- Date & Time: new field for the time zone (default UTC, same result as before) and an option for a missing or invalid source date (default: the current time, as before).
- JSON: new option for invalid JSON. The default carries on as before and marks the target field.
- Hash: only sha256, sha512, md5, sha1 and sha384. Invalid Base64 now stops the step.
- When you go live, anymize checks more required fields: the key for Stripe, SendGrid, Mailchimp, Airtable, Trello, ClickUp, Zendesk, Linear, GitLab, PagerDuty, Twilio and Discord, and the credentials for Telegram and Supabase.
- Web search and Ollama report errors as codes, without the provider's text.
New: GitHub, Notion, Asana and mail attachments
- GitHub: seven nodes (Repositories, Issues, Pull Requests, Files and Branches, Releases, Actions, API Request) with 73 actions, 41 that read and 32 that write.
- Notion: the nodes "Notion Pages" and "Notion Databases".
- Asana: the nodes "Asana Tasks" and "Asana Projects".
- List actions of GitHub, Notion and Asana always return a result with the list and the count. For GitHub the output also tells you whether the list was cut short, which page comes next and whether GitHub throttled further loading. With the "Page" field you fetch a specific further page.
- When GitHub, Notion or Asana is used as an AI Agent tool, the model is not offered the per-item run settings. For GitHub it also cannot set "Only with green checks" or "Reviewed version (commit)": an agent only merges with green checks, unless you set something else yourself in the tool row.
- Outlook and Gmail: in the App action you can list attachments and save an attachment to your anymize storage (folder System/Downloads). This works for the connection's default account and needs Co-Work. Saving is a write action: switch on "Allow writes for this step".
Write actions of GitHub, Notion and Asana only run if "Allow changes" is chosen under "Allowed actions" in the connection settings. With "Read only" and "Read and draft", workflows only run read actions.
When something stops working
- 01Open the workflow and the run view of the last run. Under "Workflow error" a sentence says what is missing or was refused. For some errors the service's HTTP status number appears below it.
- 02Click the step with the error and compare its input with the output of the step before. Typical causes are a missing header on the webhook, missing content for large downloads or an empty chat_id on the chat.
- 03"Technical details" shows the raw error data with the fixed code, for example WORKFLOW_HUBSPOT_WRITE_FAILED. Mention this code when you contact support.
- 04Find the node on this page and set the option named there. Then start a test run with a small amount of data.
| Code | Meaning | What to do |
|---|---|---|
| WORKFLOW_CONNECTOR_TOOL_BLOCKED | Workflows never run this action, for example a payment. | Pick another action or do it by hand. |
| WORKFLOW_CONNECTOR_WRITE_BLOCKED | The step would change something but is not allowed to: writing is not allowed for this step, in the connection or by your organization. | Turn on "Allow writes for this step" on the step, or set "Allowed actions" in the connection to "Allow changes". Still blocked? Your admin can help. |
| WORKFLOW_HUBSPOT_WRITE_FAILED | HubSpot did not apply the change. | Check the record and the fields in the step. |
| WORKFLOW_SMTP_PORT_INVALID | The port in the SMTP credentials is not allowed. | Use 587 or 465. |
| WORKFLOW_SMTP_CREDENTIAL_INVALID | The SMTP credentials are incomplete or do not point to a public mail server. | Save server, port, username and password again. |
| WORKFLOW_GOOGLE_NOT_CONNECTED | No matching Google BYO profile. | Set up the profile under Workflows > Keys. |
| WORKFLOW_GOOGLE_NOT_AUTHORIZED | Access to this Google area is not granted. | Check the permission and the area in the connection. |
| WORKFLOW_GOOGLE_WRITE_BLOCKED | Your team does not allow automatic changes in Google here. | Talk to your team admin. |
| workflow_required_config_missing | A required field is missing when going live. | Fill in the named field and take the workflow live again. |