Skip to main content

Django module to proxy requests to Plausible Analytics.

Project description

Django Plausible Proxy

Django module to proxy requests and send server-side events to Plausible Analytics.

Proxying

Proxying allows a project owner concerned about missing data seeing a more complete picture. See Adblockers and using a proxy for analytics for the detailed outline of the problem and solution.

When installed and configured in settings.py and urls.py, the app proxies the HTTP requests as such:

https://<yourdomain.com>/js/script.js -> https://plausible.io/js/script.js
https://<yourdomain.com>/api/event    -> https://plausible.io/api/event

Server-side events

Track on the server side events that can't be tracker otherwise, such as API requests.

from plausible_proxy import send_custom_event
...
send_custom_event(request, name="Register", props={"plan": "Premium"})

Installation

Install the package from PyPI.

pip install django-plausible-proxy

Configure Django setting in the settings.py.

# Register the app to enable {% plausble %} templatetag.
INSTALLED_APPS = [
    # ...
    "plausible_proxy"
    # ...
]

# Optionally, define a default value for Plausible domain to provide a default value
# for the Plausible domain and the `send_custom_event()` function.
PLAUSIBLE_DOMAIN = "yourdomain.com"

Update urls.py.

from django.urls import include, path

urlpatterns = [
    # ...
    path("", include("plausible-proxy.urls")),
    # ...
]

Update your base HTML template to include the plausible templatetag.

{% load plausible %}
<html>
  <head>
      ...
      {% plausible script='script.js' %}
  </head>

API reference

{% plausible %}

A templatetag to include the Plausible analytics script to the page.

Arguments:

  • domain (default to settings.PLAUSIBLE_DOMAIN): defines the data-domain parameter, the is the domain for the Plausible analytics.
  • script (default to script.js): defines the Plausible script to use. See Script extensions for enhanced measurement for the list of alternative script names and what they can track for you.

Usage example:

{% load plausible %}
<html>
  <head>
      ...
      {% plausible domain='example.com' script='script.outbound-links.js' %}
  </head>

plausible_proxy.services.send_custom_event()

end a custom event to Plausible and return successful status.

See Plausible events API for more information

Arguments:

  • request (HttpRequest): Original Django HTTP request. Will be used to create X-Forwarded-For and User-Agent headers.
  • name (string): Name of the event. Can specify pageview which is a special type of event in Plausible. All other names will be treated as custom events.
  • domain (optional string): Domain name of the site in Plausible. The value from settings.PLAUSIBLE_DOMAIN is used by default.
  • url (optional string): URL of the page where the event was triggered. If not provided, the function extracts the URL from the request. If the URL contains UTM parameters, they will be extracted and stored. If URL is not set, will be extracted from the request.
  • referrer (optional string): Referrer for this event.
  • screen_width (optional integer): Width of the screen.
  • props (optional dict): Custom properties for the event. See: Using custom props.

Returns: True if request was accepted successfully.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-plausible-proxy-0.1.1.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

django_plausible_proxy-0.1.1-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file django-plausible-proxy-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-plausible-proxy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 862d50ce1c313c5cc91f176b9631b28b50b60740f7d1f72c2af5e070a9fa8eea
MD5 0f4ecd9b96704c5684b54dd50055c9bb
BLAKE2b-256 d703ec4dab087ec5fec4e1386ca032b61e84c6c62c0fcc579bd2ab99819ff3d0

See more details on using hashes here.

Provenance

File details

Details for the file django_plausible_proxy-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_plausible_proxy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1c4b54e18646f2fa669ac19ef6d7f931ca72cc75e0c95b434b256692c3e1c44
MD5 2cfd76ca526db5d9ed8112ad80214f81
BLAKE2b-256 1b1c1082321cec11f73abfbbc8cb4f2ad246d755c6eb56c69c0fb090499c3b7b

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page