This commit is contained in:
Timo Knuth
2026-04-21 12:37:18 +02:00
parent aa2628834b
commit 32935041b3
27 changed files with 9197 additions and 23 deletions

View File

@@ -8,6 +8,7 @@ import { rateLimit, getClientIdentifier, RateLimits } from '@/lib/rateLimit';
import { getAuthCookieOptions } from '@/lib/cookieConfig';
import { signupSchema, validateRequest } from '@/lib/validationSchemas';
import { sendWelcomeEmail } from '@/lib/email';
import { sendConversionEvent } from '@/lib/meta';
export async function POST(request: NextRequest) {
try {
@@ -82,6 +83,19 @@ export async function POST(request: NextRequest) {
console.error('Welcome email failed:', emailError);
}
// Meta Conversions API — CompleteRegistration event
sendConversionEvent({
eventName: 'CompleteRegistration',
userData: {
email: user.email,
ip: request.headers.get('x-forwarded-for')?.split(',')[0] ?? undefined,
userAgent: request.headers.get('user-agent') ?? undefined,
fbc: request.cookies.get('_fbc')?.value,
fbp: request.cookies.get('_fbp')?.value,
},
eventSourceUrl: `${process.env.NEXT_PUBLIC_APP_URL}/signup`,
}).catch(console.error);
// Create response
const response = NextResponse.json({
success: true,

View File

@@ -3,6 +3,7 @@ import { headers } from 'next/headers';
import { stripe } from '@/lib/stripe';
import { db } from '@/lib/db';
import Stripe from 'stripe';
import { sendConversionEvent } from '@/lib/meta';
export async function POST(request: NextRequest) {
const body = await request.text();
@@ -49,7 +50,7 @@ export async function POST(request: NextRequest) {
? new Date(periodEndTimestamp * 1000)
: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000);
await db.user.update({
const updatedUser = await db.user.update({
where: {
stripeCustomerId: session.customer as string,
},
@@ -60,6 +61,22 @@ export async function POST(request: NextRequest) {
plan: (session.metadata?.plan || 'FREE') as any,
},
});
// Meta CAPI — Purchase event
const amountCents = session.amount_total ?? 0;
sendConversionEvent({
eventName: 'Purchase',
userData: {
email: updatedUser.email ?? undefined,
fbc: (session.metadata?.fbc) ?? undefined,
fbp: (session.metadata?.fbp) ?? undefined,
},
customData: {
currency: session.currency?.toUpperCase() ?? 'EUR',
value: amountCents / 100,
content_name: session.metadata?.plan ?? 'subscription',
},
}).catch(console.error);
}
break;
}