Manage AI agent chat sessions with timeouts, handoff, and webhooks
Quick overview This workflow exposes two webhooks that manage an AI agent’s session lifecycle in an n8n Data Table, including session creation, TTL-based expiration, pause/auto-resume, human handoff, manual resume, close, and optional message deduplication.
How it works Receives an incoming message via a POST webhook and normalizes the payload (user_key, message, optional message_id). Loads session configuration (TTL, pause defaults, and message deduplication) and looks up the latest session for the user in the n8n Data Table. Evaluates session state to decide whether to create a new session, continue the active one, ignore a duplicate message_id, auto-resume after a pause, route to a human during pause/handoff, or start a new session after expiration/closure. Writes the resulting state to the Data Table by inserting a new session or updating the existing session’s activity/status (and marking old sessions as expired when needed). Returns a session context response (action, thread_key, status, expiry/pause metadata) that downstream automation uses to run an agent, wait, or hand off to a human. Receives control commands (pause, handoff, resume, close) via a second POST webhook, updates the session state in the Data Table, and returns a control result payload.
Setup Create an n8n Data Table named agent_sessions with the required columns (user_key, session_id, thread_key, status, timestamps, handoff/close fields, and last_message_id) and select it in each Data Table node. Copy the two webhook URLs (ai-agent-session and ai-agent-session-control) and configure your chat/app integration to POST message events and control commands to them. Update the configuration values in the Load Configuration step (session_ttl_hours, default_pause_minutes, max_pause_minutes, deduplicate_message_id) to match your session policy.
Related Templates
Convert JSON Objects to Base64 Strings with File Processing
Encode JSON to Base64 String in n8n This example workflow demonstrates how to convert a JSON object into a base64-encod...
Automate Daily YouTrack Task Summaries to Discord by Assignee
Daily YouTrack In-Progress Tasks Summary to Discord by Assignee Keep your team in sync with a daily summary of tasks cu...
Automate Free IP Analysis: NixGuard AI Summaries & Wazuh Integration
Supercharge Your Security Operations for Free Stop wasting time manually investigating suspicious IP addresses. This wo...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments