Wat zijn Workflows, en waarom nu?
▼
Zo zien Workflows er in Langdock uit: Nodes op een visuele canvas verbinden, zonder code.
De evolutie: Chat, Agents, Workflows
Je kent Langdock al vanuit de chat en hebt misschien al eigen Agents gebouwd. Workflows zijn de volgende logische stap: in plaats van handmatig met AI te interacteren, automatiseer je complete processen van begin tot eind.
Het verschil in een zin:
- Chat = Je vraagt, AI antwoordt (1-op-1-dialoog)
- Agents = AI met specialistische kennis en context (geconfigureerde assistent)
- Workflows = Meerdere stappen lopen automatisch af, met AI, logica en integraties (end-to-end-automatisering)
Wanneer lonen Workflows?
Workflows zijn zinvol wanneer je een proces hebt dat:
- Terugkerend is (bijvoorbeeld elke dag, elke week, bij elke nieuwe lead)
- Meerdere stappen omvat (data ontvangen, analyseren, doorsturen, documenteren)
- Geen menselijke creativiteit in de kern nodig heeft (routering, categorisatie, standaardcommunicatie)
- Foutgevoelig is bij handmatige uitvoering (vergeten follow-ups, inconsistente categorisatie)
Wat Workflows NIET vervangen
Workflows zijn geen vervanging voor creatief werk, strategische beslissingen of complexe individuele gevallen. Ze nemen het repetitieve voorwerk over, zodat jullie team zich op het wezenlijke kan concentreren.
De architectuur begrijpen: de bouwstenen
▼Wat is een Node?
Een Node is een enkele stap in je workflow, vergelijkbaar met een bouwsteen. Elke Node heeft precies één taak: data ontvangen, AI iets laten analyseren, een voorwaarde toetsen, een e-mail versturen, enzovoort.
Nodes worden op een visuele canvas via drag & drop geplaatst en met elkaar verbonden. Programmeren is niet nodig, tenzij je de Code Node wilt gebruiken.
Anatomie van een Node
Elke Node heeft:
- Header: Toont type en naam. Hier vind je ook de Play-knop om te testen.
- Input-tab: Toont welke data de Node heeft ontvangen (na een testrun).
- Output-tab: Toont welke data de Node heeft geproduceerd.
- Configuratiepaneel: Opent per klik. Hier stel je alles in.
Connections: hoe data stroomt
De lijnen tussen Nodes zijn meer dan decoratie: ze bepalen de uitvoeringsvolgorde en de datastroom.
- Links (ingang): waar de uitvoering vandaan komt
- Rechts (uitgang): waar de uitvoering naartoe gaat
- Meerdere uitgangen: Condition Nodes hebben één uitgang per voorwaarde
- Rode uitgang: speciaal error-pad (indien geactiveerd)
Uitvoeringsmodellen
Sequentieel (standaard): Nodes lopen na elkaar af. Node B wacht tot Node A klaar is.
Parallel: Als meerdere Nodes op één uitgang zijn aangesloten, lopen ze tegelijk. Dat versnelt je workflow als de stappen onafhankelijk van elkaar zijn.
→ E-mail versturen →
Trigger → → Ticket aanmaken → → Verder
→ Database bijwerken →
Error Handling
Voor elke Node kun je individueel bepalen wat er bij een fout gebeurt:
- Workflow stoppen (Fail): De volledige workflow wordt als mislukt gemarkeerd. Zinvol voor kritieke stappen.
- Workflow voortzetten (Continue): De fout wordt gelogd, maar de workflow loopt door. Zinvol voor optionele stappen.
- Error Callback: De uitvoering wordt via de rode error-uitgang naar andere Nodes omgeleid. Zinvol voor fallback-logica.
Nodes deactiveren
Individuele Nodes kunnen tijdelijk worden gedeactiveerd zonder ze te verwijderen. Gedeactiveerde Nodes worden bij de uitvoering overgeslagen, ideaal om te debuggen of voor optionele stappen die je tijdelijk wilt uitschakelen. Via rechtsklik op de Node of via het Node-menu kun je de status omschakelen.
Nodes van commentaar voorzien
Complexe logica laat zich direct op de canvas documenteren: via het drie-puntjes-menu van een Node vind je Add Comment. Het commentaar hangt aan de Node en legt latere bewerkers uit waarom een drempelwaarde precies zo is gekozen of welk uitzonderingsgeval hier wordt afgevangen. Dat is de goedkoopste vorm van onderhoudbaarheid die een workflow kan hebben.
Replay events: testen met echte data
Testdata handmatig intypen is foutgevoelig, omdat de verzonnen waarden er nooit uitzien zoals de echte. In het Test Run-paneel bestaat daarom Replay events: je kiest een terugliggende gebeurtenis, dus een echte formulier-inzending, een echte webhook-request of een echt integration event, en laat de workflow daarmee lopen.
Testruns behouden hun context sinds september 2026: Sinds 18-09-2026 onthoudt een testrun de resultaten van Nodes die al gedraaid hebben. Pas je verderop een Node aan en test je opnieuw, dan staan de eerdere outputs nog klaar, je hoeft de Trigger dus niet elke keer opnieuw af te vuren. Daarnaast zijn de outputwaarden van een Node overzichtelijker weergegeven, wat het vinden van de juiste velden voor de volgende Nodes makkelijker maakt.
Workflows als bouwstenen: de ene workflow roept de volgende aan sinds september 2026
Sinds 18-09-2026 (»Composable Workflows«) kan een workflow een andere workflow aanroepen, op het resultaat wachten en met die output verdergaan. In de editor kies je de aan te roepen workflow en koppel je de inputs, vergelijkbaar met een Action.
- Maximaal vijf niveaus diep: Een aangeroepen workflow mag zelf weer een workflow aanroepen, maar in totaal hooguit vijf niveaus.
- Cyclusdetectie: Roept A workflow B aan en B weer A, dan herkent Langdock de kringloop en voorkomt die.
- Herleidbaar in de run-historie: Geneste runs dragen de markeringen Called by en Open Child Run. Een fout op het derde niveau is zo terug te volgen tot de run die alles startte.
Workflow Builder Chat
In plaats van elke Node handmatig te plaatsen, kun je Workflows ook via natuurlijke taal laten opstellen. De Workflow Builder Chat (knop links onder in de builder) genereert uit jouw beschrijving een complete workflow.
- Workflows beschrijven: "Maak een workflow die elke maandag een rapport uit Google Sheets genereert en via Slack verstuurt."
- Fix in Chat: Bij fouten verschijnt een knop die de foutdetails automatisch aan de chat overdraagt, de AI analyseert het probleem en stelt correcties voor.
- Preferences: Via het instellingenpaneel kun je favoriete tools (e-mail, CRM, ticketing) en Custom Instructions vastleggen.
- Doorvragen in plaats van gokken: Is je beschrijving te vaag, dan stelt de builder eerst een paar verduidelijkingsvragen en biedt antwoordsuggesties waar je uit kunt kiezen.
- Chat History: Via het Chat-History-icoon rechtsboven kom je terug bij eerdere gesprekken en zet ze precies daar voort waar je gestopt bent.
- Canvas blijft opgeruimd: Chat-edits behouden je lay-out. Nieuwe Nodes verschijnen direct naast de Node waaraan ze aankoppelen, bestaande Nodes blijven staan. Wil je alles opnieuw sorteren, gebruik dan de Auto Reorder-knop op de canvas of vraag het aan de builder.
Workflows exporteren en importeren sinds augustus 2026
Elke workflow laat zich als .json-bestand opslaan en later weer inspelen, de nette manier om een workflow aan collega's door te geven of naar een andere workspace te tillen.
- Export: drie-puntjes-menu naast de workflow-naam → Export workflow (.json).
- Import: in hetzelfde menu Import workflow (.json). Let op: de import vervangt de huidige canvas. Langdock vraagt eerst om een bevestiging, opgeslagen wordt pas daarna.
- Alleen Langdock-exports: Deze import accepteert uitsluitend bestanden die uit Langdock zijn geëxporteerd. Herkent Langdock een vreemd formaat, dan leidt het je automatisch naar de Workflow Builder Chat.
Workflows uit andere tools overnemen
Workflows uit n8n, Zapier of Make hoef je niet met de hand na te bouwen. Exporteer de workflow daar als JSON en laad het bestand via de Import from-knop in het chatpaneel, of plak het JSON direct in de chat. De Workflow Builder leest de structuur en bouwt hem na als Langdock-workflow. Sinds 18-09-2026 is de import uit Zapier en Make verbeterd: hij heeft een duidelijker startpunt, en mislukt hij, dan noemt de foutmelding preciezer welk deel van het bestand niet bij het verwachte schema past.
Trigger-typen: hoe Workflows starten
▼Elke workflow heeft een startpunt nodig, de Trigger. Die bepaalt wanneer en waardoor je workflow wordt geactiveerd.
Overzicht van de Trigger-typen
| Trigger | Activator | Typische inzet |
|---|---|---|
| Manual | Klik op knop | Testen, ad-hoc-taken |
| Form | Formulier-invoer | Feedback, aanvragen, sollicitaties |
| Webhook | HTTP POST of GET | Externe systemen, API's, GitHub |
| Scheduled | Tijdplan (cron) | Dagelijkse rapporten, data-sync |
| Integration | Event in app | Slack-bericht, nieuwe Sheets-rij |
| Uit Chat/Agent | @-menu in de chat | On-demand-automatisering vanuit gesprekken |
Meerdere Triggers per workflow sinds september 2026: Sinds 18-09-2026 zit een workflow niet meer vast aan één startpunt. Je kunt meerdere Triggers aan dezelfde flow hangen, bijvoorbeeld een Integration Trigger voor de dagelijkse gang van zaken en daarnaast een Manual Trigger of formulier voor nakomers. Zo hoef je dezelfde flow niet twee keer te bouwen en dubbel te onderhouden. Enkele documentatiepagina's spreken nog van »precies één Trigger«, leidend is hier de changelog.
Manual Trigger
De eenvoudigste Trigger: één klik start de workflow. Perfect om te ontwikkelen en te testen. Elke nieuwe workflow zou eerst met een Manual Trigger moeten worden gebouwd en getest, voordat je overschakelt naar een automatische Trigger.
Form Trigger
Maakt een webformulier dat de workflow bij inzending start. Ideaal voor het verzamelen van data van interne of externe gebruikers.
Beschikbare veldtypen:
- Text (één regel), Long Text (meerdere regels)
- E-mail, telefoon, getal
- Datum, dropdown, checkbox
- Bestand-upload
Belangrijke instellingen:
- Formuliertitel en beschrijving definiëren
- Velden als verplichte velden markeren
- "Thank You"-bericht configureren
- Openbare toegang activeren (voor externe gebruikers)
- iframe-inbedding (sinds maart 2026): Workflow-formulieren kunnen via
<iframe>in externe websites, intranetten of portalen worden ingebed, gebruikers hoeven Langdock niet te verlaten. - Allowed email domains: Bij velden van het type e-mail kun je één of meerdere toegestane domeinen opgeven (komma-gescheiden). Invoer van andere domeinen wijst het formulier af. De nette manier om een openbaar bereikbaar formulier toch te beperken tot klanten of tot het eigen personeel, zonder er een aanmelding voor te bouwen.
Webhook Trigger
Stelt een unieke URL beschikbaar die externe systemen via HTTP POST kunnen aanroepen. De ideale Trigger als je Langdock met eigen applicaties, GitHub, Stripe of andere services wilt verbinden. Sinds 18-09-2026 accepteert de Webhook Trigger ook GET-verzoeken, waarbij authenticatie optioneel blijft. Daarmee is de URL ook bruikbaar als startlink achter een knop, in een Slack-bericht of op het intranet. Precies daarom hoort zo'n link nooit zonder secret in omloop: wie de URL kent, start de workflow.
Auth-modi (drie varianten):
- No Auth: URL is openbaar toegankelijk. Alleen voor tests of bewust openbare endpoints.
- Query-parameter: Token wordt als URL-parameter meegestuurd (bijv.
?secret=xyz). Zichtbaar in logs, alleen geschikt voor interne setups. - X-Webhook-Secret Header (aanbevolen): Token in de HTTP-header. Lekt niet in logs of referrers, de nette manier voor productie.
Zodra je een auth-methode kiest, genereert Langdock automatisch een secret. Het secret blijft behouden als je tussen header en query-parameter wisselt, je verliest je sleutel dus niet per ongeluk. Laat je het veld leeg bij een actieve auth-methode, dan waarschuwt de validatie. Bestaande webhooks met query-parameter blijven ongewijzigd werken: is het veld niet gezet, dan blijft het oude gedrag actief.
Advanced options: Signature-header en Raw-Body
Onder Advanced options liggen twee schakelaars, die beide standaard uit staan. Ze heb je nodig zodra een latere Node de echtheid van de request moet toetsen:
- Include signature headers: Legt de Content-Type en de ondersteunde signature-headers onder
trigger.output.headersvast. Ondersteund worden de signatures van Stripe, GitHub, Slack, DocuSign, Shopify, Svix en Standard Webhooks. Alle overige binnenkomende headers blijven verder buiten. - Preserve raw request body: Houdt de oorspronkelijke, ongeparseerde body als string onder
trigger.output.rawBodybeschikbaar. Het parsen loopt toch door, je hebt dus beide versies. Omdat beide versies worden bewaard, zakt de limiet voor zulke requests naar 12 MB.
Beide velden verschijnen alleen als de bijbehorende schakelaar voor deze webhook-Trigger aan staat. Voor een echte signatureverificatie heb je meestal beide nodig: de Code Node leest de signature uit trigger.output.headers en rekent hem tegen de ongewijzigde body uit trigger.output.rawBody. Alleen de raw-body geeft dezelfde hash als bij de afzender, een opnieuw geserialiseerde JSON doet dat niet.
Bestanden via webhook doorgeven
Een webhook kan bestanden direct in de JSON-body meebrengen: losse bestanden onder file, meerdere onder files (maximaal 20). Beide keys werken op het hoogste niveau en in geneste objecten. Elk bestand-object heeft fileName, mimeType en precies één inhoudveld nodig: base64 voor binaire bestanden zoals XLSX, text voor tekstbestanden.
Limiet: De volledige JSON-body moet onder 25 MB blijven, base64-inhoud meegerekend. Base64 blaast bestanden met ongeveer een derde op, houd daar rekening mee.
De verwerkte bestanden vervangen in de body de oorspronkelijke objecten. Toegang:
{{trigger.output.body.files[0].path}}
{{trigger.output.body.files[0]._metadata.name}}
{{trigger.output.body.files[0]._metadata.mimeType}}
{{trigger.output.body.file.path}} <-- bij enkel bestand onder "file"
Response-codes
| Code | Betekenis | Wanneer |
|---|---|---|
202 | Accepted | Workflow werd succesvol in de wachtrij gezet |
400 | Bad Request | Ongeldige workflow-ID, ongeldig formaat of verkeerd secret |
404 | Not Found | Workflow niet gevonden |
413 | Payload Too Large | Raw-body boven 12 MB of gecombineerde output boven 25 MB |
429 | Too Many Requests | Rate limit of spend limit bereikt |
500 | Server Error | Interne fout bij de webhook-verwerking |
Bouw deze codes in in het aanroepende systeem: een 429 betekent niet "kapot", maar "te veel of budget op" en hoort met backoff behandeld te worden.
Scheduled Trigger
Voert de workflow automatisch op vastgestelde tijden uit. Perfect voor terugkerende taken.
Tijdplan-opties:
- Elke X minuten
- Elk uur / dagelijks / wekelijks / maandelijks
- Aangepaste cron-uitdrukking
- Tijdzone configureerbaar
Voorbeelden:
- Dagelijks sales-rapport om 9:00 uur
- Elk uur data-sync met extern systeem
- Wekelijkse cleanup-taak op zondag
Integration Trigger
Reageert op events in verbonden apps: nieuw Slack-bericht, nieuwe e-mail in Gmail, nieuw bestand in Google Drive, nieuwe lead in Salesforce, kalender-event en meer.
Ondersteunde integraties (selectie):
- Communicatie: Slack (berichten, reacties), Microsoft Teams (berichten, mentions, transcripten), Gmail, Outlook
- Productiviteit: Notion, Jira, Confluence, GitHub (Pull Requests, Commits, Releases), Microsoft Planner
- Opslag & Financiën: Google Drive, OneDrive, Dropbox, Stripe (betalingen, abonnementen, facturen)
- CRM: Salesforce (leads, contacten, opportunities), HubSpot (deals, formulier-inzendingen, notities)
- Kalender: Google Calendar, Outlook Calendar, Calendly
- Meer: Ashby (recruiting-events), Microsoft Power BI
Configuratie in drie stappen:
- Integratie kiezen
- Event-type kiezen (bijv. "Nieuw bericht in kanaal")
- Filter configureren (bijv. alleen bepaalde kanalen of trefwoorden)
Langdock-map als Trigger sinds september 2026
De integratie Langdock levert de Trigger File added to folder. De workflow start zodra een bestand of meeting in de gekozen map wordt geüpload of verplaatst. Wat al in de map staat en latere bewerkingen starten niets. De inhoud haal je op met de Action Read folder file, eigenaar, deelnemers, notities en transcript van een meeting met Get meeting. Persoonlijke meetingnotities geeft Langdock nooit vrij.
- Verbinding via API-key: In plaats van OAuth geef je een persoonlijke of workspace-API-key op met de scope Workflow Read API. Read folder file heeft daarnaast Knowledge Folder API (bestanden) of Meetings Read API (meetings) nodig, Get meeting heeft Meetings Read API nodig.
- Wiens mappen: Een persoonlijke key ziet de mappen van zijn eigenaar, een workspace-key alle mappen die hij mag zien, inclusief de mappen die met de hele workspace gedeeld zijn. Voor productieve workflows is de workspace-key robuuster, omdat hij niet aan het account van één persoon hangt.
- Dedicated Deployments: Vul daar als Base URL
https://<deployment-url>/api/publicin.
Workflow-start vanuit Chat en Agents sinds maart 2026
Workflows laten zich direct vanuit de chat starten. Dat is strikt genomen geen eigen Trigger-type, maar een tweede manier om een bestaande Trigger te activeren. Er zijn twee varianten:
- Via @-menu: Typ
@in het chat-invoerveld, kies een workflow uit de lijst en verstuur het bericht. De AI beslist dan aan de hand van jouw aanvraag of hij de workflow daadwerkelijk uitvoert. - Als Agent-Action: Je hangt Workflows aan een Agent. In de Agent-editor onder Actions op Add action, dan naar het tabblad Workflows wisselen en kiezen. De Agent roept ze daarna zelfstandig aan als ze bij het gesprek passen.
Ideaal voor on-demand-automatiseringen: je bent midden in een gesprek, hebt een analyse nodig of wilt een proces aanstoten zonder de chat-interface te verlaten.
Sinds 10-09-2026 ook uit de desktop-app: Langdock bestaat als eigen applicatie voor macOS en Windows, met een eigen icoon in het Dock of de taakbalk. Na het inloggen met het Langdock-account zie je dezelfde chats, Agents en Workflows als in de browser, een extra installatie is niet nodig. Praktisch bij het bouwen: de app opent meerdere tabs, je kunt dus parallel aan meerdere taken werken, en veelvoorkomende acties lopen via toetscombinaties. Een eigen Trigger-type is dat niet en een tweede rechten-laag ook niet, maar dezelfde interface in een eigen venster.
Voorwaarden: wanneer verschijnt een workflow in het @-menu?
Alle vier de voorwaarden moeten zijn vervuld:
- De workflow hoort bij jouw workspace
- Je hebt er toegang toe (als Owner of via een gedeelde toegang)
- De status is active, de workflow is dus gepubliceerd
- Het Trigger-type wordt in de chat ondersteund
| Trigger-type | In de chat? | Gedrag |
|---|---|---|
| Manual | Ja | Bevestigen en starten, geen invoervelden |
| Form | Ja | Formuliervelden worden inline in de chat weergegeven |
| Scheduled | Ja | Naast het tijdplan on demand activeerbaar |
| Webhook | Nee | Alleen via de webhook-URL |
| Integration | Nee | Alleen via het app-event |
Bevestiging is verplicht
Geen enkele vanuit de chat gestarte workflow loopt zonder expliciete goedkeuring. Bij Manual- en Scheduled-workflows verschijnt een compact bevestigingspaneel met de knoppen Trigger en Deny. Bij Form-workflows wordt in plaats daarvan het formulier direct in de chat weergegeven en vul je het in voordat je het verstuurt.
Velden van type FILE worden daarbij voorgevuld met bestanden uit het lopende gesprek. Meegenomen worden de 50 nieuwste bijlagen van de chat.
Statusweergave in de chat
| Status | Weergave |
|---|---|
| Loopt | Geanimeerde weergave met de workflow-naam |
| Klaar | Ran [Workflow-naam] in Xs inclusief resultaat |
| Mislukt | Rood paneel met foutdetails |
| Afgewezen | Gele melding over de afbraak |
Rechten en grenzen
- Rechtencontrole op verschillende momenten: Via @-menu zie je alleen Workflows waar je toegang toe hebt. Bij Agent-Actions wordt de toegang pas op runtime gecontroleerd, je kunt dus midden in de chat tegen een toegangsfout aanlopen.
- Uitzondering bij gedeelde toegang: Form-workflows die aan een Agent hangen en op Workspace of Public staan, hebben geen individuele goedkeuring meer nodig.
- Tool-naam: Uit de workflow-naam wordt een tool-naam afgeleid, uit "Summarize Report" dus
workflow_summarize_report. Hij is beperkt tot 63 tekens, zeer lange workflow-namen worden ingekort. - Mobiele app: Daar laten Workflows zich niet via @ noemen, openstaande bevestigingen kunnen onopgelost blijven.
- Sub-Agents: Een Agent die door een andere Agent wordt aangeroepen, kan geen Workflows activeren.
- Geen dubbele aanroepen: De AI roept dezelfde workflow binnen één aanvraag niet twee keer aan.
Node-typen: wat Workflows kunnen
▼Agent Node: AI-analyse & content-generatie
De Agent Node is het hart van de meeste Workflows. Hier komt de AI in het spel: teksten analyseren, categoriseren, samenvatten, genereren of beslissingen nemen.
Twee opties:
- Bestaande Agent gebruiken: Gebruikt een Agent uit je workspace met diens configuratie en kennis.
- Nieuwe Agent maken: Speciaal voor deze workflow geconfigureerd en geoptimaliseerd.
Structured Output (dringend aanbevolen): Definieer het exacte uitvoerformaat als JSON-schema. Daardoor krijg je gegarandeerd gestructureerde data die opeenvolgende Nodes betrouwbaar kunnen verwerken.
{
"sentiment": "negatief",
"category": "bug",
"priority": "hoog",
"summary": "App crasht bij upload van afbeelding"
}
Max Steps: Standaard: 25. Instelbaar afhankelijk van taakcomplexiteit (5-10 voor eenvoudige, 50-100 voor complexe research-taken).
Extended Thinking / Reasoning-toggle (sinds mei 2026): Extended Thinking laat zich nu direct in de Agent Node via een aan/uit-schakelaar activeren, een aparte modelvariant is niet meer nodig. Alleen inschakelen als de taak echt stap-voor-stap-logica nodig heeft (meervoudige classificatie met motivering, routeringsbeslissingen met meerdere constraints). Voor standaard-extractie en eenvoudige classificatie laat je hem uit, dat bespaart tokens en maakt de run sneller.
Auto Model Mode sinds mei 2026: In de model-selector van de Agent Node bestaat nu een Auto-modus, die per aanroep het passende model kiest op basis van de taakcomplexiteit, eenvoudige classificatie loopt op een klein, snel model, complexe analyse op een topmodel. Zinvol als je niet zelf model-routing wilt opbouwen. Voor voorspelbare kosten en reproduceerbare resultaten kies je liever expliciet een model.
Beschikbare tools:
- Web-zoekopdracht (voor actuele informatie)
- Code-uitvoering (Sandboxed Python)
- Integration Actions (optioneel met Human Confirmation)
- Knowledge Folder (toegang tot bedrijfskennis)
- Nested Agent Calls (andere Agents aanroepen)
Prompt Engineering-tips:
- Wees expliciet: "Categoriseer als Bug, Feature Request of Vraag" in plaats van alleen "Analyseer de tekst"
- Geef context: leg de rol en de achtergrond uit
- Gebruik voorbeelden: laat de Agent zien hoe de gewenste output eruit moet zien
- Beperk de output: "Antwoord ALLEEN met een van de volgende categorieën: ..."
Condition Node: voorwaardelijke logica
Routeert de workflow-uitvoering op basis van voorwaarden. Elke voorwaarde heeft een eigen uitgangspad.
Typische toepassingen:
- Prioriteit controleren:
{{agent.output.structured.priority === "high"}} - Bedrag controleren:
{{trigger.output.amount > 5000}} - Status controleren:
{{customer.output.status != "inactive"}}
Beschikbare operatoren (Manual Mode): Vergelijking (===, !==, >, <, >=, <=), logica (&&, ||, !), string-methoden (.includes(), .startsWith(), .endsWith()). Meerdere operatoren laten zich combineren: {{trigger.output.score > 80 && agent.output.verified === true}}.
Modi en toggles: Standaard activeert de eerste passende voorwaarde, alle andere worden overgeslagen. Met Allow multiple conditions lopen alle passende paden parallel. In de Prompt AI-modus formuleer je de voorwaarden in natuurlijke taal; met Force Select Branch wordt ook bij een onduidelijk geval altijd minstens één branch gekozen.
Code Node: custom JavaScript
Voor datatransformaties, berekeningen en aangepaste logica die geen AI nodig hebben.
Perfect voor:
- Wiskundige berekeningen
- Data herformatteren
- JSON parsen en manipuleren
- Datavalidatie en opschoning
- Datum- en tijdoperaties
const scores = agent.scores || [];
const average = scores.reduce((a, b) => a + b, 0) / scores.length;
return {
average_score: average.toFixed(2),
highest_score: Math.max(...scores),
grade: average >= 90 ? "A" : average >= 80 ? "B" : "C"
};
Beschikbare functies (JavaScript-sandbox):
| Domein | Utilities |
|---|---|
| HTTP & netwerk | ld.request(), ld.awsRequest() (gesigneerde AWS-calls) |
| Dataformaten | ld.csv2parquet(), ld.parquet2csv(), ld.arrow2parquet(), ld.json2csv() |
| SQL | ld.validateSqlQuery(), ld.ensureReadOnlySqlQuery(). Query controleren voordat hij naar een database gaat |
| Crypto | ld.signWithRS256(), bijv. voor service-account-JWTs, atob() / btoa() |
| Binaire data & formulieren | Buffer.from() (beperkte polyfill: accepteert alleen Array, Uint8Array of ArrayBuffer, geen strings; gebruik voor Base64 gewoon btoa()), FormData (multipart-uploads met bestand en metadata) |
| Debugging & Timing | ld.log(), ld.wait() (backoff tussen retries) |
| Standaard JavaScript | JSON, Date, Math, Array, Object |
ld.request() verwijdert bij een redirect naar een andere origin standaard de Authorization-header en andere credential-headers. Alleen als je het redirect-doel echt vertrouwt, zet je preserveAuthOnRedirect: true. Elke response-body is beperkt tot 100 MB; grotere antwoorden falen met Response too large. Voor grote bestanden: direct naar externe opslag zoals S3 streamen, in plaats van ze door de Code Node te sluizen.
Python-sandbox (alternatief voor JavaScript): Python loopt zonder internettoegang en zonder ld.*-utilities, maar heeft daarvoor voorgeïnstalleerde libraries: pandas, numpy, openpyxl, pypdf. Zinvol voor tabellarische analyses, Excel-generatie en PDF-parsing.
Bestanden vanuit de Code Node
Beide talen kunnen bestanden aanmaken. In JavaScript geef je ze in een files-array terug, in Python leg je ze simpelweg in de working directory. In beide gevallen belanden ze in de output onder _files:
return {
files: [
{ fileName: "report.csv", mimeType: "text/csv", text: csvContent }
]
};
// Toegang in de volgende Node:
// {{code_node_name.output._files[0]._metadata.name}}
Bestanden uit eerdere Nodes lezen sinds september 2026: Sinds 18-09-2026 kan de Code Node bestanden lezen die eerdere Nodes hebben meegebracht of aangemaakt, bijvoorbeeld een upload uit een formulier of een webhook-bijlage. Elk bestandsobject heeft een path dat je in Python direct aan open() doorgeeft, de oorspronkelijke bestandsnaam staat onder _metadata.name. Een geüploade CSV parse je zo direct in de Code Node, de omweg via een Agent Node vervalt.
Limiet: 5 MiB input per Code Node. Langdock meet vóór de uitvoering de omvang van alle upstream-outputs die je code via slug referenceert. Wordt de limiet overschreden, dan faalt de Node met een fout voordat je code überhaupt draait. Let op: lees je in plaats van losse slugs de data-map, dan worden alle upstream-outputs geladen en telt hun volledige gecombineerde omvang mee tegen de limiet.
Typische oorzaken:
- Een Loop Node die de outputs van vele iteraties in één array verzamelt
- Een eerdere Node met een zeer grote API-response, bestandsinhoud of dataset
- Diep geneste objecten die zich niet veilig laten meten
Tegenmaatregelen: upstream-output filteren, samenvatten of alleen de benodigde velden selecteren. Minder elementen per iteratie in de voorgeschakelde loop verwerken. Of Collect Outputs in de Loop Node uitzetten.
En aan de andere kant: 25 MB output per Node. De limiet geldt voor elke workflow-Node, niet alleen voor Code Nodes. Geeft je code meer terug, dan faalt de Node met Node output exceeded the maximum size of 25 MB en het resultaat wordt helemaal niet opgeslagen. Goed nieuws: bestanden die je in het files-array teruggeeft of in Python naar de working directory schrijft, worden eerst geüpload en tellen niet mee tegen deze limiet. Bij JavaScript komt er een tweede grens bij: het volledige antwoord van de code-execution-service is beperkt tot 150 MB, inline teruggegeven bestanden meegerekend.
HTTP Request Node: externe API's
Roep willekeurige externe API's aan: data ophalen, aanmaken, bijwerken of verwijderen.
Methoden: GET, POST, PUT, PATCH, DELETE
Profi-feature: Import from cURL. Plak een cURL-commando uit een API-documentatie en alle velden (URL, headers, parameters) worden automatisch ingevuld.
Configuratie:
- URL: Ondersteunt variabelen, bijv.
https://api.example.com/users/{{trigger.output.user_id}} - Headers: Key-value-paren voor auth, Content-Type etc.
- Query Parameters: Netter dan in de URL hardcoded
- Body: JSON met variabelen (bij POST/PUT/PATCH)
Response gebruiken:
{{http_node.output.status}} → Statuscode (200, 404, etc.)
{{http_node.output.data}} → Response Body
{{http_node.output.data.user.name}} → Genest veld
File Search Node: bedrijfskennis doorzoeken
Doorzoekt jullie Knowledge Folders en geeft de meest relevante resultaten terug. Ideaal voor RAG-patronen (Retrieval Augmented Generation).
Configuratie:
- Knowledge Folder kiezen
- Zoekopdracht definiëren (Manual, Auto of AI Prompt)
- Max. resultaten vastleggen (standaard: 10)
Wat een Knowledge Folder accepteert: Doorzoekbaar zijn tekstgebaseerde formaten, dus PDF's, Word-documenten, Markdown en presentaties. Tabellen (Excel, CSV), afbeeldingen, audio en video accepteert een Knowledge Folder niet. Zulke data haal je in de workflow via een Action uit het bronsysteem of verwerk je in de Code Node. Dat is de meest voorkomende verklaring dat een bestand wel in de folder ligt, maar nooit als treffer verschijnt.
Aanbevelingen voor max. resultaten:
- 1-3: Gefocuste, specifieke aanvragen
- 5-10: Als bredere context nodig is
- 10+: Uitgebreide zoekopdrachten (kan performance beïnvloeden)
{{file_search.output.results}} → Alle resultaten
{{file_search.output.results[0].text}} → Tekst van de meest relevante chunk
{{file_search.output.results[0].similarity}} → Relevantie-score (0-1)
{{file_search.output.results[0].fileName}} → Bestandsnaam
{{file_search.output.results[0].fileUrl}} → URL naar het bronbestand
{{file_search.output.results[0].mimeType}} → Bestandsformaat (bijv. application/pdf)
{{file_search.output.results[0].fileId}} → Interne File-ID
{{file_search.output.results[0].externalId}} → ID in het verbonden bronsysteem
{{file_search.output.results[0].connectionId}} → ID van de integration-verbinding
{{file_search.output.results[0].fileSize}} → Bestandsgrootte in bytes
{{file_search.output.results[0].pageCount}} → Aantal pagina's
Uitgebreide metadata (sinds mei 2026): File-Search-Nodes en Folder-Tools leveren nu extra fileId, externalId, connectionId, fileSize en pageCount, plus subsource, subname en syncParams als referenties naar de bron-integratie. Daarmee laten treffers zich netjes dedupliceren, terug naar het bronsysteem verlinken en op grootte of aantal pagina's filteren voordat ze naar een Agent gaan.
Web Search Node: internet doorzoeken
Doorzoekt het internet en levert actuele informatie. Perfect voor fact-checking, marktonderzoek of snel veranderende data.
Modi:
- Automatisch: AI genereert de optimale zoekopdracht
- Manual: Je geeft de exacte zoektermen op
- Prompt: Instructies waaruit de AI een zoekopdracht genereert
Action Node: handelen in verbonden apps
Voert acties uit in verbonden integraties: Slack-berichten versturen, Google Sheets bijwerken, Jira-tickets aanmaken, e-mails versturen.
Voorbeelden per integratie:
- Slack: bericht sturen, DM sturen, kanaal aanmaken
- Google Sheets: rij toevoegen, rij bijwerken, cel wijzigen
- Gmail: e-mail sturen, concept aanmaken, label toevoegen
- Notion: pagina aanmaken, database-item bijwerken
- CRM: contact/deal aanmaken, activiteit loggen
Nieuw in de integratie-catalogus september 2026
Langdock heeft de catalogus uitgebreid met drie systemen die vooral in operations en IT relevant zijn. Alle drie staan in de Action Node net zo beschikbaar als in de chat:
- ServiceNow: IT-service-management via OAuth. Incidents aanmaken, bijwerken en ophalen, Comments en Work Notes aanvullen, Tasks en Service-Catalog-items doorzoeken en Configuration Items in de CMDB opvragen. Voorwaarde is een OAuth-applicatie op de eigen ServiceNow-instantie; de instantie-URL geven gebruikers bij het verbinden op, tenzij Admins een standaard hebben vastgelegd.
- UiPath (Orchestrator): Jobs starten, Queue-Items inzetten, folders en processen weergeven, jobs en audit-logs analyseren. Ondersteund wordt uitsluitend UiPath Automation Cloud, niet Automation Suite of andere self-hosted varianten. Omdat UiPath OAuth-applicaties per organisatie registreert, bestaat hier geen centrale Langdock-client: een UiPath-Admin legt de vertrouwelijke applicatie aan, een Workspace-Admin voert Application ID en Secret in als eigen OAuth-Client.
- UiPath Automation Hub: Tweede, aparte integratie met eigen authenticatie via Open-API-Token. Daarmee doorzoek je automatiseringsideeën, categorieën en toepassingen en lees je de pipeline-context uit. Praktisch als een workflow de automatiseringsbacklog moet verrijken in plaats van robots te starten.
- Shopify Admin: Loopt altijd via een eigen Shopify-app en dus via Bring Your Own OAuth Client. De Client Secret hoort in de Workspace-Admin-instellingen, nooit in een chat.
Eigen integratie via chat: Integration Builder Agent Oktober 2026
Ontbreekt een tool in de catalogus, dan hoef je de integratie niet meer veld voor veld zelf te configureren. De Integration Builder Agent bouwt hem vanuit een gesprek: je beschrijft de tool en wat je nodig hebt, voegt eventueel de API-documentatie toe, en de agent onderzoekt de API, richt de authenticatie in (OAuth, API key of none) en maakt passende Actions en Triggers aan. Aan het eind krijg je een samenvatting met het auth-type en de scopes. Starten kan via de template in de chat, via Integrations → Add integration → Start building of als gedupliceerde template onder Agents → Browse templates.
Voorwaarde: De agent werkt via de Langdock-integratie zelf. Die heeft een connection nodig met een API key die de scope Integrations API heeft, als workspace-key van de admin of als persoonlijke key, mits de admin die scope daarvoor toestaat. Is de nieuwe integratie verbonden, dan staan de Actions klaar in chat, agents en de Action Node van je workflows. Op dedicated deployments ontbreekt de banner; gebruik daar de agent-template.
Connections: toegang tot integraties
Elke Action Node en elke Integration Trigger heeft een Connection nodig, dus een opgeslagen authenticatie tussen Langdock en de externe tool. Er zijn vier typen:
| Type | Waarvoor | Deelbaar? |
|---|---|---|
| OAuth | Google Workspace, Microsoft 365, Slack, HubSpot | Nee |
| API Key | OpenAI, Stripe, eigen integraties | Ja |
| Service Account | Door Admins vastgelegde Enterprise-toegangen | Ja |
| None | Openbare API's zonder authenticatie | Ja |
Connections zijn in de basis gebruikersgebonden. Iedereen ziet alleen de toegangen die hij zelf heeft aangelegd, en een OAuth-Connection loopt altijd met de rechten van de geauthenticeerde persoon. OAuth-toegangen laten zich daarom niet direct doorgeven: zou je het token delen, dan zouden derden in naam van de oorspronkelijke gebruiker kunnen handelen. De drie andere typen kunnen Workspace-Admins gericht vrijgeven, aan individuele gebruikers, aan groepen, aan Workspace-API-Keys of aan de hele workspace.
Om toch een heel team dezelfde Action te laten gebruiken, bestaat de preselected connection op de Agent: iedereen die de Agent uitvoert, loopt via die ene toegang, zonder de toegangsgegevens ooit te zien. Zonder voorselectie gebruikt iedereen zijn eigen credentials.
Heb je meerdere toegangen tot dezelfde integratie, bijvoorbeeld twee Slack-workspaces, dan kun je er één als standaard markeren. Langdock lost in deze volgorde op:
- Preselected connection op de Action
- Standaard-Connection van de gebruiker
- Vraag welke toegang moet worden gebruikt
Action-Level Scopes: welke Actions jouw workspace aanbiedt
Niet elke Action van een integratie is automatisch beschikbaar. Elke Action heeft bepaalde OAuth-Scopes bij de aanbieder nodig, bijvoorbeeld Calendars.ReadWrite voor het wijzigen van Outlook-afspraken. Workspace-Admins sturen onder Scopes and Action Access in de integratie-instellingen aan welke Actions actief zijn en welke Scopes Langdock bij het verbinden aanvraagt. Wisselen kan daar tussen Scope view en Action view.
- New actions enabled by default: Staat de schakelaar aan, dan activeert Langdock nieuw toegevoegde Actions automatisch, mits de nodige Scopes al gedekt zijn. Staat hij uit, dan blijven nieuwe Actions inactief tot iemand ze heeft gecontroleerd en vrijgegeven.
- Langdock Client (Default) en Custom OAuth Client met Scope Sync: De aangevraagde Scopes blijven automatisch synchroon met de geactiveerde en gedeelde Actions. Activeer je een Action, dan komen de nodige Scopes na een bevestiging erbij; deactiveer je hem, dan verdwijnen ze weer, tenzij een andere Action ze nodig heeft.
- Custom OAuth Client met Fixed Scopes: Hier onderhouden Admins de Scope-lijst zelf. Actions zonder passende Scope dragen een Missing scope-badge. Activeren laat zo'n Action zich wel, uitvoeren niet, zolang de Scope in de OAuth-app ontbreekt.
- Native Actions (bestandsbijlagen, folder-sync, knowledge-toegang, ID-resolutie) zijn altijd actief. Hun Scopes laten zich in de sync-modi niet verwijderen.
- Export scope configuration: Levert een CSV met naam, beschrijving, benodigde Scopes, actief-status en gedeelde toegang per Action. Praktisch als de IT vóór go-live van een workflow wil weten welke rechten daadwerkelijk worden aangevraagd.
Mis je in de Action Node een Action die er volgens de documentatie zou moeten zijn, dan ligt dat dus meestal niet aan de workflow maar aan deze vrijgave. En na elke Scope-wijziging moeten gebruikers hun Connection één keer vernieuwen, anders grijpen de nieuwe rechten niet. Sinds half september 2026 vallen deze vrijgaven onder de verzamelnaam Plugins: Langdock brengt integraties, Skills en tools daar op één plek samen. Aan de logica van Action-Level Scopes verandert dat niets, alleen aan de weg ernaartoe.
Microsoft-Scopes opzoeken sinds september 2026
Voor de Microsoft-integraties documenteert Langdock sinds september 2026 de minimaal benodigde gedelegeerde Scopes per Action, opgesplitst per dienst: Outlook Calendar, Outlook Email, OneDrive, SharePoint, Teams, Planner, To Do, Entra, Power BI, Dynamics 365 en Excel. Daar staat zwart op wit welke Microsoft Graph-Scope achter een Action zit, bijvoorbeeld Files.Read.All voor Get file in SharePoint, Sites.ReadWrite.All voor Create list item of Mail.Send voor verzending vanuit je eigen mailbox. Elke Connection vraagt daarnaast de basis-Scopes openid, email, offline_access en User.Read aan. Houd daar rekening mee voordat je de IT een lijst stuurt: een workflow die een Outlook-mail beantwoordt, heeft Mail.ReadWrite en Mail.Send samen nodig, en voor een gedeelde mailbox telkens de .Shared-variant.
Image Generation Node: afbeeldingen genereren
Genereert afbeeldingen uit text-prompts direct in de workflow. Ideaal voor marketing-assets, social media content of dynamische visualisaties.
Configuratie:
- Prompt: Tekstbeschrijving van de gewenste afbeelding (Manual, Auto of AI Prompt Mode). Ondersteunt variabelen, bijv.
Een {{trigger.output.style}} afbeelding van {{agent.output.structured.subject}} - Beeldmodel: Twee modellen betrokken, een LLM optimaliseert de prompt, een beeldmodel genereert de afbeelding. In Manual Mode wordt alleen het beeldmodel gebruikt. Beschikbaar zijn onder meer GPT Image 2 (sinds april 2026, tot 2K-resolutie) en Stable Diffusion. De exacte modellenlijst hangt af van de workspace-configuratie.
- Aspect ratio: Square (1:1, social media/profielfoto's), Landscape (16:9, presentaties/banners), Portrait (9:16, stories/mobiel)
- Stijl-presets: Auto, Fotorealistisch, Digital Art, Olieverfschilderij, Aquarel, Sketch, Anime, 3D Render, Minimalistisch, Cinematic
Output:
| Veld | Beschrijving |
|---|---|
{{image_gen.output.imageUrl}} | URL naar de gegenereerde afbeelding (7 dagen geldig) |
{{image_gen.output.imagePath}} | Bestandspad |
{{image_gen.output.attachmentId}} | Attachment-ID voor verdere verwerking |
{{image_gen.output.prompt}} | De daadwerkelijk gebruikte prompt |
{{image_gen.output.aspectRatio}} | Gekozen aspect ratio |
Limieten: Timeout 60 seconden, alleen PNG-formaat, geen image-to-image-functie, URL-geldigheid 7 dagen.
Verdere verwerking: Agent Node (beeldanalyse), Action Node (in Slack/e-mail delen), HTTP Request (upload naar externe server), Loop Node (batch-generatie van meerdere afbeeldingen).
Loop Node: over lijsten itereren
Verwerkt arrays van data: doorloop een lijst van klanten, bestellingen of bestanden en pas op elk element dezelfde logica toe.
Configuratie:
- Input Array: Het array waarover wordt geïtereerd (bijv.
{{trigger.output.customers}}) - Max Iterations: Veiligheidslimiet (standaard: 200, maximum: 2.000)
- Concurrency: Off (sequentieel, standaard) of On (parallel, sneller bij onafhankelijke iteraties, volgorde dan niet gegarandeerd)
- Collect Outputs: Aggregeert alle iteraties in één output-object met
iterations(array van index, item-data en uitvoeringsdetails) entotal(aantal). Opeenvolgende Nodes benaderen zo gebundeld alle resultaten.
{{loop_node.output.currentItem}} → het actuele data-object
{{loop_node.output.currentItem.name}} → geneste toegang
{{loop_node.output.currentIndex}} → actuele positie (0-gebaseerd)
{{loop_node.output.total}} → totaal aantal
Loops met Agent-Nodes kunnen duur worden. 100 elementen × 0,10 € per Agent-Call = 10 € per workflow-run. Bereken vooraf de kosten en stel een realistische Max-Iterations-limiet in.
Delay Node: pauze inlassen
Pauzeert de workflow-uitvoering gedurende een gedefinieerde duur (1 seconde tot 24 uur).
Typische toepassingen:
- API-polling (regelmatig controleren of een proces klaar is)
- Rate-limiting (API-throttling voorkomen)
- Retry-logica met backoff
User Input Node: wachten op een mens sinds september 2026
Pauzeert de run tot een persoon beslist of ontbrekende gegevens aanlevert, en zet hem daarna voort op de passende tak. Het verloop met notificaties en Monitor beschrijft hoofdstuk 8.
- Type Approval: Je schrijft een Message en verbindt de uitgangen Approve en Reject.
- Type Form: Je schrijft een Description, maakt velden aan en verbindt Continue. Een Reject-uitgang is er hier niet.
- Foutgedrag: Bij Approval is Continue (using error output) niet beschikbaar, alleen Stop workflow of Add error callback.
Transcribe Audio Node: audio omzetten naar tekst sinds september 2026
Sinds 18-09-2026 zet deze Node audio direct in de workflow om naar tekst. Typische bronnen zijn een bestandsupload in een formulier, een e-mailbijlage, een bestand uit Drive of een webhook. De tekst geef je daarna aan een Agent Node die er een verslag, samenvatting of classificatie van maakt. Ondersteunde formaten, maximale lengte en het gebruikte model noemt de publieke documentatie nog niet: test vóór productief gebruik met een realistische opname.
Send Notification Node: notificaties
Verstuurt alerts direct naar je Langdock-inbox. Ondersteunt Markdown-opmaak en variabelen.
Ontvanger: Bij handmatig of formuliergestarte workflows de activerende gebruiker, bij scheduled, webhook of integration workflows de workflow-maker. Voor externe ontvangers gebruik de Action Node met Slack, Gmail etc.
Invoermodi: Manual (direct bericht), Auto (AI genereert op basis van context) of Prompt AI (eigen AI-instructies).
Goede notificaties bevatten:
- Duidelijke kop met prioriteit
- Relevante data (naam, ID, categorie)
- Concrete volgende stap ("Reageer binnen 1 uur")
Output Node: resultaten opslaan & weergeven
De Output Node is het eindpunt van een workflow. Hij slaat een opgeloste waarde op als resultaat van de workflow-run, zichtbaar in de run-history, via de API en direct in de chat.
Bijzonder belangrijk bij chat-integratie: Wanneer een workflow vanuit de chat wordt gestart, verschijnt de output als opgemaakt resultaatpaneel direct in het gesprek, met workflow-naam, uitvoeringstijd en inhoud.
Configuratie:
- Value Field: Template-expressie met variabelen uit eerdere Nodes (alleen Manual Mode)
- Slug: Automatisch gegenereerde camelCase-identifier, moet bij meerdere Output Nodes uniek zijn
- Meerdere Outputs: Een workflow kan meerdere Output Nodes bevatten, die elk aparte sleutels in het resultaat-object leveren
// Enkele output
{{output_node.output.value}}
// Voorbeeld: samenvatting als output
Value: "{{agent.output.structured.summary}}"
// Voorbeeld: gecombineerde data
Value: "Rapport voor {{trigger.output.customer_name}}: {{agent.output.structured.analysis}}"
Variabelen & datastroom
▼Het grondprincipe
Variabelen zijn het zenuwstelsel van je workflow. Als een Node klaar is, wordt zijn output als variabele beschikbaar, en alle volgende Nodes kunnen erop toegrijpen.
Syntax
{{node_name.output.field_name}}
Opsplitsing:
node_name= De unieke naam van je Node (bijv.form1,analyze_data)output= Het standaard output-object van elke Nodefield_name= Het specifieke dataveld
Geneste data
Echte data is zelden plat. Gebruik dot-notation voor geneste toegangen:
{{node.output.user.profile.email}} → Genest object
{{api_response.output.data.items[0].title}} → Array-element
{{trigger.output.tags}} → Volledig array
{{agent.output.structured.summary}} → Structured Output
Autocomplete gebruiken
Variabelen meervoudig gebruiken
Een output kan in willekeurig veel opeenvolgende Nodes worden gebruikt:
Trigger (form1) →
├─ Agent (analyseer {{form1.output.message}})
├─ HTTP Request (log {{form1.output.email}})
└─ Notification (bericht over {{form1.output.priority}})
Variabelen combineren
Meng data uit verschillende Nodes in één veld:
Nieuwe bestelling #{{trigger.output.order_id}} van {{customer.output.name}} voor {{trigger.output.amount}} €
Nodes hernoemen
Als je een Node hernoemt, worden alle variabele-referenties automatisch bijgewerkt, geen handmatig nawerk nodig. Geef Nodes daarom vanaf het begin sprekende namen:
- ✔
FeedbackAnalyseren,PrioriteitControleren,SlackBericht - ✘
agent1,condition2,action3
Omgevingsvariabelen: configuratie één keer onderhouden sinds september 2026
Sinds 18-09-2026 kun je waarden die meerdere workflows nodig hebben één keer als Environment Variable definiëren en overal hergebruiken: basis-URL's, ID's van channels of mappen, drempelwaarden. Zo blijft de configuratie in alle workflows gelijk en staat ze nergens hard gecodeerd in een Node.
- Wanneer zinvol: Zodra dezelfde waarde in meer dan één workflow opduikt. Verandert dan het channel of de drempel, dan pas je hem op één plek aan.
- Nog open: Syntax, reikwijdte en de omgang met secrets beschrijft de publieke documentatie nog niet. Controleer bij het eerste gebruik in de builder hoe de variabele in het veld wordt ingevoegd, en sla inloggegevens er pas op als duidelijk is wie ze kan zien.
Field Modes: Auto, Manual & AI Prompt
▼Elk configuratieveld in een Node kan in één van drie modi worden gedreven. De juiste keuze heeft directe invloed op kwaliteit, kosten en controle.
Auto Mode
De AI bepaalt automatisch de passende waarde op basis van de context van eerdere Nodes.
| Voordelen | Snelle setup, zeer flexibel, dekt edge cases af |
| Nadelen | Verbruikt AI Credits, minder controle, kan bij veelvuldige uitvoering duur worden |
| Ideaal voor | Eenvoudige data-mapping, als de context voor de hand ligt |
Manual Mode
Je geeft exacte waarden op of refereert aan variabelen, geen AI-verwerking.
| Voordelen | Volledige controle, geen AI Credits, snelste uitvoering, voorspelbaar |
| Nadelen | Handmatige inspanning, geen dynamische content |
| Ideaal voor | Vaste waarden (API-keys, e-mailadressen), exacte variabele-referenties, templates |
Veld: "E-mail-onderwerp"
Mode: Manual
Waarde: "Nieuwe bestelling #{{trigger.output.order_id}} van {{trigger.output.customer_name}}"
Resultaat: "Nieuwe bestelling #12345 van Max Müller"
AI Prompt Mode
Natuurlijk-talige instructies waaruit de AI dynamische content genereert.
| Voordelen | Intelligente, contextafhankelijke content, bespaart template-werk |
| Nadelen | Verbruikt AI Credits, trager, output kan variëren |
| Ideaal voor | E-mailteksten, samenvattingen, dynamische berichten |
Veld: "E-mail-tekst"
Mode: AI Prompt
Instructie: "Schrijf een vriendelijk antwoord van 2 alinea's op {{trigger.message}},
dat ingaat op het probleem {{agent.issue_category}} en een oplossing aanbiedt."
Beslisboom: welke Mode?
Is de waarde altijd hetzelfde?
└─ Ja → Manual Mode (statische tekst)
Komt de waarde ongewijzigd uit een eerdere Node?
└─ Ja → Manual Mode (met variabelen)
Moet AI de content genereren of transformeren?
├─ Ja → AI Prompt Mode
└─ Nee → Auto Mode (alleen bij eenvoudige mapping)
Guardrails & Beveiliging
▼De Guardrails Node valideert content met AI-gestuurde controles, voordat die naar klanten gaat, wordt opgeslagen of gepubliceerd.
Beschikbare Guardrails
PII-detectie (persoonsgegevens)
Detecteert namen, e-mailadressen, telefoonnummers, adressen, creditcardnummers etc.
- Aanbevolen drempelwaarde: 0,7-0,8
- Inzet: AVG-compliance, voordat data extern wordt gedeeld
Moderation
Controleert op ongepaste, schadelijke of beledigende content.
- Aanbevolen drempelwaarde: 0,6
- Inzet: door gebruikers gegenereerde content, openbare communicatie
Jailbreak-detectie
Detecteert pogingen om AI-veiligheidscontroles te omzeilen.
- Aanbevolen drempelwaarde: 0,7
- Inzet: openbaar toegankelijke AI-interfaces, user-prompts valideren
Hallucinatie-detectie
Detecteert wanneer AI-gegenereerde content onjuiste of niet-verifieerbare informatie bevat.
- Aanbevolen drempelwaarde: 0,6-0,7
- Inzet: op feiten gebaseerde content-generatie, klantencommunicatie
Custom Evaluation
Definieer eigen validatiecriteria in natuurlijke taal.
- Inzet: brand voice controleren, domeinspecifieke regels, eigen kwaliteitsstandaarden
Criteria: "Controleer of het antwoord voldoet aan onze brand voice:
- Professionele maar vriendelijke toon
- Geen vaktermen of afkortingen
- Klant wordt bij naam aangesproken
- Duidelijke volgende stappen worden genoemd"
Drempelwaarden goed instellen
| Drempelwaarde | Gedrag | Inzet |
|---|---|---|
| 0,3-0,5 | Toegeeflijk | Vermijden van false positives |
| 0,6-0,7 | Evenwichtig | De meeste toepassingen |
| 0,8-0,9 | Streng | Hoogrisico-scenario's |
| 0,9-1,0 | Zeer streng | Alleen evidente overtredingen |
Meerdere Guardrails combineren
In de praktijk worden vaak meerdere Guardrails in één Node geactiveerd. Een typische combinatie: PII-detectie + Moderation + Custom Evaluation voor brand voice.
Human in the Loop: wanneer de mens beslist
▼Voor gevoelige stappen kun je de run stilzetten tot een mens heeft beslist. Daarvoor zijn er twee hulpmiddelen: de User Input Node sinds september 2026 voor goedkeuringen en vragen midden in de flow, en de schakelaar Human in the loop op de Action Node, die een afzonderlijke actie pas uitvoert nadat iemand met Editor-toegang die heeft bevestigd.
Verloop
- De workflow bereikt de User Input Node en pauzeert
- De personen onder Settings → Notifications → Recipients krijgen een inbox-notificatie. Testruns versturen er geen
- Iemand met Editor-toegang reageert, direct vanuit de notificatie of in de Monitor onder Action required → Review
- De workflow loopt verder op de passende tak (Approve, Reject of bij Type Form Continue)
Let op, twee verschillende kringen: Reageren mag iedereen met Editor-toegang, maar alleen de ingevoerde Recipients krijgen een notificatie, niet alle editors. Wie een goedkeuring moet geven, moet dus op de ontvangerslijst staan. En omdat testruns geen notificatie versturen, controleer je het goedkeuringspad het best met een gepubliceerde run.
Wanneer zinvol?
- ✔ Financiële transacties boven een drempelwaarde
- ✔ Onomkeerbare acties (data verwijderen, contract versturen)
- ✔ Klantencommunicatie die kwaliteitscontrole nodig heeft
- ✔ Productiewijzigingen met risicopotentieel
- ✔ Ontbrekende gegevens midden in de run opvragen (User Input, Type Form)
Wanneer NIET zinvol?
- ✘ Routine-acties met laag risico
- ✘ Stappen die direct moeten worden uitgevoerd
- ✘ Hoogfrequente acties (worden anders een bottleneck)
Monitor: openstaande goedkeuringen op één plek
Goedkeuringen hoef je niet in de losse workflow op te zoeken. Onder Workflows → Monitor verzamelt Langdock alle runs die op iemand wachten: het onderdeel Action required toont de gepauzeerde runs, via Review zie je de details en beslis je met Approve of Reject.
Voor teams is dat de eigenlijke hefboom: zolang goedkeuringen alleen als notificatie bestaan, hangen ze aan de aandacht van individuele personen. De Monitor maakt er een gedeelde lijst van die elke Editor kan afwerken.
Smart Approval met Conditions
Combineer Conditions met Human in the Loop, om goedkeuring alleen bij behoefte op te vragen:
Agent: Factuurbedrag berekenen
Condition: Bedrag > 5.000 €?
├─ Ja → User Input (Approval): Betaling controleren → Betaling uitvoeren
└─ Nee → Betaling direct uitvoeren
Zo heb je automatisering voor routine-gevallen en controle voor uitzonderingen.
Versiebeheer & Deployment
▼Draft Version (v0)
Jouw sandbox om te experimenteren. Wijzigingen hier hebben geen invloed op productie. Test uitvoerig voordat je publiceert.
Auto-Save & Change Summaries sinds april 2026: Drafts worden automatisch opgeslagen, geen "Opslaan"-klik meer nodig. Bij het publiceren stelt Langdock een Change Summary voor (welke Nodes/velden zijn gewijzigd sinds de laatste versie). De summary belandt in de versiegeschiedenis en maakt rollback-beslissingen later makkelijker traceerbaar.
Node-hernoemingen tellen nu als wijziging sinds juni 2026: Als je een Node hernoemt, herkent Langdock dat als wijziging en neemt het op in de Change Summary. Voorheen bleven pure hernoemingen onopgemerkt, zodat een gepubliceerde versie ondanks afwijkende Node-namen als ongewijzigd gold. Nu is de versiegeschiedenis ook bij cosmetische hernoemingen compleet.
Gepubliceerde versies
Als je tevreden bent, maak je een nieuwe versie (v1.0.0, v1.1.0 etc.). Gepubliceerde versies zijn:
- Onveranderlijk: Kunnen niet meer worden bewerkt
- Actief voor Triggers: Alleen actieve versies reageren op echte events
- Gedocumenteerd: Elke versie heeft een beschrijving van de wijzigingen
- Rollback-mogelijk: Je kunt op elk moment een oudere versie reactiveren
Versienummers (Semantic Versioning)
| Bump-type | Voorbeeld | Wanneer? |
|---|---|---|
| Patch | 1.0.0 → 1.0.1 | Bugfixes, kleine aanpassingen |
| Minor | 1.0.0 → 1.1.0 | Nieuwe features of Nodes |
| Major | 1.0.0 → 2.0.0 | Breaking Changes |
Workflow-status
| Status | Betekenis |
|---|---|
| Not deployed | Wordt gebouwd, geen Triggers actief |
| On | Gepubliceerd en reageert op Triggers |
| Off | Bestaat, maar tijdelijk gedeactiveerd |
Workflows API: workflows vanuit eigen systemen beheren sinds september 2026
De publieke Workflows API ontsluit de hele levenscyclus: workflows opsommen, ophalen, aanmaken, wijzigen, publiceren en verwijderen, plus runs pagina voor pagina lezen. Zo kun je bijvoorbeeld een workflow vanuit een repository synchroniseren of een draft automatisch publiceren.
| Scope | Toegestaan |
|---|---|
WORKFLOW_API (Workflow Read API) | Opsommen, afzonderlijk ophalen, gepagineerde runs (/workflows/v1/runs) en de platte run-export |
WORKFLOW_WRITE_API | Aanmaken, wijzigen, publiceren. Op persoonlijke keys alleen als de admin dat toestaat |
WORKFLOW_DELETE_API | Verwijderen. Alleen op workspace-keys, nooit op persoonlijke |
- Draft en live gescheiden:
nodesenedgesbeschrijven de draft (v0),activeVersionde gepubliceerde versie. Secrets komen zwartgelakt terug en blijven behouden als je de zwartgelakte waarde ongewijzigd terugstuurt. - Limieten via API: Het object
limitsbevatmonthlyCostUsd,perRunCostUsdenmaxExecutionsPerHour. - Wie handelt: Workspace-keys draaien als service-account, persoonlijke keys als hun eigenaar. Nieuw aangemaakte workflows blijven privé tot ze via
shareWithof handmatig gedeeld worden. Gepagineerde runs vereisen Editor-toegang.
Kostenmanagement
▼Waar ontstaan kosten?
- Agent Nodes: Verbruiken AI Credits op basis van model en token-hoeveelheid
- Auto Mode Fields: Gebruiken AI op de achtergrond → AI Credits
- AI Prompt Mode Fields: Gebruiken AI voor content-generatie → AI Credits
- Web Search: Kosten per zoekopdracht
- Loops: Vermenigvuldigen de kosten per element
Kosten-driver nr. 1: Loops met Agent Nodes
De meest voorkomende kostenval: een loop over 100 elementen met een Agent-Call per element.
Rekening: 100 elementen × 0,10 € Agent-cost = 10 € per workflow-run
Bij dagelijkse uitvoering: 300 € per maand, alleen voor deze ene workflow.
Loops met Agent-Nodes kunnen snel duur worden. Bereken altijd de verwachte maandelijkse kosten vóór de go-live: kosten per run × verwachte runs per dag × 30.
Strategieën voor kostenbesparing:
- Batching: In plaats van 100 losse Agent-Calls → elementen in groepen van 10 samenvatten
- Goedkopere modellen: Niet elke taak heeft een topmodel nodig zoals GPT-6 Astra, GPT-5.6 Sol, Claude Opus 5 of Claude Fable 5.1 (sinds 01-09-2026 op Langdock, EU-gehost en in workspaces met Fable 5 automatisch geactiveerd). GPT-6 Astra staat sinds 07-09-2026 op Langdock beschikbaar en is OpenAI's tot nu toe sterkste model, volgens Langdock een stap boven GPT-5.6 Sol bij complex reasoning, coding, computer use, research en vakinhoudelijke taken. Het is EU-gehost en werd in alle workspaces waar al een eerdere GPT-versie actief was, automatisch vrijgeschakeld; de toegang regelen Admins in de workspace-settings. Bestaande workflows wisselen daardoor niet vanzelf: een Agent Node houdt het model dat erin is vastgelegd. Nieuw is alleen de keuze, en juist daar loont de tweede blik voordat iemand in een Loop Node op het grootste model overschakelt. Voor eenvoudige categorisering volstaat vaak Haiku 4.5, GPT-5.6 Luna of Gemini 3.8 Flash, dat sinds 02-09-2026 Google's actuele Flash-model in Langdock is en Gemini 3.7 Flash vervangt. Ook Gemini 3.8 Flash is EU-gehost en in workspaces met een eerdere Gemini-versie automatisch geactiveerd. Een modelwissel in een lopende workflow hoort toch in de Draft-versie en één keer door de testruns: goedkoper betekent niet automatisch gelijk goed voor jouw prompt. Nieuw sinds eind september 2026: Claude Opus 5.5, GPT-6 Sol en GPT-6 Luna (23-09), Claude Sonnet 5.5 (28-09) en GPT-6.1 Sol (30-09), allemaal in de EU gehost en automatisch geactiveerd waar het betreffende voorgangermodel draaide. Voor agentische taken met meerdere stappen is Sonnet 5.5 de nieuwe standaard, Opus 5.5 blijft voorbehouden aan de zwaarste analyses en is volgens de prijslijst zelfs goedkoper dan Opus 5. GPT-6 Luna is gebouwd voor gerichte taken in grote aantallen en dus een kandidaat voor Agent Nodes in loops, GPT-6 Sol en GPT-6.1 Sol mikken op complexe, agentische flows. Ook hier geldt: bestaande Agent Nodes wisselen niet vanzelf. Nieuw in oktober 2026: Claude Haiku 5.5 (8 okt.) is volgens Anthropic het goedkoopste, snelste en sterkste kleine Claude-model tot nu toe, gebouwd voor werk in grote aantallen zoals samenvattingen en subagent-taken. Daarmee is het de logische opvolger van Haiku 4.5 voor categorisering en Agent Nodes in loops. Gemini 4 Argon (13 okt.) brengt sterkere reasoning en schrijfvaardigheid voor complexe vakinhoudelijke taken en flows met meerdere stappen. Beide worden in de EU gehost en zijn automatisch geactiveerd waar al Anthropic- of Gemini-modellen actief waren. Ook hier houden bestaande Agent Nodes het ingestelde model.
- Manual in plaats van Auto Mode: Vaste waarden en eenvoudige variabele-referenties kosten niets
- Conditions vóór Agent Nodes: Filter irrelevante data voordat die de dure Agent bereikt
Kosten monitoren
- Controleer de Usage-tab na elke testrun
- Stel Spending Limits in de workflow-instellingen in
- Bereken de verwachte maandelijkse kosten vóór de go-live:
kosten per run × verwachte runs per dag × 30 - CSV-export van de API-kosten sinds april 2026: Admin-Usage laat zich nu als CSV exporteren, ideaal voor interne cost-rapporten, verrekening per team/kostenplaats of afstemming met het workspace-budget.
Limieten
| Limiet-type | Gedrag |
|---|---|
| Monthly Limit (per workflow) | Nieuwe runs worden geblokkeerd zodra de maandlimiet is bereikt. Ingebouwde alerts bij 80% en 95% van de workflow-maandlimiet. Voortgangsbalk toont verbruik tegen limiet. Default nieuwe workflows: 25 USD/maand |
| Execution Limit (per run) | Individuele run wordt gestopt als hij het bedrag overschrijdt (voorkomt loop/retry-escalatie) |
| Execution Steps | Max. 2.000 stappen per workflow-uitvoering (workspace-standaard). Elke Node-uitvoering telt als stap, ook elke iteratie in een Loop. Beschermt tegen eindeloze loops |
| Max Executions Per Hour | Beperkt hoe vaak de workflow per uur mag starten, beschermt tegen trigger storms, vooral bij webhooks. Standaard 100, instelbaar tot maximaal 5.000 runs per uur |
| Alert Thresholds | Extra eigen bedragen (bijv. 25 USD, 50 USD) waarbij je per e-mail wordt geïnformeerd |
Workspace-Admin-controle (Settings → Products → Workflows):
- Workspace Spend Limit: Organisatiebrede bovengrens voor alle workflow-AI-kosten. Standaard 500 €, bereik 0 tot 100.000 €. Is die bereikt, dan stoppen alle uitvoeringen die AI-modellen nodig hebben, onafhankelijk van de instellingen van de individuele workflows
- Afrekenperiode: In trial-workspaces telt het volledige trial-gebruik (Lifetime usage, geen reset), in alle andere plannen de lopende kalendermaand met reset op de eerste van de maand (Billing month)
- Default Monthly Limit per Workflow: Standaard voor nieuwe workflows (1-10.000 USD, default 25 USD)
- Maximum Monthly Limit per Workflow: Bovengrens die workflow-eigenaren niet mogen overschrijden (default: onbeperkt). Verlaag je deze waarde, dan worden bestaande workflow-limieten daarboven automatisch omlaag aangepast, Langdock toont je vooraf een samenvatting van de betrokken workflows. Admin-gezette override-limieten blijven daarvan ongemoeid
- Monthly Run Limit: Maximaal aantal workflow-uitvoeringen per maand, afhankelijk van het plan (in de cloud standaard 2.500). Geldt los van het budget, ook een workflow zonder AI-kosten telt mee
- Code Node Toggle: Admins kunnen het uitvoeren van Custom JavaScript workspace-breed deactiveren
- HTTP Node Toggle: Admins kunnen de HTTP Request Node workspace-breed deactiveren. Let op: JavaScript-Code Nodes bereiken externe API's nog steeds via
ld.request(). Wie uitgaande requests echt wil blokkeren, schakelt beide Nodes uit. Bestaande workflows falen daarna precies bij die stap
Admins krijgen in-app- en e-mailnotificaties bij 50%, 90% en 100% van de Workspace Spend Cap. Op dedicated deployments gaan de e-mails alleen uit als daar een e-mailverzending is geconfigureerd.
Wie wordt geïnformeerd?
Wie een workflow informeert, leg je in de workflow-Settings onder Notifications vast. De keuze geldt gelijk voor e-mail en inbox.
- Elke toegevoegde persoon start met beide thema's: Failures (mislukte runs) en Spend alerts (kostendrempels).
- Per persoon laat zich precies één van de twee thema's uitschakelen. Minstens één moet actief blijven, wie helemaal niets moet krijgen, hoort uit de lijst te worden verwijderd.
- De zelfingestelde Alert Thresholds gaan naar iedereen bij wie Spend alerts aan staat.
- Anti-spam-regel: Fout-e-mails over gepubliceerde runs gaan hoogstens één keer per uur uit. Daarna wacht de volgende e-mail tot er weer een gepubliceerde run succesvol was.
Kosten per workflow analyseren: Usage Export API
Naast de run-history bestaat er een endpoint die precies één regel per workflow levert en daarmee geschikt is voor reporting:
POST https://api.langdock.com/export/workflows
Terug komt een regel per workflow die in de gekozen periode runs of kosten had, templates uitgezonderd. Bevat onder andere workflow_name, status (ACTIVE, INACTIVE, NOT_DEPLOYED), runs, total_cost_usd, monthly_limit_usd, current_month_cost_usd en monthly_utilization_pct_current, dus de belasting van de maandlimiet.
- Is de analyse op gebruikersniveau in de workspace gedeactiveerd, dan ontbreken
workflow_owner_idenworkflow_owner_email, en zuiver privé-workflows vallen helemaal uit de export. - In BYOK-workspaces komen token-kolommen erbij (
sum_input_tokens,sum_cached_input_tokens,sum_cache_creation_tokens,sum_output_tokens), omdat de modelkeys daar in eigen huis liggen. group_byondersteunt deze export niet. Requests direct uit de browser blokkeert Langdock bewust, de key hoort server-side te worden opgeslagen.
Daarmee beantwoord je de vraag die in elke review terugkomt: welke tien workflows verbruiken het meeste budget, en hoe dicht zitten ze op hun limiet?
10 Workflow-Blueprints voor de praktijk
▼Blueprint 1: Klantfeedback-verwerking
Form Trigger
→ Agent: Sentiment, categorie, prioriteit analyseren (Structured Output)
→ Condition: Prioriteit = "hoog"?
├─ Ja → Notification: Team informeren
│ → Action: Slack-bericht naar #support
└─ Nee → (verder)
→ Action: Rij in Google Sheets toevoegen
Kosteninschatting: ~0,05 € per submission (één Agent-Call)
Blueprint 2: E-mail-triage & auto-routing
Gmail Trigger (nieuwe e-mail in support-inbox)
→ Agent: Aanvraag categoriseren, urgentie beoordelen (Structured Output)
→ Condition: Categorie controleren
├─ "Technisch probleem" → Action: Jira-ticket aanmaken
├─ "Sales-aanvraag" → Action: Slack-DM naar sales-team
├─ "Facturatievraag" → Action: Doorsturen naar boekhouding
└─ "Overig" → Notification: Manager informeren
→ Action: Label in Gmail instellen
Blueprint 3: Wekelijks geautomatiseerd rapport
Scheduled Trigger (maandag 8:00)
→ HTTP Request: Sales-data uit CRM ophalen
→ HTTP Request: Support-tickets uit Jira ophalen
→ Code: KPI's berekenen (omzet, ticket-volume, conversion rate)
→ Agent: Executive Summary genereren
→ Action: E-mail naar management-team met rapport
→ Action: Rapport in Google Drive opslaan
Blueprint 4: Sollicitatie-screening
Form Trigger (sollicitatie)
→ Agent: Cv analyseren, skills extraheren (Structured Output)
→ File Search: Vacaturebeschrijving in Knowledge Folder zoeken
→ Agent: Fit-score berekenen (0-100) op basis van eisen vs. profiel
→ Condition: Score controleren
├─ ≥ 80 → Action: Uitnodiging per e-mail versturen
├─ 50-79 → Action: In shortlist-sheet noteren + HR informeren
└─ < 50 → Action: Vriendelijke afwijzing per e-mail
→ Action: Alle data in recruiting-sheet loggen
Blueprint 5: Content-pipeline
Notion Trigger (nieuw content-item met status "Draft")
→ Agent: Briefing analyseren, SEO-keywords extraheren
→ Web Search: Concurrentie-content over dit onderwerp onderzoeken
→ Agent: Content-outline maken met USP's en keywords
→ Guardrails: Brand voice + tonaliteit controleren
→ Action: Outline in Notion-pagina schrijven
→ Notification: Content-manager informeren
Blueprint 6: Offerteaanvragen kwalificeren
Form Trigger (offerteaanvraag)
→ Web Search: Bedrijfsprofiel onderzoeken (grootte, branche, nieuws)
→ Agent: Lead-Scoring (hot/warm/cold) + Reasoning (Structured Output)
→ Condition: Score controleren
├─ "hot" → Action: Slack-alert naar Senior Sales
│ → Action: Afspraak-link per e-mail versturen
├─ "warm" → Action: In pipeline-sheet noteren
│ → Action: Nurturing-e-mail versturen
└─ "cold" → Action: Standaard-info per e-mail versturen
→ Action: CRM-item aanmaken
Blueprint 7: Meeting-voorbereiding
Calendar Trigger (meeting over 1u)
→ Code: Deelnemer-e-mails extraheren
→ HTTP Request: Klant-history uit CRM laden
→ File Search: Relevante documenten in Knowledge Folder zoeken
→ Agent: Meeting-brief maken (context, openstaande punten, aanbevelingen)
→ Action: Brief als Slack-DM naar meeting-maker versturen
Blueprint 8: Interne kennis-FAQ
Slack Trigger (bericht in #vragen-aan-ai)
→ File Search: Relevante informatie in Knowledge Folder zoeken
→ Condition: Relevante resultaten gevonden? (Score > 0.5)
├─ Ja → Agent: Antwoord op basis van zoekresultaten formuleren
│ → Action: In Slack-thread antwoorden
└─ Nee → Action: In Slack antwoorden: "Geen info gevonden, wordt geëscaleerd"
→ Notification: Kennis-manager informeren
Blueprint 9: Factuur-verwerking met approval
Gmail Trigger (nieuwe factuur)
→ Agent: Factuurgegevens extraheren (bedrag, leverancier, vervaldatum)
→ Guardrails: PII-check
→ Condition: Bedrag > 5.000 €?
├─ Ja → Human in the Loop: Goedkeuring inwinnen
│ → Action: Betaalopdracht aanmaken
└─ Nee → Action: Betaalopdracht direct aanmaken
→ Action: In boekhoudings-sheet noteren
→ Notification: Bevestiging aan finance-team
Blueprint 10: Concurrentie-monitoring
Scheduled Trigger (dagelijks 7:00)
→ Loop over concurrenten-lijst
Variabele: competitor
→ Web Search: "{{competitor.name}} nieuws laatste 24u"
→ Delay: 2 seconden (Rate Limiting)
→ Agent: Alle resultaten samenvatten en op relevantie wegen
→ Condition: Relevant nieuws gevonden?
├─ Ja → Action: Samenvatting per Slack naar #competitive-intel
└─ Nee → (niets doen)
→ Action: Wekelijks rapport in Google Sheets bijwerken
Best Practices & veelvoorkomende valkuilen
▼De 10 belangrijkste Best Practices
- Nodes duidelijk benoemen. "Feedback analyseren" in plaats van "Agent 1". Je toekomstige zelf zal je dankbaar zijn, en variabelen worden zelfverklarend.
- Eén workflow = één doel. Houd Workflows gefocust. Liever twee kleine workflows dan één monster-workflow die alles doet.
- Test elke Node individueel. Gebruik de Play-knop op elke Node voordat je verder bouwt. Fouten vroeg vinden bespaart tijd.
- Structured Output altijd activeren. Bij Agent Nodes in Workflows is er geen reden om ervan af te zien. Gegarandeerd formaat voorkomt parsing-fouten in opeenvolgende Nodes.
- Manual Mode als standaard. Gebruik Auto en AI Prompt Mode alleen wanneer nodig. Elke AI-mode-aanroep kost credits.
- Foutafhandeling inplannen. Vooral bij Scheduled Workflows: voeg notificaties toe zodat je meekrijgt als er iets misgaat.
- Kosten vóór go-live berekenen. Vooral bij loops en frequente Triggers kan het snel duur worden. Reken vooraf.
- Filter vroeg, verwerk laat. Conditions vóór dure Nodes (Agent, HTTP Request) verminderen onnodige kosten.
- Draft-versie om te testen. Publiceer pas als alles werkt. De Draft-versie (v0) is jouw speeltuin.
- Documenteer complexe logica. Voeg beschrijvingen toe aan Nodes, vooral bij Code Nodes en geneste Condition-logica.
Veelvoorkomende valkuilen
Valkuil 1: Auto Mode overal
Auto Mode is comfortabel, maar verbruikt bij elke run AI Credits. Bij een workflow die 100x per dag draait, telt dat snel op. Gebruik Manual Mode voor alles wat statisch is of direct uit variabelen komt.
Valkuil 2: Loop zonder limiet
Een loop zonder Max-Iterations-limiet over een array van onbekende grootte kan leiden tot kostenexplosie en timeouts. Stel altijd een realistische limiet in.
Valkuil 3: Geen error-paden
Als een HTTP Request faalt en je geen error-pad hebt gedefinieerd, stopt de volledige workflow zonder notificatie. Je merkt het pas als iemand vraagt waarom er niets is gebeurd.
Valkuil 4: Webhook zonder secret
Een openbaar toegankelijke webhook kan door iedereen worden aangeroepen, ook door bots. In productie altijd de X-Webhook-Secret-header gebruiken, geen query-parameter (tokens in URL's belanden in logs en browser-history).
Valkuil 5: Agent-instructies te vaag
"Analyseer deze tekst" levert onvoorspelbare resultaten. Wees specifiek: wat precies moet worden geanalyseerd? Welke categorieën bestaan er? Hoe moet het resultaat eruitzien?
Valkuil 6: Scheduled Workflows zonder monitoring
Een workflow die elke ochtend om 6:00 uur draait, kan wekenlang falen zonder dat iemand het merkt. Voeg altijd een failure-notificatie toe.
Valkuil 7: Te grote inputs voor Agents
Agents werken het beste met gefocuste inputs. Stuur geen 50 pagina's document compleet door, maar extraheer eerst de relevante secties (bijv. met File Search of Code Node).
Troubleshooting
▼Variabele niet beschikbaar
Probleem: De gewenste variabele verschijnt niet in de autocomplete.
Oorzaak: De Node is niet verbonden, komt na de huidige Node, of is nog niet getest.
Oplossing: Zorg dat de Node die de variabele produceert vóór de gebruikende Node in de workflow-graaf komt. Voer een testrun uit.
Variabele is undefined of null
Probleem: Variabele bestaat, maar levert undefined of null.
Oorzaak: De bron-Node is mislukt, het veld bestaat niet, of optionele data werd niet beschikbaar gesteld.
Oplossing in de Code Node:
const email = trigger.output.email || "onbekend@example.com";
const amount = trigger.output.amount || 0;
Code Node faalt: input te groot
Probleem: De Code Node breekt af met een fout zonder dat de code werd uitgevoerd.
Oorzaak: De gecombineerde input uit de upstream-Nodes overschrijdt de limiet van 5 MiB. Meest voorkomende trigger: een Loop Node met geactiveerde Collect Outputs over vele iteraties, of een zeer grote API-response.
Oplossing: Refereer in de code alleen aan de slugs die je echt nodig hebt, in plaats van de volledige data-map te lezen. Verminder de upstream-output door te filteren of samen te vatten, verwerk minder elementen per loop-iteratie, of schakel Collect Outputs uit.
Node faalt: output te groot
Probleem: De Node loopt door, maar breekt aan het eind af met Node output exceeded the maximum size of 25 MB.
Oorzaak: Elke workflow-Node mag maximaal 25 MB output teruggeven. Typisch bij ongefilterde API-responses, grote database-queries of loops die alles verzamelen.
Oplossing: Geef alleen de velden terug die opeenvolgende Nodes echt nodig hebben. Pagineer grote datasets in plaats van ze in één stuk door te geven. Heb je grote content nodig verderop, maak er dan een bestand van, bestanden worden vóór de meting geüpload en tellen niet mee tegen de limiet.
Agent levert onverwachte resultaten
Probleem: Structured Output heeft onverwachte waarden.
Oplossing: Controleer de output-tab van de Agent Node na de testrun. Scherp de instructies aan, voeg voorbeelden toe, en beperk de mogelijke waarden expliciet.
Workflow loopt niet volgens tijdplan
Checklist:
- Is de workflow deployed (geen Draft)?
- Is de workflow actief (niet gepauzeerd)?
- Klopt de tijdzone?
- Klopt de cron-uitdrukking?
Integration Trigger of Action Node reageert plotseling niet meer
Probleem: Een workflow met Integration Trigger (bijvoorbeeld nieuw Slack-bericht) start niet meer, of een Action Node (e-mail versturen, Sheets-rij schrijven) faalt zonder duidelijke fout.
Oorzaak: De Connection van de integratie is niet meer geldig. Vier oorzaken komen in aanmerking:
- Het OAuth-token is verlopen (afhankelijk van de aanbieder na dagen of weken)
- De toegang werd in het bronsysteem ingetrokken
- De Action mist scopes, bijvoorbeeld na een uitbreiding van de workflow
- De onderliggende Custom OAuth Client werd verwijderd
Herkennen: De Connection-selectie in de Node toont een waarschuwing met directe link om opnieuw te autoriseren. Bovendien verzamelt Langdock actieve workflows met ongeldige Connection onder Workflows → Monitor in het onderdeel Workflows to reconnect, en wel voordat de volgende run daarop stukloopt. Via Review in de regel en dan Reconnect in het dialoog breng je de toegang weer in orde, mits de Connection van jou is.
Dat is het praktische verschil met vroeger: Scheduled- en Polling-workflows liepen tot nu toe stilletjes een fout in, omdat niemand oplet. De Monitor maakt het probleem zichtbaar zolang het er nog geen is. Wie productieve automatiseringen beheert, zou deze lijst net zo goed in de gaten moeten houden als de openstaande goedkeuringen onder Action required.
Oplossing sinds juni 2026: Je kunt integraties direct in de instellingen opnieuw authenticeren, zonder ze te verwijderen en opnieuw toe te voegen. Bestaande Workflows die de integratie gebruiken, lopen daarna zonder ombouw verder. Voorheen moest de integratie volledig worden verwijderd en opnieuw verbonden.
Integration Trigger vuurt niet, maar er is geen fout
Probleem: Een workflow met Integration Trigger loopt gewoon niet, en in de run-history staat niets.
Oorzaak: Integration Triggers vragen hun bron in intervallen af. Faalde zo'n query, dan verdween dat vroeger stilzwijgend, er was geen run en geen melding.
Oplossing sinds juli 2026: Mislukte trigger-polls verschijnen nu als mislukte workflow-runs met foutmelding in de run-history. Kijk daar eerst, in plaats van de workflow opnieuw op te bouwen. In de meeste gevallen zit er een ongeldige Connection achter.
HTTP Request faalt
Checklist:
- Klopt de URL? (inclusief
https://) - Klopt de HTTP-methode?
- Zijn authentication-headers correct?
- Is het body-formaat valide JSON?
- Tip: gebruik "Import from cURL" uit de API-documentatie
Mislukte runs opnieuw starten sinds augustus 2026
Probleem: Een integratie was kort niet bereikbaar, een token is verlopen of een doelsysteem heeft met een serverfout geantwoord. Daarna staan twintig runs op Failed, terwijl aan de workflow zelf niets kapot is.
Oplossing: Je hoeft deze runs niet één voor één na te trekken. In de run-history (Past runs) filter je op de status Failed, selecteer je tot 20 runs tegelijk en start ze gebundeld opnieuw. Twee modi staan ter keuze:
- Vanaf de mislukte stap voortzetten: Al succesvolle Nodes lopen niet opnieuw. De veilige default als voorgeschakelde Nodes e-mails hebben verstuurd, records hebben aangelegd of kosten hebben veroorzaakt.
- Volledige herstart: De run begint weer bij de Trigger, met de oorspronkelijke Trigger-data. Zinvol als een vroege Node verkeerde waarden heeft geproduceerd.
Welke versie draait dan? Dat is het punt waarop in de praktijk de meeste misverstanden ontstaan. Vanaf de mislukte stap voortzetten blijft op de versie waarmee de run oorspronkelijk is gestart. Volledige herstart neemt de laatst gepubliceerde versie, of de opgeslagen Draft als er nog niets is gepubliceerd. Niet-gepubliceerde wijzigingen op de canvas vloeien in geen van beide gevallen mee: wie een fix in de Draft heeft gebouwd, moet hem eerst publiceren, anders herhaalt de retry dezelfde fout.
En nog een eigenaardigheid: een succesvolle retry heelt de oude run niet. Die blijft op Failed staan en krijgt slechts een Successful retry-chip die de geslaagde herhalingsrun benoemt en linkt. Een foutstatistiek die alleen status-waarden telt, ziet je opruimwerk dus niet.
Sporadische fouten vinden: run-history exporteren sinds augustus 2026
Probleem: Een workflow faalt niet altijd, maar soms. In de editor laat zich dat nauwelijks reconstrueren, omdat de oorzaak ergens tussen honderden runs ligt.
Oplossing: De Workflow Run Export API geeft runs en Node-uitvoeringen als JSON uit, één regel per Node-uitvoering. Daarmee tel je foutquotes per Node, vergelijk je runtimes en vind je patronen die in de losse run onzichtbaar blijven.
curl "https://api.langdock.com/workflows/<workflowId>/runs?from=2026-08-01&to=2026-08-31" \
-H "Authorization: Bearer <WORKSPACE_API_KEY>"
Elke regel bevat run_id, run_number, run_status (PENDING, IN_PROGRESS, AWAITING_INPUT, COMPLETED, FAILED, CANCELLED), workflow_version, trigger_mode (WEBHOOK, FORM, SCHEDULED, INTEGRATION_POLLING, MANUAL), node_type, node_status, failure_code en input, output en logs. Een run helemaal zonder Node-uitvoeringen levert een regel waarin de Node-velden null zijn. Gesorteerd wordt van oud naar nieuw.
- Sleutel: Workspace-API-key met de scope
WORKFLOW_API(Settings → Workspace → Products → API). Persoonlijke API-keys dekken alleen de Completion-API's af en werken hier niet. - Toegang: De key moet toebehoren aan een Owner of Editor van de workflow; Workspace-Admins komen er ook zonder gedeelde toegang bij. De rol User volstaat niet, ook niet voor Admins.
- Periode:
fromentozijn verplicht (ISO 8601), een standaardperiode bestaat niet. Pure datumopgaven lopen van 00:00:00.000 tot 23:59:59.999 UTC; een timestamp zonder tijdzone wordt in de servertijdzone gelezen, geef dusZof een offset op. - Grenzen: maximaal 10.000 runs en 8.000.000 bytes payload per aanvraag, anders komt een
400metWORKFLOW_RUN_EXPORT_LIMIT_EXCEEDEDrespectievelijkWORKFLOW_RUN_EXPORT_TOO_LARGEterug. Paginering bestaat niet, de oplossing is altijd een kleinere periode. Rate-limit: 500 aanvragen per minuut per workspace en key. - Bewaring:
inputenoutputzijn na 30 dagennull. Wie langer wil analyseren, exporteert regelmatig in plaats van achteraf. Individuele waarden boven 16.000 bytes komen ingekort, herkenbaar aan het_truncated-object metoriginalBytes,maxBytesenmessage. - Lege payloads: Staat
data_redactedoptrue, dan mis je toegang tot een betrokken Node, vaak een Action- of Agent-Node. Dan is niet de run kapot, maar de gedeelde toegang. - Wat de API niet levert: Wie een run heeft geactiveerd, staat niet in het antwoord.
workflow_versionmet de waarde0staat voor de Draft, een filter op test- of productie-runs bestaat via de API niet.
Op Dedicated Deployments komt https://<jouw-domein>/api/public in de plaats van api.langdock.com. Requests direct uit de browser blokkeert Langdock bewust, de export hoort in een backend of een script, niet in een web-app.
Woordenlijst
▼| Term | Uitleg |
|---|---|
| Node | Een individuele stap/bouwsteen in de workflow |
| Trigger | Het startpunt van een workflow (Form, Webhook, Schedule, Integration, Manual) |
| Connection | Verbindingslijn tussen Nodes, definieert de uitvoeringsvolgorde |
| Variabele | Data die van een Node aan opeenvolgende Nodes wordt doorgegeven |
| Structured Output | Gedefinieerd JSON-schema voor Agent-antwoorden |
| Field Mode | Manier waarop een configuratieveld wordt gevuld (Auto, Manual, AI Prompt) |
| Guardrail | AI-gestuurde validatiecontrole voor content |
| Human in the Loop | Handmatige goedkeuringsstap in de workflow |
| Draft (v0) | Conceptversie om te testen, niet actief in productie |
| Deploy | Publiceren van een geteste versie als productieve versie |
| Loop | Iteratie over een array/lijst met elementen |
| RAG | Retrieval Augmented Generation, AI-antwoorden verrijken met kennis-zoekopdracht |
| Webhook | HTTP-endpoint dat externe systemen kunnen aanroepen |
| Workflow Run Export API | Workspace-API (scope WORKFLOW_API) die runs en Node-uitvoeringen van een workflow als JSON exporteert |
| Rate Limiting | Beperking van de aanvraagfrequentie op API's |
| Error Callback | Alternatief uitvoeringspad bij Node-fouten |
| Output Node | Eindpunt-Node die het workflow-resultaat opslaat en bij chat-integratie als paneel toont |
| User Input Node | Pauzeert de run voor een goedkeuring (Approve/Reject) of een formulier (Continue) door een persoon met Editor-toegang |
| Geneste workflow | Workflow die door een andere workflow wordt aangeroepen; tot vijf niveaus, met cyclusdetectie |
| Environment Variable | Eén keer gedefinieerde waarde die meerdere workflows hergebruiken |
| Transcribe Audio | Node die audio in de workflow omzet naar tekst |