diff --git a/apps/sim/app/api/attribution/route.ts b/apps/sim/app/api/attribution/route.ts index 43d6c882b..9f8ef698a 100644 --- a/apps/sim/app/api/attribution/route.ts +++ b/apps/sim/app/api/attribution/route.ts @@ -11,7 +11,6 @@ */ import { db } from '@sim/db' -import { DEFAULT_REFERRAL_BONUS_CREDITS } from '@sim/db/constants' import { referralAttribution, referralCampaigns, user, userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' import { eq } from 'drizzle-orm' @@ -157,9 +156,12 @@ export async function POST() { } const matchedCampaign = await findMatchingCampaign(utmData) - const bonusAmount = matchedCampaign - ? Number(matchedCampaign.bonusCreditAmount) - : DEFAULT_REFERRAL_BONUS_CREDITS + if (!matchedCampaign) { + cookieStore.delete(COOKIE_NAME) + return NextResponse.json({ attributed: false, reason: 'no_matching_campaign' }) + } + + const bonusAmount = Number(matchedCampaign.bonusCreditAmount) let attributed = false await db.transaction(async (tx) => { @@ -168,7 +170,7 @@ export async function POST() { .values({ id: nanoid(), userId: session.user.id, - campaignId: matchedCampaign?.id ?? null, + campaignId: matchedCampaign.id, utmSource: utmData.utm_source || null, utmMedium: utmData.utm_medium || null, utmCampaign: utmData.utm_campaign || null, @@ -189,8 +191,8 @@ export async function POST() { if (attributed) { logger.info('Referral attribution created and bonus credits applied', { userId: session.user.id, - campaignId: matchedCampaign?.id, - campaignName: matchedCampaign?.name, + campaignId: matchedCampaign.id, + campaignName: matchedCampaign.name, utmSource: utmData.utm_source, utmCampaign: utmData.utm_campaign, utmContent: utmData.utm_content, diff --git a/packages/db/constants.ts b/packages/db/constants.ts index 387214102..809719176 100644 --- a/packages/db/constants.ts +++ b/packages/db/constants.ts @@ -8,11 +8,6 @@ */ export const DEFAULT_FREE_CREDITS = 20 -/** - * Default bonus credits (in dollars) for referral signups - */ -export const DEFAULT_REFERRAL_BONUS_CREDITS = 10 - /** * Storage limit constants (in GB) * Can be overridden via environment variables