Home/Platform/Win

Win

Consent that cannot be pre-checked.

The only path a compliant SMS list can be born. Bundled marketing opt-in is a publish block.

Consent cannot be pre-checked.

The consent field type refuses a checked default. The public renderer forces the box off even if a stored draft tried to sneak a true.

Bundled marketing opt-in is a publish block.

lintConsent 409s when terms and marketing share a line, when a required opt-in gates a service form, or when the channel is missing. It is not a warning.

This is the only compliant SMS list path.

Channel-specific, timestamped consent with the exact text stored. Cold SMS stays locked. A spreadsheet of mobiles is not a list the gate will honor.

What is the Nerxus One forms builder?

The forms builder is a three-pane drag-and-drop editor where a marketer publishes an intake form and gets a hosted link, a QR, an embed, and a Forge site block, with every submission landing as structured data that can become a lead, a deal note, a booking intake, or a consented contact. Forms are the platform's universal intake primitive.

The buyer is the marketer. You build a Free Audit Request for your own hunt, or a New Patient Intake for a client location. The visitor may be a prospect of yours or a customer of theirs. The schema still sits in your tenant. The client portal, if you allow it, can show submissions from their forms. It cannot build tenant-level forms.

The list page shows name, draft or published or archived, submissions, conversion, and where-used chips. The builder palette includes short text, long text, email, phone, number, dropdown, radio, checkboxes, date, time, file, rating, address, hidden, heading, divider, page break, and the consent checkbox. Conditional logic can show a field only if a prior answer matches. Mapping can write into contact, business, deal note, or custom.

Muse can generate a draft from a sentence. Pulse can triage submissions. Forge can drop the block on a site. Publish stays Supervised. The interesting field, the one this page exists to explain, is consent.

Design can inherit the tenant brand or a per-client brand: logo, accent, font pair, button text, background, light or dark. Settings cover open and close dates, a submission cap, who gets notified, language of built-in strings, file-upload rules, retention, and after-submit behavior. UTM capture is a switch. None of those settings can pre-tick a consent box.

Templates ship as Contact Us, Free Audit Request, Quote Request, New Patient or Client Intake, Booking Intake, Review Opt-In, Client Onboarding, Event Signup, and Callback Request. Forge can pick by taxonomy when it builds a site. You can still start blank. Blank still runs lintConsent.

What is a bundled marketing opt-in and why is it a publish block?

A bundled marketing opt-in is one consent line that mixes terms-of-service with marketing, promotional, newsletter, specials, offers, SMS, or WhatsApp language. lintConsent scans label plus consentText, and if it sees terms and a marketing word together, it refuses publish with a split-the-lines message.

The block is a 409, not a toast. You cannot click through. You cannot mark it acknowledged. The schema stays draft until the lines are separate and the marketing line is optional when service fields exist.

Missing consentChannel is its own issue. A consent field must name email, SMS, or WhatsApp. A vague 'contact me however' line is how a later send invents a channel the person never ticked. One channel per line. If you want two channels, you want two ticks.

Bundling is popular because it looks tidy. Tidy is how a review-opt-in form also enrolls a promotional SMS list, and how a regulator or a carrier later asks for the exact text. Split lines look uglier and survive that question.

Echo's review collection page is a different lock: public review buttons for every visitor, no gating branch. A review opt-in form can still collect SMS consent for request campaigns. That form must stay consent-first. It cannot hide Google behind a private-feedback-only path. Offer private recovery alongside, never instead.

How is the only compliant SMS list path built?

The only compliant SMS list path is a published consent field that named SMS, was not pre-checked, was not bundled, was optional if the form also did a service job, and wrote a timestamped record with the exact text. Outreach and reputation read that ledger. They do not grow SMS lists from scraped mobiles, imported CSVs, or 'they gave me their number on the phone.'

A2P 10DLC brand and campaign registration still live in Settings. A beautiful form on an unregistered number is a form, not a send path. The gate will still BLOCK a channel the tenant has not enabled. The form does not override the matrix lock on cold SMS.

A messaging connector, when present, is transport after the ledger says yes. Missing credentials disable the messaging step with the standard blocking gate. Dry-runs can use a sandbox. The local consent ledger still decides the tier before any provider lookup. A sandbox send is not a reason to skip the tick.

Imported client lists at onboarding can carry existing consent if you have proof. The import is not a laundering step. If the column is empty, the row enters with none. Pulse and Relay will treat none as none. Do not map a phone column to sms_consent=true because the sheet had a header that said mobile.

WhatsApp is a sibling channel on the same field type. Same rules. Same ledger. Same refusal to treat a Facebook comment as opt-in.

Email consent is allowed and still channel-specific. Cold B2B email can exist without this box under CAN-SPAM for corporate subscribers. Do not use that fact to skip the box when you later want SMS. The email they replied to is not SMS consent unless they said so and you stored it.

Reply-based consent, 'yes text me,' is a second sanctioned path in Inbox via capture_consent with the reply as proof. It is still not a list-builder you run on a hundred cold rows. The form is how a list is born in bulk. The reply is how one thread upgrades.

What is the public form at /f/<token>?

The public form is an unauthenticated render and submit at /f/<token>, listed on the proxy so a visitor never signs in to Clerk. The token is opaque. Submissions validate against the pinned form version, take a spam score, and rate-limit.

normalizePublicField runs on the way out. Consent arrives unchecked regardless of what a draft stored. If you saw a pre-ticked marketing box on a public URL, that is a defect, and it is the defect the normalizer was written to make structurally hard.

Share also offers QR, an embed script with an iframe fallback, and a Forge site block that inherits the site theme. Hosted link, QR on a counter card, embed on a site you do not own, block on a site you do: four ways, one schema, one lint.

Analytics are views, starts, completion, drop-off by step. Spam armor is honeypot, time-to-submit floor, per-IP velocity, disposable-email flag, optional Turnstile. No CAPTCHA by default. File uploads scan before exposure.

The older spec sketched forms.nerxus.one/{tenant}/{slug}. The live public prefix to quote is /f/<token>, the same token style as /b/<token> for booking and /r/<token> for reports. If a custom host is not in Settings, do not advertise it.

Embed.js can render inline, popup, or slider and posts height over postMessage so the iframe does not clip. Locked-down site builders get the plain iframe. The Forge site block is the same renderer registered in the fulfillment pack, so a marketer who can drag a section can drag this form without leaving the site editor.

Spam-scored submissions land in an inbox table whose columns are the fields. Row actions: convert, assign, note, export. Bulk delete is the GDPR path. Mark spam is a status, not a silent drop. A false spam on a real quote is a lead you owe an apology, not a metric to hide.

How do submissions become leads, deals, or booking intake?

Submissions can auto-create or attach to a business and a deal per mapping, deduped on email, phone, or domain, with source recorded as the form name. Convert-to-lead remains a one-click if you did not auto. Pulse can triage. You can export CSV. You can delete for a DSAR.

A Free Audit Request is supposed to feed Radar, then a wedge. That is your hunt. A Quote Request for trades is the same motion with a different palette. Those visitors are your prospects. They still do not get a cold SMS because they asked for a quote, unless they also ticked SMS.

Booking intake is a form hooked on an event type. The submission links to the booking. Location-scoped intakes, new patient packets, belong on the client calendar. Your discovery questions belong on the marketer event type. Do not reuse one schema for both and then wonder why a patient was enrolled in No-SSL.

Client onboarding questionnaires attach to Steward's record after Close. Monthly check-ins too. Those are existing relationships. Enrolling them in a promotional sequence is still outreach and still Supervised. Transactional is a narrower word than marketers like.

Webhooks and in-app notify exist as auto-actions. A webhook that dumps mobiles into another blaster is you leaving the ledger. The product can fire the event. It cannot make the other blaster honest.

What does lintConsent refuse at publish time?

lintConsent refuses pre-checked consent, a consent field with no channel, a line that bundles terms with marketing words, and a required consent that would gate service fields. Each issue names the field and a remediation sentence. Publish does not start until the array is empty.

The function is the same on save-and-publish routes. A later edit that re-bundles should 409 again. A version that was published clean and then edited dirty should not stay live by inertia. Pin submissions to the version they saw, so an old tick still has the old text.

Test the success path, not only the refusals. A gate that rejects everything, including a valid optional SMS line, is a broken builder. The suite needs a form that must get through: separate terms, optional SMS consent, channel set, unchecked.

Layout fields do not count as service fields. Headings, paragraphs, dividers, page breaks, and hidden fields will not by themselves trigger the required-consent-gating rule. A real email or phone or dropdown will.

Do not fork a 'lite lint' for Muse drafts. The model likes tidy one-liners. The lint is how those one-liners die before a visitor sees them.

File uploads are PII-classed with the rest of the submission. Virus-scan before exposure. Retention windows and a download-my-data path hook Settings, Data and Privacy. A consent tick does not grant you the right to keep a driver's license photo forever. Set the window. Honor the export.

Schedule open and close dates if the offer expires. A published form with a close date still renders a closed state rather than taking a late tick and arguing later. Submission caps work the same way. Full is full.

How do forms sit next to Echo and review collection?

Forms can collect channel-specific consent for review-request campaigns Echo later runs. The collect page itself still shows public review buttons to every visitor. There is no branch that hides Google until they tick a box, and no toggle to add one.

A Review Opt-In template should be consent-first: explain the ask, then the SMS or email line, optional. It should not require marketing consent to leave a star rating on the public page. Those are two surfaces. Keep them two surfaces.

Low-star private recovery stays alongside the public path, never instead. A form that only offers a private inbox for unhappy people is a gating form, even if you built it in this builder. Echo's lock is the one that wins on the collect URL.

Showcase widgets and request campaigns read the ledger this builder writes. If the campaign wants SMS, the ledger must show SMS. Email-only consent does not upgrade because the campaign UI has a text-message preview.

Yelp and Tripadvisor remain monitor or assisted. Do not promise a form will post a review to those networks. The form can ask permission to request. The network decides what APIs exist.

Who should use Nerxus forms, and who should stay in Typeform?

Use these forms if the submission must become a lead, a deal, a booking intake, or a consented row the gate can read, without an export. The mapping and the lint are the reason to stay inside the tenant.

Stay in Typeform or a site-native form if you only need a pretty survey and you will never SMS, never enroll, and never book. They will have more themes. They will not run lintConsent. That can be what you want for a trivia night, and it is the wrong tool for an A2P list.

Developers who want a headless form API will find public submit and embed. They will not find a way to bypass lint on publish. If your integration needs pre-checked marketing, your integration needs a different product, and that product will be the one in the complaint.

Agencies running many client intakes still get RLS and location_id. A cafe review opt-in does not appear on a dental intake. Tenant isolation is the same story as Pipeline and Calendar.

If a client already has Typeform embeds on a site you did not build, you can leave them until you replace the block. Those embeds will not write this ledger. A tick collected off-platform is a tick you must import with proof or treat as none. Do not point Relay at that Typeform CSV and call it lintConsent.

How does mapping write a submission onto a contact or deal?

Mapping writes a submission onto a contact, business, deal note, or custom field by the rules you set, deduped on email, phone, or domain, with source recorded as the form name. Convert-to-lead remains a one-click if you did not auto. Pulse can triage. You can export CSV. You can delete for a DSAR.

A Free Audit Request is supposed to feed Radar, then a wedge. That is your hunt. A Quote Request for trades is the same motion with a different palette. Those visitors are your prospects. They still do not get a cold SMS because they asked for a quote, unless they also ticked SMS.

Booking intake is a form hooked on an event type. The submission links to the booking. Location-scoped intakes, new patient packets, belong on the client calendar. Your discovery questions belong on the marketer event type. Do not reuse one schema for both and then wonder why a patient was enrolled in No-SSL.

Client onboarding questionnaires attach to Steward's record after Close. Monthly check-ins too. Those are existing relationships. Enrolling them in a promotional sequence is still outreach and still Supervised. Transactional is a narrower word than marketers like.

Webhooks and in-app notify exist as auto-actions. A webhook that dumps mobiles into another blaster is you leaving the ledger. The product can fire the event. It cannot make the other blaster honest. The local consent ledger still decides the tier before any provider lookup.

What spam armor sits on /f/<token>?

Spam armor on /f/<token> is a honeypot, a time-to-submit floor, per-IP velocity, a disposable-email flag, and optional Turnstile. No CAPTCHA by default. File uploads scan before exposure. Submissions take a spam score and rate-limit.

normalizePublicField runs on the way out. Consent arrives unchecked regardless of what a draft stored. If you saw a pre-ticked marketing box on a public URL, that is a defect, and it is the defect the normalizer was written to make structurally hard.

Spam-scored submissions land in an inbox table whose columns are the fields. Row actions: convert, assign, note, export. Bulk delete is the GDPR path. Mark spam is a status, not a silent drop. A false spam on a real quote is a lead you owe an apology, not a metric to hide.

The token is opaque. Enumeration should fail. Rate limits and honeypot rules are shared with booking pages. A token that submits twelve times in a minute should fail closed. If /f/<token> ever redirected a visitor to Clerk, that is the same class of bug /r/<token> already taught the team.

Analytics are views, starts, completion, drop-off by step. Those are counts, not ROI. This site will not turn a completion percent into a revenue promise. Dark patterns raise completion and raise complaint rate. The builder picked the complaint rate.

Can a review opt-in form hide public review buttons?

A review opt-in form cannot hide public review buttons, because Echo's collect page lock wins on the collect URL. Public review buttons render for every visitor. There is no branch that hides Google until they tick a box, and no toggle to add one.

A Review Opt-In template should be consent-first: explain the ask, then the SMS or email line, optional. It should not require marketing consent to leave a star rating on the public page. Those are two surfaces. Keep them two surfaces.

Low-star private recovery stays alongside the public path, never instead. A form that only offers a private inbox for unhappy people is a gating form, even if you built it in this builder. If you find yourself designing a star-step that changes destinations, you are designing a branch that does not exist. Stop.

Showcase widgets and request campaigns read the ledger this builder writes. If the campaign wants SMS, the ledger must show SMS. Email-only consent does not upgrade because the campaign UI has a text-message preview.

Yelp and Tripadvisor remain monitor or assisted. Do not promise a form will post a review to those networks. The form can ask permission to request. The network decides what APIs exist. Echo drafts. A human pastes.

How do open and close dates work on a published form?

Open and close dates work by rendering a closed state when the window is outside the dates you set, rather than taking a late tick and arguing later. Submission caps work the same way. Full is full. Schedule the dates if the offer expires.

A later edit that re-bundles terms with marketing should 409 again. A version that was published clean and then edited dirty should not stay live by inertia. Pin submissions to the version they saw, so an old tick still has the old text.

File uploads are PII-classed with the rest of the submission. Virus-scan before exposure. Retention windows and a download-my-data path hook Settings, Data and Privacy. A consent tick does not grant you the right to keep a driver's license photo forever. Set the window. Honor the export.

Design can inherit the tenant brand or a per-client brand. None of those settings can pre-tick a consent box. UTM capture is a switch. Language of built-in strings is a switch. The public renderer still forces checked false.

Muse can generate a draft from a sentence. Publish is Supervised. You still owe lintConsent a clean schema. An AI-generated bundled line fails the same as a hand-built one. Do not fork a lite lint for Muse drafts. The model likes tidy one-liners. The lint is how those one-liners die before a visitor sees them.

What does enroll-on-submit still require?

Enroll-on-submit still requires Supervised approval and a GatedMessage, because that enroll is outreach. A contact form is not a hidden cold drip. The sequence still honors quiet hours, warmup caps, and stop-on-reply.

SMS enroll still needs a published consent field that named SMS, was not pre-checked, was not bundled, was optional if the form also did a service job, and wrote a timestamped record with the exact text. A2P 10DLC registration still sits in Settings. The form is the consent, not the blast.

Reply-based consent, yes text me, is a second sanctioned path in Inbox via capture_consent with the reply as proof. It is still not a list-builder you run on a hundred cold rows. The form is how a list is born in bulk. The reply is how one thread upgrades.

Email consent is allowed and still channel-specific. Cold B2B email can exist without this box under CAN-SPAM for corporate subscribers. Do not use that fact to skip the box when you later want SMS. The email they replied to is not SMS consent unless they said so and you stored it.

WhatsApp is a sibling channel on the same field type. Same rules. Same ledger. Same refusal to treat a Facebook comment as opt-in. Missing consentChannel is its own issue. A vague contact me however line is how a later send invents a channel the person never ticked.

Facts

Publish lint
lintConsent. Blocking, never a warning.
Public submit
/f/<token>
Public renderer
Forces consent unchecked
Channels
Email, SMS, or WhatsApp. One per consent line.
SMS lists
Born here, or they are not compliant lists
Share
Hosted link, QR, embed, Forge site block
Autonomy
Draft 🟢. Publish 🟡. Enroll on submit 🟡.

Questions

Can I default the SMS box on to raise conversion?

No. Pre-checked is a lint failure. The public page would uncheck it anyway. Conversion that depends on a dark default is conversion this builder will not ship.

What is a bundled marketing opt-in?

One checkbox that agrees to terms and also to newsletters, SMS, or offers. lintConsent looks for terms plus marketing words in the same consent field and refuses publish. Split the lines. Make marketing optional.

Is this how I build a cold SMS audience?

You do not. Cold SMS is locked. This path builds a first-party, channel-specific list after a person ticks a box that named SMS. A2P registration still sits in Settings. The form is the consent, not the blast.

Where does a visitor submit if they are not logged in?

The public page is /f/<token>, in the proxy public list. They should not see Clerk. If they do, the matcher is wrong, the same class of bug /r/<token> already taught the team.

Can Muse publish a form I described?

Muse can draft. Publish is Supervised. You still owe lintConsent a clean schema. An AI-generated bundled line fails the same as a hand-built one.

Do submissions automatically enroll in a sequence?

They can, if you set that auto-action, and that enroll is outreach, so it is Supervised and still gated. A contact form is not a hidden cold drip. Do not hide a cold sequence behind a thank-you page and call it transactional.

Can I map a phone column to SMS consent on import?

No. Imported client lists can carry existing consent if you have proof. If the column is empty, the row enters with none. Do not map a phone column to sms_consent=true because the sheet had a header that said mobile. Pulse and Relay will treat none as none.

Does a review opt-in form hide Google until they tick a box?

No. Echo's collect page shows public review buttons to every visitor. There is no branch that hides Google until they tick a box, and no toggle to add one. A review opt-in form can still collect SMS consent for request campaigns. Those are two surfaces.

What if /f/<token> asks the visitor to sign in?

That is a defect. The public page is in the proxy public list. They should not see Clerk. If they do, the matcher is wrong, the same class of bug /r/<token> and /b/<token> already taught the team.

Can a heading or divider trigger the required-consent-gating rule?

No. Layout fields do not count as service fields. Headings, paragraphs, dividers, page breaks, and hidden fields will not by themselves trigger the rule. A real email or phone or dropdown will. Make the service required. Make the marketing line optional.

Does a Typeform embed on a site I did not build write this ledger?

No. Those embeds will not write this ledger. A tick collected off-platform is a tick you must import with proof or treat as none. Do not point Relay at that Typeform CSV and call it lintConsent.

Keep reading

Meetings

Booking intake is a form. The two calendars stay isolated.

Outreach

Consent records are what the gate reads before any SMS channel exists.

Reputation

Review opt-in is consent-first. Collection still cannot gate.

Guardrails

Cold SMS stays red. This page is why a list can ever turn yellow.

Find the leak. Ship the work. Keep the account.

Tell us your vertical, your metro, and what you can fulfill. Supervised is the default. Plans start at $99/mo.

14-day trial. Card required, converts on day 15. Full table on /pricing.