Email: invia in batch con tracking

action_email_send_tracked_batch · action · Email · Disponibile · v1.0.0

Descrizione

Variante batch di action_email_send_tracked progettata per outreach commerciali a volume controllato rispettando le policy anti-spam dei provider SMTP enterprise (Gmail/Workspace, Outlook 365, Yahoo, transactional ESP come Mailgun/Postmark/SES). Accetta una lista di destinatari dove ogni elemento porta il proprio leadId univoco (per tracking analytics differenziato), i propri valori di sostituzione template (es. { "nome": "Mario", "azienda": "ACME", "settore": "Edilizia" }) e opzionalmente un proprio override di subject — utile per A/B testing del soggetto su sottoinsiemi della lista. Il loop di invio è serializzato con throttling configurabile in mail/ora (default 60, sotto la soglia Gmail di 100/h per evitare flag reputation IP) e jitter random ±20% sul delay tra invii (defense contro detection pattern automation di Gmail Postmaster Tools). Backoff esponenziale (5s → 30s → 2m → 10m) su HTTP 429 oppure SMTP 421 (Service not available, troppe connessioni), con retry budget configurabile (default 3 retry per destinatario). Budget temporale globale: se l'esecuzione supera maxRunMinutes (default 50 minuti per stare sotto al timeout 60min default di nginx/Cloudflare), i destinatari non ancora processati vengono restituiti nel response array con flag requeued=true + last_error per essere ripresi dal cron upstream nel run successivo — pattern resumable enterprise vs all-or-nothing che blocca su grosse liste. GDPR gate identico al sibling singolo: requireConsent=true (default) richiede consentVerified=true per OGNI singolo destinatario della lista, non solo globale; un destinatario senza consenso viene saltato e segnato come { status: "skipped", reason: "missing_consent" } senza fallire l'intero batch. Output: { stats: { sent, failed, retried, skipped, requeued, totalMs, effectiveRatePerHour, avgLatencyMs }, results: [{ recipient, leadId, status, messageId?, trackingIds?, error?, attempts }] }. Use case: SaaS B2B drip campaign onboarding con 500 trial new signup/settimana → invio 60/h × 8h/giorno distribuiti su 2 giorni rispettando Gmail SLA; cold outreach lead scraped da LinkedIn con personalizzazione per settore — utile A/B test sul subject "Ciao Mario" vs "ACME — proposta per settore Edilizia"; newsletter mensile a 2000 iscritti con sottoinsiemi geografici (jitter randomizza l'ordine per non triggerare antispam su pattern "tutti gli @libero.it nei primi 30 minuti"); recall pre-scadenza abbonamenti con tracking apertura per identificare candidati lapsus alla cancellazione e prepare retention sales call.

⚙️ Parametri di configurazione

Campi mostrati nell’editor quando si configura il nodo. Generati direttamente dal NodeDefconfigFields.

CampoTipoRequiredDefaultDescrizione
systemAccountId
Account email di sistema
email-account-pickernoAccount configurato in Settings → Email accounts. Se OAuth Gmail, il token viene rinnovato automaticamente quando scade — il batch può durare ore senza interruzioni.
host
SMTP host (override)
stringnoManuale (sconsigliato per batch).
port
SMTP porta
numberno587587 STARTTLS, 465 TLS implicito.
security
Sicurezza
enum
starttlstlsnone
nostarttlsLascia starttls salvo motivi specifici.
username
SMTP username
stringnoPer Gmail: l\'email completa.
password
SMTP password
string (encrypted)noPer Gmail: App Password. Per OAuth: NON COMPILARE.
from
Mittente (From) template
stringno
[email protected]
Indirizzo del mittente. Se vuoto e c\'e\` un account di sistema, eredita il suo fromAddress.
replyTo
Reply-To
stringnoIndirizzo dove arrivano le risposte se diverso dal From.
subject
Oggetto template
stringsi
Ciao {{lead.name}} · una proposta da Redivivo Gin
Supporta interpolazione `{{vars}}` per ogni destinatario.
body
Corpo template (HTML)
string (multiline)siBody template HTML. I link verso domini in `clickWhitelist` vengono tracciati; il pixel viene aggiunto in fondo. Le variabili `{{lead.field}}` per ogni destinatario.
bodyType
Tipo corpo
enum
htmltext
nohtmlHTML obbligatorio se vuoi il tracking pixel.
campaignId
Campagna ID
stringsi
redivivo-2026-w23-enoteche-lazio
Stringa libera. Tutti i destinatari di questo batch ereditano questo campaignId.
trackOpens
Traccia aperture (pixel)
booleannotrueOn: inietta pixel 1x1 in ogni email del batch.
trackClicks
Traccia click (URL rewrite)
booleannotrueOn: riscrive i link verso domini whitelisted.
trackingBaseUrl
URL base tracking
stringnoURL del runtime FlowForge. Vuoto = eredita FLOWFORGE_PUBLIC_BASE_URL.
clickWhitelist
Domini permessi nei link
chip-listnoLista di domini (suffix-match) per il tracking link. Vuoto = solo trackingBaseUrl. Mettere "*" per riscrivere TUTTI i link (sconsigliato).
requireConsent
Richiede consenso GDPR upstream
booleannotrueOn (default): rifiuta il batch se l\'input non porta `consentVerified=true`.
recipients
Lista destinatari (JSON inline)
JSON object/arraynoArray `[{leadId, to, fromAddress?, templateVars?, sendId?}, …]`. Se vuoto, il nodo legge `$json.recipients` dall\'input upstream (tipicamente un db_query).
ratePerHour
Rate (email/h)
numberno60Cap superiore di mail/h. Gmail Workspace: 60-100/h per account è il safe spot. Salire a 300+/h significa segnalazioni "soft fail" o ban temporaneo.
jitter
Jitter (0–0.95)
numberno0.2Variazione casuale del delay tra send (0 = cadenza fissa, 0.5 = ±50%). 0.2 default per apparire "umani" agli antispam senza spaccare il rate.
maxAttempts
Tentativi per destinatario
numberno3Numero di tentativi (incluso il primo) prima di marcare un destinatario come fallito.
backoffBaseMs
Backoff base (ms)
numberno5000Backoff esponenziale: backoffBaseMs · 2^(attempt-1), cap 60s. 5_000 → tentativi a 5s, 10s, 20s.
budgetMs
Budget totale (ms, opzionale)
numbernoTempo massimo del batch. Oltre questo, i destinatari residui escono con requeued=true cosi\` un cron a monte li riprende. Vuoto = 2× il tempo ideale.

💡 Esempio configurazione

Snippet JSON del nodo come compare nel workflow. I valori sono derivati daidefaultValue e dai parametri required.

{
  "id": "node-action_email_send_tracked_batch-1",
  "defId": "action_email_send_tracked_batch",
  "label": "Email: invia in batch con tracking",
  "config": {
    "port": 587,
    "security": "starttls",
    "subject": "Ciao {{lead.name}} · una proposta da Redivivo Gin",
    "body": "<body>",
    "bodyType": "html",
    "campaignId": "redivivo-2026-w23-enoteche-lazio",
    "trackOpens": true,
    "trackClicks": true,
    "requireConsent": true,
    "ratePerHour": 60,
    "jitter": 0.2,
    "maxAttempts": 3,
    "backoffBaseMs": 5000
  }
}

🔗 Nodi correlati nella stessa categoria

Pronto a usare Email: invia in batch con tracking?

Disponibile da subito in tutti i piani FlowForge. Provalo gratis senza carta di credito.

Inizia gratisSfoglia tutti i nodi