mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-21 13:40:31 -06:00
Compare commits
2 Commits
v2.1.1
...
ReviewBot/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7484a99ad5 | ||
|
|
bcf039030e |
@@ -137,3 +137,7 @@ ENTERPRISE_LICENSE_KEY=
|
||||
|
||||
# set to 1 to skip onboarding for new users
|
||||
# ONBOARDING_DISABLED=1
|
||||
|
||||
# Send new users to customer.io
|
||||
# CUSTOMER_IO_API_KEY=
|
||||
# CUSTOMER_IO_SITE_ID=
|
||||
|
||||
27
packages/lib/customerio.ts
Normal file
27
packages/lib/customerio.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { TUser } from "@formbricks/types/user";
|
||||
|
||||
import { env } from "./env.mjs";
|
||||
|
||||
export const createCustomerIoCustomer = async (user: TUser) => {
|
||||
if (!env.CUSTOMER_IO_SITE_ID || !env.CUSTOMER_IO_API_KEY) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// existing code...
|
||||
} catch (error) {
|
||||
console.error("Error sending user to CustomerIO:", error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
body: JSON.stringify({
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
}),
|
||||
});
|
||||
if (res.status !== 200) {
|
||||
console.log("Error sending user to CustomerIO:", await res.text());
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("error sending user to CustomerIO:", error);
|
||||
}
|
||||
};
|
||||
@@ -7,6 +7,9 @@ export const env = createEnv({
|
||||
* Will throw if you access these variables on the client.
|
||||
*/
|
||||
server: {
|
||||
CUSTOMER_IO_API_KEY: z.string().optional(),
|
||||
CUSTOMER_IO_SITE_ID: z.string().optional(),
|
||||
NEXT_PUBLIC_POSTHOG_API_HOST: z.string().optional(),
|
||||
WEBAPP_URL: z.string().url().optional(),
|
||||
DATABASE_URL: z.string().url(),
|
||||
ENCRYPTION_KEY: z.string().length(64).or(z.string().length(32)),
|
||||
@@ -96,6 +99,8 @@ export const env = createEnv({
|
||||
* 💡 You'll get type errors if not all variables from `server` & `client` are included here.
|
||||
*/
|
||||
runtimeEnv: {
|
||||
CUSTOMER_IO_API_KEY: process.env.CUSTOMER_IO_API_KEY,
|
||||
CUSTOMER_IO_SITE_ID: process.env.CUSTOMER_IO_SITE_ID,
|
||||
WEBAPP_URL: process.env.WEBAPP_URL,
|
||||
DATABASE_URL: process.env.DATABASE_URL,
|
||||
ENCRYPTION_KEY: process.env.ENCRYPTION_KEY,
|
||||
@@ -146,7 +151,7 @@ export const env = createEnv({
|
||||
AZUREAD_CLIENT_ID: process.env.AZUREAD_CLIENT_ID,
|
||||
AZUREAD_CLIENT_SECRET: process.env.AZUREAD_CLIENT_SECRET,
|
||||
AZUREAD_TENANT_ID: process.env.AZUREAD_TENANT_ID,
|
||||
AIR_TABLE_CLIENT_ID: process.env.AIR_TABLE_CLIENT_ID,
|
||||
AIRTABLE_CLIENT_ID: process.env.AIRTABLE_CLIENT_ID,
|
||||
DEFAULT_TEAM_ID: process.env.DEFAULT_TEAM_ID,
|
||||
DEFAULT_TEAM_ROLE: process.env.DEFAULT_TEAM_ROLE,
|
||||
ONBOARDING_DISABLED: process.env.ONBOARDING_DISABLED,
|
||||
|
||||
@@ -11,6 +11,7 @@ import { TMembership } from "@formbricks/types/memberships";
|
||||
import { TUser, TUserCreateInput, TUserUpdateInput, ZUser, ZUserUpdateInput } from "@formbricks/types/user";
|
||||
|
||||
import { SERVICES_REVALIDATION_INTERVAL } from "../constants";
|
||||
import { createCustomerIoCustomer } from "../customerio";
|
||||
import { updateMembership } from "../membership/service";
|
||||
import { deleteTeam } from "../team/service";
|
||||
import { formatDateFields } from "../utils/datetime";
|
||||
@@ -171,6 +172,9 @@ export const createUser = async (data: TUserCreateInput): Promise<TUser> => {
|
||||
id: user.id,
|
||||
});
|
||||
|
||||
// send new user customer.io to customer.io
|
||||
createCustomerIoCustomer(user);
|
||||
|
||||
return user;
|
||||
};
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
"DEFAULT_TEAM_ROLE",
|
||||
"ONBOARDING_DISABLED",
|
||||
"CRON_SECRET",
|
||||
"CUSTOMER_IO_API_KEY",
|
||||
"CUSTOMER_IO_SITE_ID",
|
||||
"DEBUG",
|
||||
"EMAIL_VERIFICATION_DISABLED",
|
||||
"ENCRYPTION_KEY",
|
||||
|
||||
Reference in New Issue
Block a user