Skip to content

Repository files navigation

Latest Version on PackagistTestsPHPStanTotal Downloads

Table of Contents

Installation

Requirements

  • PHP 7.4
  • An API Key from MailerLite
  • PSR-7 and PSR-18 based HTTP adapter

Setup

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

Usage

Subscriber

More information on request parameters: https://developers.mailerlite.com/docs/subscribers.html

Create

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$data = [
'email' => 'subscriber@example.com',
];
$response = $mailerLite->subscribers->create($data);

Read

Single record

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$subscriberId = '123';
$response = $mailerLite->subscribers->find($subscriberId);

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->subscribers->get();

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$subscriberId = '123',
$data = [
'fields' => [
'name' => 'Example',
],
];
$response = $mailerLite->subscribers->update($subscriberId, $data);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$subscriberId = '123';
$response = $mailerLite->subscribers->delete($subscriberId);

Campaign

More information on request parameters: https://developers.mailerlite.com/docs/campaigns.html

Create

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['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);

Read

Single record

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$campaignId = '123';
$response = $mailerLite->campaigns->find($campaignId);

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$data = [
'filter' => ['status' => 'sent'],
];
$response = $mailerLite->campaigns->get($data);

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['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);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$campaignId = '123';
$response = $mailerLite->campaigns->delete($campaignId);

Schedule

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$campaignId = '123';
$data = [
'delivery' => 'instant',
];
$response = $mailerLite->campaigns->schedule($campaignId, $data);

Cancel

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$campaignId = '123';
$response = $mailerLite->campaigns->cancel($campaignId);

Subscriber activity of sent campaign

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$campaignId = '123';
$data = [
'type' => 'opened', ];
$response = $mailerLite->campaigns->getSubscriberActivity($campaignId, $data);

Group API

More information on request parameters: https://developers.mailerlite.com/docs/groups.html

Create

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$data = [
"name" => "New group",
];
$response = $mailerLite->groups->create($data);

Read

Single record

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$groupId = '123';
$response = $mailerLite->groups->find($groupId);

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->groups->get();

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$groupId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->groups->update($groupId, $data);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$groupId = '123';
$response = $mailerLite->groups->delete($groupId);

Get subscribers who belong to a group

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$groupId = '123';
$response = $mailerLite->groups->getSubscribers($groupId);

Assign subscriber to a group

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$groupId = '123';
$subscriberId = '456';
$response = $mailerLite->groups->assignSubscriber($groupId, $subscriberId);

unassign subscriber from a group

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$groupId = '123';
$subscriberId = '456';
$response = $mailerLite->groups->unAssignSubscriber($groupId, $subscriberId);

Segment API

More information on request parameters: https://developers.mailerlite.com/docs/segments.html

Read

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->segments->get();

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$segmentId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->segments->update($segmentId, $data);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$segmentId = '123';
$response = $mailerLite->segments->delete($segmentId);

Get subscribers who belong to a segment

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$segmentId = '123';
$response = $mailerLite->segments->getSubscribers($segmentId);

Field API

More information on request parameters: https://developers.mailerlite.com/docs/fields.html

Create

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$data = [
"name" => "New field",
"type" => "text",
];
$response = $mailerLite->fields->create($data);

Read

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->fields->get();

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$fieldId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->fields->update($fieldId, $data);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$fieldId = '123';
$response = $mailerLite->fields->delete($fieldId);

Form API

More information on request parameters: https://developers.mailerlite.com/docs/forms.html

Read

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->forms->get('popup', []);

Single

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$formId = '123';
$response = $mailerLite->forms->find($formId);

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$formId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->forms->update($formId, $data);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$formId = '123';
$response = $mailerLite->forms->delete($formId);

Signed up subscribers

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$formId = '123';
$response = $mailerLite->forms->getSignups($formId);

Automation API

More information on request parameters: https://developers.mailerlite.com/docs/automations.html

Read

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->automations->get([]);

Single

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$automationId = '123';
$response = $mailerLite->automations->find($automationId);

Activity

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$automationId = '123';
$data = [
'filter' => [
'status' => 'active',
],
];
$response = $mailerLite->automations->activity($automationId, $data);

Webhook API

More information on request parameters: https://developers.mailerlite.com/docs/webhooks.html

Create

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['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);

Read

All records

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->webhooks->get([]);

Single

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$webhookId = '123';
$response = $mailerLite->webhooks->find($webhookId);

Update

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$webhookId = '123';
$data = [
"name" => "Updated name",
];
$response = $mailerLite->webhooks->update($webhookId, $data);

Delete

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$webhookId = '123';
$response = $mailerLite->webhooks->delete($webhookId);

Campaign language API

More information about request parameters on https://developers.mailerlite.com/docs/campaign-languages.html

Read

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->campaignLanguages->get();

Timezone API

More information about request parameters on https://developers.mailerlite.com/docs/timezones.html

Read

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$response = $mailerLite->timezones->get();

Batch API

More information about request parameters on https://developers.mailerlite.com/docs/batching.html

E-commerce (Products / Orders / Customers)

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');

Optional PSR transport (no BC break)

useMailerLite\MailerLite;
useMailerLite\Http\Adapters\Psr17FactoryAggregate;
useNyholm\Psr7\Factory\Psr17Factory; useGuzzleHttp\ClientasGuzzleHttpClient; $ml = newMailerLite(['api_key' => 'YOUR_API_KEY']);
$psr17 = newPsr17Factory();
$factories = newPsr17FactoryAggregate($psr17, $psr17);
$httpClient = newGuzzleHttpClient();
$ml->enablePsrTransport($httpClient, $factories, 'YOUR_API_KEY', 'https://connect.mailerlite.com');
$ml->subscribers->create(['email' => 'subscriber@example.com']);

Send

useMailerLite\MailerLite;
$mailerLite = newMailerLite(['api_key' => 'key']);
$data = [
'requests' => [
[
'method' => 'post',
'path' => 'api/subscribers',
'body' => [
'email' => 'new_subscriber@mail.com'
]
]
]
];
$response = $mailerLite->batches->send($data);

Testing

composer test

Support and Feedback

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

License

The MIT License (MIT)

About

PHP SDK for MailerLite

Topics

Resources

Stars

34 stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages