Opt-In Forms

Opt-in forms are the signup forms you put on your own website. A visitor fills one in, and Broadcast creates the subscriber in the channel that owns the form, applies your tags, and optionally sends a confirmation or welcome email.

Each form is built from blocks in a visual editor, styled without CSS, and installed with a single script tag.

Opt-In Forms list showing two forms with views, conversion rate, and status toggles

The list shows every form in the current channel with its view count, conversion rate, and an on/off toggle. Use Filter by label to search, or the checkboxes to enable and disable forms in bulk.

Choosing a Widget Type

Click New Form and pick how the form should appear on your page. The choice determines which display settings you get later, and you can change it at any time from the editor’s Widget tab.

Widget type chooser showing Inline Embed, Popup Modal, and Full Page options

Widget type Where it appears Best for
Inline Embed In the flow of your page content, where you put the script tag Sidebars, end-of-post signup, footers
Popup Modal A centered overlay on top of the page Lead magnets and offers that need attention
Full Page A dedicated page of its own, linked directly Landing pages and campaign links

The Form Builder

Opening a form takes you to a three-pane editor: blocks on the left, a live canvas in the middle, and properties on the right.

Form builder with block palette, canvas showing a rendered signup form, and style panel

Your work saves automatically, which the header confirms with Saved just now. The Published toggle in the top right controls whether the form accepts submissions, and it is the same switch as the status toggle on the list page.

Adding Blocks

The left panel lists everything you can drop onto the canvas. Click a block to append it, then drag it by its handle to reorder.

There are twelve block types, falling into three groups:

Group Blocks Notes
Content Heading, Text, Image, Divider, Spacer Presentation only, collects nothing
Input Email, Name, Checkbox, Dropdown, Radio Group, Custom Field Each one writes to a subscriber field
Action Button Submits the form

Note

Every form needs an Email block and a Button block. Without an email input there is nothing to create a subscriber from, and without a button there is no way to submit.

Editing a Block

Click any block on the canvas and the right panel becomes its inspector. The fields shown depend on the block type.

Block inspector for an email field showing field type, label, placeholder, and required checkbox

Input blocks all share a Label, a Placeholder, and a Required field switch. What differs is where the answer is stored.

Where Answers Are Stored

Standard input blocks map onto the subscriber’s own columns. Anything else goes into custom data.

Field type Stored as
Email The subscriber’s email address
Name, First name, Last name The matching subscriber name field
Custom Field, Checkbox, Dropdown, Radio Group A key inside the subscriber’s custom data

Custom keys must start with a letter and contain only lowercase letters, numbers, and underscores, so signup_source is valid and Signup Source is not. Use the same key across forms and you can segment on it later. See Managing Subscribers for how custom data is used elsewhere.

Styling the Form

The Form Style panel restyles the whole form without touching CSS. Changes render on the canvas as you make them.

Form Style panel with preview settings, colors, and input field controls

The panel is grouped into Colors, Input Fields, Typography, Layout, and Effects, and ends with four Quick Presets (Minimal, Bold, Soft, and Dark) that set all of them at once. Start from a preset, then adjust.

Warning

Preview Settings at the top of the panel, including Page Background, only change the editor canvas. They are there to help you judge contrast against your real site, and they are never applied to the embedded form.

Use the Desktop and Mobile buttons under the canvas to check both widths before you publish.

The Success View

The Success tab switches the canvas to what a visitor sees after submitting. It has its own blocks, so you can write a proper thank-you message rather than relying on a default.

Success view of the form builder showing a Check your inbox thank-you message

Only content blocks are offered here (Heading, Text, Divider, Image, and Spacer), because the visitor has already submitted and there is nothing left to collect.

If you would rather send people to a page on your own site, set an After Confirmation URL in the form settings instead.

Display Settings

The Widget tab holds the settings specific to your chosen widget type. For an inline embed that is just width and maximum width. A popup modal has considerably more, including when it should appear.

Widget tab for a popup modal, with the settings on the left and a live preview of the modal over a page on the right

The preview beside the settings shows the result, overlay and all, so you can judge how intrusive a popup will feel before publishing it.

Triggers

Show widget decides what makes the popup appear:

Trigger Behaviour
Immediately Shows as soon as the page loads
After a time delay Waits 3, 5, 10, 15, 30, or 60 seconds
After scrolling Waits until the visitor reaches 25%, 50%, 75%, or 90% of the page
On exit intent Shows when the pointer leaves toward the browser chrome

Show frequency decides how often the same visitor sees it again: every time, once per session, once every 1, 7, 14, 30, or 90 days, or once only. Frequency is tracked in the visitor’s browser, so it resets if they clear their cookies.

Show on devices lets you run a popup on desktop but not mobile, which is worth considering since mobile popups are both more intrusive and more likely to be penalised in search.

Installing the Form

The form’s detail page gives you two ways to install it.

Installation card showing the embed script tag and the direct link

Embed Script

Paste the script tag into your HTML wherever the form should appear. This is the recommended method and the only one that supports popup triggers.

<script
  src="https://your-broadcast-domain.com/widget.js"
  data-opt-in="your-form-identifier"
  async
></script>

The script reads the form identifier from data-opt-in, fetches the form’s configuration, and renders it inside an iframe. The iframe matters: it means your site’s CSS cannot leak in and break the form’s styling, and the form’s styling cannot leak out and affect your page.

Every form also works as a standalone page at /opt_in/<identifier>. Share it in a bio link, a QR code, or an email, no embedding required. For a Full Page widget this is the primary way to use the form.

Form Settings

The Settings button in the editor header opens everything that is not about layout.

Automation

Automation settings showing add tags, double opt-in, confirmation template, and welcome email

Setting What it does
Add Tags Comma-separated tags applied to every subscriber from this form. Useful for tracking which form someone came from
Double opt-in Requires the subscriber to confirm by email before they are added to the list
Confirmation Email Template The template sent to confirm. It must include {{ confirmation_url }}
After Confirmation A URL on your own site to redirect to after confirming. Leave blank to use Broadcast’s Confirmation Pages
Send welcome email Sends a welcome template after signup, or after confirmation when double opt-in is on

Note

Leave Double opt-in enabled unless you have a specific reason not to. It costs you some signups and buys you a list that actually engages, which is what your sending reputation is built on. See Confirmation Pages.

Allowed Embedding Domains

By default a form can be embedded on any domain. List one domain per line here and Broadcast will only render it on those domains. Set this once your form is live, so nobody can lift your script tag onto a site you do not control.

Security

Public forms attract bots. Broadcast layers four defences:

Defence How it works Default
Honeypot A field invisible to humans. Anything that fills it in is a bot On
Time-based validation Rejects submissions faster than a human could type, with a configurable minimum On, 3 seconds
Rate limiting Caps submissions per IP address within a time window On, 5 per hour
Cloudflare Turnstile A privacy-preserving CAPTCHA alternative Off

Honeypot and time validation are invisible to real visitors, so leave both on. Turnstile needs a Cloudflare account and a site key, and is worth adding only if the first three are not holding.

The panel ends with a summary, which is the quickest way to confirm a form is actually protected rather than assuming it:

Security summary listing honeypot, time validation, and rate limiting as enabled, with Turnstile not configured

Tracking Performance

The form’s detail page summarises how it is doing.

Performance metrics showing 1,287 views, 213 submissions, and a 16.55% conversion rate

Views counts how many times the form was displayed and Submissions how many were completed, with Conversion the ratio between them. Below these, a Configuration panel restates the form’s key settings, so you can confirm at a glance that double opt-in is on and the right confirmation template is attached.

The same page lists the people who have signed up most recently.

Recent Submissions card listing the latest subscribers from the form

What Visitors See

Use Preview in the editor header at any point to open the form exactly as a visitor gets it.

The finished opt-in form as a visitor sees it, with name and email fields and a subscribe button

Always submit a test through the preview before you publish. It confirms the subscriber is created in the channel you expected, the tags land, and the confirmation email arrives.

Managing Forms

From the row menu on the list page you can:

  • Edit to reopen the builder
  • Preview to open the public form
  • Duplicate to copy a form, including its blocks and styling, as a starting point
  • Delete to remove it

Duplicating is the quickest way to run the same form with different copy on two parts of your site, and keeping them as separate forms means the view and conversion numbers stay separate too.

Disabling a form with the status toggle stops it accepting submissions while leaving the script tag in place. The embedded widget removes itself on the next page load.

Permissions

Access to opt-in forms is controlled by two channel permissions:

  • View opt-in forms & performance (opt_in_forms_read) to see forms and their analytics
  • Create & manage opt-in forms (opt_in_forms_write) to build, edit, duplicate, and delete them

Both are included in the built-in Editor role. See Users & Permissions.

API Access

Everything above is available over HTTP, plus A/B variants, which are API-only and have no dashboard equivalent. See Opt-In Forms API for creating forms, reading per-form analytics, and splitting traffic across weighted variants.

Last updated

Was this page helpful?

Thanks for your feedback!

Thanks for letting us know. We'll work on improving this page.