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
- Migrating from Label84/ActiveCampaign
- Usage
- Examples
- Code Quality
- License
Version | Release |
---|---|
10.x | 1.3 |
11.x | 1.3.1 |
composer require rossbearman/laravel-active-campaign
php artisan vendor:publish --provider="RossBearman\ActiveCampaign\ActiveCampaignServiceProvider" --tag="config"
ACTIVE_CAMPAIGN_BASE_URL=
ACTIVE_CAMPAIGN_API_KEY=
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.
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);
}
The following examples use the facade for simplicity and assume RossBearman\ActiveCampaign\Facades\ActiveCampaign
has been imported.
$contact = ActiveCampaign::contacts()->get(1);
See the API docs for a full list of possible query parameters.
$contacts = ActiveCampaign::contacts()->list();
$contactByEmail = ActiveCampaign::contacts()->list('[email protected]');
$singleList = ActiveCampaign::contacts()->list('listid=1');
$contactId = ActiveCampaign::contacts()->create('[email protected]', [
'firstName' => 'John',
'lastName' => 'Doe',
'phone' => '+3112345678',
]);
$contact = ActiveCampaign::contacts()->sync('[email protected]', [
'firstName' => 'John',
'lastName' => 'Doe',
'phone' => '+3112345678',
]);
use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignContact;
$contact = new ActiveCampaignContact(
id: 1,
email: '[email protected]',
phone: '+3112345678',
firstName: 'John',
lastName: 'Deer',
);
ActiveCampaign::contacts()->update($contact);
The status should be 1
for subscribed and 2
for unsubscribed
$contact = ActiveCampaign::contacts()->updateListStatus(
contactId: 1,
listId: 1,
status: 1,
);
ActiveCampaign::contacts()->delete(1);
$contactTagId = ActiveCampaign::contacts()->tag(
id: 1,
tagId: 20
);
ActiveCampaign::contacts()->untag(contactTagId: 2340);
$fieldValue = ActiveCampaign::fieldValues()->get(50);
$fieldValueId = ActiveCampaign::fieldValues()->create(
contactId: 1,
fieldId: 50,
value: 'active',
);
use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignFieldValue;
$fieldValue = new ActiveCampaignFieldValue(
contactId: 1,
field: 50,
value: 'inactive',
);
ActiveCampaign::fieldValues()->update($fieldValue);
ActiveCampaign::fieldValues()->delete(50);
$field = ActiveCampaign::fields()->get(1);
$fieldId = ActiveCampaign::fields()->create(
type: 'textarea',
title: 'about',
description: 'Short introduction',
);
use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignField;
$fieldValue = new ActiveCampaignField(
id: 1,
type: 'textarea',
title: 'about',
description: 'Relevant skills',
);
ActiveCampaign::fields()->update($fieldValue);
ActiveCampaign::fields()->delete(1);
$tag = ActiveCampaign::tags()->get(100);
$tags = ActiveCampaign::tags()->list();
$filteredTags = ActiveCampaign::tags()->list('test_');
$tag = ActiveCampaign::tags()->create(
name: 'test_tag',
description: 'This is a new tag'
);
use RossBearman\ActiveCampaign\DataObjects\ActiveCampaignTag;
$tag = new ActiveCampaignTag(
id: 100,
name: 'test_tag',
description: 'Another description',
);
ActiveCampaign::tags()->update($tag);
ActiveCampaign::tags()->delete(100);
./vendor/bin/phpstan analyse