Naarmate je bureau meer klanten toevoegt, kan het handhaven van hoge prestaties op alle sites die je beheert al snel een uitdaging worden. Slecht gecodeerde plugins, niet geoptimaliseerde afbeeldingen en externe scripts kunnen de sites van je klanten vertragen en PageSpeed Insights (PSI) scores geleidelijk verlagen.
In plaats van elke WordPress site handmatig te controleren, kun je de prestatiemonitoring voor al je sites automatiseren en je alleen richten op het onderzoeken van afwijkingen wanneer deze zich voordoen, waardoor je team elke maand uren werk bespaart door eenvoudige, efficiënte geautomatiseerde controles.
In dit artikel leer je hoe je je workflow voor het controleren van de prestaties van alle door Kinsta gehoste WordPress sites van je bureau kunt automatiseren door de Kinsta API en Google PageSpeed Insights API samen te gebruiken. Als laatste stap leer je hoe je deze gegevens in real-time kunt delen met je team met behulp van Slack webhooks en hoe je het proces kunt automatiseren met een cron job.
Klinkt goed? Tijd om aan de slag te gaan!
Overzicht workflow: Kinsta naar PageSpeed Insights naar Slack
Het script koppelt drie API’s. Kinsta, Google PageSpeed Insights en Slack, om het monitoren van de websiteprestaties te automatiseren.
Begin met het bevragen van de Kinsta API om je website domeinen en omgevingen op te halen. Dit zorgt ervoor dat je domeinenlijst actueel blijft terwijl je sites van klanten toevoegt.
Vervolgens gebruikt je script voor elke site die wordt geretourneerd door de Kinsta API de Google PSI API om de belangrijkste statistieken op te halen: Performance Score (0-100), First Contentful Paint (FCP) en Largest Contentful Paint (LCP).
Tot slot post het script deze statistieken, de sitenaam, de drie scores en een PageSpeed Insights link naar een aangewezen Slack-kanaal.
De tools instellen
Voordat je gaat coderen, genereer je twee API-sleutels en maak je snelle configuraties.
De Kinsta API gebruiken: Controleer machtigingen en genereer je API-sleutel
De Kinsta API vereist een API-sleutel die is gegenereerd vanuit een account met specifieke machtigingen. In ons voorbeeld moet dat de Company Owner of een Company Administrator zijn.
Om een Kinsta API-sleutel aan te maken, log je in op MyKinsta en volg je deze stappen:
- Navigeer naar de pagina API-sleutels (Je naam > Bedrijfsinstellingen > API-sleutels).
- Klik op API-sleutel aanmaken.
- Stel de vervaltijd in en geef je sleutel een unieke naam.
- Klik op Genereren.

Merk op dat dit de enige keer is dat je je API-sleutel kunt zien. Kopieer hem en bewaar hem op een veilige plek.
Het tweede dat je nodig hebt is je MyKinsta bedrijfs-ID. Je kunt deze eenvoudig vinden in de querystring van de URL van je MyKinsta dashboard (zoek naar de parameter idCompany).
Met deze gegevens kun je toegang krijgen tot de Kinsta API en cURL gebruiken om een lijst van je bedrijfssites op te vragen. Open je favoriete opdrachtregeltool en voer de volgende opdracht in, waarbij je <YOUR_COMPANY_ID> en <YOUR_API_KEY> vervangt door je referenties.
curl -X GET "https://api.kinsta.com/v2/sites?company=<YOUR_COMPANY_ID>"
-H "Authorization: Bearer <YOUR_API_KEY>"
Als je bedrijfs-ID en API-sleutel correct zijn, zou je een JSON respons moeten ontvangen die als volgt is opgebouwd:
{
"company": {
"sites": [
{
"id": "YOUR_SITE_ID",
"name": "my-wordpress-website",
"display_name": "My WordPress website",
"status": "live",
"site_labels": []
}
]
}
}
Zoals je kunt zien, ontbreekt in dit antwoord een essentieel stukje informatie – de website URL. Om het primaire domein voor elke omgeving op te vragen, voeg je de parameter include_environments=true toe aan de query string. Met deze parameter retourneert de API ook gedetailleerde gegevens voor elke omgeving (live en test), inclusief het primaire domein. Hier is een generieke respons:
{
"company": {
"sites": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "firstsite",
"display_name": "First site",
"status": "live",
"siteLabels": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "Do not remove"
}
],
"environments": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "live",
"display_name": "Live",
"is_blocked": false,
"id_edge_cache": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"cdn_cache_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"is_opt_out_from_automatic_php_update": false,
"web_root": "/release_v1",
"image_optimization_type": "lossy",
"is_additional_sftp_accounts_enabled": false,
"is_premium": false,
"wordpress_version": "6.3.1",
"domains": [ ... ],
"primaryDomain": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "example.com",
"site_id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"is_active": true,
"type": "live"
},
"ssh_connection": { ... }
},
"container_info": { ... }
}
]
}
]
}
}
Vervolgens moet je een Google PageSpeed Insights applicatie en API-sleutel genereren.
Een API-sleutel genereren voor Google PageSpeed Insights
De volgende stap is het maken van een API-sleutel om toegang te krijgen tot de Google PageSpeed Insights-service. Log in op de Google Cloud Console en volg deze stappen:
Stap 1: Maak een nieuw project aan of open een bestaand project. Voor dit artikel hebben we een nieuw Performance Monitoring project gemaakt.

Stap 2: Navigeer naar APIs & Services > Library, zoek dan naar PageSpeed Insights API onderaan de pagina en klik op de knop.

Stap 3: Klik op de volgende pagina op Enable.

Stap 4: Klik op Create credentials op het tabblad Credentials.

Stap 5: Voor extra veiligheid raden we aan om beperkingen in te stellen voor de nieuw aangemaakte sleutel door alleen de PageSpeed Insights API te selecteren.

Je PageSpeed Insights API-sleutel is nu klaar voor gebruik. Er moet nog een laatste service worden geconfigureerd. Je moet een nieuwe Slack app maken.
Een Slack app maken en de Incoming Webhook configureren
Om berichten naar een specifiek Slack kanaal te sturen, moet je een Slack applicatie maken. Volg deze stappen:
Stap 1: Als je Slack actief gebruikt om samen te werken met je team, dan heb je een actieve werkruimte. Zo niet, raadpleeg dan de Slack documentatie om er een aan te maken. In dit voorbeeld gaan we ervan uit dat je een bestaande My Company workspace hebt.
Stap 2: Ga naar het Slack API dashboard en klik op Create an App (of Create New App als dit niet je eerste app is).

Stap 3: Je wordt gevraagd om de scopes en instellingen van je app te configureren. Selecteer From scratch.

Stap 4: Geef je applicatie vervolgens een naam (bijv. Performance Bot) en selecteer je workspace.

Stap 5: Selecteer Incoming Webhooks in de linker zijbalk en klik vervolgens op On. Klik vervolgens onder aan de pagina op Add New Webhook.

Stap 6: Kopieer de URL van de Webhook en sla deze op voor toekomstig gebruik.

Je hebt nu alles wat je nodig hebt om een script te maken waarmee je de prestatiecijfers van je website automatisch kunt delen met je team op Slack. Het is tijd om in de code te duiken.
Een PHP script om prestatiemonitoring te automatiseren
De volgende stap is het maken van een script dat communiceert met de drie bovengenoemde services om automatisch de prestaties te controleren van alle klantensites van het bureau die worden gehost op Kinsta.
Stap 1: Scriptconfiguratie
Maak in je favoriete code editor een nieuw .php bestand en voeg de volgende code toe:
<?php
$kinsta_api_key = 'YOUR_KINSTA_API_KEY';
$kinsta_company_id = 'YOUR_COMPANY_UUID';
$google_api_key = 'YOUR_GOOGLE_API_KEY';
$slack_webhook_url = 'YOUR_SLACK_WEBHOOK_URL';
echo "--- STARTING PERFORMANCE MONITORING ---n";
Vervang de placeholders door de werkelijke gegevens die je eerder hebt opgehaald.
Stap 2: Gebruik de Kinsta API om een lijst met bedrijfssites op te halen
Om de lijst met sites in je Kinsta-account op te halen, moet je Kinsta API v2 en het /sites endpoint gebruiken.
Hier lees je hoe je toegang kunt krijgen tot de API via cURL:
// 1. Fetch the list of sites from Kinsta
$url_kinsta = "https://api.kinsta.com/v2/sites?company=" . $kinsta_company_id . "&include_environments=true";
$ch = curl_init($url_kinsta);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $kinsta_api_key]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res_kinsta = curl_exec($ch);
$data_kinsta = json_decode($res_kinsta, true);
curl_close($ch);
$sites = $data_kinsta['company']['sites'] ?? [];
echo "Found " . count($sites) . " sites to analyze.n";
Merk op dat we de queryparameter includes_environments=true hebben gebruikt om omgevingsdetails (live en test) op te halen.
Vraag vervolgens de Google PSI API op en stuur de gegevens naar de Slack app.
PageSpeed Insights statistieken en Slack meldingen
Nu moet je de URL van elke opgehaalde site naar de PageSpeed Insights API sturen. Wanneer je de service aanroept, voert PageSpeed Insights een prestatiecontrole uit en retourneert een object met prestatiegegevens. Je script stuurt deze gegevens naar de Slack API, die de bijbehorende meldingen genereert.
Hier is de code die je aan je script moet toevoegen:
foreach ($sites as $site) {
$site_label = $site['display_name'];
$primary_domain = "";
// 2. Search the downloaded data directly for the live environment
$environments = $site['environments'] ?? [];
foreach ($environments as $env) {
if ($env['name'] === 'live') {
$raw_domain = $env['primaryDomain'] ?? $env['primary_domain'] ?? null;
$primary_domain = is_array($raw_domain) ? ($raw_domain['name'] ?? "") : $raw_domain;
break;
}
}
if (empty($primary_domain)) {
echo "Skipping $site_label (No Live domain found).n";
continue;
}
echo "Analyzing $primary_domain... ";
// 3. PageSpeed analysis
$psi_url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://" . urlencode($primary_domain) . "&key=$google_api_key&category=performance&strategy=mobile";
$res_psi = @file_get_contents($psi_url);
if ($res_psi === false) {
echo "PSI Error.n";
continue;
}
$data_psi = json_decode($res_psi, true);
$score = ($data_psi['lighthouseResult']['categories']['performance']['score'] ?? 0) * 100;
$fcp = $data_psi['lighthouseResult']['audits']['first-contentful-paint']['displayValue'] ?? 'N/A';
$lcp = $data_psi['lighthouseResult']['audits']['largest-contentful-paint']['displayValue'] ?? 'N/A';
// 4. Send rich notification to Slack
$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";
$slack_msg = [
"text" => "🚀 *Performance Report: $site_label*nURL: `https://$primary_domain` nn" .
"• *Score:* `$score` n" .
"• *FCP:* $fcp n" .
"• *LCP:* $lcpnn" .
"[ <$report_link|View Full Report> ]"
];
$ch = curl_init($slack_webhook_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slack_msg));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
echo "Done.n";
}
echo "--- MONITORING COMPLETED ---n";
In het kort itereert deze code over de elementen van de $sites array. Voor elk element van de array wordt Core Web Vitals opgehaald en een bericht naar Slack gestuurd.
Het script testen
Je kunt verbinding maken met je container via SSH en je PHP script direct vanaf de terminal uitvoeren. Zo kun je snel problemen met je script oplossen en in realtime prestatieresultaten in Slack ontvangen.
Navigeer in MyKinsta naar Sites > Sitenaam. Scroll naar beneden naar de sectie Primaire SFTP/SSH gebruiker en zoek het SSH terminal commando veld. Het zou er ongeveer zo uit moeten zien:
ssh wordpress@host-name -p port-number
Kopieer het SSH terminal commando en plak het in de terminal. Je wordt gevraagd om het wachtwoord in te voeren dat in dezelfde sectie staat. Druk op Enter en je bent verbonden met je containeromgeving.

Nu kun je je code testen. Navigeer vanaf de opdrachtregel naar de map waar je het script hebt geüpload. In dit voorbeeld hebben we de map public gebruikt:
cd public
Gebruik vervolgens de volgende opdracht om het script uit te voeren:
php performance-monitor.php
Het script geeft een bericht voor elke actie die het uitvoert. Als het klaar is met draaien, zou je een lijst met berichten moeten zien zoals hieronder:
--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Done.
Analyzing site2.kinsta.cloud... Done.
Analyzing site3.kinsta.cloud... Done.
Analyzing example.com... Done.
Analyzing site5.kinsta.cloud... Done.
--- MONITORING COMPLETED ---
Als PSI niet tijdig reageert, gaat het script door naar de volgende site. In dat geval zie je een bericht dat er als volgt uitziet:
--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Done.
Analyzing site2.kinsta.cloud... Done.
Analyzing site3.kinsta.cloud... Done.
Analyzing example.com... PSI Error.
Analyzing site5.kinsta.cloud... Done.
--- MONITORING COMPLETED ---
Terwijl het script Google PSI reacties verwerkt, stuurt het een bericht naar je Slack kanaal. Voor elke site die met succes is geanalyseerd door PSI, zou je een Slack-bericht moeten zien dat lijkt op het volgende:

Mooi. Je hebt zojuist je geautomatiseerde monitoringsysteem gemaakt.
Nu wil je het misschien aanpassen aan je specifieke behoeften. Als je bijvoorbeeld honderden klantensites beheert, kan het inefficiënt zijn om voor elke site een Slack-bericht te sturen.
Je zou echter een conditie kunnen instellen die de algehele score van de site test en alleen een bericht naar het Slack kanaal stuurt als de waarde die wordt geretourneerd door de PSI API onder een bepaalde drempel ligt (bijvoorbeeld 90). De volgende code zou hiervoor kunnen zorgen:
$threshold = 90;
// 4. Send rich notification to Slack
// The alert is triggered only if the current score is strictly lower than our limit.
if ($score < $threshold) {
echo "Score below threshold. Sending Slack alert... ";
$report_link = "https://pagespeed.web.dev/analysis?url=https://" . $primary_domain . "&strategy=mobile";
// Prepare the Slack message
$slack_msg = [
"text" => "⚠️ *Performance Alert: $site_label*nThe site score has dropped below the threshold of *$threshold*!nn" .
"• *Score:* `$score` n" .
"• *FCP:* $fcp n" .
"• *LCP:* $lcpnn" .
"[ <$report_link|View Full Audit Report> ]"
];
// Execute the CURL request to the Slack Webhook
$ch = curl_init($slack_webhook_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slack_msg));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
echo "Done.n";
} else {
echo "Score is optimal ($score). No alert sent.n";
}
Werk je script bij, sla het bestand op en upload het opnieuw. Maak dan via SSH verbinding met de server, navigeer naar de juiste map en voer het volgende commando opnieuw uit:
php performance-monitor.php
Als je een andere naam hebt gekozen voor je script, pas het commando dan dienovereenkomstig aan.
De terminal zou nu een reeks berichten moeten tonen zoals hieronder:
--- STARTING FULL PERFORMANCE MONITORING ---
Found 5 sites to analyze.
Analyzing site1.kinsta.cloud... Score is optimal (100). No alert sent.
Analyzing site2.kinsta.cloud... Score is optimal (95). No alert sent.
Analyzing site3.kinsta.cloud... Score is optimal (100). No alert sent.
Analyzing example.com... Score below threshold. Sending Slack alert... Done.
Analyzing site5.kinsta.cloud... Score below threshold. Sending Slack alert... Done.
--- MONITORING COMPLETED ---
In Slack ontvang je een bericht voor elke site met een totaalscore onder de drempel van 90.

Prachtig, toch? Maar je kunt het proces nog verder optimaliseren. Zou je niet nog meer tijd willen besparen door het script automatisch op gezette tijden uit te voeren zonder dat je je commandoregeltool hoeft te gebruiken?
Ja, je raadt het al. Je hebt een cron job nodig.
Automatiseer het proces met een cron job
Er zijn verschillende manieren om een cron job in te stellen op Kinsta. Hoewel je het via WordPress kunt doen, kunnen Kinsta-gebruikers server cron jobs toevoegen aan elke sitecontainer.
Om een cron job op Kinsta in te stellen, maak je een cron commando en voeg je het toe aan het crontab bestand van je container via SSH.
Je kunt bijvoorbeeld een commando als het volgende gebruiken:
0 10 * * * /usr/bin/php /www/yoursite_123/public/your-script.php >> /www/yoursite_123/performance_monitor.log 2>&1
Dit is wat dit commando doet:
0 10 * * *stelt het script zo in dat het elke dag om 10 uur ’s ochtends wordt uitgevoerd./usr/bin/phpis het absolute pad van de PHP-interpreter op de server./www/yoursite_123/public/your-script.phpis het absolute pad van het script. Zorg ervoor dat je het pad en de werkelijke naam van je script op de server controleert.- De operator
>>(append redirection) voegt nieuwe gegevens toe aan het einde van het opgegeven bestand. /www/yoursite_123/performance_monitor.loggeeft het bestand aan waarin alle tekst die door het script wordt afgedrukt, wordt opgeslagen.- De opdracht
2>&1instrueert de server om fouten naar hetzelfde bestand te leiden.
We zullen hier niet verder ingaan op cron commando’s. Je kunt de documentatie van The Open Group raadplegen of een crontab tool gebruiken, zoals Crontab Generator of Cronitor.
Nadat je je cron commando hebt gemaakt, moet je deze toevoegen aan je sitecontainer. Je kunt ons supportteam vragen dit voor je te doen of het zelf doen via SSH. Als je voor het laatste kiest, begin dan met het typen van het volgende commando:
crontab -e
Je wordt gevraagd om een editor te selecteren. Kies “nano” als je het niet zeker weet.
Plak in de editor je commando aan het einde van het bestand. Sla het bestand op en keer terug naar de opdrachtregel. Je zou dan een bericht moeten zien dat bevestigt dat je wijzigingen succesvol zijn afgerond.
crontab installing new crontab
Dat is het. Het script wordt nu op gezette tijden uitgevoerd en stuurt een bericht naar het Slack-kanaal van je keuze met de gevraagde statistieken voor je clientsites die slecht presteren.
Opschalen: Wat kun je nog meer automatiseren met de Kinsta API?
Het script dat in dit artikel wordt gepresenteerd kan worden aangepast en verder worden uitgebreid. Je kunt bijvoorbeeld andere diensten integreren, zoals Trello of Asana, gegevens exporteren of periodieke e-mails naar klanten sturen.
Het automatiseren van je prestatiecontroles op de sites van je klanten is nog maar het begin. De integratie van de Kinsta API met de dagelijkse tools van je team kan de activiteiten van je bureau transformeren door het elimineren van handmatige sitebeheer- en onderhoudstaken, het verbeteren van de efficiëntie en het verlagen van de bedrijfskosten. Je zult ook de kwaliteit van je service verbeteren, levertijden verkorten en zorgen voor de best mogelijke ervaring voor je klanten.
Met de Kinsta API kun je verschillende taken automatiseren, zoals het creëren van testomgevingen, selectief wijzigingen van test naar productie pushen, toegang krijgen tot foutlogboeken, de cache van de site leegmaken, backups beheren en nog veel meer. Deze features maken het beheren van WordPress sites snel en eenvoudig, waardoor je met vertrouwen kunt schalen.
Klaar om je bureau naar een hoger niveau te tillen? Bekijk onze pakketten of neem contact op met ons verkoopteam om je specifieke behoeften te bespreken.
Veel plezier met schalen!