hocza / sendy-laravel by hocza

Sendy API implementation for Laravel
139,706
69
5
Package Data
Maintainer Username: hocza
Maintainer Contact: jozsef@hocza.com (Jozsef Hocza)
Package Create Date: 2015-03-17
Package Last Update: 2024-01-15
Home Page: https://hocza.com/packages/sendy/
Language: PHP
License: MIT
Last Refreshed: 2024-03-26 03:04:21
Package Statistics
Total Downloads: 139,706
Monthly Downloads: 1,941
Daily Downloads: 79
Total Stars: 69
Total Watchers: 5
Total Forks: 20
Total Open Issues: 4

Sendy

Sendy Laravel

A service provider for Sendy API in Laravel 5

Latest Stable Version Total Downloads Latest Unstable Version License

Installation

composer require hocza/sendy:1.*

or append your composer.json with:

{
    "require" : {
        "hocza/sendy": "1.*"
    }
}

Add the following settings to the config/app.php

Service provider:

'providers' => [
    // ...
    'Hocza\Sendy\SendyServiceProvider',
]

For the Sendy:: facade

'aliases' => [
    // ...
    'Sendy' => 'Hocza\Sendy\Facades\Sendy',
]

Configuration

php artisan vendor:publish --provider="Hocza\Sendy\SendyServiceProvider"

It will create sendy.php within the config directory.

<?php

return [

    'listId' => '',
    'installationUrl' => '',
    'apiKey' => '',

];

Usage

Subscribe:

$data = [
    'email' => 'johndoe@example.com',
    'name' => 'John Doe',
    'any_custom_column' => 'value',
];

Sendy::subscribe($data);

RESPONSE (array)

In case of success:

['status' => true, 'message' => 'Subscribed']
['status' => true, 'message' => 'Already subscribed']

In case of error:

['status' => false, 'message' => 'The error message']

Unsubscribe:

$email = 'johndoe@example.com';
Sendy::unsubscribe($email);

RESPONSE (array)

In case of success:

['status' => true, 'message' => 'Unsubscribed']

In case of error:

['status' => false, 'message' => 'The error message']

Subscription status

$email = 'johndoe@example.com';
Sendy::status($email);

RESPONSE (Plain text)

Success:

  • Subscribed
  • Unsubscribed
  • Unconfirmed
  • Bounced
  • Soft bounced
  • Complained

Error:

  • No data passed
  • API key not passed
  • Invalid API key
  • Email not passed
  • List ID not passed
  • Email does not exist in list

Active subscriber count

Sendy::count();
#To check other list:
Sendy::setListId($list_id)->count();

RESPONSE (Plain text)

Success:

  • You'll get an integer of the active subscriber count

Error:

  • No data passed
  • API key not passed
  • Invalid API key
  • List ID not passed
  • List does not exist

Create campaign

<?php

$campaignOptions = [
    'from_name' => 'My Name',
    'from_email' => 'test@mail.com',
    'reply_to' => 'test@mail.com',
    'title' => 'My Campaign',
    'subject' => 'My Subject',
    'list_ids' => '1,2,3', // comma-separated, optional
    'brand_id' => 1,
    'query_string' => 'utm_source=sendy&utm_medium=email&utm_content=email%20newsletter&utm_campaign=email%20newsletter',
];
$campaignContent = [
    'plain_text' => 'My Campaign',
    'html_text' => View::make('mail.my-campaign'),
];
$send = false;

Sendy::createCampaign($campaignOptions, $campaignContent, $send);

RESPONSE (Plain text)

Success:

  • Campaign created
  • Campaign created and now sending

Error:

  • No data passed
  • API key not passed
  • Invalid API key
  • From name not passed
  • From email not passed
  • Reply to email not passed
  • Subject not passed
  • HTML not passed
  • List ID(s) not passed
  • One or more list IDs are invalid
  • List IDs does not belong to a single brand
  • Brand ID not passed
  • Unable to create campaign
  • Unable to create and send campaign

Change list ID

To change the default list ID simply prepend with setListId($list_id)
Examples:

Sendy::setListId($list_id)->subscribe($data);
Sendy::setListId($list_id)->unsubscribe($email);
Sendy::setListId($list_id)->status($email);
Sendy::setListId($list_id)->count();

Todo

  • Implementing the rest of the API. :)
  • better documentation - in progress as you can see :)

Buy me a coffee :)