{"id":28766177,"url":"https://github.com/amorgaut/wakanda-analytics-proxy","last_synced_at":"2025-09-01T21:33:49.880Z","repository":{"id":15019755,"uuid":"17745456","full_name":"AMorgaut/Wakanda-Analytics-Proxy","owner":"AMorgaut","description":"An proxy to track visits from non-html pages","archived":false,"fork":false,"pushed_at":"2014-03-14T18:04:44.000Z","size":216,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-04-18T16:10:55.289Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://analytics-proxy.waktest.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AMorgaut.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-14T12:27:38.000Z","updated_at":"2016-08-18T16:29:18.000Z","dependencies_parsed_at":"2022-09-23T02:30:27.856Z","dependency_job_id":null,"html_url":"https://github.com/AMorgaut/Wakanda-Analytics-Proxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/AMorgaut/Wakanda-Analytics-Proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMorgaut%2FWakanda-Analytics-Proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMorgaut%2FWakanda-Analytics-Proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMorgaut%2FWakanda-Analytics-Proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMorgaut%2FWakanda-Analytics-Proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AMorgaut","download_url":"https://codeload.github.com/AMorgaut/Wakanda-Analytics-Proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AMorgaut%2FWakanda-Analytics-Proxy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260351220,"owners_count":22995920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-17T11:41:30.368Z","updated_at":"2025-07-08T12:43:03.524Z","avatar_url":"https://github.com/AMorgaut.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Wakanda Analytics Proxy#\n\n[![Analytics](http://analytics-proxy.waktest.com/UA-48954928-1)](https://github.com/AMorgaut/Wakanda-Analytics-Proxy)\n![Analytics](http://analytics-proxy.waktest.com/UA-48954928-1?test)\n\n##Disclaimer##\n\n**WARNING - It is still experimental**\n\n##Credits##\n\nThis solution is originaly a port to [Wakanda](http://wakanda.org) of [Google Analytics Beacon](https://github.com/igrigorik/ga-beacon) from **[Ilya Grigorik](https://github.com/igrigorik)** (Google).\n\n*Note: The original version was using the [GO Programming Language](http://golang.org/) and did run on [Google App Engine](https://cloud.google.com/products/app-engine).*\n\nIn this version I prefered to use the `Referer` HTTP header instead of having to manually set custom paths. It makes, in my opinion, it easier to integrate and makes the stats more relevant if a readme file is opened from different origins (like a fork). I also started to prepare an abstraction layer to support other Analytics tools like [Marketo](http://marketo.com).\n\n##About##\n\nSometimes it is impossible to embed the JavaScript tracking code provided by Analytics Tools like Google Analytics: the host page does not allow arbitrary JavaScript, and there is no native integration. However, not all is lost! **If you can embed a simple image (pixel tracker), then you can beacon data to most of those Analytics Tools**. \n\nFor a great, hands-on explanation, check out [Using a Beacon Image for GitHub, Website and Email Analytics](http://www.sitepoint.com/using-beacon-image-github-website-email-analytics/) describing how [ga-beacon](https://github.com/igrigorik/ga-beacon) (see [Credits](#credits)) works. \n\nThis Analytics Proxy has some few changes compared to the original one but the main principles are the same.\n\n\n### Hands-on example: Google Analytics for GitHub \n\n[![GA Dashboard](https://lh5.googleusercontent.com/-Zu9r9m7Uv0c/UsSQlJ5OoeI/AAAAAAAAHwo/fvH_lrVUV0w/w1007-h467-no/skitch.png)](https://lh5.googleusercontent.com/-Zu9r9m7Uv0c/UsSQlJ5OoeI/AAAAAAAAHwo/fvH_lrVUV0w/w1007-h467-no/skitch.png)\n\n**Curious which of your GitHub projects are getting all the traffic, or if anyone is reading your GitHub wiki pages?** Well, that's what Google Analytics is for! GitHub does not allow us to install arbitrary analytics, but we can still use a simple tracking image to log visits in real-time to Google Analytics - for full details, follow the instructions below. Once everything is setup, install [this custom dashboard](https://www.google.com/analytics/web/template?uid=MQS4cmZdSh2OWUVqRntqXQ) in your account for a nice real-time overview (as shown in above screenshot).\n\n_Note: GitHub [finally released traffic analytics](https://github.com/blog/1672-introducing-github-traffic-analytics) on Jan 7, 2014 -- wohoo! As a result, you can get most of the important insights by simply using that. If you still want real-time analytics, or an integration with your existing GA analytics, then you can use both the tracking pixel and built-in analytics._\n\n\n### Setup instructions\n\nFirst, log in to your Google Analytics account and [set up a new property](https://support.google.com/analytics/answer/1042508?hl=en):\n\n* Select \"Website\", use new \"Universal Analytics\" tracking\n* **Website name:** anything you want (e.g. `GitHub projects`)\n* **WebSite URL:** `{your Wakanda Analytics Proxy Server address}`\n* Click \"Get Tracking ID\", copy the `UA-XXXXX-X` ID on next page\n\nNext, add a tracking image to the pages you want to track:\n\n* `UA-XXXXX-X` should be your tracking ID\n\nExample tracker markup if you are using Markdown:\n\n```markdown\n[![Analytics](https://foo.com/UA-XXXXX-X)](https://github.com/AMorgaut/Wakanda-Analytics-Proxy)\n```\n\nOr RDoc:\n\n```rdoc\n{\u003cimg src=\"https://foo.com/UA-XXXXX-X\" /\u003e}[https://github.com/AMorgaut/Wakanda-Analytics-Proxy]\n```\n\nIf you prefer, you can skip the badge and use a transparent pixel. To do so, simply append `?pixel` to the image URL and remove the link.\n\n\nIn Markdown:\n\n```markdown\n![Analytics](https://foo.com/UA-XXXXX-X?pixel)\n```\n\nOr RDoc:\n\n```rdoc\n\u003cimg src=\"https://foo.com/UA-XXXXX-X?pixel\" /\u003e\n```\n\nAnd that's it, add the tracker image to the pages you want to track and then head to your Google Analytics account to see real-time and aggregated visit analytics for your projects!\n\n\n### FAQ ###\n\n- **How does this work?** GitHub, as few others, does not allow arbitrary JavaScript to run on its pages. As a result, we can't use standard analytics snippets to track visitors and pageviews. However, Google Analytics provides a [measurement protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide) which allows us to POST the visit data directly to Google servers, and that's exactly what [GA Beacon](https://github.com/igrigorik/ga-beacon) does, and therefore what Wakanda Analytics Proxy does too: we include an image request on our pages which hits the GA Beacon service, and GA Beacon POST's the visit to Google Analytics to record the visit.\n\n- **Why do we need to proxy?** Google Analytics supports reporting of visit data [via GET requests](https://developers.google.com/analytics/devguides/collection/protocol/v1/reference#transport), but unfortunately we can't use that directly because we need to generate and report a unique visitor ID for each hit - GitHub does not allow us to run JS on the client to generate the ID. To address this, we proxy the request through a proxy server, which in turn is responsible for generating the unique visitor ID (server generated UUID) and reporting the hit to Google Analytics.\n\n- **What about referrals and other visitor information?** Unfortunately the static tracking pixel approach limits the information we can collect about the visit. For example, referral information is only available on the GitHub page itself and can't be passed to the tracking pixel (for which the referer is the github page itself). As a result, the available metrics are restricted to unique visitors, pageviews, and the User-Agent of the visitor.\n\n- **Can I use this outside of GitHub?** Yep, [you certainly can](http://www.sitepoint.com/using-beacon-image-github-website-email-analytics/). It's a generic beacon service.\n\n\n##License##\n\nThe MIT License (MIT)\n\nCopyright (c) 2014 Alexandre Morgaut\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famorgaut%2Fwakanda-analytics-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famorgaut%2Fwakanda-analytics-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famorgaut%2Fwakanda-analytics-proxy/lists"}