tmarois / laravel-ads-sdk

PHP SDK for Google Ads, Bing Ads, and Facebook Ads API for Laravel
MIT License
113 stars 46 forks source link
adwords-api bing-ads bing-ads-api bingads bingads-sdk campaign-performance facebook-api facebook-marketing-api facebookads google-ads google-ads-api google-adwords googleads-sdk laravel-ads

Laravel Ads SDK

Join the Discord – For support, updates and collaboration.

For Google Ads, Bing Ads and Facebook Ads API.

This is a wrapper for connecting each ad source into your Laravel application. This SDK provides a cleaner and a more consistent integration across many ad platforms than the official SDKs, and ultimately making it a lot easier to implement in your projects. You shouldn't have to learn how to communicate and understand the responses to every API.

Installation

Use Composer to install package.

Run composer require tmarois/laravel-ads-sdk

Config

1) Run php artisan vendor:publish --tag=laravel-ads-sdk

2) Copy this to your .env and update with your credentials (if you dont have credentials, continue to the next step).

ADWORDS_DEVELOPER_TOKEN=""
ADWORDS_OAUTH2_CLIENT_ID=""
ADWORDS_OAUTH2_CLIENT_SECRET=""
ADWORDS_OAUTH2_REFRESH_TOKEN=""

BING_DEVELOPER_TOKEN=""
BING_CLIENT_ID=""
BING_CLIENT_SECRET=""
BING_REFRESH_TOKEN=""

FB_APP_ID=""
FB_APP_SECRET=""
FB_ACCESS_TOKEN=""
FB_REFRESH_TOKEN=""

Authentication

:point_right: For GoogleAds

You will need your developer token, client id and client secret to continue. Learn More

Follow the steps in the command line to generate a refresh token.

Run php artisan laravelads:token:generate --service=GoogleAds

Having Trouble? Learn More

:point_right: For BingAds

You will need your developer token, client id and client secret to continue. Learn More

Follow the steps in the command line to generate a refresh token.

Run php artisan laravelads:token:generate --service=BingAds

Having Trouble? Learn More

:point_right: For FacebookAds

You will need your app id, app secret and access token. Learn More

NOTE: It appears for facebook, you do not need to generate refresh token, once you have your access token, the api should connect as long as you've given yourself the correct access, permissions, scopes to marketing api and ads account.

:rocket: Usage

Accessing GoogleAds, BingAds or FacebookAds use the following:

// The namespace to the Facade for laravel Ads SDK
use LaravelAds;

// calling Google Ads and including the Account ID
$googleAds = LaravelAds::googleAds()->with('ACCOUNT_ID');

// calling Bing Ads and including the Account ID
$bingAds = LaravelAds::bingAds()->with('ACCOUNT_ID');

// calling Facebook Ads and including the Account ID
$facebookAds = LaravelAds::facebookAds()->with('ACCOUNT_ID');

Google Ads

This uses the googleads-php-lib SDK for the Google Ads API

NOTICE – You will need to Request Google Ads API Access.

Need help with authentication?

Management

Reports

Bing Ads

This uses the BingAds-PHP-SDK for the Bing Ads API

NOTICE – You will need to Request Bing Ads API Access.

Need help with authentication or sandbox mode?

Management

Reports

Facebook Ads

This uses the facebook-php-business-sdk for Facebook Marketing API

Management

Reports

Customization

We realize that we can't add every endpoint so in order to help improve your developer experience, we have made the Service classes Macroable. Macros are a way to add a new custom method to the classes. This way you are able to utilize the existing auth and all of the other goodies that come with this package.

Typically, you should call this method from the boot method of one of your application's service providers, such as the App\Providers\AppServiceProvider service provider:

public function boot()
{
    LaravelAds\Services\BingAds\Service::macro('addUetTags', function($tags){
        $serviceCall = $this->call(ServiceClientType::CampaignManagementVersion13);

        try {
            $request = new AddUetTagsRequest();
            $request->UetTags = $tags;

            $serverResponse = $serviceCall->GetService()->AddUetTags($request);

            return $serverResponse;
        } catch (\Exception $e) {
            print $serviceCall->GetService()->__getLastRequest()."\n";
            print $serviceCall->GetService()->__getLastResponse()."\n";
        }
    });

    LaravelAds\Services\GoogleAds\Service::macro('dd', function(){
        dd($this);
    });
}

Then in your controller or job you would call:

$bingAds = LaravelAds::bingAds()->addUetTags([
    [
        'Name' => 'Extensible!',
        'Description' => 'No PR Needed!',
    ]
]);

$bingAds = LaravelAds::googleAds()->dd();

Contributions

We are actively looking for new contributors.

If you want to contribute, Join the Discord channel and/or submit pull requests.

License

Laravel Ads SDK (This Package) is open-sourced software licensed under the MIT license. USE AT YOUR OWN RISK. Laravel Ads SDK is a tool to help you manage your accounts, it does not guarantee features listed here will work as described. If you do find a bug, please feel free to submit an issue. This package is not affiliated with Laravel LLC or the Laravel Framework team.