Skip to content

Commit baf03c1

Browse files
committed
feat: enhance analytics input to prioritize document referrer
- Updated AnalyticsInput to include an optional document_referrer field, allowing for better tracking of the previous page. - Modified POST request handling to prefer document_referrer over the HTTP Referer header, ensuring more accurate analytics data. - Adjusted ResourceViewTracker to pass the document referrer correctly, maintaining a maximum length of 2048 characters.
1 parent 8b6269d commit baf03c1

3 files changed

Lines changed: 13 additions & 1 deletion

File tree

src/app/api/analytics/view/route.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ export async function POST(req: Request) {
3232
}
3333

3434
const userId = await authID();
35-
const referrer = req.headers.get("referer");
35+
36+
const referrer =
37+
parsed.data.document_referrer !== undefined
38+
? parsed.data.document_referrer.trim().slice(0, 2048) || null
39+
: req.headers.get("referer")?.slice(0, 2048) ?? null;
3640

3741
const session =
3842
userId != null

src/backend/services/inputs/analytics.input.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ export const AnalyticsInput = {
5555
resource_type: z.enum(TRACKED_RESOURCE_TYPES),
5656
resource_id: z.string().uuid(),
5757
session_id: z.string().min(8).max(128),
58+
/**
59+
* `document.referrer` at page load (previous page). Prefer this over the HTTP
60+
* Referer on this POST, which is usually the article URL (fetch initiator).
61+
*/
62+
document_referrer: z.union([z.string().max(2048), z.literal("")]).optional(),
5863
}),
5964

6065
getResourceAnalyticsInput: z

src/components/analytics/ResourceViewTracker.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ export function ResourceViewTracker({
4646
resource_type: resourceType,
4747
resource_id: resourceId,
4848
session_id: sessionId,
49+
document_referrer: document.referrer
50+
? document.referrer.slice(0, 2048)
51+
: "",
4952
});
5053

5154
try {

0 commit comments

Comments
 (0)