First-party, consent-based funnel tracking: a cookie notice asks once, and only visitors who allow it get an anonymous visit id. Event page views and registration starts are tracked from the browser; submit and paid come from the registration. Adds the Registration funnel report (conversion per stage, daily trend, by source/device/ticket option), a conversion tile on the supervisor/admin dashboards, short-link source tagging, and a daily rollup of raw rows older than 90 days. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CP62L9JxHomA36aYP1ekCe
19 lines
596 B
JavaScript
19 lines
596 B
JavaScript
const express = require('express');
|
|
const rateLimit = require('express-rate-limit');
|
|
const router = express.Router();
|
|
const { trackStage, getFunnel } = require('../controllers/analyticsController');
|
|
const { protect, supervisor } = require('../middleware/authMiddleware');
|
|
|
|
const trackLimiter = rateLimit({
|
|
windowMs: 60 * 1000,
|
|
max: 60,
|
|
standardHeaders: true,
|
|
legacyHeaders: false,
|
|
handler: (req, res) => res.status(204).end(), // silently drop floods
|
|
});
|
|
|
|
router.post('/track', trackLimiter, trackStage);
|
|
router.get('/funnel', protect, supervisor, getFunnel);
|
|
|
|
module.exports = router;
|