MBO-Tech-IT-Webseite/app/api/analytics/track-phone-click/route.ts

45 lines
1.2 KiB
TypeScript

import { createServiceClient } from "@/lib/supabase";
import { isBot, anonymizeIp, parseDevice, parseBrowser, parseOs } from "@/lib/analytics";
export async function POST(request: Request) {
try {
const body = await request.json();
const { phone_number, source_page, source_element, session_id } = body;
if (!phone_number || !source_page || !source_element) {
return Response.json({ error: "Missing required fields" }, { status: 400 });
}
const ip =
request.headers.get("x-forwarded-for")?.split(",")[0].trim() ||
request.headers.get("x-real-ip") ||
"0.0.0.0";
const ua = request.headers.get("user-agent") || "";
if (isBot(ua)) {
return Response.json({ ok: true });
}
const supabase = createServiceClient();
const { error } = await supabase.from("phone_clicks").insert({
phone_number,
source_page,
source_element,
session_id: session_id || null,
ip_anonymized: anonymizeIp(ip),
device_type: parseDevice(ua),
browser: parseBrowser(ua),
os: parseOs(ua),
});
if (error) {
console.error("Phone click tracking error:", error);
}
return Response.json({ ok: true });
} catch {
return Response.json({ ok: true });
}
}