The Loops PHP SDK provides an expressive interface for interacting with Loops's API.
Requires PHP 8.1+
You may install Loops into your project using the Composer package manager:
composer require plutolinks/loopsYou can create an instance of the SDK like so:
use PlutoLinks\Loops\Loops;
$loops = Loops::client('<api-key>'); $response = $loops->contacts()->create([
'email' => '[email protected]',
'firstName' => 'John',
]);You can access the properties of the response:
$response->success;
$response->id;
$response->message;$contact = $loops->contacts()->retrieve('[email protected]');You can access the properties of the contact:
$contact->email;
$contact->firstName;
$contact->id;
$contact->lastName;
$contact->source;
$contact->subscribed;
$contact->userGroup;
$contact->userId;
$contact->favoriteColor; // Custom property$response = $loops->contacts()->update('[email protected]', [
'firstName' => 'John',
]);You can access the properties of the response:
$response->success;
$response->id;
$response->message;$loops->contacts()->delete(email: '[email protected]');Alternatively, you can delete a contact by its userId:
$loops->contacts()->delete(userId: 'asdf');You can access the properties of the response:
$response->message;
$response->success;$fields = $loops->contacts()->customFields();You can access the properties of the response:
foreach ($fields as $field) {
$field->key;
$field->label;
$field->type;
}$response = $loops->events()->send(
eventName: 'signup',
email: '[email protected]',
properties: [
'firstName' => 'John',
]
);You can access the properties of the response:
$response->success;
$response->message;$response = $loops->transactional()->send(
transactionalId: 'asdf',
email: '[email protected]',
dataVariables: [
'url' => 'https://example.com',
],
attachments: [
[
'contentType' => 'application/pdf',
'data' => '/9j/4AAQSkZJRgABAQEASABIAAD/4...',
'filename' => 'file.pdf',
],
]
);You can access the properties of the response:
$response->success;
$response->error;
$response->message;
$response->path;
$response->transactionalId;It's necessary to check for errors in different places due to the difference error responses from the Loops API.
The MIT License (MIT). Please see License File for more information.