marketo-client
, (*1)
This package provides an interface for interacting with the Marketo REST API., (*2)
Installation
$ composer require eventfarm/marketo-client
Or add the following lines to your composer.json file:, (*3)
{
"require": {
"eventfarm/marketo-client": "dev-master"
}
}
$ composer install
Project Defaults
In order to get you up and running as easily as possible, we provide default implementations of a REST client and Marketo provider to use in combination with this package.
* We've chosen to use Guzzle for sending HTTP requests
* We've chosen to use The PHP League's Oauth Client and my Marketo provider for Marketo authentication and token refresh., (*4)
Guzzle REST Client
Our REST client implements the PSR-7 HTTP message interface., (*5)
You can either use the provided GuzzleRestClient or have your own that implements our RestClientInterface., (*6)
KristenlkMarketoProvider
Our default Marketo provider is my Marketo Provider library., (*7)
You can either use the provided KristenlkMarketoProvider or use your own that implements our MarketoProviderInterface., (*8)
Example Client Implementation
<?php
namespace App;
use EventFarm\Marketo\Oauth\AccessToken;
use EventFarm\Marketo\MarketoClient;
use EventFarm\Marketo\TokenRefreshInterface;
class DemoMarketoClient implements TokenRefreshInterface
{
public function getMarketoClient():MarketoClient
{
if (empty($this->marketo)) {
$this->marketo = MarketoClient::withDefaults(
'ACCESS_TOKEN',
'TOKEN_EXPIRES_IN', // when the current access token expires (in seconds)
'TOKEN_LAST_REFRESH', // when the current access token was last refreshed (as a UNIX timestamp)
'CLIENT_ID',
'CLIENT_SECRET',
'BASE_URL',
$this // TokenRefreshInterface
);
}
return $this->marketo;
}
public function tokenRefreshCallback(AccessToken $token)
{
// CALLBACK FUNCTION TO STORE THE REFRESHED $token TO PERSISTENCE LAYER
}
}
Usage
Campaigns
Get Campaigns
Docs
Returns a list of campaign records. Refer to the docs for the full list of options., (*9)
public function getCampaigns(array $options = array()), (*10)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$options = [
"programName" => "My Marketo Program",
"batchSize" => 10
];
$campaigns = $demoMarketoClient->campaigns()->getCampaigns($options);
// getCampaigns() can also be called without options.
// $campaigns = { ... }
Trigger Campaign
Docs
Passes a set of leads to a trigger campaign to run through the campaign's flow. Refer to the docs for the full list of options., (*11)
- A
campaignId and an array of options that includes an input key (mapped to an array that contains arrays of lead data) must be passed to triggerCampaign().
public function triggerCampaign(int $campaignId, array $options), (*12)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$campaignId = 1029;
$options = [
"input" => [
"leads" => [
[
"id" => 1234
]
]
]//, additional options
];
$campaign = $demoMarketoClient->campaigns()->triggerCampaign($campaignId, $options);
// $campaign = { ... }
Lead Fields
Get Lead Fields
Docs
Returns metadata about lead objects in the target instance, including a list of all fields available for interaction via the APIs., (*13)
public function getLeadFields(array $options = array()), (*14)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$leadFields = $demoMarketoClient->leadFields()->getLeadFields();
// $leadFields = { ... }
Leads
Create or Update Leads
Docs
Syncs a list of leads to the target instance. Refer to the docs for the full list of options., (*15)
- An array of options that includes an
input key (mapped to an array that contains arrays of lead data) must be passed to createOrUpdateLeads().
public function createOrUpdateLeads(array $options), (*16)
By default, Marketo sets the type of sync operation (action) to createOrUpdate and the lookupField to email. If using those defaults:
- Email is not required; if an email is not included in a lead array, Marketo will create a lead without an email.
- When an email is included, Marketo will search for existing leads with that email. If one is found, Marketo will update the found lead with the data sent; if one is not found, Marketo will create a new lead with the data sent., (*17)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$options = [
"input" => [
[
"email" => "email1@example.com",
"firstName" => "Example1First",
"lastName" => "Example1Last"
],
[
"email" => "email2@example.com",
"firstName" => "Example2First",
"lastName" => "Example2Last"
]
]//, additional options
];
$leads = $demoMarketoClient->leads()->createOrUpdateLeads($options);
// $leads = { ... }
Update Leads' Program Status
Docs
Changes the program status of a list of leads in a target program. Refer to the docs for the full list of options., (*18)
- A
programId and an array of options that includes an input key (mapped to an array that contains arrays of lead data) and a status key (mapped to a program status) must be passed to updateLeadsProgramStatus().
public function updateLeadsProgramStatus(int $programId, array $options), (*19)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$programId = 1234;
$options = [
"input" => [
[
"id" => 1111
]
],
"status" => "Registered"
];
$leads = $demoMarketoClient->leads()->updateLeadsProgramStatus($programId, $options);
// $leads = { ... }
Get Leads by Program
Docs
Retrieves a list of leads that are members of the designated program. Refer to the docs for the full list of options., (*20)
- A
programId must be passed to getLeadsByProgram().
public function getLeadsByProgram(int $programId, array $options = array()), (*21)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$programId = 1234;
$options = [
"fields" => 'firstName,lastName,email,middleName,mktoIsPartner';
];
$leads = $demoMarketoClient->leads()->getLeadsByProgram($programId, $options);
// getLeadsByProgram() can also be called without options.
// $leads = { ... }
Lead Partitions
Get Lead Partitions
Docs
Returns a list of available partitions in the target instance. Refer to the docs for the full list of options., (*22)
public function getPartitions(array $options = array()), (*23)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$partitions = $demoMarketoClient->partitions()->getPartitions();
// $partitions = { ... }
Programs
Get Programs
Docs
Retrieves the list of accessible programs from the target instance. Refer to the docs for the full list of options., (*24)
public function getPrograms(array $options = array()), (*25)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$programs = $demoMarketoClient->programs()->getPrograms();
// $programs = { ... }
Statuses
Get Statuses
Docs
Retrieves channels based on the provided name. Refer to the docs for the full list of options., (*26)
- A
programChannel must be passed to getStatuses().
public function getStatuses(string $programChannel, array $options = array()), (*27)
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();
$programChannel = "Live Event";
$programs = $demoMarketoClient->statuses()->getStatuses($programChannel);
// $programs = { ... }