rossbearman/laravel-active-campaign

Add Active Campaign to your Laravel application.

v1.3.1 2024-03-12 17:07 UTC

This package is auto-updated.

Last update: 2024-10-12 18:24:50 UTC


README

Latest Stable Version MIT Licensed

This package provides a simple interface to the ActiveCampaign API v3. It is a continuation of the original laravel-active-campaign package by Tjardoo/Label84 and can easily be migrated.

The package currently supports Contacts, Custom Fields, Custom Fields Values, Tags and Lists. Feel free to open a pull request to add support for other endpoints.

Laravel Support

Installation

1. Install the package via composer

composer require rossbearman/laravel-active-campaign

2. Publish the config file

php artisan vendor:publish --provider="RossBearman\ActiveCampaign\ActiveCampaignServiceProvider" --tag="config"

3. Add the base URL and API key to your .env

ACTIVE_CAMPAIGN_BASE_URL=
ACTIVE_CAMPAIGN_API_KEY=

Migrating from Label84/ActiveCampaign

The only change required to migrate to v1.3 is replacing Label84 with RossBearman in namespaces and requiring rossbearman/laravel-active-campaign instead of label84/laravel-active-campaign in your composer.json file.

Usage

Access via facade:

use RossBearman\ActiveCampaign\Facades\ActiveCampaign;

$contact = ActiveCampaign::contacts()->get(1);

Resolve directly out of the container:

use RossBearman\ActiveCampaign\ActiveCampaign;

$contact = resolve(ActiveCampaign::class)->contacts()->get(1);

Inject into a constructor or method via automatic injection:

use RossBearman\ActiveCampaign\ActiveCampaign;

class ContactController extends Controller
{
    public function __construct(private readonly ActiveCampaign $activeCampaign) { }

    $this->activeCampaign->contacts()->get(1);
}

Examples

The following examples use the facade for simplicity and assume RossBearman\ActiveCampaign\Facades\ActiveCampaign has been imported.

Contacts

Retrieve an existing contact

$contact = ActiveCampaign::contacts()->get(1);

List all contact, search contacts, or filter contacts by query defined criteria

See the API docs for a full list of possible query parameters.

$contacts = ActiveCampaign::contacts()->list();
$contactByEmail = ActiveCampaign::contacts()->list('email=info@example.com');
$singleList = ActiveCampaign::contacts()->list('listid=1');

Create a new contact

$contactId = ActiveCampaign::contacts()->create('info@example.com', [
    'firstName' => 'John',
    'lastName' => 'Doe',
    'phone' => '+3112345678',
]);

Create a contact if they don't exist, or update an existing contact

$contact = ActiveCampaign::contacts()->sync('info@example.com', [
    'firstName' => 'John',
    'lastName' => 'Doe',
    'phone' => '+3112345678',
]);

Update an existing contact

use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignContact;

$contact = new ActiveCampaignContact(
    id: 1,
    email: 'info@example.com',
    phone: '+3112345678',
    firstName: 'John',
    lastName: 'Deer',
);

ActiveCampaign::contacts()->update($contact);

Update the status of a contact on a list

The status should be 1 for subscribed and 2 for unsubscribed

$contact = ActiveCampaign::contacts()->updateListStatus(
    contactId: 1,
    listId: 1,
    status: 1,
);

Delete an existing contact

ActiveCampaign::contacts()->delete(1);

Add a tag to contact

$contactTagId = ActiveCampaign::contacts()->tag(
    id: 1,
    tagId: 20
);

Remove a tag from a contact

ActiveCampaign::contacts()->untag(contactTagId: 2340);

Custom Field Values

Retrieve an existing field value

$fieldValue = ActiveCampaign::fieldValues()->get(50);

Create a field value

$fieldValueId = ActiveCampaign::fieldValues()->create(
    contactId: 1,
    fieldId: 50,
    value: 'active',
);

Update an existing field value

use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignFieldValue;

$fieldValue = new ActiveCampaignFieldValue(
    contactId: 1,
    field: 50,
    value: 'inactive',
);

ActiveCampaign::fieldValues()->update($fieldValue);

Delete an existing field value

ActiveCampaign::fieldValues()->delete(50);

Custom Fields

Retrieve an existing field

$field = ActiveCampaign::fields()->get(1);

Create a field

$fieldId = ActiveCampaign::fields()->create(
    type: 'textarea',
    title: 'about',
    description: 'Short introduction',
);

Update an existing field

use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignField;

$fieldValue = new ActiveCampaignField(
    id: 1,
    type: 'textarea',
    title: 'about',
    description: 'Relevant skills',
);

ActiveCampaign::fields()->update($fieldValue);

Delete an existing field

ActiveCampaign::fields()->delete(1);

Tags

Retrieve an existing tag

$tag = ActiveCampaign::tags()->get(100);

List all tags, optionally filtered by name

$tags = ActiveCampaign::tags()->list();
$filteredTags = ActiveCampaign::tags()->list('test_');

Create a tag

$tag = ActiveCampaign::tags()->create(
    name: 'test_tag',
    description: 'This is a new tag'
);

Update an existing tag

use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignTag;

$tag = new ActiveCampaignTag(
    id: 100,
    name: 'test_tag',
    description: 'Another description',
);

ActiveCampaign::tags()->update($tag);

Delete an existing tag

ActiveCampaign::tags()->delete(100);

Code Quality

./vendor/bin/phpstan analyse

License

MIT