by ZeroBounce
Jotform to ActiveCampaign: Advanced ZeroBounce Lead Vetting This workflow automates the transition of new Jotform submissions into ActiveCampaign, using ZeroBounce for multi-layer validation (Validation + Scoring). Results are also output to Google Sheets for review. 🚀 How it Works ⚡ Trigger & Verification: Activates on new Jotform submissions and first checks if an email address is provided. Email present: Proceeds to credit check and validation Email missing: Customer details are added to Rejected output for review with reason 'Email missing'. 💳 Credit Management: Before each ZeroBounce call, the workflow checks your account for sufficient credits to prevent node failures. Success: Proceeds to Stage 1 (Validation). Failure: Customer details are added to Rejected output for retry with reason 'Not enough credits'. ✔️ Stage 1: Email Validation: Validates the email address with ZeroBounce. Valid: Adds the result to Accepted output and creates a person in ActiveCampaign. Invalid: Logs to a Google Sheet with the validation results and a reason for rejection for review. Catch-all: Proceeds to Stage 2 (Scoring). 🎯 Stage 2: Email Scoring: For "Catch-all" emails, the workflow requests ZeroBounce Scoring. High Score (>=9): Syncs to ActiveCampaign. Medium/Low Score: Suppressed and added to a Google Sheet with the assigned score for review. 📤 Output Results: Accepted: Output validation and scoring results to Accepted and ActiveCampaign Rejected Output validation and scoring results to Rejected. 💡 Key Benefits ✨ Zero-Waste Sync:** Only "Valid" or "High-Scoring" leads reach your CRM. 🛡️ Credit Safety:** Internal checks ensure you never trigger an API call without credits. 📊 Detailed Suppressions:** Every rejected lead is categorized by reason (e.g. Email Missing, Invalid, Low Score, or Insufficient credits). 🧩 Nodes used in this workflow ZeroBounce Jotform Trigger ActiveCampaign Google Sheets (or alternative e.g. Data Table) 📋 Setup Requirements Jotform:** Connect via API Key to receive "Form Submission" events. ZeroBounce:* Connect via API Key. *Create one here. ActiveCampaign:** Connect via API Key to create/update people for high-quality leads. Google Sheets:* Connect via OAuth2 to append/update rows in a Google Sheets worksheet. Alternatively, swap these nodes out with any other data storage node e.g. *n8n Data Table* or *Microsoft Excel**. The sheets/tables can be created with the headers: Accepted columns: Email,First Name,Last Name,Accepted At,Accepted Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score Rejected columns Email,First Name,Last Name,Rejected At,Rejected Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score
by KlickTipp
Community Node Disclaimer This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only. Who’s it for Sales and marketing teams using Salesforce (Contacts) and KlickTipp who need a reliable, automated two-way synchronization for: Contact Profiles:** Syncing name, email, address, mobile, and birthday. Marketing Status:** Aligning subscription and consent states. Segmentation:* Mapping KlickTipp *Tags* to Salesforce *Topics**. Data Integrity:** Automating deletions for daily cleanups and GDPR requests. This workflow eliminates manual CSV imports and ensures your CRM and marketing database are always in perfect alignment. How it works This workflow synchronizes data between KlickTipp and Salesforce Contacts in near real-time. Changes made in one platform are mirrored in the other to maintain a single source of truth. KlickTipp → Salesforce Triggered by KlickTipp webhooks or activation tags via the Contact tagged in KlickTipp node: Data Fetching: The workflow retrieves subscriber details, including tags and custom fields. Logic Branching: The Salesforce Lookup Switch checks if a Salesforce Contact ID is already stored in KlickTipp (field227883). New Contacts: Creates a new record in Salesforce. Existing Contacts: Updates the current Salesforce record. Linkage: The Sync SF ID to KlickTipp node writes the Salesforce ID back to KlickTipp to permanently link the records. Field Mapping: Marketing status and birthdays are synced. Birthdays are processed using a timezone-aware logic (Europe/Berlin) to ensure accuracy. Segmentation: The Segment Matcher reads KlickTipp tags and assigns corresponding Salesforce Topics (e.g., Tag 14061012 → Topic Customer). Salesforce → KlickTipp Triggered by the New Salesforce Contact or Updated Salesforce Contact triggers: Normalization: The Data Normalization & Mapping node ensures consistent data formats (e.g., converting Salesforce dates to KlickTipp Unix timestamps). Logic Branching: The KlickTipp Lookup Switch checks for an existing KlickTipp ID. New Subscribers: Triggers a Single Opt-In (SOI) creation. Existing Subscribers: Updates the profile data. Status Sync: The Sync KlickTipp ID to SF node updates the CRM with the KlickTipp ID and sets the initial marketing status. Segmentation: The Segment Matcher reads Salesforce TopicAssignments and applies the matching tags in KlickTipp. Automated Deletions Daily Cleanup:* The *Daily Cleanup Trigger** runs every morning at 08:00. It fetches contacts deleted in Salesforce within the last 24 hours and removes them from KlickTipp. GDPR Requests:* Triggered by KlickTipp deletion requests. If the subscriber is linked to Salesforce, the *GDPR Delete Salesforce Contact** node removes the CRM record automatically. Setup steps Install Community Nodes: Ensure the KlickTipp community node is installed on your n8n instance. Prepare Custom Fields: KlickTipp: Create a field for the Salesforce ID (mapped to field227883). Salesforce: Create KlickTipp_ID__c and KlickTipp_marketing_status__c on the Contact object. Credentials: Configure your KlickTipp API and Salesforce OAuth2 credentials. Map Segments: Update the Segment Matcher nodes with your specific Tag IDs and Salesforce Topic IDs. Instance URLs: Update all HTTP Request nodes with your specific Salesforce instance base URL. Test & Activate: Run a manual test for one contact in both directions before activating the workflow. Requirements Self-hosted n8n instance. KlickTipp** account with API access. Salesforce** account with API access (OAuth2). Correct permissions for queryAll (Salesforce) and Webhook triggers (KlickTipp). How to customize Expand Mapping:** Add more fields like Phone, Mailing Street, or Custom Properties in the "Update/Create" nodes. Adjust Schedule:* Change the *Daily Cleanup Trigger** to run more or less frequently based on your needs. Refine Logic:** Add filters to skip specific contacts (e.g., internal staff) or handle duplicates.
by KlickTipp
Community Node Disclaimer This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only. Who’s it for Sales and marketing teams using Pipedrive (Persons) and KlickTipp who want a reliable two-way sync for: Contact profiles (name, email, phone, birthday) Consent/marketing status (subscribed / no consent / unsubscribed) Segmentation (KlickTipp Tags ↔ Pipedrive Labels) This workflow is ideal if you want to avoid CSV imports, prevent manual updates, and ensure that changes in either platform are reflected in the other — including deletes and consent changes. How it works This workflow creates a complete two-way synchronization between KlickTipp and Pipedrive (Persons). Whenever a Person is created, updated, unsubscribed, segmented, or deleted in either system, the workflow mirrors these changes across both platforms — so your CRM and email marketing database always stay aligned. It is designed for near real-time syncing of contact data, consent state, and segmentation (Tags ↔ Labels), without manual work. KlickTipp → Pipedrive Triggered by KlickTipp webhooks / activation tag events via “Contact tagged in KlickTipp”: Fetch contact details in KlickTipp (Get contact data for tagging) to access tags and custom fields. Route by contact state (Check subscription): Person does not exist (no stored Pipedrive ID in KlickTipp) and contact is not Unsubscribed → Create a person in Pipedrive. Person exists and contact is not Unsubscribed → Update a person in Pipedrive. Person exists → unsubscribe → Update a person and set marketing_status = unsubscribed. Write the Pipedrive Person ID back to KlickTipp (Add Pipedrive Person ID to KlickTipp contact) to permanently link both records. Sync consent status: KlickTipp status = Subscribed → Pipedrive marketing_status = subscribed Otherwise → marketing_status = no_consent Sync birthday safely (timezone-aware): KlickTipp birthday is stored as Unix seconds and converted to YYYY-MM-DD using Europe/Berlin timezone to avoid CET/CEST shifts. Segmentation: KlickTipp Tags → Pipedrive Labels: Reads KlickTipp tags (Check relevant segment) and assigns Pipedrive label IDs via PATCH: Tag 14054258 → Label 14 (Customer) Tag 14054294 → Label 27 (ABC) Pipedrive → KlickTipp Triggered by the Pipedrive Person webhook via “Changes in Pipedrive”: Fetch the current marketing status (Get marketing status) to decide which consent action to apply in KlickTipp. Route by sync scenario (Check subscription1): Single Opt-In If no linked KlickTipp ID exists yet and status is not unsubscribed → create contact in KlickTipp via SOI (Create contact with SOI). Form submission → DOI If change_source = api → create contact in KlickTipp via DOI (Create contact with DOI). Update only If linked KlickTipp ID exists and status is not unsubscribed → update the existing KlickTipp subscriber (Update contact changes in KlickTipp). Unsubscribe and update If linked KlickTipp ID exists and status is unsubscribed → unsubscribe the contact (Unsubscribe contact) and then update core fields (Update contact changes in KlickTipp1). Contact deletion If action is delete → delete the KlickTipp contact using the previous email (Delete contact) to remain safe even if the email changed before deletion. UI-only filtering for SOI path Filter non UI events and deletions ensures the SOI create path processes only UI-driven events (change_source = app) and ignores deletions. Sync birthday safely (no day shifting) Reads Pipedrive birthday as YYYY-MM-DD from a custom field and converts it to Unix seconds using "T00:00:00Z" to prevent timezone-related day shifts. Segmentation: Pipedrive Labels → KlickTipp Tags Reads label_ids from Pipedrive (supports array or comma-separated string), normalizes them, then applies tags in KlickTipp (Check relevant segment2): Label 14 (Customer) → Tag 14054258 Label 27 (ABC) → Tag 14054294 GDPR Deletion Requests (KlickTipp → Pipedrive) Triggered by “Contact deletion request triggered” (when a recipient clicks the data deletion link in an email): Immediately deletes the subscriber in KlickTipp. If a linked Pipedrive Person ID exists (field227685), the workflow: Deletes the corresponding Person in Pipedrive. If no Pipedrive ID exists, only the KlickTipp record is removed. This ensures full GDPR-compliant data removal across both systems. How to set up Install the KlickTipp community node in your self-hosted n8n instance. Create credentials in n8n for: KlickTipp API Pipedrive API (token or OAuth) In KlickTipp, create a custom field to store the Pipedrive reference: Example used here: Pipedrive | Person ID (mapped as field227685) In Pipedrive (Person), create custom fields to store: KlickTipp Contact ID (stored via Pipedrive custom properties) Birthday (optional, if you want birthday sync) Configure your segmentation mapping: Ensure Pipedrive Labels exist and note their IDs (e.g. 14 = Customer, 27 = ABC) Ensure KlickTipp Tags exist and note their IDs (e.g. 14054258, 14054294) Test both directions: Add a tag in KlickTipp → confirm the Person is created/updated in Pipedrive and labels are assigned. Update a Person in Pipedrive → confirm the subscriber is created/updated/unsubscribed in KlickTipp accordingly. Activate the workflow. 💡 Pro Tip: Start testing with a single contact and one label/tag mapping first, then expand to more fields and segments. Requirements Self-hosted n8n instance (community nodes supported) KlickTipp** account with API access Pipedrive** account with API access Pipedrive Person webhook enabled (create/update/delete events) KlickTipp webhook/activation tag configured to trigger the KlickTipp side How to customize Add more field mappings (organization, address, custom properties, owner). Extend segmentation rules (more labels/tags, deal-based logic, pipeline-specific tags). Adjust SOI/DOI routing (e.g., force DOI for certain sources or segments). Add audit logging (Google Sheets, database, or Slack alerts on errors). Add safeguards (e.g., skip contacts without email, handle duplicates with additional lookup logic).
by ZeroBounce
Typeform to Mautic: Advanced ZeroBounce Lead Vetting This workflow automates the transition of new Typeform submissions into Mautic, using ZeroBounce for multi-layer validation (Validation + Scoring). Results are also output to Google Sheets for review. 🚀 How it Works ⚡ Trigger & Verification: Activates on new Typeform submissions and first checks if an email address is provided. Email present: Proceeds to credit check and validation Email missing: Customer details are added to Rejected output for review with reason 'Email missing'. 💳 Credit Management: Before each ZeroBounce call, the workflow checks your account for sufficient credits to prevent node failures. Success: Proceeds to Stage 1 (Validation). Failure: Customer details are added to Rejected output for retry with reason 'Not enough credits'. ✔️ Stage 1: Email Validation: Validates the email address with ZeroBounce. Valid: Adds the result to Accepted output and creates a person in Mautic. Invalid: Logs to a Google Sheet with the validation results and a reason for rejection for review. Catch-all: Proceeds to Stage 2 (Scoring). 🎯 Stage 2: Email Scoring: For "Catch-all" emails, the workflow requests ZeroBounce Scoring. High Score (>=9): Syncs to Mautic. Medium/Low Score: Suppressed and added to a Google Sheet with the assigned score for review. 📤 Output Results: Accepted: Output validation and scoring results to Accepted and Mautic Rejected Output validation and scoring results to Rejected. 💡 Key Benefits ✨ Zero-Waste Sync:** Only "Valid" or "High-Scoring" leads reach your CRM. 🛡️ Credit Safety:** Internal checks ensure you never trigger an API call without credits. 📊 Detailed Suppressions:** Every rejected lead is categorized by reason (e.g. Email Missing, Invalid, Low Score, or Insufficient credits). 🧩 Nodes used in this workflow ZeroBounce Typeform Trigger Mautic Google Sheets (or alternative e.g. Data Table) 📋 Setup Requirements Typeform:** Connect via Access Token or OAuth2 to receive "Form Submission" events. ZeroBounce:* Connect via API Key. *Create one here. Mautic:** Connect via credentials or OAuth2 to create/update people for high-quality leads. Google Sheets:* Connect via OAuth2 to append/update rows in a Google Sheets worksheet. Alternatively, swap these nodes out with any other data storage node e.g. *n8n Data Table* or *Microsoft Excel**. The sheets/tables can be created with the headers: Accepted columns: Email,First Name,Last Name,Accepted At,Accepted Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score Rejected columns Email,First Name,Last Name,Rejected At,Rejected Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score
by Intuz
This n8n template from Intuz provides a complete solution to automate your expense approval and accounting process. It seamlessly connects an Airtable base, where expenses are submitted, to your QuickBooks account, eliminating manual data entry and ensuring financial records are always up-to-date. Who's this workflow for? Accountants & Bookkeepers Small Business Owners Finance Teams Operations Managers How it works 1. Trigger on New Expense: The workflow starts automatically when a new expense record is added to your Airtable base. 2. Filter for Approval: It checks if the expense's Status field is marked as "Approved". Unapproved items are ignored. 3. Create Expense in QuickBooks: For every approved item, the workflow creates a new expense record in QuickBooks, mapping data like amount, date, vendor, and accounts directly from Airtable. 4. Download and Upload Receipt: It downloads the receipt from the URL provided in Airtable and uploads it as an attachment to the corresponding expense record in QuickBooks. 5. Update Airtable Status: Once the expense and receipt are successfully logged in QuickBooks, the workflow updates the record's Status in Airtable to "Done", closing the loop. Setup Instructions 1. Airtable Configuration: Create an Airtable base with a table for your expenses. Ensure your table includes the following columns: Status, Receipt URL, Amount, Date, Memo, QBO Vendor ID, QBO Expense Account ID, and QBO Payment Account ID. Connect your Airtable account to n8n. In the Airtable Trigger, Search records, and Update record nodes, select your credentials and specify your Base ID and Table ID. 2. QuickBooks Configuration: Connect your QuickBooks account to n8n using OAuth2 credentials. In the QBO-Create Expense and QBO-Upload File nodes, replace {YOUR_QUICKBOOKS_COMPANY_ID} in the URL with your actual QuickBooks Company ID. Ensure the Vendor ID and Account IDs in your Airtable records correspond to valid IDs in your QuickBooks account. 3. Activate Workflow: Save the workflow and toggle the "Active" switch to ON. Your expense management is now fully automated! Connect with us: Website: https://www.intuz.com/services Email: getstarted@intuz.com LinkedIn: https://www.linkedin.com/company/intuz Get Started: https://n8n.partnerlinks.io/intuz For Custom Worflow Automation Click here- Get Started
by KlickTipp
Community Node Disclaimer: This workflow uses KlickTipp community nodes. How It Works This workflow listens for new or updated customers and for checkout confirmations in Stripe and automatically creates or updates contacts in KlickTipp, enriching profiles for segmentation and automated messaging. Tags are applied dynamically: high-value orders (≥100) get a Premium Customer tag, and purchases with certain SKUs (e.g., clothing) receive product-based tags. The process keeps your database clean, accurate, and updated in real time for targeted campaigns. Perfect for digital product sellers, course creators, and service providers seeking an end-to-end automated sales confirmation process. Setup Instructions KlickTipp Preparation Prepare custom fields Products (Text) Total (Decimal Number) Payment ID (Text) Receipt URL (URL) Prepare tags: Premium customer Clothing buyer Credential Configuration Connect your Stripe account using an API key from the Stripe Dashboard. Authenticate your KlickTipp connection with username/password credentials (API access required). Customization Launch upsell or membership campaigns using tags. Use KlickTipp placeholders ([[Stripe | Products]], [[Stripe | Total]], etc.) for dynamic emails. Route buyers to portals (e.g., Memberspot, Mentortools). Trigger CRM, Slack notification, or invoice creation.
by Jaures NYA
This workflow automates the process of scraping local business listings from Google Maps and generating clean, AI-powered summaries for each one — using Apify (community node) and OpenAI’s GPT-4o. All results are then saved automatically into Google Sheets, ready for lead generation, enrichment, or outreach. What it does This workflow saves hours of manual research by automatically: Scraping structured business data from Google Maps (name, category, address, phone, website, etc.) Creating natural-language summaries for each business using GPT-4o Storing everything into Google Sheets — perfectly formatted for outreach or CRM import Who’s it for This automation is ideal for: Lead generators and sales teams building B2B lists from local businesses Freelancers and agencies prospecting new clients in specific cities or industries Recruiters or marketers looking to enrich business data for campaigns Automation enthusiasts who want to summarize and structure raw scraped data — without writing a single line of code How it works Trigger: The workflow starts manually via the Execute Workflow trigger (ideal for testing or batch runs). Scrape: It uses an Apify actor to scrape Google Maps search results and collect structured business info (name, category, address, phone, website, Google Maps URL...). Fetch Data: The dataset is retrieved from Apify using the actor's dataset ID, and each business is loaded for processing. Deduplicate: Removes duplicate business listings to keep your database clean. Loop Over: Iterates over each business to generate a clean summary, one at a time. Generate Summary: Sends the business data to OpenAI to generate a human-readable paragraph (including name, category, address, city, phone, and Google Maps link). Store: Appends the summarized info into a Google Sheet — your final lead database. Pause for rate limit: Adds a short delay (optional) to control flow or avoid rate limits. Customization Tips Change the Apify search query to target different cities, industries, or keywords. Adjust the OpenAI prompt to include tone, length, or focus areas (e.g., add business highlights). Add filters (e.g., add-on: reviews, add-on: images, etc.). Setup Guide Apify Setup Use a Google Maps scraping actor in Apify. Copy your Actor ID and Token — add them to your Apify node in n8n. Note your Dataset ID (where results are stored). OpenAI Setup Add your OpenAI API key to the Generate Summary node. The model gpt-4o is recommended for best quality/cost balance. Google Sheets Setup Connect your Google account. How to use Set up your Apify actor for Google Maps scraping (or use a prebuilt one). Connect your OpenAI API key to the Message node (company summary). Connect your Google Sheets account and select the target sheet. Run the workflow → it will: 1 Scrape business data 2 Clean and summarize each one 3 Save everything to your spreadsheet. Requirements ✅ A working Apify actor that scrapes Google Maps listings ✅ An OpenAI account (GPT-4) with API access ✅ A Google Sheet for storing the summarized results ❓ Need help Contact me for consulting and support: LinkedIn / YouTube / Skool
by emmanuelchilaka779
Gather leads into Mailchimp, automate marketing, and sales process.
by ZeroBounce
Form.io to Pipedrive: Advanced ZeroBounce Lead Vetting This workflow automates the transition of new Form.io submissions into Pipedrive, using ZeroBounce for multi-layer validation (Validation + AI Scoring). Results are also output to Google Sheets for review. 🚀 How it Works ⚡ Trigger & Verification: Activates on new Form.io submissions and first checks if an email address is provided. Email present: Proceeds to credit check and validation Email missing: Customer details are added to Rejected output for review with reason 'Email missing'. 💳 Credit Management: Before each ZeroBounce call, the workflow checks your account for sufficient credits to prevent node failures. Success: Proceeds to Stage 1 (Validation). Failure: Customer details are added to Rejected output for retry with reason 'Not enough credits'. ✔️ Stage 1: Email Validation: Validates the email address with ZeroBounce. Valid: Adds the result to Accepted output and creates a person in Pipedrive. Invalid: Logs to a Google Sheet with the validation results and a reason for rejection for review. Catch-all: Proceeds to Stage 2 (Scoring). 🎯 Stage 2: AI Email Scoring: For "Catch-all" emails, the workflow requests ZeroBounce AI Scoring. High Score (>=9): Syncs to Pipedrive. Medium/Low Score: Suppressed and added to a Google Sheet with the assigned score for review. 📤 Output Results: Accepted: Output validation and scoring results to Accepted and Pipedrive Rejected Output validation and scoring results to Rejected. 💡 Key Benefits ✨ Zero-Waste Sync:** Only "Valid" or "High-Scoring" leads reach your CRM. 🛡️ Credit Safety:** Internal checks ensure you never trigger an API call without credits. 📊 Detailed Suppressions:** Every rejected lead is categorized by reason (e.g. Email Missing, Invalid, Low Score, or Insufficient credits). 🧩 Nodes used in this workflow ZeroBounce Form.io Trigger Pipedrive Google Sheets (or alternative e.g. Data Table) 📋 Setup Requirements Form.io:** Connect via credentials to receive "Form Submission" events. ZeroBounce:* Connect via API Key. *Create one here. Pipedrive:** Connect via API Key to create/update people for high-quality leads. Google Sheets:* Connect via OAuth2 to append/update rows in a Google Sheets worksheet. Alternatively, swap these nodes out with any other data storage node e.g. *n8n Data Table* or *Microsoft Excel**. The sheets/tables can be created with the headers: Accepted columns: Email,Name,Accepted At,Accepted Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score Rejected columns Email,Name,Rejected At,Rejected Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score
by ZeroBounce
Shopify to HubSpot: Advanced ZeroBounce Lead Vetting This workflow automates the transition of new Shopify customers into HubSpot, using ZeroBounce for multi-layer validation (Validation + AI Scoring). Results are also output to Google Sheets for review. 🧩 Nodes used in this workflow ZeroBounce Shopify Hubspot Google Sheets (or alternative e.g. Data Table) 💡 Key Benefits ✨ Zero-Waste Sync:** Only "Valid" or "High-Scoring" leads reach your CRM. 🛡️ Credit Safety:** Internal checks ensure you never trigger an API call without credits. 📊 Detailed Suppressions:** Every rejected lead is categorized by reason (e.g. Email Missing, Invalid, Low Score, or Insufficient credits). 🚀 How it Works ⚡ Trigger & Verification: Activates on new Shopify customers and first checks if an email address is provided. Email present: Proceeds to credit check and validation Email missing: Customer details are added to Rejected output for review with reason 'Email missing'. 💳 Credit Management: Before each ZeroBounce call, the workflow checks your account for sufficient credits to prevent node failures. Success: Proceeds to Stage 1 (Validation). Failure: Customer details are added to Rejected output for retry with reason 'Not enough credits'. ✔️ Stage 1: Email Validation: Validates the email address with ZeroBounce. Valid: Adds the result to Accepted output and creates a contact in HubSpot. Invalid: Logs to an n8n Data Table with the validation results and a reason for rejection for review. Catch-all: Proceeds to Stage 2 (Scoring). 🎯 Stage 2: AI Email Scoring: For "Catch-all" emails, the workflow requests ZeroBounce AI Scoring. High Score (>=9): Syncs to HubSpot. Medium/Low Score: Suppressed and added to an n8n Data Table with the assigned score for review. 📤 Output Results: Accepted: Output validation and scoring results to Accepted and Hubspot Rejected Output validation and scoring results to Rejected. 📋 Setup Requirements Shopify:** Connect via OAuth2 to watch for "Customer Created" events (Topic: customers/create). ZeroBounce:* Connect via API Key. *Create one here. HubSpot:** Connect via OAuth2 to create/update contacts for high-quality leads. Google Sheets:* Connect via OAuth2 to append/update rows in a Google Sheets worksheet. Alternatively, swap these nodes out with any other data storage node e.g. *n8n Data Table* or *Microsoft Excel**. The sheets/tables can be created with the headers: Accepted columns: ID,Email,First Name,Last Name,Accepted At,Accepted Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score Rejected columns ID,Email,First Name,Last Name,Rejected At,Rejected Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score
by Asraful Attare
Who’s it for This workflow is built for sales and marketing teams who collect Facebook Lead Ads into Google Sheets and want to automatically sync those leads into Perfex CRM without manual data entry or duplicate records. What it does The workflow checks Google Sheets for new rows where lead_status is marked as CREATED. For each lead, it searches Perfex CRM using the email address via the Rest API module for the Perfex CRM plugin. If the lead already exists, the workflow updates the sheet with a clickable CRM link and marks the row as ADDED. If the lead does not exist, it creates a new lead in Perfex CRM through the REST API and then updates the sheet accordingly. This ensures your CRM stays up to date while preventing duplicate lead creation. How it works A scheduled trigger runs the workflow. Google Sheets retrieves leads with status CREATED. The workflow searches Perfex CRM using the REST API. If found → update Sheet. If not found → create lead in CRM. The sheet is updated with the CRM record link. Requirements Google Sheets account Perfex CRM Rest API module for the Perfex CRM plugin enabled API token configured in n8n credentials (do not hardcode it) How to customize You can modify the lead field mappings, assign leads to different staff members, add tags, or adjust the schedule interval and batch size depending on your lead volume. Support / Contact If you need help setting up or customizing this workflow, feel free to reach out: Email: asrafulattare@aftie.eu WhatsApp: +1 (760) 933-7005 (WhatsApp only)
by Marth
How It Works: The 5-Node Security Flow This workflow efficiently performs a scheduled file integrity audit. 1. Scheduled Check (Cron Node) This is the workflow's trigger. It schedules the workflow to run at a specific, regular interval. Function:** Continuously runs on a set schedule, for example, daily at 3:00 AM. Process:** The Cron node automatically initiates the workflow on its schedule, ensuring consistent file integrity checks without manual intervention. 2. List Files & Checksums (Code Node) This node acts as your static database, defining which files to monitor and their known-good checksums. Function:** Stores the file paths and their verified checksums in a single, easy-to-update array. Process:** It configures the file paths and their valid checksums, which are then passed on to subsequent nodes for processing. 3. Get Remote File Checksum (SSH Node) This node connects to your remote server to get the current checksum of the file being monitored. Function:** Executes a command on your server via SSH. Process:** It runs a command like sha256sum /path/to/file on the server. The current checksum is then captured and passed to the next node for comparison. 4. Checksums Match? (If Node) This is the core detection logic. It compares the newly retrieved checksum from the server with the known-good checksum you stored. Function:** Compares the two checksum values. Process:* If the checksums *do not match**, it indicates a change in the file, and the workflow is routed to the notification node. If they do match, the workflow ends safely. 5. Send Alert (Slack Node) / End Workflow (No-Op Node) These nodes represent the final action of the workflow. Function:** Responds to a detected file change. Process:* If the checksums don't match, the *Slack* node sends a detailed alert with information about the modified file, the expected checksum, and the detected checksum. If the checksums match, the *No-Op** node ends the workflow without any notification. How to Set Up Implementing this essential cybersecurity monitor in your n8n instance is quick and straightforward. 1. Prepare Your Credentials & Server Before building the workflow, ensure all necessary accounts are set up and their credentials are ready. SSH Credential:* Set up an *SSH credential** in n8n with your server's hostname, port, and authentication method (e.g., private key or password). The SSH user must have permission to run sha256sum on the files you want to monitor. Slack Credential:* Set up a *Slack credential* in n8n and note the *Channel ID** of your security alert channel (e.g., #security-alerts). Get Checksums:* *This is a critical step.** Manually run the sha256sum [file_path] command on your server for each file you want to monitor. Copy and save the generated checksum values—these are the "known-good" checksums you will use as your reference. 2. Import the Workflow JSON Get the workflow structure into your n8n instance. Import:** In your n8n instance, navigate to the "Workflows" section. Click the "New" or "+" icon, then select "Import from JSON." Paste the provided JSON code into the import dialog and import the workflow. 3. Configure the Nodes Customize the imported workflow to fit your specific monitoring needs. Scheduled Check (Cron):** Set the schedule according to your preference (e.g., daily at 3:00 AM). List Files & Checksums (Code):* Open this node and *edit the filesToCheck array**. Enter your actual server file paths and paste the "known-good" checksums you manually obtained in step 1. Get Remote File Checksum (SSH):* Select your *SSH credential**. Send Alert (Slack):* Select your *Slack credential* and replace YOUR_SECURITY_ALERT_CHANNEL_ID with your actual *Channel ID**. 4. Test and Activate Verify that your workflow is working correctly before setting it live. Manual Test:** Run the workflow manually. Verify that it connects to the server and checks the files without sending an alert (assuming the files haven't changed). Verify:** To test the alert, manually change one of the files on your server and run the workflow again. Check your Slack channel to ensure the alert is sent correctly. Activate:** Once you're confident in its function, activate the workflow. n8n will now automatically audit the integrity of your critical files on the schedule you set.