mailerlite/mailerlite-php
Official MailerLite PHP SDK for the MailerLite API v2. Manage subscribers, campaigns, groups, segments, fields, forms, automations, webhooks, timezones/languages, and batch requests. Includes tests and PHPStan support.
composer require mailerlite/mailerlite-php
If you get an error saying “Could not find resource using any discovery strategy.” it means that all the discovery strategies have failed. Most likely, your project is missing the message factories and/or a PRS-7 implementation. To resolve this you may run
$ composer require php-http/curl-client guzzlehttp/psr7 php-http/message
More information on request parameters: https://developers.mailerlite.com/docs/subscribers.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
'email' => 'subscriber@example.com',
];
$response = $mailerLite->subscribers->create($data);
Single record
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$subscriberId = '123';
$response = $mailerLite->subscribers->find($subscriberId);
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->subscribers->get();
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$subscriberId = '123',
$data = [
'fields' => [
'name' => 'Example',
],
];
$response = $mailerLite->subscribers->update($subscriberId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$subscriberId = '123';
$response = $mailerLite->subscribers->delete($subscriberId);
More information on request parameters: https://developers.mailerlite.com/docs/campaigns.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
'type' => 'regular',
'name' => 'My new campaign',
'language_id' => 10,
'emails' => [
[
'subject' => 'My new email',
'from_name' => 'me',
'from' => 'me@example.com',
'content' => 'Hello World!',
]
],
'filter' => [],
];
$response = $mailerLite->campaigns->create($data);
Single record
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$campaignId = '123';
$response = $mailerLite->campaigns->find($campaignId);
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
'filter' => ['status' => 'sent'],
];
$response = $mailerLite->campaigns->get($data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$campaignId = '123';
$data = [
'name' => 'Changed campaign name',
'emails' => [
[
'subject' => 'Changed email subject',
'from_name' => 'Changed from name',
'from' => 'changed@example.com',
]
],
];
$response = $mailerLite->campaigns->update($campaignId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$campaignId = '123';
$response = $mailerLite->campaigns->delete($campaignId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$campaignId = '123';
$data = [
'delivery' => 'instant',
];
$response = $mailerLite->campaigns->schedule($campaignId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$campaignId = '123';
$response = $mailerLite->campaigns->cancel($campaignId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$campaignId = '123';
$data = [
'type' => 'opened',
];
$response = $mailerLite->campaigns->getSubscriberActivity($campaignId, $data);
More information on request parameters: https://developers.mailerlite.com/docs/groups.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
"name" => "New group",
];
$response = $mailerLite->groups->create($data);
Single record
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$groupId = '123';
$response = $mailerLite->groups->find($groupId);
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->groups->get();
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$groupId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->groups->update($groupId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$groupId = '123';
$response = $mailerLite->groups->delete($groupId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$groupId = '123';
$response = $mailerLite->groups->getSubscribers($groupId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$groupId = '123';
$subscriberId = '456';
$response = $mailerLite->groups->assignSubscriber($groupId, $subscriberId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$groupId = '123';
$subscriberId = '456';
$response = $mailerLite->groups->unAssignSubscriber($groupId, $subscriberId);
More information on request parameters: https://developers.mailerlite.com/docs/segments.html
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->segments->get();
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$segmentId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->segments->update($segmentId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$segmentId = '123';
$response = $mailerLite->segments->delete($segmentId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$segmentId = '123';
$response = $mailerLite->segments->getSubscribers($segmentId);
More information on request parameters: https://developers.mailerlite.com/docs/fields.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
"name" => "New field",
"type" => "text",
];
$response = $mailerLite->fields->create($data);
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->fields->get();
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$fieldId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->fields->update($fieldId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$fieldId = '123';
$response = $mailerLite->fields->delete($fieldId);
More information on request parameters: https://developers.mailerlite.com/docs/forms.html
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->forms->get('popup', []);
Single
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$formId = '123';
$response = $mailerLite->forms->find($formId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$formId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->forms->update($formId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$formId = '123';
$response = $mailerLite->forms->delete($formId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$formId = '123';
$response = $mailerLite->forms->getSignups($formId);
More information on request parameters: https://developers.mailerlite.com/docs/automations.html
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->automations->get([]);
Single
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$automationId = '123';
$response = $mailerLite->automations->find($automationId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$automationId = '123';
$data = [
'filter' => [
'status' => 'active',
],
];
$response = $mailerLite->automations->activity($automationId, $data);
More information on request parameters: https://developers.mailerlite.com/docs/webhooks.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
"name" => "Name",
"events" => ["subscriber.created"],
"url": "https://www.cartwright.info/eligendi-soluta-corporis-in-quod-ullam",
];
$response = $mailerLite->webhooks->create($data);
All records
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->webhooks->get([]);
Single
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$webhookId = '123';
$response = $mailerLite->webhooks->find($webhookId);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$webhookId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->webhooks->update($webhookId, $data);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$webhookId = '123';
$response = $mailerLite->webhooks->delete($webhookId);
More information about request parameters on https://developers.mailerlite.com/docs/campaign-languages.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->campaignLanguages->get();
More information about request parameters on https://developers.mailerlite.com/docs/timezones.html
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$response = $mailerLite->timezones->get();
More information about request parameters on https://developers.mailerlite.com/docs/batching.html
E-commerce endpoints follow:
/api/ecommerce/shops/{shopId}/...
shopId is provided per call (there is no separate /shops API).
Products
$res = $mailerLite->ecommerceProducts->create('YOUR_SHOP_ID', [
'title' => 'Red T-shirt',
'price' => 19.99,
'currency' => 'USD',
]);
$res = $mailerLite->ecommerceProducts->find('YOUR_SHOP_ID', 'PRODUCT_ID');
$res = $mailerLite->ecommerceProducts->update('YOUR_SHOP_ID', 'PRODUCT_ID', [
'title' => 'New title',
]);
Orders
$res = $mailerLite->ecommerceOrders->create('YOUR_SHOP_ID', [
'order_id' => 'ORD-1001',
]);
$res = $mailerLite->ecommerceOrders->find('YOUR_SHOP_ID', 'ORD-1001');
$res = $mailerLite->ecommerceOrders->update('YOUR_SHOP_ID', 'ORD-1001', [
'status' => 'paid',
]);
Customers
$res = $mailerLite->ecommerceCustomers->get('YOUR_SHOP_ID', ['limit' => 50]);
$res = $mailerLite->ecommerceCustomers->create('YOUR_SHOP_ID', ['email' => 'user@example.com']);
$res = $mailerLite->ecommerceCustomers->find('YOUR_SHOP_ID', 'CUSTOMER_ID');
use MailerLite\MailerLite;
use MailerLite\Http\Adapters\Psr17FactoryAggregate;
use Nyholm\Psr7\Factory\Psr17Factory;
use GuzzleHttp\Client as GuzzleHttpClient;
$ml = new MailerLite(['api_key' => 'YOUR_API_KEY']);
$psr17 = new Psr17Factory();
$factories = new Psr17FactoryAggregate($psr17, $psr17);
$httpClient = new GuzzleHttpClient();
$ml->enablePsrTransport($httpClient, $factories, 'YOUR_API_KEY', 'https://connect.mailerlite.com');
$ml->subscribers->create(['email' => 'subscriber@example.com']);
use MailerLite\MailerLite;
$mailerLite = new MailerLite(['api_key' => 'key']);
$data = [
'requests' => [
[
'method' => 'post',
'path' => 'api/subscribers',
'body' => [
'email' => 'new_subscriber@mail.com'
]
]
]
];
$response = $mailerLite->batches->send($data);
composer test
In case you find any bugs, submit an issue directly here in GitHub.
You are welcome to create SDK for any other programming language.
If you have any troubles using our API or SDK free to contact our support by email info@mailerlite.com
How can I help you explore Laravel packages today?