From bfe381e2b718efd28bbc8cb7e9e3fde594d7aefe Mon Sep 17 00:00:00 2001 From: juanisidoro Date: Fri, 13 Feb 2026 08:39:05 +0100 Subject: [PATCH 1/2] fix: handle null referrer in pixel tracking route request.headers.get("referer") returns null when the header is absent (e.g. email clients). The Zod schema uses .optional() which accepts undefined but rejects null, causing silent validation failure and pixel events not being recorded. Fixes #4028 --- src/app/(collect)/p/[slug]/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/(collect)/p/[slug]/route.ts b/src/app/(collect)/p/[slug]/route.ts index 79d6faa5c..b1864d017 100644 --- a/src/app/(collect)/p/[slug]/route.ts +++ b/src/app/(collect)/p/[slug]/route.ts @@ -47,7 +47,7 @@ export async function GET(request: Request, { params }: { params: Promise<{ slug payload: { pixel: pixel.id, url: request.url, - referrer: request.headers.get('referer'), + referrer: request.headers.get("referer") || undefined, }, }; From 45edb0d67cf97a7c4fc5b510a900d545179e45d7 Mon Sep 17 00:00:00 2001 From: juanisidoro Date: Fri, 13 Feb 2026 09:23:15 +0100 Subject: [PATCH 2/2] fix: apply same null referrer fix to link tracking route The same bug exists in the link route (q/[slug]) where request.headers.get("referer") returns null for requests without a Referer header, causing silent Zod validation failure. --- src/app/(collect)/q/[slug]/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/(collect)/q/[slug]/route.ts b/src/app/(collect)/q/[slug]/route.ts index 24089bdb2..aa9c26f3f 100644 --- a/src/app/(collect)/q/[slug]/route.ts +++ b/src/app/(collect)/q/[slug]/route.ts @@ -45,7 +45,7 @@ export async function GET(request: Request, { params }: { params: Promise<{ slug payload: { link: link.id, url: request.url, - referrer: request.headers.get('referer'), + referrer: request.headers.get("referer") || undefined, }, };