PHP bindings for the Customer.io API.
There are two primary API hosts available for to integrate with:
Behavioral Tracking
https://track.customer.io/api/v1/
Behavioral Tracking API is used to identify and track customer data with Customer.io.
API
https://api.customer.io/v1/api/
API allows you to read data from your Customer.io account for use in custom workflows in your backend system or for reporting purposes.
API (BETA)
https://beta-api.customer.io/v1/api/
Beta API features should be used with caution, and should be expected to change with little notice. Please refer to this documentation for available endpoints.
The API client can be installed via Composer.
In your composer.json file:
{
"require": {
"printu/customerio": "~2.2"
}
}
Once the composer.json file is created you can run composer install
for the initial package install and composer update
to update to the latest version of the API client.
The client uses Guzzle.
Remember to include the Composer autoloader in your application:
<?php
require_once 'vendor/autoload.php';
// Application code...
?>
Configure your access credentials when creating a client:
<?php
use Customerio\Client;
$client = new Client('YOUR_API_KEY', 'YOUR_SITE_ID');
?>
Run phpunit
from the project root to start all tests.
<?php
// Create customer
try {
$client->customers->add(
[
'id' => 1,
'email' => 'user@example.com',
'plan' => 'free',
'created_at' => time()
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
// Update customer
try {
$client->customers->update(
[
'id' => 1,
'email' => 'user@example.com',
'plan' => 'premium'
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
// Delete customer
try {
$client->customers->delete(
[
'id' => 1,
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
<?php
// Add customer event
try {
$client->customers->event(
[
'id' => 1,
'name' => 'test-event',
'data' => [
'event-metadata-1' => 'test',
'event-metadata-2' => 'test-2'
]
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
// Add anonymous event
try {
$client->events->anonymous(
[
'name' => 'invite-friend',
'data' => [
'recipient' => 'invitee@example.com'
]
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
Anonymous event example usage.
<?php
// Get segment data
try {
$client->segments->get(
[
'id' => 1
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
Check for other available methods here
<?php
// Add page view
try {
$result = $client->page->view(
[
'id' => 1,
'url' => 'http://example.com/login',
'data' => [
'referrer' => 'http://example.com'
]
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
<?php
// Get campaigns data
try {
$client->campaigns->get(
[
'id' => 1
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
Check for other available methods here
<?php
// Trigger broadcast campaign
try {
$result = $client->campaigns->trigger(
[
'id' => 1,
'data' => [
'headline' => 'Roadrunner spotted in Albuquerque!',
'date' => 'January 24, 2018',
'text' => 'We\'ve received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!'
],
'recipients' => [
'segments' => [
'id' => 1
]
]
]
);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
// Handle the error
}
See here for more examples of API Triggered Broadcasts
MIT license. See the LICENSE file for more details.