Landscapt (CRM)

Forms & Lead Capture

Building, publishing, and sharing public forms — and what happens to a submission once it lands.

Where to find it

Forms live under Landscapt → Communication → Forms (/crm/communication/forms). The list shows every form in your org. Opening one takes you to its detail page (/crm/communication/forms/[id]), which has three tabs:

  • Design — the drag-and-drop field builder.
  • Configure — confirmation behavior, notification emails, Account Management, and Tags on Submit.
  • Responses — every submission, with a status you can act on.

Once published, the form itself is publicly reachable at /forms/[slug] — no login required. That page is what a visitor actually sees and fills out.

Building a form

The Design tab groups field types into four categories. Every field can be marked required individually — there's no form-level "require everything" toggle, it's a per-field flag.

Simple

Field typeWhat it is
textSingle-line text
emailSingle-line, expected to hold an email address
phoneSingle-line, expected to hold a phone number
textareaMulti-line text
numberNumeric input
dateDate picker
selectDropdown, single choice
checkboxSingle on/off checkbox

Advanced

Field typeWhat it is
multiple_choiceRadio-style single choice among several options
checklistMultiple choices, more than one selectable
ratingStar/number rating scale
reviewA longer-form testimonial/review field
hiddenNot shown to the visitor — carries a fixed or pre-filled value
sms_optinSMS consent checkbox, for text-message opt-in language

Layout

Field typeWhat it is
headerA section heading, no input
paragraphBlock of static text, no input
dividerA visual rule between sections

Widget

attachment — lets a visitor upload a file with their submission. See below for the size/type limit that applies to it.

Worked example: Free Estimate Request

A complete lead-capture form, built end to end, using only settings covered on this page.

Design tab — fields, in order

  1. header — "Request a Free Estimate"
  2. text — Full Name, required
  3. email — Email, required
  4. phone — Phone, required
  5. text — Service Address, required
  6. select — Service Interested In (Lawn Care, Landscaping, Snow Removal, Other), required
  7. textarea — Anything else we should know?, optional

Configure tab

  • Confirmation — type message: "Thanks! A member of our team will follow up within one business day to schedule your free estimate."
  • Account Management — auto-manage on, matching strategy email. A submission whose email matches an existing client attaches to that client; otherwise a new client is created with status lead.
  • Tags on Submit — add tag "Website Lead" to the resulting client, every time.

Publish the form, then share the Direct Link on the site's "Get a Quote" button — see Embedding & sharing for the other two options.

Result: every submission becomes an open ticket immediately, and because auto-manage is on and the email matches cleanly, the response also lands as completed with a lead client already tagged and attached — no manual matching needed. See Responses tab & the review workflow for what changes if auto-manage were off instead.

Configure tab: what each setting does

  • Confirmation — what the visitor sees immediately after submitting. Either an on-page message (text you write) or a url redirect to another page (e.g. a thank-you page on your marketing site).
  • Email notifications — recipients, from address, subject, and body are all configurable, with merge tags available in subject/body and an "Include a copy" toggle for CC'ing the submitter.
  • Account Management — the auto-manage on/off toggle, an update strategy (replace_all or add_new), and a matching strategy (email, name_and_email, name_email_and_company, or custom). This block decides whether a submission gets tied to a client automatically — see What happens on submission for the effect.
  • Tags on Submit — separate add/remove tag lists applied to the resulting client record on every submission.

Publishing

A form has exactly two statuses: draft and published. Nothing else — no "archived" or "closed" state for the form itself.

Publishing isn't just a UI toggle — the public submit route filters on status = "published" server-side. A draft form's public URL will not load, no matter who has the link.

Embedding & sharing

Three ways to put a published form in front of someone, all built off the same slug.

ModeWhat it gives youWhen to use it
Direct Link{origin}/forms/{slug} — the public page itself, nothing embeddedSocial posts, email signatures, text messages, QR codes — anywhere you just need one URL
iFrameA raw <iframe> snippet pointed at the form URLA static site or page builder where you can paste HTML and a fixed-height embed is fine
ScriptA <script> snippet that builds the iframe itself and listens for a twins-form-height postMessage to auto-resize the embed to fit the form's contentA CMS page (or any site) where the form's height may change — multi-step fields, validation errors, conditional fields — and you don't want a scrollbar inside the embed

What happens on submission

Every submission, without exception, does two things immediately:

  1. Creates a CRM ticket with status open.
  2. Fires the form_submitted automation trigger — the same event that feeds Communication Automations sequences. See the Automations guide for what you can chain off of it.

What happens next depends on the Account Management setting on that form:

  • Auto-manage on — the submission is matched (or a new client is created) using the configured matching strategy, related_client_id is set, and the response status becomes completed. A client created this way starts at status lead, not active.
  • Auto-manage offrelated_client_id may still get set, but the response status is on_hold pending manual staff review on the Responses tab.

Responses tab & the review workflow

Response status is a separate concept from form status — it applies per submission, not to the form as a whole. Four values exist:

StatusMeaning
completedAuto-managed and matched/created a client automatically. No action needed.
on_holdAuto-manage was off (or matching wasn't confident enough) — a staff member needs to review and manually attach or create the client.
spamSet manually by staff on the Responses tab. There is no automatic spam detection — see the Callout below.
ignoredAlso set manually — for a legitimate but not-actionable submission a staff member wants out of the queue without calling it spam.

In practice: check the Responses tab for anything sitting at on_hold, decide whether it's a real lead, and either attach it to an existing client, let it create a new one, or mark it spam/ignored to clear it from the queue.

One thing to know before you share a form

Attachment field limit. The server-enforced limit on the attachment field type is 15 MB, images or PDF only — anything larger or a different file type is rejected at submission. Design any form using an attachment field around that limit.

Bot / spam protection (Cloudflare Turnstile)

Public form pages can show a Cloudflare Turnstile challenge before allowing submission — it's opt-in at the environment level, not per-form. Set NEXT_PUBLIC_TURNSTILE_SITE_KEY and TURNSTILE_SECRET_KEY (see .env.local.example) and every public form immediately shows the widget and rejects submissions that don't pass server-side verification. Leave both unset and forms behave exactly as before — no widget, no verification.

Until those keys are configured, there is still no automated gate — anyone with the Direct Link (or who finds an embedded form) can submit repeatedly. The manual spam/ignored response statuses on the Responses tab remain the backstop either way, since Turnstile only blocks obvious bots, not a determined human.

More in Landscapt (CRM)

Clients, Properties & Leads
Client accounts, commercial hierarchies, service properties, and the activity timeline that ties it all together.
Estimates & the Budget Engine
How an estimate is built, how its numbers are actually calculated, and how it becomes a job.
Jobs & Packages
The six job types, how a job's status differs from a visit's status, and how a Package template turns into a billed job.
Services & Pricing
The service catalog, bulk catalog price changes, and Price Adjustment runs — which prices seed new work and which ones actually bill.
The Dispatch Board
The daily scheduling screen crews and dispatchers live in — visits, crews, status, and how actual hours get calculated.
The Crew App
What a crew sees on their phone — the day's stops, clocking on and off, breaks, photos, and sending work back to the office.
Sales Meetings
Booking appointments per sales rep, the double-booking warning, and the split between a rep's direct reminder and the client-facing automation trigger.
The Waiting List
Jobs with a date range instead of a date, held for opportunistic scheduling — and how to actually get them dispatched.
Snow Jobs & Storm Dispatch
Storm events, priority dispatch, and the invoicing flow built specifically for snow.
Invoicing & Payments
How an invoice is born, how its status moves, and where the client's own PO number actually goes.
Contracts
Ongoing billing agreements — monthly amounts, seasonal overrides, sub-properties, and how signing and invoicing actually work.
Communication Automations
How sequences, triggers, and events work — and how Automations differ from Sales Campaigns.
Tickets
Support and service tickets — where they come from, how they're worked, and how they connect to the rest of a client's record.
Damage Cases
Tracking property damage and warranty claims tied to a job — what a case captures, how cost rolls up, and a real current limitation in how it connects to a client record.
Job Photos
Field photo documentation, annotation, and before/after comparisons — attached to a job site, not a person.
Online Payments & Stripe
How a client actually pays an invoice online, how Stripe Connect keeps every org's money in their own account, and how the platform takes zero cut.
Browse all guides
© 2026 Landscapt. All rights reserved.