[DigitalPoint] Better Google Analytics

[DigitalPoint] Better Google Analytics 1.1.3

No permission to download
Probably because the code you are giving it isn't valid. Codes are single-use.

Not counting things you are doing manually, what error are you getting exactly?
None. There's no error anywhere. Not in server logs, in console or in any network requests that seem relevant (as seen on the screenshot)
 
None. There's no error anywhere. Not in server logs, in console or in any network requests that seem relevant (as seen on the screenshot)
Can you post a screenshot of the options page where the button is to link your Google Analytics account?
 
Hah. Yeah okay, nevermind. All good, seems that this was yet another PEBKAC. Thanks you!
FWIW, early versions let people manually enter the measurement ID, but honestly it caused way too many problems. There was so much confusion on what a measurement ID is, how to get one… people putting in property IDs instead, etc. so making people click the “Set” button made all those problems go away at least. 😂
 
latest issue
not sure how i've done this

InvalidArgumentException: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project. in src/addons/DigitalPoint/Analytics/GoogleApi/AbstractApi.php at line 31
  1. DigitalPoint\Analytics\GoogleApi\AbstractApi->makeApiCall() in src/addons/DigitalPoint/Analytics/GoogleApi/Data.php at line 15
  2. DigitalPoint\Analytics\GoogleApi\Data->runReport() in src/addons/DigitalPoint/Analytics/Repository/Reporting.php at line 159
  3. DigitalPoint\Analytics\Repository\Reporting->runReport() in src/addons/DigitalPoint/Analytics/Repository/Reporting.php at line 537
  4. DigitalPoint\Analytics\Repository\Reporting->getExceptions() in src/addons/DigitalPoint/Analytics/Admin/Controller/Analytics.php at line 167
  5. DigitalPoint\Analytics\Admin\Controller\Analytics->actionExceptions() in src/XF/Mvc/Dispatcher.php at line 362
  6. XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 265
  7. XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 121
  8. XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 63
  9. XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2824
  10. XF\App->run() in src/XF.php at line 806
  11. XF::runApp() in admin.php at line 15
 
#0 src/XF.php(270): XF\Error->logError('cURL error 28: ...', false)
#1 src/addons/DigitalPoint/Analytics/Repository/JavaScript.php(50): XF::logError('cURL error 28: ...')
#2 src/addons/DigitalPoint/Analytics/Cron/CleanUp.php(24): DigitalPoint\Analytics\Repository\JavaScript->getFile('gtm', true)
#3 src/XF/Job/Cron.php(41): DigitalPoint\Analytics\Cron\CleanUp::runHourlyCleanUp(Object(XF\Entity\CronEntry))
#4 src/XF/Job/Manager.php(275): XF\Job\Cron->run(8)
#5 src/XF/Job/Manager.php(205): XF\Job\Manager->runJobInternal(Array, 8)
#6 src/XF/Job/Manager.php(89): XF\Job\Manager->runJobEntry(Array, 8)
#7 src/XF/Cli/Command/RunJobs.php(58): XF\Job\Manager->runQueue(false, 8)
#8 src/vendor/symfony/console/Command/Command.php(298): XF\Cli\Command\RunJobs->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 src/vendor/symfony/console/Application.php(1040): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 src/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand(Object(XF\Cli\Command\RunJobs), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 src/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 src/XF/Cli/Runner.php(115): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 cmd.php(17): XF\Cli\Runner->run()
#14 {main}

#0 src/addons/DigitalPoint/Analytics/Cron/CleanUp.php(24): DigitalPoint\Analytics\Repository\JavaScript->getFile('gtm', true)
#1 src/XF/Job/Cron.php(41): DigitalPoint\Analytics\Cron\CleanUp::runHourlyCleanUp(Object(XF\Entity\CronEntry))
#2 src/XF/Job/Manager.php(275): XF\Job\Cron->run(8)
#3 src/XF/Job/Manager.php(205): XF\Job\Manager->runJobInternal(Array, 8)
#4 src/XF/Job/Manager.php(89): XF\Job\Manager->runJobEntry(Array, 8)
#5 src/XF/Cli/Command/RunJobs.php(58): XF\Job\Manager->runQueue(false, 8)
#6 src/vendor/symfony/console/Command/Command.php(298): XF\Cli\Command\RunJobs->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#7 src/vendor/symfony/console/Application.php(1040): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 src/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand(Object(XF\Cli\Command\RunJobs), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 src/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 src/XF/Cli/Runner.php(115): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 cmd.php(17): XF\Cli\Runner->run()
#12 {main}


These flagged this morning or last night. Not sure if its related to the security update
 
These flagged this morning or last night. Not sure if its related to the security update
Error 28 is a connectivity issue between your server and (in this case) Google's servers.

Operation timeout. The specified time-out period was reached according to the conditions.

Maybe will work itself out if whatever the connectivity issue is fixed?
 
  • Like
Reactions: CTS
I have monitored it all day and it hasn't repeated itself. Addon is operating properly it appears.

Yes. And thank you.

I may have knee-jerked as I had an issue yesterday, and woke up to another.
 
Is there a way to exclude certain routes from being tracked? I'm using siropu ads in an iframe to rotate ads, it looks like this is being double counted for a specific route /sam-embed/ . I want to exclude that route specifically. I can do it on the dashboard, but i'd rather not have the double send.

I'm thinking it's modifying one of the templates, but would just like to confirm.
 
Is there a way to exclude certain routes from being tracked? I'm using siropu ads in an iframe to rotate ads, it looks like this is being double counted for a specific route /sam-embed/ . I want to exclude that route specifically. I can do it on the dashboard, but i'd rather not have the double send.

I'm thinking it's modifying one of the templates, but would just like to confirm.
There is no internal mechanism, no.
 
We’re getting several cURL errors daily. It’s been happening for a while. We’re on a XenForo hosted dedicated server using Cloudflare.
The errors are either Google Analytics or Pawnedpasswords.

Stack trace​

#0 src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(158): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(110): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlMultiHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 src/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(250): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlMultiHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 src/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(174): GuzzleHttp\Handler\CurlMultiHandler->processMessages()
#4 src/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(189): GuzzleHttp\Handler\CurlMultiHandler->tick()
#5 src/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute(true)
#6 src/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn()
#7 src/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending()
#8 src/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList()
#9 src/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending()
#10 src/addons/DigitalPoint/Analytics/GoogleApi/Measurement.php(22): GuzzleHttp\Promise\Promise->wait()
#11 src/addons/DigitalPoint/Analytics/Repository/Measurement.php(11): DigitalPoint\Analytics\GoogleApi\Measurement->__destruct()
#12 src/addons/DigitalPoint/Analytics/Pub/Controller/Beacon.php(35): DigitalPoint\Analytics\Repository\Measurement->collect('d4421314-5f89-4...', Array, '853241')
#13 src/XF/Mvc/Dispatcher.php(362): DigitalPoint\Analytics\Pub\Controller\Beacon->actionImage(Object(XF\Mvc\ParameterBag))
#14 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('DigitalPoint\\An...', 'Image', Object(XF\Mvc\RouteMatch), Object(DigitalPoint\Analytics\Pub\Controller\Beacon), NULL)
#15 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(DigitalPoint\Analytics\Pub\Controller\Beacon), NULL)
#16 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#17 src/XF/App.php(2824): XF\Mvc\Dispatcher->run()
#18 src/XF.php(806): XF\App->run()
#19 index.php(23): XF::runApp('XF\\Pub\\App')
#20 {main}

Request state​

array(4) {
["url"] => string(241) "/b/image.gif?p=yRhWSeUNTRJxFMDpGzhCy71ExRUivTIE8V%2FUPYs1qBtcwg2Zy1i9sHNXz3QZnRSIbatJUS8cEh%2Fa9uLHN85yQEq0k1EkiEt3K1%2BB0KJ3Lj2smj4gHc%2BNcv4BR4aocQEiTZEpnFryrB%2F7TXMNy21QRST4MKhCRxc5difJWQUWdoogKy%2BtXOWEgM1GMfNja%2Bbm2tT3ZqNNx2kSkQ%3D%3D"
["referrer"] => bool(false)
["_GET"] => array(2) {
["/b/image_gif"] => string(0) ""
["p"] => string(208) "yRhWSeUNTRJxFMDpGzhCy71ExRUivTIE8V/UPYs1qBtcwg2Zy1i9sHNXz3QZnRSIbatJUS8cEh/a9uLHN85yQEq0k1EkiEt3K1+B0KJ3Lj2smj4gHc+Ncv4BR4aocQEiTZEpnFryrB/7TXMNy21QRST4MKhCRxc5difJWQUWdoogKy+tXOWEgM1GMfNja+bm2tT3ZqNNx2kSkQ=="
}
["_POST"] => array(0) {
}
}

Stack trace​

#0 src/XF.php(266): XF\Error->logError('cURL error 28: ...', false)
#1 src/addons/SV/PasswordTools/XF/Entity/UserAuth.php(385): XF::logError('cURL error 28: ...')
#2 src/addons/SV/PasswordTools/XF/Entity/UserAuth.php(279): SV\PasswordTools\XF\Entity\UserAuth->getPwnedPrefixMatches('C31AF', 1769735141, false)
#3 src/addons/SV/PasswordTools/XF/Entity/UserAuth.php(309): SV\PasswordTools\XF\Entity\UserAuth->isPwnedPassword('*****', 1, false)
#4 src/addons/SV/PasswordTools/XF/Service/User/Login.php(56): SV\PasswordTools\XF\Entity\UserAuth->isCompromisedPassword('*****', 1)
#5 src/addons/SV/SignupAbuseBlocking/XF/Service/User/Login.php(21): SV\PasswordTools\XF\Service\User\Login->validate('*****', NULL)
#6 src/XF/Pub/Controller/LoginController.php(131): SV\SignupAbuseBlocking\XF\Service\User\Login->validate('*****', NULL)
#7 src/addons/DigitalPoint/Analytics/XF/Pub/Controller/Login.php(13): XF\Pub\Controller\LoginController->actionLogin(Object(XF\Mvc\ParameterBag))
#8 src/addons/SV/SignupAbuseBlocking/XF/Pub/Controller/LoginPatch.php(24): DigitalPoint\Analytics\XF\Pub\Controller\Login->actionLogin(Object(XF\Mvc\ParameterBag))
#9 src/addons/SV/SignupAbuseBlocking/Globals.php(50): SV\SignupAbuseBlocking\XF\Pub\Controller\LoginPatch->SV\SignupAbuseBlocking\XF\Pub\Controller\{closure}()
#10 src/addons/SV/SignupAbuseBlocking/XF/Pub/Controller/LoginPatch.php(24): SV\SignupAbuseBlocking\Globals::withLoginAction('login', Object(Closure))
#11 src/XF/Mvc/Dispatcher.php(362): SV\SignupAbuseBlocking\XF\Pub\Controller\LoginPatch->actionLogin(Object(XF\Mvc\ParameterBag))
#12 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('XF:Login', 'Login', Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Login), NULL)
#13 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Login), NULL)
#14 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#15 src/XF/App.php(2824): XF\Mvc\Dispatcher->run()
#16 src/XF.php(806): XF\App->run()
#17 index.php(23): XF::runApp('XF\\Pub\\App')
#18 {main}

Request state​

array(4) {
["url"] => string(12) "/login/login"
["referrer"] => string(25) "https://www.avforums.com/"
["_GET"] => array(1) {
["/login/login"] => string(0) ""
}
["_POST"] => array(5) {
["_xfToken"] => string(8) "********"
["login"] => string(9) "lfc5times"
["password"] => string(8) "********"
["remember"] => string(1) "1"
["_xfRedirect"] => string(25) "https://www.avforums.com/"
}
}
 
We’re getting several cURL errors daily. It’s been happening for a while. We’re on a XenForo hosted dedicated server using Cloudflare.
The errors are either Google Analytics or Pawnedpasswords.
Well Pawnedpasswords has nothing to do with any addon I make. Judging from the errors (and reinforced by the fact that it's multiple unrelated URLs), it looks like general network connectivity issues with the server. I don't know anything about Pawnedpasswords or their reliability, but I have a hard time believing that that www.google-analytics.com hostname is "down" (as in all Google data centers around the world are down). Google uses Anycast routing (meaning all data centers share the same IPs, and the request is automatically routed to the closest one that's online).

There's a lot of different things it could be... could be a general network/routing issue with the server or anything upstream of it. If your server is using a proxy (even a local one) for outbound requests, it could be an issue with the proxy. If it's consistent, it's going to be worthwhile to talk to your server admins about it. If it worked itself out, it could have just been something as simple as an ill-timed reboot of a router upstread of your server.

I know I already said this, but if every Google data center was actually down, I suspect that it would be in the news, everyone would know about it and everyone would be seeing the same thing. But the nature of how Anycast works (only 1 data center, anywhere in the world needs to be online), makes me more suspect of the network/routing of the server vs. the other scenario where all (hundreds of) Google data centers went down simultaneously around the globe.
 
Back
Top Bottom