Google Analytics Django
A comprehensive Django package for seamless integration of Google Analytics into your Django projects, supporting Google Analytics 4 (GA4).
![Published on Django Packages](https://img.shields.io/badge/Published%20on-Django%20Packages-0c3c26)
Features
- Support for Universal Analytics (analytics.js) and Google Analytics 4 (gtag.js)
- Configurable options for anonymizing IP, cookie expiration, sampling rates, and more
- Middleware for setting custom headers and server-side tracking
- Debug mode to prevent tracking in development environments
- Automatic exclusion of staff users from tracking
- Easy-to-use template tags for quick integration
- Extensive settings for fine-grained control over tracking behavior
- Event tracking and custom dimension/metric support
Installation
- Install the package using pip:
pip install google-analytics-django
- Add 'google_analytics_django' to your INSTALLED_APPS in settings.py:
INSTALLED_APPS = [
'google_analytics_django',
]
- Add the middleware to your MIDDLEWARE in settings.py:
MIDDLEWARE = [
'google_analytics_django.middleware.GoogleAnalyticsMiddleware',
]
Configuration
Add the following settings to your Django project's settings.py file:
GOOGLE_ANALYTICS_PROPERTY_ID = 'UA-XXXXXXXX-X'
GOOGLE_ANALYTICS_DOMAIN = 'auto'
GOOGLE_ANALYTICS_ANONYMIZE_IP = False
GOOGLE_ANALYTICS_SAMPLE_RATE = 100
GOOGLE_ANALYTICS_SITE_SPEED_SAMPLE_RATE = 1
GOOGLE_ANALYTICS_COOKIE_EXPIRES = 63072000
GOOGLE_ANALYTICS_DISPLAY_FEATURES = False
GOOGLE_ANALYTICS_USE_GTAG = True
GOOGLE_ANALYTICS_DEBUG_MODE = False
Usage
Template Tag
In your base template, load the template tags and add the Google Analytics script:
{% load google_analytics_tags %}
<head>
{% google_analytics %}
</head>
Middleware
The middleware is automatically active once added to your MIDDLEWARE setting. It adds two custom headers to the response:
X-GA-TRACKING-ID
: The Google Analytics client ID (if available)X-CLIENT-IP
: The client's IP address
These headers can be used for server-side tracking if needed.
Advanced Features
Debug Mode
Set GOOGLE_ANALYTICS_DEBUG_MODE = True
in your settings to prevent tracking in development environments.
Staff Exclusion
By default, staff users (users with is_staff=True
) are not tracked. You can modify this behavior in the should_track
function in utils.py
.
Event Tracking
Use the standard Google Analytics JavaScript API to track events:
gtag("event", "button_click", {
event_category: "engagement",
event_label: "hero_cta",
});
Custom Dimensions and Metrics
Set up custom dimensions and metrics in your Google Analytics property, then use them in your tracking code:
gtag("config", "UA-XXXXXXXX-X", {
custom_map: { dimension1: "user_type" },
});
gtag("event", "page_view", { user_type: "member" });
Troubleshooting
If you encounter issues:
- Check that your
GOOGLE_ANALYTICS_PROPERTY_ID
is correct. - Ensure the middleware is properly added to your MIDDLEWARE setting.
- Verify that the template tag is correctly placed in your base template.
- Check browser console for any JavaScript errors.
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please ensure your code adheres to the project's coding standards and include tests for new features.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
If you need help or have any questions, please open an issue on the GitHub repository or contact the maintainers.