Help Me Configure Statamic Webhooks for Real-Time Integrations
description
Met deze prompt kan de gebruiker webhooks in Statamic effectief configureren, waardoor real-time data-uitwisseling en automatisering met externe systemen mogelijk worden. Dit verbetert de functionaliteit van de website en bespaart tijd door handmatige processen te verminderen. Het onderscheidt zich van bestaande prompts door zich te richten op event-driven integraties in plaats van standaard API-koppelingen of migraties.
prompt
Help me configure webhooks in mijn Statamic website om real-time integraties met externe systemen mogelijk te maken. Mijn huidige Statamic versie is: <voer je huidige Statamic versie in>. Bes ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze handleiding om webhooks in je Statamic 3.2 website te configureren voor Salesforce CRM en Mailchimp, met HMAC-authenticatie en volledige logging:
1. Webhook Endpoints Aanmaken
a. Maak in je Statamic project een nieuwe route en controller voor de webhooks:
php artisan make:controller WebhookController
b. Voeg routes toe in je routes/web.php:
use App\Http\Controllers\WebhookController;
Route::post('/webhook/salesforce', [WebhookController::class, 'handleSalesforce']);
Route::post('/webhook/mailchimp', [WebhookController::class, 'handleMailchimp']);
2. Webhook Handlers Implementeren
a. In WebhookController.php, implementeer functies voor beide systemen:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class WebhookController extends Controller
{
private function verifyHmac(Request $request, string $secret)
{
$signature = $request->header('X-Hub-Signature');
$payload = $request->getContent();
$hash = 'sha256=' . hash_hmac('sha256', $payload, $secret);
return hash_equals($hash, $signature);
}
public function handleSalesforce(Request $request)
{
$secret = env('WEBHOOK_SECRET_SALESFORCE');
if (!$this->verifyHmac($request, $secret)) {
return response('Unauthorized', 401);
}
// Log de ontvangen event
Log::info('Salesforce webhook ontvangen', [
'payload' => $request->all(),
]);
// Verwerk de data hier verder...
return response('OK', 200);
}
public function handleMailchimp(Request $request)
{
$secret = env('WEBHOOK_SECRET_MAILCHIMP');
if (!$this->verifyHmac($request, $secret)) {
return response('Unauthorized', 401);
}
// Log de ontvangen event
Log::info('Mailchimp webhook ontvangen', [
'payload' => $request->all(),
]);
// Verwerk de data hier verder...
return response('OK', 200);
}
}
3. HMAC Secret Instellen
a. Voeg je geheime sleutels toe aan je .env bestand:
WEBHOOK_SECRET_SALESFORCE=je_salesforce_secret
WEBHOOK_SECRET_MAILCHIMP=je_mailchimp_secret
4. Externe Systemen Configureren
a. Salesforce en Mailchimp moeten de webhook URL’s gebruiken:
https://jouwdomein.nl/webhook/salesforce
https://jouwdomein.nl/webhook/mailchimp
b. Zorg dat zij de X-Hub-Signature header meesturen met de HMAC SHA256 hash van de payload, gebaseerd op de gedeelde geheime sleutel.
5. Logging en Beveiliging
- Alle webhook events worden gelogd via Laravel’s Log facade.
- HMAC-verificatie zorgt voor beveiliging.
- Overweeg extra beveiligingsmaatregelen indien nodig.
6. Testen
- Gebruik tools zoals Postman of curl om POST verzoeken te sturen met de juiste headers en payload.
- Controleer de logs in storage/logs/laravel.log.
Met deze configuratie kun je real-time integraties met Salesforce en Mailchimp opzetten, beveiligd met HMAC en goed gelogd voor monitoring en troubleshooting.
provider: deepseek
model: deepseek-chat
Beste gebruiker, ik help je graag met het configureren van webhooks in je Statamic 3.2 website voor integratie met Salesforce CRM en Mailchimp. Hier is een complete handleiding:
## 1. Webhook Routes Configureren
Voeg toe aan `routes/web.php`:
```php
Route::statamic('webhooks/salesforce', 'webhooks.salesforce');
Route::statamic('webhooks/mailchimp', 'webhooks.mailchimp');
```
## 2. Webhook Templates Aanmaken
**Voor Salesforce (`resources/views/webhooks/salesforce.antlers.html`):**
```html
{{ if authenticated }}
{{# Verwerk Salesforce data #}}
{{ payload | webhook_to_salesforce }}
{{# Log event #}}
{{ log:create
type="webhook_salesforce"
message="Salesforce webhook ontvangen"
data="{{ payload }}"
}}
{{ else }}
{{ redirect to="/404" }}
{{ /if }}
```
**Voor Mailchimp (`resources/views/webhooks/mailchimp.antlers.html`):**
```html
{{ if authenticated }}
{{# Verwerk Mailchimp data #}}
{{ payload | webhook_to_mailchimp }}
{{# Log event #}}
{{ log:create
type="webhook_mailchimp"
message="Mailchimp webhook ontvangen"
data="{{ payload }}"
}}
{{ else }}
{{ redirect to="/404" }}
{{ /if }}
```
## 3. HMAC Authenticatie Implementeren
Maak een service provider voor authenticatie:
```php
// app/Providers/WebhookServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
class WebhookServiceProvider extends ServiceProvider
{
public function boot()
{
view()->composer('webhooks.*', function ($view) {
$request = request();
$secret = config('app.webhook_secret');
$signature = $request->header('X-Hub-Signature-256');
$computedSignature = 'sha256=' . hash_hmac('sha256', $request->getContent(), $secret);
$view->with('authenticated', hash_equals($computedSignature, $signature));
});
}
}
```
## 4. Environment Variabelen Configureren
Voeg toe aan je `.env` file:
```env
WEBHOOK_SECRET=je_geheime_sleutel_hier
SALESFORCE_WEBHOOK_URL=je_salesforce_endpoint
MAILCHIMP_WEBHOOK_URL=je_mailchimp_endpoint
```
## 5. Logging Systeem Opzetten
Maak een log command:
```php
// app/Console/Commands/LogWebhook.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Statamic\Facades\Entry;
class LogWebhook extends Command
{
protected $signature = 'webhook:log {type} {message} {data?}';
public function handle()
{
Entry::make()
->collection('webhook_logs')
->data([
'type' => $this->argument('type'),
'message' => $this->argument('message'),
'data' => $this->argument('data'),
'timestamp' => now(),
])
->save();
}
}
```
## 6. Webhook Handlers voor Externe Systemen
**Salesforce Integration:**
```php
// app/Services/SalesforceWebhookHandler.php
<?php
namespace App\Services;
use Illuminate\Support\Facades\Http;
class SalesforceWebhookHandler
{
public function handle($payload)
{
$response = Http::withHeaders([
'Authorization' => 'Bearer ' . config('services.salesforce.token'),
'Content-Type' => 'application/json'
])->post(config('services.salesforce.webhook_url'), $payload);
return $response->successful();
}
}
```
**Mailchimp Integration:**
```php
// app/Services/MailchimpWebhookHandler
<?php
namespace App\Services;
use Illuminate\Support\Facades\Http;
class MailchimpWebhookHandler
{
public function handle($payload)
{
$response = Http::withBasicAuth(
'anystring',
config('services.mailchimp.api_key')
)->post(config('services.mailchimp.webhook_url'), $payload);
return $response->successful();
}
}
```
## 7. Controleer je Configuratie
Zorg dat je deze zaken hebt ingesteld:
- SSL certificaat (vereist voor webhooks)
- Juiste firewall instellingen
- Webhook endpoints geconfigureerd in Salesforce en Mailchimp
- HMAC signatures ingesteld bij beide diensten
## 8. Test Procedure
Test je webhooks met:
```bash
php please webhook:test salesforce
php please webhook:test mailchimp
```
Let op: Statamic 3.2 ondersteunt webhooks out-of-the-box, maar voor geavanceerde integraties zoals deze raad ik aan om de officiële documentatie te raadplegen voor eventuele versie-specifieke beperkingen.