Rocky_Mountain_Vending/lib/ghl.ts

58 lines
1.5 KiB
TypeScript

const GHL_API_BASE = "https://services.leadconnectorhq.com";
const GHL_API_VERSION = "2021-07-28";
export async function createGHLContact(data: {
email: string;
firstName?: string;
lastName?: string;
phone?: string;
company?: string;
source?: string;
tags?: string[];
}) {
const locationId = process.env.GHL_LOCATION_ID;
const apiToken = process.env.GHL_API_TOKEN;
if (!locationId || !apiToken) {
console.warn("GHL credentials incomplete; skipping contact creation.");
return null;
}
const nameParts =
data.firstName || data.lastName
? {
first_name: data.firstName || "",
last_name: data.lastName || "",
}
: {};
const body: Record<string, unknown> = {
location_id: locationId,
email: data.email,
...nameParts,
...(data.phone && { phone: data.phone }),
...(data.company && { company_name: data.company }),
...(data.source && { source: data.source }),
...(data.tags?.length && { tags: data.tags }),
};
const res = await fetch(`${GHL_API_BASE}/contacts/`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Version: GHL_API_VERSION,
Authorization: `Bearer ${apiToken}`,
},
body: JSON.stringify(body),
cache: "no-store",
});
if (!res.ok) {
const text = await res.text();
console.error("GHL contact creation failed:", res.status, text);
return null;
}
return res.json();
}