Giter VIP home page Giter VIP logo

marketo-client's Introduction

marketo-client

Travis Downloads Packagist Code Climate Test Coverage

This package provides an interface for interacting with the Marketo REST API.

Installation

$ composer require eventfarm/marketo-client

Or add the following lines to your composer.json file:

{
    "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.

Guzzle REST Client

Our REST client implements the PSR-7 HTTP message interface.

You can either use the provided GuzzleRestClient or have your own that implements our RestClientInterface.

KristenlkMarketoProvider

Our default Marketo provider is my Marketo Provider library.

You can either use the provided KristenlkMarketoProvider or use your own that implements our MarketoProviderInterface.

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.

public function getCampaigns(array $options = array())

<?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.

  • 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)

<?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.

public function getLeadFields(array $options = array())

<?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.

  • 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)

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.
<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();

$options = [
    "input" => [
        [
            "email" => "[email protected]",
            "firstName" => "Example1First",
            "lastName" => "Example1Last"
        ],
        [
            "email" => "[email protected]",
            "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.

  • 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)

<?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.

  • A programId must be passed to getLeadsByProgram().

public function getLeadsByProgram(int $programId, array $options = array())

<?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.

public function getPartitions(array $options = array())

<?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.

public function getPrograms(array $options = array())

<?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.

  • A programChannel must be passed to getStatuses().

public function getStatuses(string $programChannel, array $options = array())

<?php
$demoMarketoClient = new DemoMarketoClient()->getMarketoClient();

$programChannel = "Live Event";

$programs = $demoMarketoClient->statuses()->getStatuses($programChannel);
// $programs = { ... }

marketo-client's People

Contributors

kristenlk avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.