PHPackages                             keepsuit/laravel-zoho-campaigns - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. keepsuit/laravel-zoho-campaigns

ActiveLibrary[API Development](/categories/api)

keepsuit/laravel-zoho-campaigns
===============================

Manage Zoho Campaigns from Laravel

2.1.0(2mo ago)28.1k—0%2[1 issues](https://github.com/keepsuit/laravel-zoho-campaigns/issues)MITPHPPHP ^8.2CI passing

Since Oct 14Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/keepsuit/laravel-zoho-campaigns)[ Packagist](https://packagist.org/packages/keepsuit/laravel-zoho-campaigns)[ Docs](https://github.com/keepsuit/laravel-zoho-campaigns)[ RSS](/packages/keepsuit-laravel-zoho-campaigns/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (26)Versions (15)Used By (0)

Manage Zoho Campaigns from Laravel
==================================

[](#manage-zoho-campaigns-from-laravel)

[![Latest Version on Packagist](https://camo.githubusercontent.com/2fcbd143eec401273b44f58503fe27d31a4d6a37bcee52044dc8be9f5d7dccf7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6b656570737569742f6c61726176656c2d7a6f686f2d63616d706169676e732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/keepsuit/laravel-zoho-campaigns)[![GitHub Tests Action Status](https://camo.githubusercontent.com/331a7706842b60e315625e533ab210b64644cd60fda3e3af196922dc47c15beb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6b656570737569742f6c61726176656c2d7a6f686f2d63616d706169676e732f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/keepsuit/laravel-zoho-campaigns/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/ebd60b390374364ea0502c75d90188f8317915ddac2ebd6e65c3510d7aff70ee/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6b656570737569742f6c61726176656c2d7a6f686f2d63616d706169676e732f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/keepsuit/laravel-zoho-campaigns/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/1d8b476aebbdf45513ff466fb906c5c6d175c67b988cafda93bf7a7fdfd2f897/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6b656570737569742f6c61726176656c2d7a6f686f2d63616d706169676e732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/keepsuit/laravel-zoho-campaigns)

This package provides an easy way to interact with the Zoho Campaigns API.

Right now only the following features are supported:

- Subscribe a contact to a list
- Unsubscribe a contact from a list
- Get subscribers from a list
- Get subscribers count of a list

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require keepsuit/laravel-zoho-campaigns
```

You can publish and run the migrations with:

```
php artisan vendor:publish --tag="campaigns-migrations"
php artisan migrate
```

You can publish the config file with:

```
php artisan vendor:publish --tag="campaigns-config"
```

This is the contents of the published config file:

```
return [
    /**
     * The driver to use to interact with Zoho Campaigns API.
     * You may use "log" or "null" to prevent calling the
     * API directly from your environment.
     */
    'driver' => env('CAMPAIGNS_DRIVER', 'api'),

    /**
     * Zoho datacenter region to use.
     * Available regions: us, eu, in, au, jp, cn
     */
    'region' => env('CAMPAIGNS_REGION'),

    /**
     * Zoho api client.
     * Run php artisan campaigns:setup and follow the instructions to generate an api client.
     */
    'client_id' => env('CAMPAIGNS_CLIENT_ID'),
    'client_secret' => env('CAMPAIGNS_CLIENT_SECRET'),

    /**
     * The listName to use when no listName has been specified in a method.
     */
    'defaultListName' => 'subscribers',

    /**
     * Here you can define properties of the lists.
     */
    'lists' => [

        /**
         * This key is used to identify this list. It can be used
         * as the listName parameter provided in the various methods.
         *
         * You can set it to any string you want and you can add
         * as many lists as you want.
         */
        'subscribers' => [

            /**
             * A Zoho campaigns list key.
             * https://www.zoho.com/campaigns/help/developers/list-management.html
             * You can find this value from Zoho campaigns dashboard under:
             * Contacts > Manage Lists > "Your list" > Setup
             */
            'listKey' => env('CAMPAIGNS_LIST_KEY'),

        ],
    ],
];
```

First time setup:
-----------------

[](#first-time-setup)

This should be done also on production because tokens are saved in the database. Run the following command and follow the instructions:

```
php artisan campaigns:setup
```

Usage
-----

[](#usage)

### Subscribe a contact to a list

[](#subscribe-a-contact-to-a-list)

```
use Keepsuit\Campaigns\Facades\Campaigns;

Campaigns::subscribe('user_a@example.com');

// with additional details:
Campaigns::subscribe('user_a@example.com', contactInfo: [
    'First Name' => 'John',
    'Last Name' => 'Doe',
]);

// on a specific list:
Campaigns::subscribe('user_a@example.com', contactInfo: [], list: 'listName');

// on a specific list via list key
Campaigns::subscribe('user_a@example.com', contactInfo: [], list: '3z9d17e6b4f3a2c5d8a1bc9478df32561e3ab4d2c4fc7a5e9c0db8e34176ca92a0');

// if user previously unsubscribed from the list, you can resubscribe them (it support the same parameters as subscribe):
Campaigns::resubscribe('user_a@example.com');
```

### Unsubscribe a contact from a list

[](#unsubscribe-a-contact-from-a-list)

```
use Keepsuit\Campaigns\Facades\Campaigns;

Campaigns::unsubscribe('user_a@example.com');

// from a specific list:
Campaigns::unsubscribe('user_a@example.com', list: 'listName');

// on a specific list via list key
Campaigns::unsubscribe('user_a@example.com', list: '3z9d17e6b4f3a2c5d8a1bc9478df32561e3ab4d2c4fc7a5e9c0db8e34176ca92a0');
```

### Get subscribers from a list

[](#get-subscribers-from-a-list)

```
use Keepsuit\Campaigns\Facades\Campaigns;

// This method returns a LazyCollection and will fetch additional pages when needed.
// You can filter by status and sort the results.
Campaigns::subscribers(status: 'active', sort: 'desc');

// from a specific list:
Campaigns::subscribers(list: 'listName');

// on a specific list via list key
Campaigns::subscribers(list: '3z9d17e6b4f3a2c5d8a1bc9478df32561e3ab4d2c4fc7a5e9c0db8e34176ca92a0');
```

### Get subscribers count of a list

[](#get-subscribers-count-of-a-list)

```
use Keepsuit\Campaigns\Facades\Campaigns;

// You can filter by status.
Campaigns::subscribersCount(status: 'active');

// from a specific list:
Campaigns::subscribersCount(list: 'listName');

// on a specific list via list key
Campaigns::subscribersCount(list: '3z9d17e6b4f3a2c5d8a1bc9478df32561e3ab4d2c4fc7a5e9c0db8e34176ca92a0');
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Fabio Capucci](https://github.com/cappuc)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

51

—

FairBetter than 96% of packages

Maintenance79

Regular maintenance activity

Popularity29

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 54.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~113 days

Recently: every ~97 days

Total

12

Last Release

61d ago

Major Versions

0.4.0 → 1.0.02025-08-02

1.1.0 → 2.0.02025-12-22

PHP version history (2 changes)0.1.0PHP ^8.1

1.0.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/9881c8ffdbe3f838feabbfba94c7a602db2bd84f991913a75cbfd1e21c593e66?d=identicon)[cappuc](/maintainers/cappuc)

---

Top Contributors

[![cappuc](https://avatars.githubusercontent.com/u/4271608?v=4)](https://github.com/cappuc "cappuc (77 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (28 commits)")[![andreibaca](https://avatars.githubusercontent.com/u/75330721?v=4)](https://github.com/andreibaca "andreibaca (20 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (16 commits)")[![4lun](https://avatars.githubusercontent.com/u/933275?v=4)](https://github.com/4lun "4lun (1 commits)")

---

Tags

laravelkeepsuitlaravel-zoho-campaigns

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/keepsuit-laravel-zoho-campaigns/health.svg)

```
[![Health](https://phpackages.com/badges/keepsuit-laravel-zoho-campaigns/health.svg)](https://phpackages.com/packages/keepsuit-laravel-zoho-campaigns)
```

###  Alternatives

[simplestats-io/laravel-client

Client for SimpleStats!

4515.5k](/packages/simplestats-io-laravel-client)[scalar/laravel

Render your OpenAPI-based API reference

6183.9k2](/packages/scalar-laravel)[njoguamos/laravel-plausible

A laravel package for interacting with plausible analytics api.

208.8k](/packages/njoguamos-laravel-plausible)[ryangjchandler/bearer

Minimalistic token-based authentication for Laravel API endpoints.

8129.8k](/packages/ryangjchandler-bearer)[codebar-ag/laravel-docuware

DocuWare integration with Laravel

1221.1k](/packages/codebar-ag-laravel-docuware)[combindma/laravel-facebook-pixel

Meta pixel integration for Laravel

4956.9k](/packages/combindma-laravel-facebook-pixel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
