Akhil Varma Gadiraju
I'm a full stack developer passionate about building intelligent, scalable solutions that automate workflows and enhance productivity. I love working at the intersection of AI, APIs, and automationโusing tools like n8n to streamline processes, integrate data, and unlock smarter decision-making. Whether it's crafting custom backend services or designing intuitive frontends, Iโm always exploring ways to build more with less manual effort.
Templates by Akhil Varma Gadiraju
N8N contact form workflow
๐ฌ N8N Contact Form Workflow: Capture, Notify via Email, and Redirect with Confirmation/Error Handling This n8n workflow facilitates contact form submissions through a customizable form that sends an email notification to support and redirects users based on the submission outcome. It is ideal for embedding a functional "Contact Us" form on websites with automated email notifications. --- โจ Features Collects first name, last name, email, company name, and a message Sends formatted email notification to the support team Displays success or error confirmation to the user Customizable UI and form behavior Error fallback handling with user-friendly feedback --- ๐งฉ Nodes Overview On form submission (Trigger) Type: formTrigger Displays the contact form to users and triggers the workflow on submission. Send Email to Support Type: emailSend Sends an HTML email to a support address with the form details. Uses an SMTP credential for sending. If Email Sent Type: if Checks if the email was sent successfully using the existence of messageId. Confirmation Form Type: form Displays a โThank Youโ HTML message after a successful submission. Redirect Form Type: form Redirects the user to a specified URL (e.g., LinkedIn profile). Form (Error) Type: form Displays an error message if email delivery fails. NoOp Nodes End (Success) and End (Error) to mark flow terminations cleanly. --- โ๏ธ Customization Options Change the form fields, title, or descriptions in the formTrigger node. Update the email body or subject in the emailSend node. Redirect to a different URL by editing the Redirect Form node. Modify success and error UI with HTML content in the Confirmation Form and Form. --- ๐ง Use Cases Website "Contact Us" form integration Lead generation forms for businesses Customer service inquiry collection Feedback or support ticket system --- ๐ How to Use Import this workflow into your n8n instance. Configure SMTP credentials for the emailSend node. Publish the formTrigger endpoint (e.g., /contact-us) publicly or embed in your website. Test submission and confirm email delivery and redirects. --- ๐ Notes Ensure SMTP credentials are correctly configured in n8n. Make sure your n8n webhook URLs are reachable from your website or frontend. --- Made with โค๏ธ using n8n by Akhil.
Automated daily backup of n8n workflows to GitLab repositories
n8n Workflow: Sync Workflows with GitLab How It Works This workflow ensures that your self-hosted n8n workflows are version-controlled in a GitLab repository. It compares each current workflow from n8n with its stored counterpart in GitLab. If any differences are detected, the GitLab file is updated with the latest version. Core Logic: Retrieve Workflows โ Fetch all workflows from the n8n REST API. Compare with GitLab โ For each workflow, fetch the corresponding file from GitLab and compare the JSON. Update if Changed โ If differences exist, commit the updated workflow to GitLab using its API. --- Setup Before using the workflow, ensure the following: Prerequisites: n8n: Self-hosted instance with access to the /rest/workflows API. GitLab: A repository where workflows will be stored, and a Personal Access Token (PAT) with api and write_repository permissions. n8n Nodes Required: HTTP Request (to call n8n and GitLab APIs) Code or Function nodes (for diffing and formatting) Looping (SplitInBatches or similar) Configuration: Set environment variables or workflow credentials for: GITLAB_TOKEN GITLAB_REPO GITLAB_BRANCH (e.g., main) GITLABFILEPATH_PREFIX (e.g., n8n-workflows/) --- How to Use Import the Workflow into your n8n instance. Configure GitLab API Credentials: Set the GitLab PAT as a header in the HTTP Request node: Private-Token: {{ $env.GITLAB_TOKEN }} Map Workflows to GitLab Paths: Use the workflow name or ID to create the file path. Example: n8n-workflows/workflow-name.json Trigger the Workflow: Can be manually triggered, or scheduled to run at intervals (e.g., daily). Review Commits in GitLab: Each updated workflow will be committed with a message like: "Update workflow: Sample Workflow" --- Disclaimer This workflow does not handle merge conflicts or manual edits made directly in GitLab. Always ensure proper coordination if multiple sources are modifying workflows. Only structural changes are tracked. Non-functional metadata (like timestamps or IDs) may trigger false positives unless filtered. Use at your own risk. Test in a safe environment before applying to production workflows. ---
Gmail to Google Drive email export workflow
๐ฌ Gmail to Google Drive Email Export Workflow (n8n) ๐งฉ Overview This n8n workflow automates the process of: Retrieving all emails from a specific sender using Gmail. Extracting essential fields like subject, message, and date. Formatting the email date to the desired time zone (e.g., IST). Exporting the parsed data as a CSV file. Uploading the file to a specified folder in Google Drive. --- ๐ Nodes Breakdown Start Workflow (Manual Trigger) Type: Manual Trigger Purpose: Initiates the workflow manually. --- Gmail Node (Get All Emails) Type: Gmail Operation: getAll Filters: sender: akhilgadiraju@gmail.com Returns: All emails from the specified sender. Credentials: Gmail OAuth2 - Akhil --- Parse Data (Set Node) Purpose: Extracts key fields from the email JSON. Mapped Fields: id: Email ID subject: Email subject message: Email text time: Email date --- Convert Time Field (Code Node) Purpose: Converts the email time (ISO 8601) to a human-readable format. Output Format: Local time using Asia/Kolkata timezone. Format: "Month Day, Year, Hour:Minute AM/PM" Customizable: Change the timezone as needed: javascript timeZone: 'Asia/Kolkata' --- Convert to File Type: Convert to File Node Purpose: Converts JSON data to a downloadable .csv file. Output File: CSV containing id, subject, message, and time. --- Google Drive Type: Google Drive Purpose: Uploads the generated CSV file to Google Drive. Drive: My Drive Folder: Root File Name: Current timestamp + n8nexport.csv --- End Workflow (NoOp) Purpose: Final node to explicitly end the workflow. --- โ Use Cases Personal Email Archiving: Back up or export emails from a specific sender (e.g., invoices, reports). Audit Logs: Save conversations for compliance. Team Reports: Aggregate project emails into a central file store. --- ๐ง Customization Guide | Customization | How to Do It | |---------------------------|------------------------------------------------------------| | Change Sender Email | Update the sender field in the Gmail node. | | Filter by Date/Subject | Add filters in the Gmail node settings. | | Change Time Zone | Edit timeZone in the Code node. | | Add More Email Fields | Modify the Set node to include more fields. | | Change File Format | Use a different format in the Convert to File node. | | Rename Output File | Adjust the name in the Google Drive node. | | Change Upload Folder | Set a different folderId in the Google Drive node. | --- ๐ Deployment Tips Schedule the Workflow: Replace Manual Trigger with a Cron node. Avoid Duplicates: Store email IDs and skip duplicates using conditional logic. Security: Use environment variables for sensitive credentials. --- ๐งช Testing Steps Manually trigger the workflow. Verify email data is parsed and formatted. Confirm CSV is generated correctly. Ensure the file is uploaded to Google Drive. --- ๐งฐ Requirements Connected Gmail and Google Drive OAuth2 credentials. n8n instance (self-hosted or cloud). Required nodes available in the n8n environment. --- > ๐ก Need more features? You can add: > - Error handling > - Slack/Email notifications > - Conditional filters > - Google Sheets integration instead of Drive
HubSpot contact email validation with Hunter.io
Workflow: HubSpot Contact Email Validation with Hunter.io Overall Goal This workflow retrieves contacts from HubSpot that have an email address but haven't yet had their email validated by Hunter. It then iterates through each of these contacts, uses Hunter.io to verify their email, updates the contact record in HubSpot with the validation status and date, and finally sends a summary email notification upon completion. How it Works (Step-by-Step Breakdown) Node: "When clicking โTest workflowโ" (Manual Trigger) Type: n8n-nodes-base.manualTrigger Purpose: Start the workflow manually via the n8n interface. Output: Triggers workflow execution. Node: "HubSpot" (HubSpot) Type: n8n-nodes-base.hubspot Purpose: Fetch contacts from HubSpot. Configuration: Authentication: App Token Operation: Search for contacts Return All: True Filter Groups: Contact HAS_PROPERTY email Contact NOTHASPROPERTY hunteremailvalidation_status Output: List of contact objects. Node: "Loop Over Items" (SplitInBatches) Type: n8n-nodes-base.splitInBatches Purpose: Process each contact one-by-one. Configuration: Options > Reset: false Output: Output 1 to "Hunter" Output 2 to "Send Email" Node: "Hunter" (Inside the loop) Type: n8n-nodes-base.hunter Purpose: Verify email with Hunter.io Configuration: Operation: Email Verifier Email: {{ $json.properties.email }} Node: "Add Hunter Details (Contact)" (HTTP Request - Inside the loop) Type: n8n-nodes-base.httpRequest Purpose: Update HubSpot contact. Configuration: Method: PATCH URL: https://api.hubapi.com/crm/v3/objects/contacts/{{ $('Loop Over Items').item.json.id }} Headers: Content-Type: application/json Body (JSON): json { "properties": { "hunteremailvalidation_status": "{{ $json.status }}", "hunterverificationdate": "{{ $now.format('yyyy-MM-dd') }}" } } Node: "Wait" (Inside the loop) Type: n8n-nodes-base.wait Purpose: Avoid API rate limits. Configuration: Wait for 1 second. Node: "Replace Me" (NoOp - Inside the loop) Type: n8n-nodes-base.noOp Purpose: Junction node to complete the loop. Node: "Send Email" (After the loop completes) Type: n8n-nodes-base.emailSend Purpose: Send summary notification. Configuration: From Email: test@gmail.com To Email: akhilgadiraju@gmail.com Subject: "Email Verification Completed for Your HubSpot Contacts" HTML: Formatted confirmation message Sticky Notes "HubSpot": Create custom properties (hunteremailvalidationstatus, hunterverification_date). "Add Hunter Details": Ensure field names match HubSpot properties. "Wait": Prevent API rate limits. How to Customize It Trigger Replace Manual Trigger with Schedule Trigger (Cron) for automation. Optionally use HubSpot Trigger for new contact events. HubSpot Node Create matching custom properties. Adjust filters and returned properties as needed. Hunter Node Minimal customization needed. HTTP Request Node Update JSON property names if renaming in HubSpot. Customize date format as needed. Wait Node Adjust wait time to balance speed and API safety. Email Node Customize email addresses, subject, and body. Add dynamic contact count with a Set or Function node. Error Handling Add Error Trigger nodes. Use If nodes inside loop to act on certain statuses. Use Cases Clean your email list. Enrich CRM data. Prep verified lists for campaigns. Automate contact hygiene on a schedule. Required Credentials HubSpot App Token Used by: HubSpot node and HTTP Request node Create a Private App in HubSpot with required scopes. Hunter API Used by: Hunter node SMTP Used by: Email Send node Configure host, port, username, and password. --- Made with โค๏ธ using n8n by Akhil.
Bulk delete HubSpot contacts from uploaded Excel/CSV file
Bulk Contact Deletion from HubSpot via Uploaded Excel / CSV File This workflow allows you to automate the deletion of HubSpot contacts based on email addresses provided in an uploaded Excel (.xlsx) file. It's ideal for bulk-cleaning outdated or invalid contact data. --- โ Prerequisites Before using this workflow, ensure you have the following: A valid HubSpot App Token with permissions to search and delete contacts. An Excel (.xlsx) file with a column labeled emails containing the contact emails to be deleted. n8n self-hosted or cloud environment with: Webhook node enabled and accessible. HubSpot node credentials configured. Basic familiarity with n8n node configuration for custom adjustments (optional). --- ๐Sample Document Download --- ๐ง n8n Workflow: Delete HubSpot Contacts from an Uploaded Excel File This n8n workflow allows you to upload an Excel file containing contact email addresses. It will check each one in HubSpot and delete the contact if it exists. --- ๐ Workflow Overview ๐ฅ 1. Trigger via Webhook (POST) The workflow starts when a .xlsx file is uploaded via an HTTP POST request to the webhook. This Excel file should contain a column with contact email addresses. --- ๐ 2. Extract Data from Excel The uploaded file is parsed, and its rows are converted into structured JSON items, making each email address available for further processing. --- ๐งน 3. Normalize Data The data is cleaned and normalized โ for example, mapping column headers (e.g., emails) into a standard email field, ensuring consistent downstream logic. --- ๐ 4. Loop Through Contacts Each row (contact) is processed individually using batch looping. This allows for fine-grained error handling and sequential processing. --- ๐ 5. Search for Contact in HubSpot For each contact, a search query is made in HubSpot based on the email address. The workflow only fetches the first result (if any). --- ๐งช 6. Check if Contact Exists An IF condition checks whether the contact was found (i.e., if a HubSpot contact ID exists): โ Yes โ proceed to delete the contact. โ No โ skip deletion and continue to the next. --- ๐๏ธ 7. Delete Contact If a contact exists, it is deleted from HubSpot using its internal contact ID. --- ๐ ๏ธ 8. Optional Placeholder for Post-Processing A placeholder node named โReplace Meโ is included for any custom logic you may want to add after the deletion step, such as: Logging Notifications Writing to external storage --- โ Use Cases Bulk delete old or bounced email addresses from HubSpot. Clean up contacts based on external suppression lists. Automate regular CRM hygiene processes. --- ๐ก Suggested Enhancements โ๏ธ Log results to Google Sheets or a database ๐ฌ Send completion report via email or Slack ๐ Add retry logic for temporary API failures ๐ Validate email format before making requests --- ๐ Requirements n8n (self-hosted or cloud) HubSpot App Token (set up in n8n credentials) Excel file (.xlsx) with a column for email --- ๐ฆ Files No external files are required. All logic is contained within the n8n workflow. --- ๐ Getting Started Deploy the workflow in n8n. Copy the webhook URL and use it in your app or API client (like Postman). Upload an Excel file containing contact emails via POST request. Watch as it searches and deletes matches in HubSpot.