Best Practices for Piwik to Fail Gracefully on remote

What tips would be suggested for Piwik to fail gracefully when client site is unable to reach the Piwik server?

I had a client on commerce site mediumestore.example who had installed the widget provided by me and served on my own example.com/piwik server and was very dissapointed in my service.

Unfortunately there was some DNS failure over the weekend(Go Daddy yay) on example.com that was serving Piwik on my example.com/piwik . Now, the theory is that GD added some filters and throttling when DNS requests suddenly jumped from 10 a day to 75,000 a day, but that is just a conjecture and does not placate a client who wonders why my problems should affect him.

Again, the server and Piwik installation on it has remained working perfectly fine, it was just that client was unable to reach it and it was messing up their page layout and losing them sales. I checked, that the Piwik code was installed on their pages just before . They have two other statistics packages running before Piwik code starts.

So, what steps should I take to minimize any interruptions to client?

Best would be, if client would not be affected (that is their page would notify server goes down, but with my limited understanding of front end programming it might not be possible completely.

So one easy step to avoid DNS problems, would be to replace the example.com/piwik with actual static IP address/piwik. Still, that leaves other catastrophic failures such as the server catching on fire and so on… :slight_smile:

Try the asynchronous tracker. Piwik.org

Thanks for the suggestion!

I changed the tracking code to asynchronous version.

From what I understand async loading is the way to go if the script is externally hosted.

Any reason for the async code not to be the default suggestion? Just curious on any potential downsides.

There is no downside. we want to make it the default but haven’t got around to it yet: Improve Javascript Tracking Code admin screen: asynchronous code, other options · Issue #1845 · matomo-org/matomo · GitHub