DataSag guides · Updated 27 October 2026

Install DataSag on Flask with Jinja

Add DataSag to Flask with Jinja through the head of the Jinja base template used by your routes. Create a project first, then replace the example public key with the key from your dashboard.

Where to put the tracking script

Put the deferred external script once in the shared Jinja base template under your application templates directory. Preserve existing blocks, imports and asset links. Confirm that render_template calls for your public routes select children of that base. The tracker remains an external browser script rather than Python application code.

<script defer src="https://www.datasag.com/tracker.js" data-datasag-key="YOUR_PUBLIC_KEY"></script>

The project tracking key is public and belongs in this snippet. Account credentials, provider API keys and database secrets do not. Keep your existing consent choices and only load analytics when your site's policy permits it.

Verify the published installation

  1. Publish the change to the domain visitors actually use. Open a nested page as well as the homepage.
  2. In browser developer tools, find one tracker.js script with the correct data-datasag-key value.
  3. Filter Network requests for /api/track. Confirm that a pageview payload names the path you opened and receives a successful response.
  4. Open the same DataSag project and choose a date range containing your test. Confirm the page appears before measuring campaigns or conversions.

Avoid this Flask with Jinja setup mistake

Blueprint-specific template directories and independent render_template_string responses can bypass the base template. A child head block can replace inherited content unless it retains it. Inspect the generated response from the affected endpoint.

Keep pageviews separate from scroll, click and engagement events. A page can generate several tracking requests while still representing one visit to that path.

Events and conversions

Use an HTML goal attribute for click intent or call the API from a browser handler after success. A Flask view, Python callback or background job cannot directly call the visitor window.

<a href="/signup" data-datasag-goal="signup_click">Create account</a>

This attribute measures a click. To record a completed signup, call window.datasag.track in the application's confirmed success handler. Current plan details determine which event and campaign reports are available.

Setup and troubleshooting recipes

Platform reference

Official Flask with Jinja documentation explains the platform integration point. DataSag-specific behavior here follows the current tracker and project setup.

Need a different stack? Browse every installation guide.