Per un’agenzia web, scalare troppo velocemente si trasforma spesso in un incubo. Quando si verifica un aumento delle attività ripetitive, le risorse disponibili si esauriscono molto prima che il lavoro venga completato: i flussi di lavoro sono frammentati, i processi inefficienti e il team è demotivato.

Una crescita sana e sostenibile richiede un cambiamento fondamentale di mentalità: lavorare meglio, non di più. In questo scenario, l’automazione non è un lusso: è un requisito strategico per la sopravvivenza e il successo.

Ma come si fa a tradurre l’idea di lavorare meglio in un flusso di lavoro funzionale? La risposta breve è: collega la tua infrastruttura con i tuoi strumenti di gestione.

In questa guida vedremo come collegare la tua infrastruttura di hosting Kinsta e il tuo sistema di gestione dei progetti Trello costruendo un livello di sincronizzazione personalizzato e automatizzato.

Cominciamo.

Il divario tra infrastruttura e gestione

Se utilizzi Trello per gestire i progetti della tua agenzia, conosci bene il rituale di onboarding: per ogni sito web che lanci, devi creare e configurare manualmente una bacheca di Trello e compilare checklist per tutte le attività necessarie, dalla configurazione dei DNS all’ottimizzazione SEO.

Poi viene la manutenzione quotidiana: attività e controlli ripetitivi eseguiti regolarmente per garantire che i siti dei clienti funzionino senza problemi, che l’utilizzo delle risorse rimanga entro i limiti del piano e che gli aggiornamenti vengano applicati senza errori. In un flusso di lavoro manuale, questo significa accedere a più dashboard solo per verificare che un sito non stia esaurendo la larghezza di banda o lo spazio su disco.

Più sono i progetti dei clienti, maggiore è la possibilità di errore umano e più probabile diventa la “stanchezza da monitoraggio”. Considera il ciclo di vita standard di un sito cliente:

  • Il processo di onboarding – Provisioning degli ambienti, configurazione DNS, implementazione SSL e configurazione CI/CD.
  • La fase operativa – Tracciamento dello stato di salute del server e del consumo di risorse per evitare tempi di inattività o costi aggiuntivi imprevisti.

In realtà, entrambe le fasi richiedono un costante coordinamento organizzativo. Il problema principale è l’effetto silo: l’hosting e la gestione sono due ecosistemi isolati. Le informazioni fluiscono solo se qualcuno si ricorda di controllare una metrica e di inviare un messaggio su Slack.

Se un sito raggiunge il suo limite di risorse ma chi si occupa dello sviluppo non aggiorna il Project Manager, le inefficienze e i ritardi sono inevitabili.

Le agenzie moderne e orientate alla crescita non possono affidarsi al coordinamento manuale. La comunicazione deve avvenire in modo fluido e automatico dall’infrastruttura (hosting Kinsta) direttamente allo strumento di gestione (Trello).

È qui che l’API di Kinsta diventa il membro più prezioso del tuo team, aiutandoti a trasformare i dati grezzi dell’hosting in informazioni utili per i tuoi Project Manager.

Lo stack tecnologico: perché Kinsta e Trello

La scelta degli strumenti giusti è il primo passo verso un’automazione efficace. Kinsta e Trello sono un binomio perfetto perché entrambe le piattaforme offrono solide API che permettono di creare un ponte automatizzato tra gli aspetti tecnici e gestionali dei flussi di lavoro.

  • L’API di Kinsta: Kinsta offre un’API RESTful che consente agli sviluppatori del tuo team di eseguire programmaticamente azioni tecniche e operative, dal provisioning degli ambienti all’estrazione di dati analitici in tempo reale e dei log dei server. Kinsta è un’infrastruttura programmabile.
  • Il sistema di gestione dei progetti di Trello: Trello è molto più di una raccolta di appunti ed elenchi; è una rappresentazione visiva dei processi della tua agenzia basata sulla logica del Kanban board. L’API di Trello ti aiuta a trasformare una dashboard statica in un ambiente dinamico che risponde agli eventi sul tuo server.

Integrando Kinsta e Trello, trasformi i dati grezzi di MyKinsta in informazioni utili per i tuoi team. Niente più lavoro manuale, passi falsi, spese generali o perdita di valore da parte dei tuoi developer.

Detto questo, è il momento di rimboccarsi le maniche e reperire gli strumenti necessari.

Reperire gli strumenti

Prima di iniziare la codifica, dovrai reperire gli strumenti che servono per questo progetto:

  • Chiave API di Kinsta
  • Chiave API di Trello
  • Token di Trello
  • Un repository di codice GitHub

Iniziamo con la chiave API di Kinsta.

Passo 1: Generare una chiave API Kinsta

La chiave API di Kinsta permette di accedere al proprio servizio di hosting tramite l’API. Segui questi passaggi per creare una nuova chiave API Kinsta:

  1. Vai alla tua dashboard MyKinsta.
  2. Vai alla pagina delle chiavi API (Il tuo nome > Impostazioni azienda > Chiavi API).
  3. Clicca su Crea chiave API.
  4. Scegli una scadenza o imposta una data di inizio personalizzata e un numero di ore per la scadenza della chiave.
  5. Assegna alla chiave un nome univoco.
  6. Clicca su Genera.
Creare una chiave API su MyKinsta
Creare una chiave API su MyKinsta.

Assicurati di copiare la tua chiave API e di conservarla in un luogo sicuro. Non potrai più vederla. Se la perdi, dovrai revocarla e generarne una nuova.

Passo 2: Generare la chiave API e il token di Trello

Per generare una chiave API, Trello ti chiede di creare un Trello Power-Up, che è essenzialmente un’applicazione Trello. Per iniziare, accedi al portale di amministrazione della Power-Up.

Portale di amministrazione di Trello Power-Up
Portale di amministrazione di Trello Power-Up

Clicca su New e compila il modulo che appare.

Nuovo modulo per l'app Trello
Nuovo modulo per l’app Trello

Una volta salvate le informazioni, Trello ri reindirizzerà alla tua dashboard Power-Up. Inserisci i dati richiesti e salva le impostazioni. Successivamente, clicca su API Key nel menu a sinistra e poi su Generate a new API key al centro della pagina.

Generare una nuova chiave API di Trello
Generare una nuova chiave API di Trello

Ed ecco fatto! Ora hai la tua chiave API di Trello. Assicurati di conservarla in un luogo sicuro.

Copiare e incollare la chiave API di Trello in un luogo sicuro
Copiare e incollare la chiave API di Trello in un luogo sicuro

Tuttavia, la sola chiave API non è sufficiente per integrare Trello nelle applicazioni. Bisogna anche generare un token. Clicca sul link Token a destra per visualizzare una pagina che elenca i permessi che stai concedendo al tuo Power-Up. Esamina questi permessi e autorizza Trello a condividere i dati.

Copiare e incollare il token di Trello
Copiare e incollare il token di Trello.

Copia e incolla il token di Trello in un luogo sicuro.

Passo 3: Creare un repository di codice su GitHub

GitHub non è solo un repository di codice. È anche un luogo in cui impostare attività ripetitive e automazioni.

Su GitHub dovrai impostare i seguenti tre elementi:

  • Il repository, che ospita il tuo codice;
  • I segreti, utilizzati per memorizzare le chiavi API e i token; e
  • Il flusso di lavoro, che contiene le istruzioni per l’automazione.

1. Creare il repository GitHub

Su GitHub, clicca sul pulsante verde New.

  1. Dai un nome al tuo repository.
  2. Aggiungi una descrizione.
  3. Imposta la visibilità su Privato.
  4. Seleziona l’opzione Add README.
  5. Clicca su Create repository.
Creare un nuovo repository GitHub
Creare un nuovo repository GitHub

2. Configurare i segreti Actions

Successivamente, dovrai configurare i segreti. Questo è un passo importante perché permette di evitare di inserire le chiavi API direttamente nel codice.

Nel tuo nuovo repository, clicca sulla scheda Settings nella parte superiore della pagina. Nel menu di sinistra, clicca su Secrets and variables, seguito da Actions.

Pagina di configurazione dei segreti e delle variabili delle Actions
Pagina di configurazione dei segreti e delle variabili delle Actions

Clicca su New repository secret e aggiungi le chiavi API e il token.

Segreti del repository GitHub
Segreti del repository GitHub

3. Configurare il workflow

Ora devi concedere a GitHub i permessi di scrittura. Sempre in Settings, vai su Actions > General.

Scorri fino alla sezione Workflow Permissions e seleziona la casella Read and Write permissions. Poi clicca su Save.

Permessi del workflow di GitHub
Permessi del workflow di GitHub

Automatizzare l’onboarding con Kinsta API e Trello

Ora hai le chiavi API e il token Trello. Il passo successivo consiste nell’integrare l’hosting Kinsta con il sistema di gestione dei progetti Trello.

Utilizzeremo GitHub Actions per eseguire periodicamente uno script di sincronizzazione tra Kinsta e Trello. Questo processo automatizzato interrogherà l’API di Kinsta a intervalli prestabiliti per i nuovi siti e poi utilizzerà l’API di Trello per assicurarsi che la tua bacheca di Trello rispecchi perfettamente il tuo portfolio di siti Kinsta.

In GitHub, devi creare un file di configurazione YAML per specificare quando lo script deve essere eseguito. Nel nostro esempio, lo script verrà eseguito ogni 30 minuti.

Torna alla sezione Code del tuo repository e clicca su Add file > Create new file.

Inserisci .github/workflows/main.yml nel nome del file. GitHub creerà automaticamente le cartelle .github e workflows. Quindi incolla il seguente codice:

name: Kinsta-Trello Integration
on:
  schedule:
    - cron: '*/30 * * * *' # Run every 30 minutes
  workflow_dispatch:       # Allows to start it manually for testing

jobs:
  run-sync:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Run automation script
        env:
          KINSTA_API_KEY: ${{ secrets.KINSTA_API_KEY }}
          KINSTA_COMPANY_ID: ${{ secrets.KINSTA_COMPANY_ID }}
          TRELLO_API_KEY: ${{ secrets.TRELLO_API_KEY }}
          TRELLO_TOKEN: ${{ secrets.TRELLO_TOKEN }}
        run: node index.js

Una volta terminato, clicca sul pulsante verde Commit changes….

La configurazione iniziale è completa. Ora puoi passare alla creazione dello script.

Passo 2. Creare lo script

Dovrai creare un nuovo file index.js nella directory principale del tuo progetto GitHub e aggiungere il codice mostrato nelle sezioni seguenti.

1. Dichiarare le variabili

Il primo passo è dichiarare le variabili di cui lo script ha bisogno per svolgere le sue attività.

const KINSTA_API_URL = 'https://api.kinsta.com/v2';
const TRELLO_API_URL = 'https://api.trello.com/1';

const secrets = {
	kinsta: process.env.KINSTA_API_KEY,
	company: process.env.KINSTA_COMPANY_ID,
	trelloKey: process.env.TRELLO_API_KEY,
	trelloToken: process.env.TRELLO_TOKEN
};

2. Definire la funzione di automazione

Il passo successivo consiste nel definire la funzione di automazione.

async function startAutomation() {
	try {
		console.log("🚀 Starting Kinsta-Trello automation...");

		const kinstaUrl = `${KINSTA_API_URL}/sites?company=${secrets.company}`;

		const kinstaResponse = await fetch(kinstaUrl, {
			method: 'GET',
			headers: { 
				'Authorization': `Bearer ${secrets.kinsta}` 
			}
		});

		if (!kinstaResponse.ok) throw new Error(`Kinsta API error: ${kinstaResponse.status}`);

		const kinstaData = await kinstaResponse.json();

		const sites = kinstaData.company?.sites || [];

		console.log(`✅ Successfully fetched ${sites.length} sites from Kinsta.`);

		const trelloResponse = await fetch(`${TRELLO_API_URL}/members/me/boards?key=${secrets.trelloKey}&token=${secrets.trelloToken}`);
		
		if (!trelloResponse.ok) throw new Error(`Trello API error: ${trelloResponse.statusText}`);
		
		const trelloBoards = await trelloResponse.json();

		for (const site of sites) {
			const boardExists = trelloBoards.find(board => board.name === site.name);

			if (!boardExists) {
				console.log(`✨ New site found: ${site.name}. Provisioning workflow...`);

				const createBoardUrl = `${TRELLO_API_URL}/boards/?name=${encodeURIComponent(site.name)}&defaultLists=false&key=${secrets.trelloKey}&token=${secrets.trelloToken}`;
				const newBoardResponse = await fetch(createBoardUrl, { method: 'POST' });
				const newBoard = await newBoardResponse.json();

				if (newBoardResponse.ok) {
					console.log(`✅ Board created for ${site.name}. Setting up workflow...`);

					const toDoListId = await createWorkflow(newBoard.id);

					if (toDoListId) {
						await createGoLiveCard(toDoListId);
					}
				} else {
					console.log(`❌ Failed to create board for ${site.name}.`);
				}
			} else {
				console.log(`ℹ️ Site "${site.name}" already has a board. Skipping.`);
			}
		}

		console.log("🏁 Automation workflow finished!");
	
	} catch (error) {
		console.error("❌ Critical error during automation:", error.message);
	}
}

startAutomation();

Analizziamo questa funzione blocco per blocco.

Il primo console.log indica che il processo è stato avviato:

console.log("🚀 Starting Kinsta-Trello automation...");

Il codice seguente recupera i siti della tua azienda MyKinsta:

const kinstaUrl = `${KINSTA_API_URL}/sites?company=${secrets.company}`;

const kinstaResponse = await fetch(kinstaUrl, {
	method: 'GET',
	headers: { 
		'Authorization': `Bearer ${secrets.kinsta}` 
	}
});

if (!kinstaResponse.ok) throw new Error(`Kinsta API error: ${kinstaResponse.status}`);

const kinstaData = await kinstaResponse.json();

const sites = kinstaData.company?.sites || [];

console.log(`✅ Successfully fetched ${sites.length} sites from Kinsta.`);
  • Se la risposta non è kinstaResponse.ok, viene lanciato un messaggio di errore. Se l’API restituisce un risultato valido, la funzione memorizza l’elenco dei siti nell’array sites e visualizza un messaggio di successo.

Il passo successivo consiste nel recuperare le schede Trello esistenti:

const trelloResponse = await fetch(`${TRELLO_API_URL}/members/me/boards?key=${secrets.trelloKey}&token=${secrets.trelloToken}`);

if (!trelloResponse.ok) throw new Error(`Trello API error: ${trelloResponse.statusText}`);

const trelloBoards = await trelloResponse.json();

Passiamo quindi alla logica di sincronizzazione.

for (const site of sites) {
	const boardExists = trelloBoards.find(board => board.name === site.name);

	if (!boardExists) {
		console.log(`✨ New site found: ${site.name}. Provisioning workflow...`);

		const createBoardUrl = `${TRELLO_API_URL}/boards/?name=${encodeURIComponent(site.name)}&defaultLists=false&key=${secrets.trelloKey}&token=${secrets.trelloToken}`;
		const newBoardResponse = await fetch(createBoardUrl, { method: 'POST' });
		const newBoard = await newBoardResponse.json();

		if (newBoardResponse.ok) {
			console.log(`✅ Board created for ${site.name}. Setting up workflow...`);

			const toDoListId = await createWorkflow(newBoard.id);

			if (toDoListId) {
				await createGoLiveCard(toDoListId);
			}
		} else {
			console.log(`❌ Failed to create board for ${site.name}.`);
		}
	} else {
		console.log(`ℹ️ Site "${site.name}" already has a board. Skipping.`);
	}
}
  • Il ciclo for itera gli elementi dell’array sites (cioè l’elenco dei siti dell’azienda di MyKinsta) e controlla se esiste una bacheca per ogni sito. Se non esiste una bacheca con il nome del sito, ne crea una.
  • Se la nuova scheda è stata creata con successo (if (newBoardResponse.ok) {...}), chiama le funzioni createWorkflow() e createGoLiveCard() descritte di seguito. Nota che createGoLiveCard() viene invocata solo per l’elenco To Do.

3. Definisci la funzione createWorkflow()

La funzione createWorkflow() crea tre elenchi predefiniti nel tuo spazio Trello e restituisce l’ID dell’elenco To Do.

async function createWorkflow(boardId) {
	const lists = ['To Do', 'Doing', 'Done'];
	let toDoListId = null;

	for (const listName of lists) {
		const url = `${TRELLO_API_URL}/boards/${boardId}/lists?name=${encodeURIComponent(listName)}&key=${secrets.trelloKey}&token=${secrets.trelloToken}`;
		const response = await fetch(url, { method: 'POST' });
		const newList = await response.json();

		console.log(`   - List "${listName}" created.`);

		if (listName === 'To Do') toDoListId = newList.id;
	}
	return toDoListId;
}

4. Definire la funzione helper createGoLiveCard()

Ora devi definire la funzione che genera la lista di controllo della pipeline Go-Live.

async function createGoLiveCard(listId) {
	const cardUrl = `${TRELLO_API_URL}/cards?idList=${listId}&name=${encodeURIComponent('🚀 Go-Live Pipeline')}&desc=${encodeURIComponent('Standard agency tasks for site launch.')}&key=${secrets.trelloKey}&token=${secrets.trelloToken}`;
	const cardResponse = await fetch(cardUrl, { method: 'POST' });
	const card = await cardResponse.json();

	if (cardResponse.ok) {
		const checklistUrl = `${TRELLO_API_URL}/checklists?idCard=${card.id}&name=Launch%20Tasks&key=${secrets.trelloKey}&token=${secrets.trelloToken}`;
		const checklistResponse = await fetch(checklistUrl, { method: 'POST' });
		const checklist = await checklistResponse.json();

		const tasks = [
			'Point DNS to Kinsta',
			'Install & Force SSL (Let\'s Encrypt)',
			'Set up Search Console & Analytics',
			'Performance Test (Kinsta APM)',
			'Final Backup before Launch'
		];

		for (const task of tasks) {
			await fetch(`${TRELLO_API_URL}/checklists/${checklist.id}/checkItems?name=${encodeURIComponent(task)}&key=${secrets.trelloKey}&token=${secrets.trelloToken}`, {
				method: 'POST'
			});
		}
		console.log(`   - Go-Live Pipeline card with checklist created.`);
	}
}

Questa funzione esegue le seguenti operazioni:

  • Innanzitutto, utilizza l’API di Trello per creare la lista della Pipeline Go-Live.
  • Poi, se la risposta è cardResponse.ok, aggiunge un elenco con 5 elementi alla scheda To Do.

5. Eseguire il workflow

È il momento di testare il codice. Per prima cosa, esegui il commit delle modifiche, poi vai nella sezione Actions (link nel menu in alto).

Eseguire il commit delle modifiche in GitHub.
Eseguire il commit delle modifiche in GitHub.

Una volta fatto, clicca sull’applicazione nel menu a sinistra. Nel nostro esempio, si tratta dell’integrazione Kinsta-Trello.

Pagina delle GitHub Actions
Pagina delle GitHub Actions

Clicca sul pulsante Run workflow sulla destra. In questo modo si avvia il flusso di lavoro. Clicca sul flusso di lavoro in esecuzione, quindi clicca su Run automation script. Verranno visualizzati i passaggi del processo in corso, insieme ai messaggi di successo di console.log o ai messaggi di errore in caso di fallimento del processo.

Eseguire gli script di automazione su GitHub
Eseguire gli script di automazione su GitHub

Come mostrato nell’immagine qui sopra, lo script ha creato una nuova bacheca di Trello con tre elenchi, compreso quello della pipeline Go-Live. Le immagini seguenti mostrano la nuova bacheca di Trello e la lista di controllo della pipeline Go-Live all’interno della scheda To Do.

Una bacheca Trello
Creazione automatica di una bacheca Trello.
La lista di controllo della pipeline Go-Live.
La lista di controllo della pipeline ‘Go-Live’ è stata aggiunta all’elenco ‘To do’.

Monitoraggio proattivo con Kinsta API e Trello

L’integrazione dell’hosting Kinsta con la gestione dei progetti Trello va ben oltre l’onboarding iniziale. Sfruttando le rispettive API, puoi mantenere un flusso di comunicazione continuo tra i due ambienti, assicurandoti che il tuo team sia informato in tempo reale sullo stato di salute dei tuoi siti.

Ad esempio, puoi aggiungere automaticamente una scheda di Trello alla bacheca del tuo team ogni volta che si verifica un evento critico, come un elevato utilizzo della larghezza di banda o uno spazio su disco ridotto. Il sistema può generare automaticamente una scheda sulla bacheca del team tecnico, completa di una lista di controllo delle attività.

Utilizzando la stessa logica e gli stessi strumenti che abbiamo usato per l’onboarding, puoi anche automatizzare il monitoraggio e la gestione dello stato di salute dei tuoi siti. Questo richiede un nuovo file di configurazione e uno script dedicato: Torna su GitHub e crea il file .github/workflows/health-check.yml con il seguente codice:

name: Daily Health Check

on:
  schedule:
    - cron: '0 9 * * *' # Runs at 09:00
  workflow_dispatch:    # Start manually

jobs:
  health-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Run Health Check
        env:
          KINSTA_API_KEY: ${{ secrets.KINSTA_API_KEY }}
          KINSTA_COMPANY_ID: ${{ secrets.KINSTA_COMPANY_ID }}
          TRELLO_API_KEY: ${{ secrets.TRELLO_API_KEY }}
          TRELLO_TOKEN: ${{ secrets.TRELLO_TOKEN }}
        run: node health-check.js

Ecco i punti chiave di questo script di configurazione:

  • Abbiamo impostato un timer automatico per eseguire lo script ogni giorno alle 09:00 UTC ((schedule: - cron: '0 9 * * *').
  • workflow_dispatch esegue lo script in qualsiasi momento tramite la scheda Actions su GitHub. Questo è particolarmente utile durante lo sviluppo e il debug.
  • Poi abbiamo impostato la sequenza delle operazioni: il comando finale utilizza node per eseguire il file health-check.js.

1. Dichiarare le variabili

Naviga nella directory principale del tuo repository, crea un file chiamato health-check.js e dichiara le seguenti variabili:

const KINSTA_API_URL = 'https://api.kinsta.com/v2';
const TRELLO_API_URL = 'https://api.trello.com/1';

const secrets = {
	kinsta: process.env.KINSTA_API_KEY,
	company: process.env.KINSTA_COMPANY_ID,
	trelloKey: process.env.TRELLO_API_KEY,
	trelloToken: process.env.TRELLO_TOKEN
};

2. Ottenere i siti Kinsta

Definiamo quindi la funzione getKinstaSites():

async function getKinstaSites() {
	const url = `${KINSTA_API_URL}/sites?company=${secrets.company}`;
	const response = await fetch(url, {
		method: 'GET',
		headers: { 'Authorization': `Bearer ${secrets.kinsta}` }
	});
	if (!response.ok) throw new Error(`Kinsta API error: ${response.status}`);
	const data = await response.json();
	return data.company?.sites || [];
}

Questa funzione restituisce un elenco di siti dell’azienda in MyKinsta o un array vuoto.

3. Ottenere l’utilizzo della larghezza di banda

Definisci una funzione chiamata getBandwidthUsage() che restituisca l’utilizzo della larghezza di banda di un sito web.

async function getBandwidthUsage(siteId) {
  const url = `${KINSTA_API_URL}/sites/${siteId}/usage/bandwidth/this-month`;
  const response = await fetch(url, {
    method: 'GET',
    headers: { 'Authorization': `Bearer ${secrets.kinsta}` }
  });
  if (!response.ok) return null;
  const data = await response.json();
  const bytes = data.site?.this_month_usage?.bandwidth;
  return bytes !== undefined ? Math.round(bytes / (1024 * 1024)) : 0;
}

4. Creare le schede di Trello

La seguente funzione genera una scheda intitolata “⚠️ Bandwidth Alert: High Traffic”:

async function postTrelloAlert(siteName, message) {
	const boardsResp = await fetch(`${TRELLO_API_URL}/members/me/boards?key=${secrets.trelloKey}&token=${secrets.trelloToken}`);
	const boards = await boardsResp.json();
	const board = boards.find(b => b.name === siteName);

	if (board) {
		const listsResp = await fetch(`${TRELLO_API_URL}/boards/${board.id}/lists?key=${secrets.trelloKey}&token=${secrets.trelloToken}`);
		const lists = await listsResp.json();
		const targetList = lists.find(l => l.name === 'To Do') || lists[0];

		const cardsResp = await fetch(`${TRELLO_API_URL}/lists/${targetList.id}/cards?key=${secrets.trelloKey}&token=${secrets.trelloToken}`);
		const cards = await cardsResp.json();
    
		const alertTitle = `⚠️ Bandwidth Alert: High Traffic`;
		if (!cards.find(c => c.name === alertTitle)) {
			await fetch(`${TRELLO_API_URL}/cards?idList=${targetList.id}&name=${encodeURIComponent(alertTitle)}&desc=${encodeURIComponent(message)}&key=${secrets.trelloKey}&token=${secrets.trelloToken}`, {
				method: 'POST'
			});
		console.log(`📌 Alert posted for ${siteName}`);
		}
	}
}
  • Nota la condizione if (!cards.find(...)). In questo modo si evita di ingombrare la lavagna con notifiche duplicate.

5. Eseguire lo script

Infine, definisci una funzione per monitorare i siti.

async function runMonitoring() {
  console.log("📊 Starting standalone Health Check...");
  const sites = await getKinstaSites();
  for (const site of sites) {
    const usage = await getBandwidthUsage(site.id);
    if (usage !== null) {
      console.log(`Site: ${site.name} | Usage: ${usage} MB`);
      if (usage > 100) { // Test threshold
        await postTrelloAlert(site.name, `Bandwidth usage: ${usage} MB.`);
      }
    }
  }
}

runMonitoring().catch(console.error);

Quando viene eseguita, questa funzione richiama le funzioni definite in precedenza:

  • getKinstaSites() – Recupera l’elenco dei siti aziendali in MyKinsta;
  • getBandwidthUsage() – Controlla l’utilizzo della larghezza di banda del mese corrente per ogni sito;
  • postTrelloAlert() – Genera automaticamente una scheda Trello solo quando raggiunge la soglia e non esistono schede precedenti.
Una scheda Trello creata automaticamente dopo un controllo della larghezza di banda
Una scheda Trello creata automaticamente dopo un controllo della larghezza di banda

Scalare meglio, senza complicazioni, con Kinsta

Scalare non significa necessariamente lavorare di più. Con una strategia di automazione ben progettata, è possibile eliminare le attività manuali ripetitive e aggiungere nuovi progetti al portfolio senza sovraccaricare le operazioni.

Colmando il divario tra l’infrastruttura del sito e la gestione dei progetti, puoi stabilire canali di comunicazione continui che convertono i dati grezzi dell’hosting in attività operative attuabili.

Grazie alle API di Kinsta e alle GitHub Actions, abbiamo creato un sistema di onboarding automatico e di monitoraggio proattivo che riduce il rischio di errori umani, alleggerisce il carico di lavoro del tuo team e garantisce di essere sempre in grado di rispondere ai problemi che si presentano tempestivamente. Ciò permette di passare da un approccio reattivo, incentrato sulla risoluzione dei problemi, a uno proattivo, orientato al futuro.

Vuoi cominciare subito ad automatizzare i flussi di lavoro della tua agenzia? Dai un’occhiata ai nostri piani per trovare quello più adatto a te.

Carlo Daniele Kinsta

Carlo è cultore appassionato di webdesign e front-end development. Gioca con WordPress da oltre 20 anni, anche in collaborazione con università ed enti educativi italiani ed europei. Su WordPress ha scritto centinaia di articoli e guide, pubblicati sia in siti web italiani e internazionali, che su riviste a stampa. Lo trovate su LinkedIn.