label84 / laravel-active-campaign
Add Active Campaign to your Laravel application.
Requires
- php: ^8.1
- illuminate/support: ^9.0|^10.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-02-12 17:59:50 UTC
README
Warning
This package is no longer maintained.
We have decided to stop maintaining this package. We don't use ActiveCampaign anymore and don't have the time to maintain this package.
Suggested alternative: https://github.com/rossbearman/laravel-active-campaign
Feel free to fork our code and adapt it to your needs.
Laravel ActiveCampaign
This package provides a simple interface to the ActiveCampaign API v3.
Currently the packages only supports the endpoints Contacts
, Custom Fields
, Custom Fields Values
, Tags
and Lists
. Feel free to PR the remaining endpoints.
Laravel Support
Version | Release |
---|---|
10.x | 1.2 |
9.x | 1.1 |
Installation
1. Install the package via composer
composer require label84/laravel-active-campaign
2. Publish the config file
php artisan vendor:publish --provider="Label84\ActiveCampaign\ActiveCampaignServiceProvider" --tag="config"
3. Add the base URL and API key to your .env
ACTIVE_CAMPAIGN_BASE_URL= ACTIVE_CAMPAIGN_API_KEY=
Usage
Access via facade:
use Label84\ActiveCampaign\Facades\ActiveCampaign; // Usage $contact = ActiveCampaign::contacts()->get(1);
Resolve directly out of the container:
use Label84\ActiveCampaign\ActiveCampaign; // Usage $contact = resolve(ActiveCampaign::class)->contacts()->get(1);
Inject into a constructor or method via automatic injection:
use Label84\ActiveCampaign\ActiveCampaign; class ContactController extends Controller { public function __construct(private readonly ActiveCampaign $activeCampaign) { } // Usage $this->activeCampaign->contacts()->get(1); }
Examples
The following examples use the facade for simplicity and assume Label84\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 Label84\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 Label84\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 Label84\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 Label84\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);
Tests
./vendor/bin/phpstan analyse