UNPKG

n8n-nodes-smartlead-v1-9-0

Version:

🚀 SmartLead API v1.10.0 - Complete Email Marketing Automation with Smart Delivery, Webhooks & 40+ Operations - Fixed API Parameters

1,154 lines • 90.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SmartLead = void 0; const n8n_workflow_1 = require("n8n-workflow"); class SmartLead { constructor() { this.description = { displayName: 'SmartLead', name: 'smartLead', icon: 'file:smartlead.svg', // 👈 Make sure this line is added group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Comprehensive SmartLead API integration for email marketing automation', defaults: { name: 'SmartLead', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'smartLeadApi', required: true, }, ], requestDefaults: { baseURL: 'https://server.smartlead.ai/api/v1', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, }, properties: [ // Resource Selection { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: '🎯 Campaign Management', value: 'campaign', description: 'Create, manage, and control email campaigns', }, { name: '👥 Lead Management', value: 'lead', description: 'Manage leads, categories, and communication', }, { name: '📧 Email Accounts', value: 'emailAccount', description: 'Manage email accounts and warmup settings', }, { name: '📊 Analytics & Stats', value: 'analytics', description: 'Campaign statistics and performance data', }, { name: '🚀 Smart Delivery', value: 'smartDelivery', description: 'Email deliverability testing and placement analysis', }, { name: '🔗 Webhooks', value: 'webhooks', description: 'Manage campaign webhooks and event notifications', }, { name: '📨 Smart Senders', value: 'smartSenders', description: 'Domain management and mailbox generation services', }, ], default: 'campaign', required: true, }, // Campaign Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['campaign'], }, }, options: [ { name: 'Get All', value: 'getAll', description: 'Retrieve all campaigns', action: 'Get all campaigns', }, { name: 'Get by ID', value: 'get', description: 'Get campaign by ID', action: 'Get a campaign', }, { name: 'Create', value: 'create', description: 'Create a new campaign', action: 'Create a campaign', }, { name: 'Update Schedule', value: 'updateSchedule', description: 'Update campaign schedule settings', action: 'Update campaign schedule', }, { name: 'Update General Settings', value: 'updateSettings', description: 'Update campaign general settings', action: 'Update campaign settings', }, { name: 'Save Sequence', value: 'saveSequence', description: 'Save campaign email sequence', action: 'Save campaign sequence', }, { name: 'Update Status', value: 'updateStatus', description: 'Start, pause, or stop campaign', action: 'Update campaign status', }, { name: 'Get Sequence', value: 'getSequence', description: 'Fetch campaign sequence by ID', action: 'Get campaign sequence', }, { name: 'Export Data', value: 'export', description: 'Export campaign data', action: 'Export campaign data', }, { name: 'Delete', value: 'delete', description: 'Delete a campaign', action: 'Delete a campaign', }, ], default: 'getAll', required: true, }, // Lead Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['lead'], }, }, options: [ { name: 'Get All by Campaign', value: 'getAllByCampaign', description: 'Get all leads from a specific campaign', action: 'Get all leads by campaign', }, { name: 'Get Categories', value: 'getCategories', description: 'Fetch all lead categories', action: 'Get lead categories', }, { name: 'Get by Email', value: 'getByEmail', description: 'Find lead by email address', action: 'Get lead by email', }, { name: 'Add to Campaign', value: 'addToCampaign', description: 'Add leads to a campaign', action: 'Add leads to campaign', }, { name: 'Resume', value: 'resume', description: 'Resume lead in campaign', action: 'Resume lead', }, { name: 'Pause', value: 'pause', description: 'Pause lead in campaign', action: 'Pause lead', }, { name: 'Delete', value: 'delete', description: 'Delete lead from campaign', action: 'Delete lead', }, { name: 'Unsubscribe from Campaign', value: 'unsubscribeFromCampaign', description: 'Unsubscribe lead from specific campaign', action: 'Unsubscribe from campaign', }, { name: 'Unsubscribe from All', value: 'unsubscribeFromAll', description: 'Unsubscribe lead from all campaigns', action: 'Unsubscribe from all campaigns', }, { name: 'Add to Block List', value: 'addToBlockList', description: 'Add lead/domain to global block list', action: 'Add to block list', }, { name: 'Update', value: 'update', description: 'Update lead information', action: 'Update lead', }, { name: 'Update Category', value: 'updateCategory', description: 'Update lead category', action: 'Update lead category', }, { name: 'Get Message History', value: 'getMessageHistory', description: 'Fetch lead message history', action: 'Get message history', }, { name: 'Reply to Lead', value: 'reply', description: 'Reply to lead from master inbox', action: 'Reply to lead', }, ], default: 'getAllByCampaign', required: true, }, // Email Account Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['emailAccount'], }, }, options: [ { name: 'Get All for User', value: 'getAllForUser', description: 'Get all email accounts for current user', action: 'Get all email accounts', }, { name: 'Get All for Campaign', value: 'getAllForCampaign', description: 'Get all email accounts for a campaign', action: 'Get campaign email accounts', }, { name: 'Get by ID', value: 'get', description: 'Get email account by ID', action: 'Get email account', }, { name: 'Create', value: 'create', description: 'Create new email account', action: 'Create email account', }, { name: 'Update', value: 'update', description: 'Update email account settings', action: 'Update email account', }, { name: 'Add to Campaign', value: 'addToCampaign', description: 'Add email account to campaign', action: 'Add to campaign', }, { name: 'Remove from Campaign', value: 'removeFromCampaign', description: 'Remove email account from campaign', action: 'Remove from campaign', }, { name: 'Update Warmup', value: 'updateWarmup', description: 'Update warmup settings', action: 'Update warmup settings', }, { name: 'Reconnect Failed', value: 'reconnect', description: 'Reconnect failed email accounts', action: 'Reconnect email account', }, ], default: 'getAllForUser', required: true, }, // Analytics Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['analytics'], }, }, options: [ { name: 'Campaign Stats', value: 'campaignStats', description: 'Get campaign statistics by ID', action: 'Get campaign statistics', }, { name: 'Campaign Stats by Date Range', value: 'campaignStatsByDate', description: 'Get campaign stats for date range', action: 'Get campaign stats by date', }, { name: 'Warmup Stats', value: 'warmupStats', description: 'Get warmup stats by email account ID', action: 'Get warmup statistics', }, { name: 'Top Level Analytics', value: 'topLevelAnalytics', description: 'Get campaign top level analytics', action: 'Get top level analytics', }, ], default: 'campaignStats', required: true, }, // Campaign ID field (used by multiple operations) { displayName: 'Campaign ID', name: 'campaignId', type: 'string', required: true, displayOptions: { show: { resource: ['campaign'], operation: [ 'get', 'updateSchedule', 'updateSettings', 'saveSequence', 'updateStatus', 'getSequence', 'export', 'delete', ], }, }, default: '', description: 'The ID of the campaign', }, { displayName: 'Campaign ID', name: 'campaignId', type: 'string', required: true, displayOptions: { show: { resource: ['lead'], operation: [ 'getAllByCampaign', 'addToCampaign', 'resume', 'pause', 'delete', 'unsubscribeFromCampaign', 'updateCategory', 'getMessageHistory', ], }, }, default: '', description: 'The ID of the campaign', }, { displayName: 'Campaign ID', name: 'campaignId', type: 'string', required: true, displayOptions: { show: { resource: ['emailAccount'], operation: [ 'getAllForCampaign', 'addToCampaign', 'removeFromCampaign', ], }, }, default: '', description: 'The ID of the campaign', }, { displayName: 'Campaign ID', name: 'campaignId', type: 'string', required: true, displayOptions: { show: { resource: ['analytics'], operation: [ 'campaignStats', 'campaignStatsByDate', 'topLevelAnalytics', ], }, }, default: '', description: 'The ID of the campaign', }, // Email Account ID field { displayName: 'Email Account ID', name: 'emailAccountId', type: 'string', required: true, displayOptions: { show: { resource: ['emailAccount'], operation: ['get', 'update', 'updateWarmup', 'reconnect'], }, }, default: '', description: 'The ID of the email account', }, { displayName: 'Email Account ID', name: 'emailAccountId', type: 'string', required: true, displayOptions: { show: { resource: ['analytics'], operation: ['warmupStats'], }, }, default: '', description: 'The ID of the email account', }, // Lead ID field { displayName: 'Lead ID', name: 'leadId', type: 'string', required: true, displayOptions: { show: { resource: ['lead'], operation: ['resume', 'pause', 'delete', 'update'], }, }, default: '', description: 'The ID of the lead', }, // Email field for lead lookup { displayName: 'Email Address', name: 'email', type: 'string', required: true, displayOptions: { show: { resource: ['lead'], operation: [ 'getByEmail', 'unsubscribeFromCampaign', 'unsubscribeFromAll', 'reply', ], }, }, default: '', description: 'Email address of the lead', }, // Lead Data for adding to campaign { displayName: 'Lead Data', name: 'leadData', type: 'json', required: true, displayOptions: { show: { resource: ['lead'], operation: ['addToCampaign'], }, }, default: '{\n "email": "john@example.com",\n "first_name": "John",\n "last_name": "Doe",\n "company": "Example Corp"\n}', description: 'Lead information in JSON format. For multiple leads, use an array. Max 350 leads per batch.', placeholder: 'Single lead: {...} or Multiple leads: [{...}, {...}]', }, // Lead Update Data { displayName: 'Lead Update Data', name: 'leadUpdateData', type: 'json', required: false, displayOptions: { show: { resource: ['lead'], operation: ['update'], }, }, default: '{\n "first_name": "John",\n "last_name": "Doe",\n "company": "New Company"\n}', description: 'Lead information to update in JSON format', placeholder: 'Fields to update: {"first_name": "John", "company": "New Corp"}', }, // Additional fields for specific operations { displayName: 'Campaign Name', name: 'campaignName', type: 'string', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['create'], }, }, default: '', description: 'Name for the new campaign', }, { displayName: 'Start Date', name: 'startDate', type: 'dateTime', required: false, displayOptions: { show: { resource: ['analytics'], operation: ['campaignStatsByDate'], }, }, default: '', description: 'Start date for analytics (YYYY-MM-DD format)', }, { displayName: 'End Date', name: 'endDate', type: 'dateTime', required: false, displayOptions: { show: { resource: ['analytics'], operation: ['campaignStatsByDate'], }, }, default: '', description: 'End date for analytics (YYYY-MM-DD format)', }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['campaign'], operation: ['create'], }, }, options: [ { displayName: 'Client ID', name: 'clientId', type: 'number', default: null, description: 'Client ID to associate with the campaign (leave empty if no client)', }, ], }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { hide: { resource: ['campaign'], operation: ['create'], }, }, options: [ { displayName: 'Limit', name: 'limit', type: 'number', default: 100, description: 'Number of results to return', }, { displayName: 'Offset', name: 'offset', type: 'number', default: 0, description: 'Number of results to skip', }, { displayName: 'Status', name: 'status', type: 'options', options: [ { name: 'Active', value: 'ACTIVE' }, { name: 'Paused', value: 'PAUSED' }, { name: 'Stopped', value: 'STOPPED' }, ], default: 'ACTIVE', description: 'Campaign status', }, ], }, { displayName: 'Schedule Type', name: 'scheduleType', type: 'options', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['updateSchedule'], }, }, options: [ { name: 'Daily', value: 'daily' }, { name: 'Weekly', value: 'weekly' }, { name: 'Monthly', value: 'monthly' }, ], default: 'daily', description: 'The type of schedule to set', }, { displayName: 'Schedule Time', name: 'scheduleTime', type: 'string', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['updateSchedule'], }, }, default: '09:00', description: 'Time to send emails (24-hour format HH:mm)', }, { displayName: 'Schedule Days', name: 'scheduleDays', type: 'multiOptions', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['updateSchedule'], scheduleType: ['weekly'], }, }, options: [ { name: 'Monday', value: 'monday' }, { name: 'Tuesday', value: 'tuesday' }, { name: 'Wednesday', value: 'wednesday' }, { name: 'Thursday', value: 'thursday' }, { name: 'Friday', value: 'friday' }, { name: 'Saturday', value: 'saturday' }, { name: 'Sunday', value: 'sunday' }, ], default: ['monday', 'wednesday', 'friday'], description: 'Days of the week to send emails', }, { displayName: 'Schedule Date', name: 'scheduleDate', type: 'number', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['updateSchedule'], scheduleType: ['monthly'], }, }, default: 1, description: 'Day of the month to send emails (1-31)', }, { displayName: 'Timezone', name: 'timezone', type: 'string', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['updateSchedule'], }, }, default: 'UTC', description: 'Timezone for the schedule (e.g., UTC, America/New_York)', }, { displayName: 'Track Settings', name: 'trackSettings', type: 'multiOptions', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, options: [ { name: "Don't Track Email Open", value: 'DONT_TRACK_EMAIL_OPEN' }, { name: "Don't Track Link Click", value: 'DONT_TRACK_LINK_CLICK' }, { name: "Don't Track Reply to Email", value: 'DONT_TRACK_REPLY_TO_AN_EMAIL', }, ], default: ['DONT_TRACK_EMAIL_OPEN'], description: 'Tracking settings for the campaign', }, { displayName: 'Stop Lead Settings', name: 'stopLeadSettings', type: 'options', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, options: [ { name: 'Click on a Link', value: 'CLICK_ON_A_LINK' }, { name: 'Open an Email', value: 'OPEN_AN_EMAIL' }, { name: 'Reply to an Email', value: 'REPLY_TO_AN_EMAIL' }, ], default: 'REPLY_TO_AN_EMAIL', description: 'When to stop sending emails to a lead', }, { displayName: 'Unsubscribe Text', name: 'unsubscribeText', type: 'string', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, default: '', description: 'Custom unsubscribe text', }, { displayName: 'Send as Plain Text', name: 'sendAsPlainText', type: 'boolean', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, default: false, description: 'Whether to send emails as plain text', }, { displayName: 'Follow Up Percentage', name: 'followUpPercentage', type: 'number', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, default: 100, description: 'Percentage of leads to follow up with (0-100)', }, { displayName: 'Client ID', name: 'clientId', type: 'number', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, default: 33, description: 'Client ID (leave empty if not needed)', }, { displayName: 'Enable AI ESP Matching', name: 'enableAiEspMatching', type: 'boolean', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, default: false, description: 'Whether to enable AI ESP matching', }, { displayName: 'Campaign Name', name: 'name', type: 'string', required: false, displayOptions: { show: { resource: ['campaign'], operation: ['updateSettings'], }, }, default: '', description: 'New name for the campaign (leave empty to keep current name)', }, { displayName: 'Status', name: 'status', type: 'options', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['updateStatus'], }, }, options: [ { name: 'Paused', value: 'PAUSED' }, { name: 'Stopped', value: 'STOPPED' }, { name: 'Start', value: 'START' }, ], default: 'PAUSED', description: 'The new status for the campaign', }, { displayName: 'Message', name: 'message', type: 'string', required: true, displayOptions: { show: { resource: ['lead'], operation: ['reply'], }, }, default: '', description: 'The message to send to the lead', }, { displayName: 'Subject', name: 'subject', type: 'string', required: true, displayOptions: { show: { resource: ['lead'], operation: ['reply'], }, }, default: '', description: 'The subject of the email', }, // Smart Delivery Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['smartDelivery'], }, }, options: [ { name: 'Get Region Provider IDs', value: 'getRegionProviders', description: 'Get region wise provider IDs', action: 'Get region provider IDs', }, { name: 'Create Manual Placement Test', value: 'createManualTest', description: 'Create a manual placement test', action: 'Create manual placement test', }, { name: 'Create Automated Placement Test', value: 'createAutomatedTest', description: 'Create an automated placement test', action: 'Create automated placement test', }, { name: 'Get Spam Test Details', value: 'getSpamTestDetails', description: 'Get spam test details by ID', action: 'Get spam test details', }, { name: 'Delete Tests in Bulk', value: 'deleteTestsBulk', description: 'Delete smart delivery tests in bulk', action: 'Delete tests in bulk', }, { name: 'Stop Automated Test', value: 'stopAutomatedTest', description: 'Stop an automated smart delivery test', action: 'Stop automated test', }, { name: 'List All Tests', value: 'listAllTests', description: 'List all placement tests', action: 'List all tests', }, { name: 'Get Provider Report', value: 'getProviderReport', description: 'Get provider wise report', action: 'Get provider report', }, { name: 'Get Geo Report', value: 'getGeoReport', description: 'Get geo wise report', action: 'Get geo report', }, { name: 'Get Sender Account Report', value: 'getSenderAccountReport', description: 'Get sender account wise report', action: 'Get sender account report', }, { name: 'Get Spam Filter Report', value: 'getSpamFilterReport', description: 'Get spam filter report', action: 'Get spam filter report', }, { name: 'Get DKIM Details', value: 'getDkimDetails', description: 'Get DKIM authentication details', action: 'Get DKIM details', }, { name: 'Get SPF Details', value: 'getSpfDetails', description: 'Get SPF authentication details', action: 'Get SPF details', }, { name: 'Get rDNS Report', value: 'getRdnsReport', description: 'Get reverse DNS report', action: 'Get rDNS report', }, { name: 'Get Sender Account List', value: 'getSenderAccountList', description: 'Get list of sender accounts', action: 'Get sender account list', }, { name: 'Get Blacklists', value: 'getBlacklists', description: 'Get blacklist information', action: 'Get blacklists', }, { name: 'Get Domain Blacklist', value: 'getDomainBlacklist', description: 'Get domain blacklist information', action: 'Get domain blacklist', }, { name: 'Get Spam Test Email Content', value: 'getSpamTestEmailContent', description: 'Get spam test email content', action: 'Get spam test email content', }, { name: 'Get Email Reply Headers', value: 'getEmailReplyHeaders', description: 'Get email reply headers', action: 'Get email reply headers', }, { name: 'Get Schedule History', value: 'getScheduleHistory', description: 'Get schedule history for automated tests', action: 'Get schedule history', }, { name: 'Get IP Details', value: 'getIpDetails', description: 'Get IP address details', action: 'Get IP details', }, { name: 'Get Mailbox Summary', value: 'getMailboxSummary', description: 'Get mailbox summary information', action: 'Get mailbox summary', }, { name: 'Get Mailbox Count', value: 'getMailboxCount', description: 'Get mailbox count statistics', action: 'Get mailbox count', }, { name: 'Get All Folders', value: 'getAllFolders', description: 'Get all folders', action: 'Get all folders', }, { name: 'Create Folder', value: 'createFolder', description: 'Create a new folder', action: 'Create folder', }, { name: 'Get Folder by ID', value: 'getFolderById', description: 'Get folder by ID', action: 'Get folder by ID', }, { name: 'Delete Folder', value: 'deleteFolder', description: 'Delete a folder', action: 'Delete folder', }, ], default: 'getRegionProviders', required: true, }, // Smart Delivery Test ID field { displayName: 'Test ID', name: 'testId', type: 'string', required: true, displayOptions: { show: { resource: ['smartDelivery'], operation: ['getSpamTestDetails', 'stopAutomatedTest'], }, }, default: '', description: 'The ID of the spam/placement test', }, // Manual Test Data { displayName: 'Manual Test Data', name: 'manualTestData', type: 'json', required: true, displayOptions: { show: { resource: ['smartDelivery'], operation: ['createManualTest'], }, }, default: '{\n "subject": "Test Subject",\n "content": "Test email content",\n "from_email": "sender@example.com",\n "from_name": "Test Sender"\n}', description: 'Manual test configuration in JSON format', placeholder: '{ "subject": "...", "content": "...", "from_email": "...", "from_name": "..." }', }, // Automated Test Data { displayName: 'Automated Test Data', name: 'automatedTestData', type: 'json', required: true, displayOptions: { show: { resource: ['smartDelivery'], operation: ['createAutomatedTest'], }, }, default: '{\n "subject": "Test Subject",\n "content": "Test email content",\n "from_email": "sender@example.com",\n "from_name": "Test Sender",\n "schedule": "daily"\n}', description: 'Automated test configuration in JSON format', placeholder: '{ "subject": "...", "content": "...", "schedule": "..." }', }, // Test Filter Data { displayName: 'Test Filter Data', name: 'testFilterData', type: 'json', required: true, displayOptions: { show: { resource: ['smartDelivery'], operation: ['listAllTests', 'getProviderReport', 'getGeoReport'], }, }, default: '{\n "limit": 10,\n "offset": 0\n}', description: 'Filter and pagination options in JSON format', placeholder: '{ "limit": 10, "offset": 0, "date_from": "...", "date_to": "..." }', }, // Delete Test IDs { displayName: 'Test IDs to Delete', name: 'testIdsToDelete', typ