Facade API
The Larawebhook facade is a Laravel-friendly public API.
It is a DX adapter over application use cases, read repositories and Laravel services. It should not be treated as the place where core webhook workflows are implemented.
Critical workflows live in dedicated use cases:
ReceiveWebhookValidateWebhookRecordWebhookLogRetryWebhookReplayWebhook
For new code, prefer the high-level helpers:
validate()validateAndLog()validateWithRetries()for simple synchronous/manual flowslogs()logsForService()failedLogs()successfulLogs()getFailureCount()- notification helpers when using LaraWebhook notifications
- service helpers such as
isServiceSupported(),supportedServices(),service()
Legacy manual logging helpers
logSuccess() and logFailure() remain available for compatibility.
They are deprecated for new code.
Prefer:
validateAndLog()when validating and recording a webhook;RecordWebhookLogwhen writing package/internal audit code;- the middleware flow for normal inbound webhooks.
Manual logging helpers write audit logs only. They do not create processed_webhook_events entries and therefore do not affect deduplication.
Validation
use Proxynth\Larawebhook\Shared\Infrastructure\Laravel\Facades\Larawebhook;
// Validate a webhook
Larawebhook::validate($payload, $signature, 'stripe');
// Validate and log
$log = Larawebhook::validateAndLog($payload, $signature, 'github', 'push');Logging
Manual logging helpers remain available for compatibility, but they are deprecated.
Prefer validateAndLog() when a webhook should be validated and persisted, or use RecordWebhookLog directly when writing internal package code.
// Deprecated manual audit helpers
Larawebhook::logSuccess('stripe', 'payment.succeeded', $payload);
Larawebhook::logFailure('stripe', 'payment.failed', $payload, 'Card declined');Query Logs
// Get all logs
$allLogs = Larawebhook::logs();
// Filter by service
$stripeLogs = Larawebhook::logsForService('stripe');
// Filter by status
$failedLogs = Larawebhook::failedLogs();
$successLogs = Larawebhook::successfulLogs();Notifications
// Send notification if threshold reached
Larawebhook::sendNotificationIfNeeded('stripe', 'payment.failed');
// Check notification status
Larawebhook::notificationsEnabled(); // true/false
Larawebhook::getNotificationChannels(); // ['mail', 'slack']Configuration Helpers
// Get webhook secret
Larawebhook::getSecret('stripe');
// Check if service is supported
Larawebhook::isServiceSupported('stripe'); // true
Larawebhook::isServiceSupported('unknown'); // false
// Get all supported services
Larawebhook::supportedServices(); // ['stripe', 'github', 'slack', 'shopify']WebhookService Enum
The WebhookService enum centralizes supported service identifiers and string conversion.
Available Services
use Proxynth\Larawebhook\Shared\Domain\Enums\WebhookService;
WebhookService::Stripe; // 'stripe'
WebhookService::Github; // 'github'
WebhookService::Slack; // 'slack'
WebhookService::Shopify; // 'shopify'Check Support
WebhookService::isSupported('stripe'); // true
WebhookService::isSupported('unknown'); // falseConvert from String
// Safe conversion (returns null if invalid)
$service = WebhookService::tryFromString('stripe'); // WebhookService::Stripe
// Throws on invalid
$service = WebhookService::fromString('stripe'); // WebhookService::Stripe
$service = WebhookService::fromString('invalid'); // throws ValueErrorValidation Rules
// Useful for Laravel validation
WebhookService::values(); // ['stripe', 'github', 'slack', 'shopify']
WebhookService::validationRule(); // ['stripe', 'github', 'slack', 'shopify']
// In a form request
'service' => ['required', 'in:' . implode(',', WebhookService::values())],Provider-specific headers, parsers, secrets, and validators are resolved by the package internals rather than through the enum.
Using Enum with Facade
All facade methods accept both strings and the enum:
use Proxynth\Larawebhook\Shared\Infrastructure\Laravel\Facades\Larawebhook;
use Proxynth\Larawebhook\Shared\Domain\Enums\WebhookService;
// Both are equivalent
Larawebhook::validate($payload, $signature, 'stripe');
Larawebhook::validate($payload, $signature, WebhookService::Stripe);
// Type-safe service handling
$service = WebhookService::Stripe;
$log = Larawebhook::validateAndLog($payload, $signature, $service, 'payment.succeeded');Benefits of Using the Enum
- Type Safety: IDE autocompletion and static analysis support
- Centralized Configuration: All service-related config in one place
- DRY Principle: No duplicated service strings
- Easy Extension: Add a new service by adding a case to the enum