PHP Wrapper to interact with the Optimizely X API.
composer require widerfunnel/optimizely-x-sdk
Simply create an Optimizely object, with a valid OAuth Token in the constructor:
$optimizely = Optimizely::create($token);
If you wish to use the token based authentication, simply pass true
as a second argument:
$optimizely = Optimizely::create($token, true);
List projects
$optimizely->projects()->all();
Read a project
$optimizely->projects()->find($projectId);
Create a project
$optimizely->projects()->create([
'name' => 'My new project'
]);
Update a project
$optimizely->project($projectId)->update([
'name' => 'My new name'
]);
Delete a project
** Not supported by Optimizely X Rest API **
Activate a project (note: not functional, waiting on optimizely X api fix)
$optimizely->project($projectId)->activate();
Archive a project (note: not functional, waiting on optimizely X api fix)
$optimizely->project($projectId)->archive();
List Campaigns
$optimizely->project($projectId)->campaigns()->all();
Find Campaign
$optimizely->campaign($campaignId)->find();
Create Campaign
$optimizely->project($projectId)->campaigns()->create(
'Landing Page Optimization',
["status" => "not_started"]
);
Update a Campaign
$optimizely->campaign($campaignId)->update([
'name' => 'this is my new campaign'
]);
List experiments in project
$optimizely->project($projectId)->experiments()->all([
'per_page' => <integer>,
'page' => <integer>,
'include_classic' => <boolean>
] <optional>);
Find experiment
$optimizely->experiment($experimentId)->find();
Create an experiment
$optimizely->project($projectId)->experiments()->create(
'my test',
[
[
"name" => "control",
"weight" => 5000
],
[
"name" => "varA",
"weight" => 5000
]
],
[
[
"aggregator" => "unique",
"event_id" => 0,
"field" => "revenue"
]
],
['status' => 'not started']
]);
Update an experiment
$optimizely->experiment($experimentId)->update(['name' => 'newsite.com']);
Delete an experiment
$optimizely->experiment($experimentId)->delete();
Archive an experiment
$optimizely->experiment($experimentId)->archive();
Change Variations
$optimizely->experiment($experimentId)->variations()->update([
[
"name" => "control",
"weight" => 2500
],
[
"name" => "varA",
"weight" => 2500
],
[
"name" => "varB",
"weight" => 2500
],
[
"name" => "varF",
"weight" => 2500
]
]);
List audiences
$optimizely->project($projectId)->audiences()->all();
Find an audience
$optimizely->audience($audienceId)->find();
Create an audience
$optimizely->project($projectId)->audiences()->create(
'My second audience',
'[\"and\", {\"type\": \"language\", \"value\": \"es\"}, {\"type\": \"location\", \"value\": \"US-CA-SANFRANCISCO\"}]',
["description" => 'People that speak spanish in San Fran']
);
Update an audience
$optimizely->audience($audienceId)->update([
'name' => 'My new name'
]);
Delete an audience
** Not supported by Optimizely X Rest API **
List Pages
$optimizely->project($projectId)->pages()->all();
Find a Page
$optimizely->page($pageId)->find();
Create a page
$optimizely->project($projectId)->pages()->create($name, $edit_url, [
'category' => 'article'
]);
Update a page
$optimizely->page($pageId)->update(['name' => 'my updated name']);
Delete a page
$optimizely->page($pageId)->delete();
List Events
$optimizely->project($projectId)->events()->all();
Find Event
$optimizely->event($eventId)->find();
Create In-page Event
$optimizely->page($pageId)->events()->create(
'my sign up goal',
'click',
['selector' => '.sign-up-btn'],
['category' => 'sign_up']
);
Update In-Page Event
$optimizely->page($pageId)->event($inPageEventId)->update([
'name' => 'my new page event name'
]);
Delete In-Page Event
$optimizely->page($pageId)->event($inPageEventId)->delete();
Create Custom Event
$optimizely->project($projectId)->events()->create([
'event_type' => 'custom',
'name' => 'my custom event',
'key' => 'my_event_key'
]);
Update Custom Event
$optimizely->project($projectId)->event($customEventId)->update([
'name' => 'my new custom event name'
]);
Delete Custom Event
$optimizely->project($projectId)->event($customEventId)->delete();
List Attributes
$optimizely->project($projectId)->attributes()->all();
Find Attribute
$optimizely->attribute($attributeId)->find());
Create Attribute
$optimizely->project($projectId)->attributes()->create(
'my new attribute',
'my_new_attribute',
['description' => 'this is an attribute']
);
Update Attribute
$optimizely->attribute($attributeId)->update(['name' => 'this is my updated attribute']);
Delete Attribute
$optimizely->attribute($attributeId)->delete());
Fetch the results of an experiment
$optimizely->experiment($experimentId)->results();
Fetch the results of an campaign
$optimizely->campaign($campaignId)->results();