import { ok, badRequest, serverError } from "wix-http-functions";
import wixCrmBackend from "wix-crm-backend";
// CRM label keys — must match labels created in Wix CRM dashboard
const CRM_LABELS = {
base: "custom.lcg-lead",
resilience: "custom.lcg-resilience",
ai: "custom.lcg-ai-strategy",
};
// LinkedIn URL helpers
const liCompanyUrl = (slug) =>
slug ? `https://www.linkedin.com/company/${slug}` : "";
const liPersonUrl = (slug) =>
slug ? `https://www.linkedin.com/in/${slug}` : "";
// ─────────────────────────────────────────────────────────────────────────────
// POST /_functions/lcgLead
//
// Expected JSON payload from Clay / Zapier:
// {
// company: string (required)
// contactName: string
// contactTitle: string
// sector: string
// size: "Small" | "Mid Cap" | "Large Cap"
// hq: string
// linkedinUrl: string (full contact profile URL)
// liPersonSlug: string (e.g. "firstname-lastname")
// liCompanySlug: string (e.g. "company-name")
// email: string
// phone: string
// liSignals: string (comma-separated signal labels)
// score: number (0–100)
// focus: "resilience" | "ai" | "general"
// notes: string
// }
// ─────────────────────────────────────────────────────────────────────────────
export async function post_lcgLead(request) {
let body;
try {
body = await request.body.json();
} catch (e) {
return badRequest({ body: JSON.stringify({ error: "Invalid JSON body" }) });
}
const { company, contactName, contactTitle, sector, size, hq,
liPersonSlug, liCompanySlug, email, phone,
liSignals, score, focus, notes } = body;
if (!company) {
return badRequest({ body: JSON.stringify({ error: "company is required" }) });
}
// Build label list for CRM contact
const labelKeys = [CRM_LABELS.base];
if (focus === "resilience") labelKeys.push(CRM_LABELS.resilience);
if (focus === "ai") labelKeys.push(CRM_LABELS.ai);
// Build extended fields
const extendedFields = {
"custom.lcg-company": company,
"custom.lcg-title": contactTitle || "",
"custom.lcg-sector": sector || "",
"custom.lcg-size": size || "",
"custom.lcg-hq": hq || "",
"custom.lcg-li-person": liPersonUrl(liPersonSlug),
"custom.lcg-li-company": liCompanyUrl(liCompanySlug),
"custom.lcg-signals": liSignals || "",
"custom.lcg-score": String(score || 0),
"custom.lcg-focus": focus || "general",
"custom.lcg-notes": notes || "",
"custom.lcg-created": new Date().toISOString(),
};
try {
// Split name into first/last for CRM
const nameParts = (contactName || company).trim().split(" ");
const firstName = nameParts[0] || company;
const lastName = nameParts.slice(1).join(" ") || "";
// Create or update contact in Wix CRM
const contactInfo = {
name: { first: firstName, last: lastName },
emails: email ? [{ email, tag: "MAIN" }] : [],
phones: phone ? [{ phone, tag: "MAIN" }] : [],
labelKeys,
extendedFields,
};
await wixCrmBackend.contacts.createContact(contactInfo);
return ok({
body: JSON.stringify({
success: true,
message: `Lead created: ${contactName || company}`,
company,
score: score || 0,
}),
});
} catch (err) {
console.error("LCG CRM error:", err);
return serverError({
body: JSON.stringify({
error: "CRM write failed",
detail: err.message || String(err),
}),
});
}
}
top of page
Fremtidens forretningsledelse ons 30 apr.
| Charlottenlund
Vi hos Leadership Capital Group er glade for at invitere til et inspirerende arrangement, hvor vi sætter fokus på de trends og udfordringer, som vil præge danske virksomheder i de kommende år.
Tid och plats 30 apr. 2025 10:00 – 12:00
Charlottenlund, Skovshoved Havn 16, 2920 Charlottenlund, Danmark
Om evenemanget Fremtidens forretningsledelse – Forbrugsmønstre, demografiske ændringer og krav til bæredygtighed
På dagen vil vi:
Præsentere Leadership Capital Group og vores tilgang til at rådgive og styrke danske virksomheder.
Udforske nye tendenser inden for forbrugsmønstre og demografiske ændringer.
Diskutere, hvordan virksomheder kan forberede sig på fremtidens krav til bæredygtighed, innovation og kommunikation.
Generation Z og Alpha: Kravene til fremtidens virksomheder
Visa mer
Google Maps blockerades på grund av dina inställningar för Analytics och funktionella cookies.
bottom of page