Universal PHP SDK for any framework or plain PHP applications. Track cURL, Guzzle, and file_get_contents automatically.
Get started in seconds:
composer require outboundiq/outboundiq-phpUse standalone or as the foundation for framework-specific packages
No framework required
Cron jobs & workers
Slim, Lumen, etc.
Any PHP 8.1+ app
<?php
require_once 'vendor/autoload.php';
// Initialize OutboundIQ
outboundiq_init('your_api_key_here');
// That's it! All HTTP calls are now tracked automatically.
// cURL calls
$ch = curl_init('https://api.stripe.com/v1/charges');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// Guzzle with middleware
$client = new GuzzleHttp\Client([
'handler' => GuzzleMiddleware::getHandlerStack()
]);
$response = $client->get('https://api.example.com');
// file_get_contents
$data = file_get_contents('https://api.example.com/data');Metrics are sent via background curl processes. Your request-response cycle is never affected. True fire-and-forget architecture.
// Uses proc_open with curl
// Spawns background process
// Returns immediately
// Your app never waitsBuilt-in Guzzle middleware for easy integration with existing Guzzle clients.
use OutboundIQ\GuzzleMiddleware;
$client = new GuzzleHttp\Client([
'handler' => GuzzleMiddleware::getHandlerStack()
]);
// All requests automatically trackedQuery OutboundIQ for provider recommendations and health status.
$client = new OutboundIQ\Client($apiKey);
// Get recommendation
$rec = $client->recommend('payment');
// Check provider status
$status = $client->providerStatus('stripe');
// Check endpoint status
$ep = $client->endpointStatus('stripe-charges');Automatically categorizes errors: timeout, DNS, SSL, connection refused, and more.
// Automatic error classification:
// - timeout
// - dns_error
// - ssl_error
// - connection_refused
// - http_error (4xx, 5xx)<?php
use OutboundIQ\Client;
$client = outboundiq_init('your_api_key', [
// Enable/disable monitoring
'enabled' => true,
// Performance tuning
'batch_size' => 50, // Batch before sending
'buffer_size' => 100, // Max buffer size
'max_payload_size' => 65536, // 64KB max
// Timing
'timeout' => 5, // Seconds
'retry_attempts' => 3, // Retries on failure
'flush_interval' => 60, // Force flush interval
// Storage
'temp_dir' => '/tmp', // Temp file location
'transport' => 'file', // 'file' or 'async'
]);For even easier integration, use our framework-specific packages
Free tier available. No credit card required.