rossbearman / laravel-active-campaign
Add Active Campaign to your Laravel application.
Installs: 1 929
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- illuminate/http: ^10.0 | ^11.0
- illuminate/support: ^10.0 | ^11.0
Requires (Dev)
- larastan/larastan: ^2.8
- laravel/pint: ^1.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.5
README
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
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