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!'); }