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
Opfølgningsmøde for kandidater til rollen som Senior Executive Advisory Tue, Jan 07
| Charlottenlund
Tak for din interesse i Leadership Capital Group og for at vise engagement i vores rejse. Vi er begejstrede for at udforske, hvordan vi sammen kan skabe værdi og bidrage til danske virksomheders vækst og udvikling.
Time & Location Jan 07, 2025, 2:00 PM – 4:00 PM GMT+1
Charlottenlund, Skovshoved Havn 16, 2920 Charlottenlund, Danmark
About the event
Tak for din interesse i Leadership Capital Group og for at vise engagement i vores rejse. Vi er begejstrede for at udforske, hvordan vi sammen kan skabe værdi og bidrage til danske virksomheders vækst og udvikling.
For at komme tættere på en fælles forståelse og finde dit individuelle ståsted, vil vi gerne invitere dig til et mindre og mere fokuseret møde.
På dette møde vil vi:
Uddybe Leadership Capital Groups vision, strategi og værdier.
Gennemgå samarbejdsaftaler og forventninger.
Show More
Google Maps were blocked due to your Analytics and functional cookie settings.
bottom of page