Connect public lead forms to CRM Leads on submit.

This commit is contained in:
2026-09-28 13:39:44 +03:30
parent 32e27d45f7
commit f20206b045
10 changed files with 971 additions and 91 deletions
+50
View File
@@ -1425,9 +1425,20 @@ export type LeadFormMapTo =
| "person.position"
| "deal.title"
| "deal.notes"
| "lead.title"
| "lead.contactName"
| "lead.mobile"
| "lead.phone"
| "lead.city"
| "lead.region"
| "lead.trade"
| "lead.notes"
| "lead.source"
| "notes"
| "custom";
export type LeadFormDuplicateMode = "skip" | "update" | "activity";
export interface LeadFormFieldDto {
id: string;
key: string;
@@ -1446,9 +1457,12 @@ export interface LeadFormDto {
description: string | null;
publicToken: string;
isActive: boolean;
createLead: boolean;
createPerson: boolean;
createDeal: boolean;
pipelineId: string | null;
leadStageId: string | null;
duplicateMode: LeadFormDuplicateMode | string;
source: string | null;
thankYouMessage: string | null;
redirectUrl: string | null;
@@ -1458,6 +1472,11 @@ export interface LeadFormDto {
hasCover: boolean;
fields: LeadFormFieldDto[];
submissionCount?: number;
viewCount: number;
startCount: number;
submitCount: number;
leadCreateCount: number;
duplicateCount: number;
publicPath: string;
createdAt: string;
updatedAt: string;
@@ -1477,9 +1496,12 @@ export interface LeadFormFieldInput {
export interface CreateLeadFormRequest {
name: string;
description?: string | null;
createLead?: boolean;
createPerson?: boolean;
createDeal?: boolean;
pipelineId?: string | null;
leadStageId?: string | null;
duplicateMode?: LeadFormDuplicateMode | string;
source?: string | null;
thankYouMessage?: string | null;
redirectUrl?: string | null;
@@ -1493,9 +1515,12 @@ export interface UpdateLeadFormRequest {
name?: string;
description?: string | null;
isActive?: boolean;
createLead?: boolean;
createPerson?: boolean;
createDeal?: boolean;
pipelineId?: string | null;
leadStageId?: string | null;
duplicateMode?: LeadFormDuplicateMode | string;
source?: string | null;
thankYouMessage?: string | null;
redirectUrl?: string | null;
@@ -1509,6 +1534,7 @@ export interface PublicLeadFormDto {
name: string;
description: string | null;
thankYouMessage: string | null;
redirectUrl: string | null;
submitLabel: string;
submitColor: string;
hasCover: boolean;
@@ -1527,19 +1553,43 @@ export interface LeadFormSubmissionDto {
id: string;
values: Record<string, string>;
personId: string | null;
leadId: string | null;
status: string;
utm: Record<string, string> | null;
createdAt: string;
}
export interface LeadFormUtmDto {
source?: string;
medium?: string;
campaign?: string;
term?: string;
content?: string;
landingPage?: string;
referrer?: string;
}
export interface SubmitLeadFormRequest {
values: Record<string, string>;
utm?: LeadFormUtmDto;
pageUrl?: string;
referrer?: string;
/** honeypot — must be empty */
website?: string;
}
export interface SubmitLeadFormResponse {
ok: true;
thankYouMessage: string | null;
redirectUrl: string | null;
outcome?: "created" | "updated" | "duplicate_skipped";
leadId?: string | null;
duplicate?: boolean;
message?: string | null;
}
export type LeadFormPublicEvent = "view" | "start";
export type QuoteStatus =
| "draft"
| "sent"