by Trung Tran
AWS IAM Inactive User Automation Alert Workflow > Weekly job that finds IAM users with no activity for > 90 days and notifies a Slack channel. > ⚠️ Important: AWS SigV4 for IAM must be scoped to us-east-1. Create the AWS credential in n8n with region us-east-1 (even if your other services run elsewhere). Who’s it for SRE/DevOps teams that want automated IAM hygiene checks. Security/compliance owners who need regular inactivity reports. MSPs managing multiple AWS accounts who need lightweight alerting. How it works / What it does Weekly scheduler – kicks off the workflow (e.g., every Monday 09:00). Get many users – lists IAM users. Get user – enriches each user with details (password status, MFA, etc.). Filter bad data – drops service-linked users or items without usable dates. IAM user inactive for more than 90 days? – keeps users whose last activity is older than 90 days. Last activity is derived from any of: PasswordLastUsed (console sign-in) AccessKeyLastUsed.LastUsedDate (from GetAccessKeyLastUsed if you add it) Fallback to CreateDate if no usage data exists (optional) Send a message (Slack) – posts an alert for each inactive user. No operation – path for users that don’t match (do nothing). How to set up Credentials AWS (Predefined → AWS) Service: iam Region: us-east-1 ← required for IAM Access/Secret (or Assume Role) with read-only IAM perms (see below). Slack OAuth (bot in your target channel). Requirements n8n (current version). AWS IAM permissions** (minimum): iam:ListUsers, iam:GetUser (Optional for higher fidelity) iam:ListAccessKeys, iam:GetAccessKeyLastUsed Slack bot with permission to post in the target channel. Network egress to iam.amazonaws.com. How to customize the workflow Change window:** set 60/120/180 days by adjusting minus(N, 'days'). Audit log:** append results to Google Sheets/DB with UserName, Arn, LastActivity, CheckedAt. Escalation:** if a user remains inactive for another cycle, mention @security or open a ticket. Auto-remediation (advanced):** on a separate approval path, disable access keys or detach policies. Multi-account / multi-region:** iterate a list of AWS credentials (one per account; IAM stays us-east-1). Exclude list:** add a static list or tag-based filter to skip known service users. Notes & gotchas Many users never sign in; if you don’t pull GetAccessKeyLastUsed, they may look “inactive”. Add that call for accuracy. PasswordLastUsed is null if console login never happened. IAM returns timestamps in ISO or epoch—use toDate/toDateTime before comparisons.
by Sakar Dahal
This is the AI agent which will set the event in the Google Calendar and get the events from the calendar based on the prompt provided to AI agent based on Gemini.
by Oneclick AI Squad
This enterprise-grade n8n workflow automates the Instagram complaint handling process — from detection to resolution — using Claude AI, dynamic ticket assignment, and SLA enforcement. It converts customer complaints in comments into actionable support tickets with auto-assignment, escalation alerts, and full audit trails, ensuring timely responses and improved customer satisfaction with zero manual intervention. Key Features Real-time Instagram polling** for new comments AI-powered complaint detection* using *Claude 3.5 Sonnet** for sentiment and issue classification Automatic ticket creation** in Google Sheets (or integrable with Zendesk/Jira) Round-robin assignment** to team members from a dynamic roster SLA timer and monitoring** (e.g., 24-hour response window with escalation at 80% elapsed) Escalation engine** notifies managers via Slack if near breach Multi-channel notifications:** Slack for assignees and escalations Audit-ready:** Logs ticket details, assignments, and actions Scalable triggers:** Webhook or scheduled polling Workflow Process | Step | Node | Description | | ---- | ----------------------------------- | -------------------------------------------------------- | | 1 | Schedule Trigger | Runs every 15 minutes or via webhook (/complaint-handler) | | 2 | Get Instagram Posts | Fetches recent posts from Instagram Graph API | | 3 | Get Comments | Retrieves comments for the latest post | | 4 | Loop Over Comments | Processes each comment individually to avoid rate limits | | 5 | Detect Complaint (Claude AI) | Uses AI to classify if complaint, extract issue/severity | | 6 | IF Complaint | Branches: Proceed if yes, end if no | | 7 | Get Team Members | Loads team roster from TeamMembers sheet | | 8 | Assign Ticket | Sets assignee via round-robin logic | | 9 | Create Ticket (Google Sheet) | Appends new ticket with details and SLA due date | | 10 | Notify Assignee (Slack) | Alerts assigned team member | | 11 | Wait for SLA Check | Delays to near-SLA-breach point (e.g., 20 hours) | | 12 | Check Ticket Status | Looks up ticket status in sheet | | 13 | IF SLA Breach Near | Checks if unresolved; escalates if yes | | 14 | Escalate to Manager (Slack) | Notifies manager for urgent action | | 15 | End (Non-Complaint Path) | Terminates non-complaint branches | Setup Instructions 1. Import Workflow Open n8n → Workflows → Import from Clipboard Paste the JSON workflow 2. Configure Credentials | Integration | Details | | ----------------- | -------------------------------------------------- | | Instagram API | Access token from Facebook Developer Portal | | Claude AI | Anthropic API key for claude-3-5-sonnet-20241022 | | Google Sheets | Service account with spreadsheet access | | Slack | Webhook or OAuth app | 3. Update Spreadsheet IDs Ensure your Google Sheets include: SupportTickets TeamMembers 4. Set Triggers Webhook:** /webhook/complaint-handler (for real-time Instagram notifications if set up) Schedule:** Every 15 minutes 5. Run a Test Use manual execution to confirm: Ticket creation in sheet Slack notifications SLA wait and escalation logic (simulate by shortening wait time) Google Sheets Structure SupportTickets | ticketId | commentText | user | createdAt | assignedTo | status | slaDue | issueType | severity | |--------------|-------------|----------|--------------------|--------------------|--------|--------------------|---------------|----------| | TKT-12345678 | Sample complaint text | user123 | 2023-10-01T12:00:00Z | john@team.com | Open | 2023-10-02T12:00:00Z | Product Issue | Medium | TeamMembers | name | email | |-----------|-------------------| | John Doe | john@team.com | | Jane Smith| jane@team.com | System Requirements | Requirement | Version/Access | | --------------------- | ---------------------------------------------- | | n8n | v1.50+ (AI integrations supported) | | Claude AI API | claude-3-5-sonnet-20241022 | | Instagram Graph API| Business account access token | | Google Sheets API | https://www.googleapis.com/auth/spreadsheets | | Slack Webhook | Required for notifications | Optional Enhancements Integrate Zendesk/Jira for professional ticketing instead of Google Sheets Add email notifications to customers acknowledging complaints Use sentiment thresholds for prioritizing high-severity tickets Connect Twilio for SMS escalations Enable multi-platform support (e.g., Twitter/Facebook comments) Add reporting dashboard via Google Data Studio Implement auto-resolution for simple complaints using AI responses Result: A single automated system that detects, tickets, assigns, and enforces SLAs on Instagram complaints — with full AI intelligence and zero manual work. Explore More AI Workflows: Get in touch with us for custom n8n automation!
by phil
This workflow automates the search and extraction of hotel data from Booking.com. Triggered by a chat message, it uses a combination of web scraping with Bright Data's Web Scraper and AI-powered data processing with OpenRouter to deliver a concise, human-friendly list of hotels. The final output is a clean and formatted report, making it a valuable tool for travelers, event planners, and business professionals who need to quickly find accommodation options. Who's it for This template is ideal for: Event Planners:** Quickly identify and compare hotel options for conferences, meetings, or group travel. Travel Agents:** Efficiently research and provide clients with a curated list of accommodations based on their specified destination. Business Travelers:** Instantly find and assess hotel availability and pricing for upcoming trips. Individuals:** Streamline the hotel search process for personal vacations or short-term stays. How it works The workflow is triggered by a chat message containing a city name from an n8n chat application. It uses Bright Data to initiate a web scraping job on Booking.com for the specified city. The workflow continuously checks the status of the scraping job. Once the data is ready, it downloads the snapshot. The extracted data is then passed to a custom AI agent powered by OpenRouter. This AI agent uses a calculator tool to convert prices and an instruction prompt to refine and format the raw data. The final output is a well-presented list of hotels, ready for display in the chat application. How to set up Bright Data Credentials: Sign up for a Bright Data account and create a Web Scraper dataset. In n8n, create new Bright Data API credentials and copy your API key. OpenRouter Credentials: Create an account on OpenRouter and get your API key. In n8n, create new OpenRouter API credentials and paste your key. Chat Trigger Node: Configure the "When chat message received" node. Copy the production webhook URL to integrate with your preferred chat platform. Requirements An active n8n instance. A Bright Data account with a Web Scraper dataset. An OpenRouter account with API access. How to customize this workflow Search Parameters:** The "Initiate batch extraction from URL" node can be modified to change search criteria, such as check-in/check-out dates, number of adults and children, or property type. Output Format:** Edit the "Human Friendly Results" node's system message to change the format of the final report. You can modify the prompt to generate a JSON object, a CSV, or a different text format. Price Conversion:** The "Calculator" tool can be adjusted to perform different mathematical operations or currency conversions by modifying the AI agent's prompt. . Phil | Inforeole | Linkedin 🇫🇷 Contactez nous pour automatiser vos processus
by jason
A workflow to automatically create groups of three based on a Mattermost channel and send out invitations to each group member.
by jason
Receive a new book recommendation each Friday from Open Library. You can select the subject from thousands of options and have a new recommendation delivered to you automatically.
by Will Stenzel
This workflow recieves webhook data from a form submission and creates a new user (with name and email) if necessary. It also add the current semester of the program to the relation for the user.
by Gareth Roll
This workflow uses OpenAI to generate tweets to be stored in Airtable for review. A JS snippet handles the topics to be tweeted about in the form of hashtags.
by Valor
This workflow gets latest RSS from different RSS Sources and categorizes them with conditional. *Reference https://n8n.io/workflows/1507 https://n8n.io/workflows/617 https://n8n.io/workflows/199*
by Ghazi Triki
Fetches Zammad tickets at daily basis at 08:30 then sends them to #customer support>ticket on zulip for daily standups.
by Lorena
This workflow illustrates how to convert data from JSON to binary format and import JSON data or files into Google Sheets or local spreadsheets.
by Luka Zivkovic
Description A production-ready authentication workflow implementing secure user registration, login, token verification, and refresh token mechanisms. Perfect for adding authentication to any application without needing a separate auth service. Get started with n8n now! What it does This template provides a complete authentication backend using n8n workflows and Data Tables: User Registration**: Creates accounts with secure password hashing (SHA-512 + unique salts) Login System**: Generates access tokens (15 min) and refresh tokens (7 days) using JWT Token Verification**: Validates access tokens for protected endpoints Token Refresh**: Issues new access tokens without requiring re-login Security Features**: HMAC-SHA256 signatures, hashed refresh tokens in database, protection against rainbow table attacks Why use this template No external services**: Everything runs in n8n - no Auth0, Firebase, or third-party dependencies Production-ready security**: Industry-standard JWT implementation with proper token lifecycle management Easy integration**: Simple REST API endpoints that work with any frontend framework Fully customizable**: Adjust token lifespans, add custom user fields, implement your own business logic Well-documented**: Extensive inline notes explain every security decision and implementation detail How to set up Prerequisites n8n instance (cloud or self-hosted) n8n Data Tables feature enabled Setup Steps Create Data Tables: users table: id, email, username, password_hash, refresh_token refresh_tokens table: id, user_id, token_hash, expires_at Generate Secret Keys: Run this command to generate a random secret: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" Generate two different secrets for ACCESS_SECRET and REFRESH_SECRET Configure Secrets: Update the three "SET ACCESS AND REFRESH SECRET" nodes with your generated keys Or migrate to n8n Variables for better security (instructions in workflow notes) Connect Data Tables: Open each Data Table node Select your created tables from the dropdown Activate Workflow: Save and activate the workflow Note your webhook URLs API Endpoints Register: POST /webhook/register-user Request body: { "email": "user@example.com", "username": "username", "password": "password123" } Login: POST /webhook/login Request body: { "email": "user@example.com", "password": "password123" } Returns: { "accessToken": "...", "refreshToken": "...", "user": {...} } Verify Token: POST /webhook/verify-token Request body: { "access_token": "your_access_token" } Refresh: POST /webhook/refresh Request body: { "refresh_token": "your_refresh_token" } Frontend Integration Example (Vue.js/React) Login flow: const response = await fetch('https://your-n8n.app/webhook/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); const { accessToken, refreshToken } = await response.json(); localStorage.setItem('accessToken', accessToken); Make authenticated requests: const data = await fetch('https://your-api.com/protected', { headers: { 'Authorization': Bearer ${accessToken} } }); Key Features Secure Password Storage**: Never stores plain text passwords; uses SHA-512 with unique salts Two-Token System**: Short-lived access tokens (security) + long-lived refresh tokens (convenience) Database Token Revocation**: Refresh tokens can be revoked for logout-all-devices functionality Duplicate Prevention**: Checks username and email availability before account creation Error Handling**: Generic error messages prevent information leakage Extensive Documentation**: 30+ sticky notes explain every security decision Use Cases SaaS applications needing user authentication Mobile app backends Internal tools requiring access control MVP/prototype authentication without third-party costs Learning JWT and auth system architecture Customization Token Lifespan**: Modify expiration times in "Create JWT Payload" nodes User Fields**: Add custom fields to registration and user profile Password Rules**: Update validation in "Validate Registration Request" node Token Rotation**: Implement refresh token rotation for enhanced security (notes included) Security Notes :warning: Important: Change the default secret keys before production use Use HTTPS for all webhook endpoints Store secrets in n8n Variables (not hardcoded) Regularly rotate secret keys in production Consider rate limiting for login endpoints Support & Documentation The workflow includes comprehensive documentation: Complete authentication flow overview Security explanations for every decision Troubleshooting guide Setup instructions FAQ section with common issues Perfect for developers who want full control over their authentication system without the complexity of managing separate auth infrastructure. Get Started with n8n now! Tags: authentication, jwt, login, security, user-management, tokens, password-hashing, api, backend