UNPKG

@tapstack/facebook-conversion-api-nextjs

Version:
66 lines (65 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const request_1 = require("../utils/request"); const server_side_events_1 = require("../services/server-side-events"); /** * Facebook Conversion API Event Handler for Next.js. * * @param req * @param res * @constructor */ const eventHandler = async (req, res) => { var _a; if (req.method !== 'POST') { return res.status(400).json({ message: 'This route only accepts POST requests', }); } if (!process.env.FB_ACCESS_TOKEN) { throw new Error('Missing FB_ACCESS_TOKEN in environment file.'); } if (!process.env.NEXT_PUBLIC_FB_PIXEL_ID) { throw new Error('Missing NEXT_PUBLIC_FB_PIXEL_ID in environment file.'); } const { eventName, eventId, emails, phones, firstName, lastName, country, city, zipCode, products, value, currency, fbp, fbc, userAgent, sourceUrl, testEventCode, } = req.body; if (!eventName) { return res.status(400).json({ error: 'The request body is missing required parameters: eventName', }); } const payload = { eventName, eventId, emails, phones, firstName, lastName, country, city, zipCode, products, value, currency, fbp: fbp || (0, request_1.getClientFbp)(req), fbc: fbc || (0, request_1.getClientFbc)(req), ipAddress: (0, request_1.getClientIpAddress)(req), userAgent, sourceUrl, testEventCode, }; const response = await (0, server_side_events_1.sendServerSideEvent)(payload); const success = (_a = (response === null || response === void 0 ? void 0 : response.events_received) === 1) !== null && _a !== void 0 ? _a : false; if (process.env.NEXT_PUBLIC_FB_DEBUG === 'true') { return res.status(200).json({ debug: true, success, payload, response, }); } return res.status(200).json({ success, }); }; exports.default = eventHandler;