Recently, a malicious person had started making changes to my business’s Google Business listing. Google actually allows anyone to make edits anytime to any Business listing it seems. I had to keep changing it back multiple times a day. I requested access to Google My Business API and was granted access. I built an app last night that automatically detects changes and reverts the changes.
I also sent a cease & desist to the person making the changes and the attempts seem to have stopped. My app notifies me of attempts to change it and I haven’t seen anything lately.
The code was pretty basic if anyone needs to do something similar. I also set up a Scheduler to run this periodically every day and used Laravel Forge to push it to a $5 / mo AWS server.
If my code is helpful, please leave a comment! 🙂
$this->info('Starting to try to update Google Places');
$credentials = base_path('XXXXXXXXXXX.json');
$scope = 'https://www.googleapis.com/auth/plus.business.manage';
$ctGoogleLocationName = 'accounts/XXXXXXXXX/locations/XXXXXXXXXXXXXXX';
$ctIdealName = 'YOUR NAME HERE';
$ctIdealPhone = 'YOUR PHONE';
$ctIdealWebsiteUrl = 'https://coalitiontechnologies.com';
putenv('GOOGLE_APPLICATION_CREDENTIALS='.$credentials);
$redirect_uri = '<YOUR_REDIRECT_URI>';
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope($scope);
$client->setSubject('YOUR EMAIL ADDRESS');
$googleMyBusiness = new Google_Service_MyBusiness($client);
$this->info('About to check coalition on Google');
$coalition = $googleMyBusiness->accounts_locations->get($ctGoogleLocationName);
if($coalition->locationName != $ctIdealName ||
$coalition->websiteUrl != $ctIdealWebsiteUrl ||
$coalition->primaryPhone != $ctIdealPhone
){
$this->info('Someone changed things! We will fix that');
$changedToLocationName = $coalition->locationName;
$changedToPrimaryPhone = $coalition->primaryPhone;
$changedToWebsiteURL = $coalition->websiteUrl;
$coalition->locationName = $ctIdealName;
$coalition->primaryPhone = $ctIdealPhone;
$coalition->websiteUrl = $ctIdealWebsiteUrl;
$result = $googleMyBusiness->accounts_locations->patch($ctGoogleLocationName, $coalition);
$data['changedToLocationName'] = $changedToLocationName;
$data['changedToPrimaryPhone'] = $changedToPrimaryPhone;
$data['changedToWebsiteURL'] = $changedToWebsiteURL;
$data['ctIdealName'] = $ctIdealName;
$data['ctIdealPhone'] = $ctIdealPhone;
$data['ctIdealWebsiteUrl'] = $ctIdealWebsiteUrl;
$this->info('Fixed. Send email notification.');
Mail::send(['text' => 'emails.notify'], $data, function ($message) use ($data) {
$message->from('YOUR EMAIL ADDRESS','Google Maps Updater' )
->to('Email','Google Maps Updater' )
->cc('Email','Jordan')
->subject('Joels Google Updater Strikes Again!');
});
} else {
$this->info('No changes. They fear our power!');
}