# Share links

Create, manage, and track share links for your form.

## Share links

Every published form gets a unique link you can share directly. Create multiple links per form — each with its own name, expiration, response limit, and analytics — so you can track which channel drives the most completions.

<h2 id="share-links">Share links</h2>

<p>
  A share link is how respondents get to your form. Each link has its own 8-character code and its own settings, so you can create separate
  links for different campaigns, channels, or audiences.
</p>

<h3 id="create-link">Creating a share link</h3>

> ℹ️ **Two channels, one sheet**
> <p>
>     The Share panel has two tabs. <strong>Public link</strong> — this page — is one link anyone can open. <strong>Requests</strong> sends
>     the form to one named recipient who submits once. See <a href="/requests/creating-requests">creating requests</a>.
>   </p>

<h3 id="link-settings">Link settings</h3>

<p>
  <strong>Link name</strong> and <strong>Custom URL</strong> sit in the always-open <strong>Link</strong> section. The rest live in three
  collapsible sections below it: <strong>Appearance</strong>, <strong>Limits</strong>, and <strong>Query parameters</strong>.
</p>

<h3 id="query-parameters">Query parameter defaults</h3>

<p>
  The <strong>Query parameters</strong> section bakes default values into the link URL. formbase always shows the three UTM fields it reads
  for analytics (utm_source, utm_medium, utm_campaign), plus a row for every <a href="/building-forms/hidden-fields">hidden field</a> on the
  form. Fill in a value, leave the rest empty, and formbase appends it to the copied link and the QR code automatically. Embed and popup
  snippets don't include these defaults, and a parameter named <code>lang</code> is ignored because the default language uses it.
</p>

<p>This saves you from editing the URL by hand. Set utm_medium to "email" on your newsletter link once, and every copy carries it.</p>

<p>
  A hidden-field value set here also fills any visible field that uses that hidden field as its{' '}
  <a href="/building-forms/field-configuration#default-values">default value</a>, so one link can pre-fill answers for a whole audience.
</p>

> ℹ️ **What gets saved where**
> <p>
>     Default parameters are added to the link URL, not to each response. The three UTM fields feed the{' '}
>     <a href="/submissions-analytics/analytics-insights#traffic-source-classification">Traffic Sources</a> chart in Analytics. To save a
>     value on every submission, add a <a href="/building-forms/hidden-fields">hidden field</a> with the same name (for example utm_source) —
>     it then shows in both the submissions table and analytics.
>   </p>

<h3 id="revoke-link">Revoking a link</h3>

<p>
  Click <strong>Revoke</strong> in the Share panel footer. Anyone who opens the link then sees "Link revoked", and the link stops taking new
  responses. Its settings can't be changed while it's revoked. Changed your mind? Click <strong>Re-activate</strong> in the same footer.
  Revoking keeps the responses the link already collected, and it doesn't affect the other links for the same form.
</p>

<p>
  Moving a form to <a href="/workspaces-teams/trash">Trash</a> revokes all of its links. Restoring the form leaves them revoked until you
  click <strong>Re-activate</strong> on each one.
</p>

<h3 id="delete-link">Deleting a link</h3>

<p>
  Delete a link from the <strong>⋯</strong> menu in the Share panel footer. If the link has no submitted responses yet (unfinished drafts
  don't count), it's removed for good.
</p>

<p>
  If the link already has responses, formbase revokes it instead of deleting it. A prompt explains this before anything happens. Revoking
  keeps the existing data — your analytics and per-channel breakdown stay intact — but stops the link from taking new responses. This way
  you never lose responses or the channel they came from just by clearing out an old link.
</p>

<h3 id="multiple-links">Why multiple links?</h3>

<p>
  Creating a separate link per channel lets you compare performance in the Analytics tab. Filter by share link to see views, submissions,
  and bounce rate for each channel independently. Common patterns:
</p>

<ul>
  <li>One link for email, another for social media, a third for your website embed</li>
  <li>A time-limited link for a promotion with a max response cap</li>
  <li>A link defaulted to French for your Quebec audience, another in English for the rest</li>
</ul>

<h2 id="utm-parameters">UTM parameters for campaign tracking</h2>

<p>
  Append UTM parameters to any share link URL to tag traffic for the Analytics tab's Traffic Sources chart. formbase reads three standard
  parameters:
</p>

```
https://forms.yoursite.com/feedback?utm_source=linkedin&utm_medium=social&utm_campaign=product-launch
```

<p>
  Source and medium are matched case-insensitively; campaign names keep their case. Without UTM parameters, formbase falls back to the
  browser referrer to classify traffic — but some platforms strip referrers, so UTM parameters give you reliable attribution. See{' '}
  <a href="/submissions-analytics/analytics-insights#traffic-source-classification">How traffic sources are classified</a> for the full
  rules.
</p>

<p>
  To skip editing the URL by hand, set these as defaults in the link's <a href="#query-parameters">Query parameters</a> section.
</p>

<h2 id="qr-codes">QR codes</h2>

<p>
  Every share link can generate a QR code. It encodes exactly the URL the <strong>Copy link</strong> button gives you, including any query
  parameter defaults and the language pin, so expiration, response limit, and analytics all apply the same way.
</p>

<p>
  Print it on a sign, a slide, packaging, or a receipt. Create one share link per placement (for example <code>qr-event-london</code>,{' '}
  <code>qr-product-package</code>) so the Analytics tab shows responses per placement.
</p>

> 💡 **Test before printing**
> <p>
>     Always scan the printed QR with the camera you expect respondents to use. Some printers crush dark areas — test at the intended print
>     size before distributing.
>   </p>

<h2 id="social-preview">Social preview metadata</h2>

<p>
  When a share link is posted on social media or messaging apps, formbase generates an Open Graph preview with the form title and
  description. You can customize the preview title, description, image, and favicon per form under{' '}
  <strong>Appearance → Share link preview</strong> in the Share panel.
</p>
<p>
  If you use a <a href="/branding-domains/custom-domains">custom domain</a>, you can also set domain-level defaults that apply to all forms
  on that domain. A "Hide from search engines" toggle adds a noindex tag, at the domain level or per form (the form setting wins). On the
  default formbase.so domain, search engine indexing is always disabled, so the toggle only takes effect on custom domains.
</p>

> 💡 **Test your link before distributing**
> <p>
>     Open the share link in an incognito window to experience exactly what respondents will see — including authentication gates, password
>     prompts, and the default language setting.
>   </p>

<h2 id="next-steps">Next steps</h2>
<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Embedding & popups](/sharing-publishing/embedding-popups) — Embed or show your form as a popup
  - [Custom domains](/branding-domains/custom-domains) — Serve forms from your own domain
  - [Share link analytics](/submissions-analytics/share-link-analytics) — Compare performance per link
  - [Response limits](/sharing-publishing/response-limits) — Cap how many responses a link accepts
</div>
