conversion: explicit event params, removes any in PixelControl

This commit is contained in:
Elijah Duffy
2025-12-18 18:44:33 -08:00
parent fc07bb057c
commit f5ec7b3812
6 changed files with 146 additions and 55 deletions

View File

@@ -1,6 +1,11 @@
import { json, type RequestHandler } from '@sveltejs/kit';
import { buildConversionUserData, buildCustomData, ConversionControl } from './control.ts';
import type { ConversionErrorResponseBody, ConversionRequestBody } from '$lib/types/conversion.js';
import { ConversionControl } from './control.ts';
import type {
ConversionErrorResponseBody,
ConversionEventParams,
ConversionRequestBody,
ConversionUserData
} from '$lib/types/conversion.js';
import { StatusCodes } from 'http-status-codes';
@@ -29,32 +34,33 @@ export const createConversionRequestHandler: (control: ConversionControl) => Req
const ip = getEventIP(request, getClientAddress);
const ua = request.headers.get('user-agent');
const userData = buildConversionUserData({
const userData: ConversionUserData = {
...body.user,
ip,
ua: ua ?? body.user?.ua ?? undefined
});
};
// Build custom data with UTM params if applicable
let rawCustomData = body.customData ?? {};
let customData: ConversionEventParams = body.customData ?? {};
if (body.eventName === 'PageView' && body.utms) {
// For PageView events, automatically include UTM params if provided
rawCustomData = {
...rawCustomData,
customData = {
...customData,
...body.utms
};
}
const customData = buildCustomData(rawCustomData);
// Send the event via the control
const response = await control.trackEvent(body.eventName, {
eventID: body.eventID,
eventSourceURL: body.eventSourceURL,
actionSource: 'website',
userData,
const response = await control.trackEvent(
body.eventName,
{
eventID: body.eventID,
eventSourceURL: body.eventSourceURL,
actionSource: 'website',
userData
},
customData
});
);
return json(response, { status: StatusCodes.OK });
} catch (e) {