# Install the formbase node in n8n

Give a self-hosted n8n a public HTTPS address, install the n8n-nodes-formbase community node, and check that its triggers and actions show up.

## Install the formbase node in n8n

formbase for n8n is a community node, published on npm as n8n-nodes-formbase. This guide installs it on a self-hosted n8n and sets the address formbase uses to reach your workflows.

<p>
  Every n8n guide was checked on self-hosted n8n 2.40, running in Docker, with version 0.10.1 of the node. Everything that depends on where
  n8n runs is on this page. The other guides work the same once the node is installed.
</p>

<h2 id="before-you-start">Before you start</h2>

<ul>
  <li>n8n 2.30 or later. The formbase credential needs it.</li>
  <li>
    A formbase account. Everything in these guides works on the Free plan except email invitations, reminders and abandoned submissions,
    which need Pro or Business.
  </li>
</ul>

<h2 id="self-hosted">Self-hosted n8n</h2>

<p>A self-hosted n8n needs two things before it can install the node:</p>

<ul>
  <li>The owner account or an admin account. Only the owner and admins can install community nodes.</li>
  <li>
    A public HTTPS address, from a reverse proxy or a tunnel. formbase sends events and request callbacks only to <code>https://</code> URLs
    on the public internet. An n8n that is reachable only on <code>localhost</code> can connect but never receives anything.
  </li>
</ul>

<h3 id="public-address">1. Tell n8n its public address</h3>

<p>
  n8n builds the URLs it hands to formbase from its own settings, not from the address in your browser. Set these environment variables on
  the n8n container or process:
</p>

<ul>
  <li>
    <code>WEBHOOK_URL</code>: the public HTTPS address, with a trailing slash, like <code>https://n8n.example.com/</code>. n8n builds the
    URL of a published trigger and the resume URL of <a href="/guides/n8n/request-outcome#wait-for-the-outcome">Wait for the Outcome</a>{' '}
    from it.
  </li>
  <li>
    <code>N8N_EDITOR_BASE_URL</code>: the same address. n8n builds a trigger's test URL for <strong>Execute step</strong> from it, and the{' '}
    <strong>OAuth Redirect URL</strong> of the formbase credential.
  </li>
  <li>
    <code>N8N_PROXY_HOPS</code>: set it to <code>1</code> when n8n runs behind one reverse proxy or tunnel, so n8n reads the proxy's
    forwarded headers.
  </li>
</ul>

<p>With Docker, that looks like this:</p>

```
docker run -d --name n8n -p 5678:5678 \
  -e WEBHOOK_URL=https://n8n.example.com/ \
  -e N8N_EDITOR_BASE_URL=https://n8n.example.com/ \
  -e N8N_PROXY_HOPS=1 \
  -v n8n_data:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n
```

<p>
  With docker compose or an npm install, set the same variables in n8n's environment. Point your proxy or tunnel at port <code>5678</code>,
  pass <code>/webhook/</code>, <code>/webhook-test/</code> and <code>/webhook-waiting/</code> through unchanged, and open n8n through the
  public address from then on.
</p>

> ⚠️ **VALIDATION_ERROR: targetUrl must use https**
> <p>
>     formbase refuses to send events to an <code>http://</code> URL or a private network address. If a trigger shows this error on{' '}
>     <strong>Execute step</strong>, <code>N8N_EDITOR_BASE_URL</code> is not set; on <strong>Publish</strong>, <code>WEBHOOK_URL</code> is
>     not. Set that variable, restart n8n, and try again. If you change <code>WEBHOOK_URL</code> later, unpublish and publish each formbase
>     workflow again so its trigger registers the new address.
>   </p>

<h3 id="install">2. Install the community node</h3>

<p>
  Open <strong>Settings</strong> › <strong>Community nodes</strong> and click <strong>Install</strong>. Type <code>n8n-nodes-formbase</code>{' '}
  under <strong>npm Package Name</strong>, tick the box that says you understand the risks of installing unverified code, and click{' '}
  <strong>Install</strong>.
</p>

<p>After a few seconds the package appears in the list with its two nodes:</p>

<p>
  Update or uninstall the package from the same list. If <strong>Community nodes</strong> is missing from Settings, your n8n was started
  with <code>N8N_COMMUNITY_PACKAGES_ENABLED=false</code>; remove that setting.
</p>

<h2 id="n8n-cloud">n8n Cloud</h2>

> ℹ️ **Not available on n8n Cloud yet**
> <p>
>     n8n Cloud installs only community nodes that n8n has verified, and the formbase node is not verified yet. Until it is, use a self-hosted
>     n8n, or call the <a href="/guides/rest-api/send-a-request">REST API</a> from an <strong>HTTP Request</strong> node. A Cloud instance
>     already has a public HTTPS address, so once the node is available there, only the install steps on this page change.
>   </p>

<h2 id="check">Check the node</h2>

<p>
  Open a workflow, click <strong>+</strong> and search for <strong>formbase</strong>. The node details show six actions and six triggers:
</p>

<ul>
  <li>
    <strong>formbase Trigger</strong> starts a workflow on a public link submission that is created, updated or abandoned, or on a request
    that is completed, expires or is canceled.
  </li>
  <li>
    <strong>formbase</strong> creates a request, gets one or many, reminds the recipient, cancels a request, and replays its callback.
  </li>
</ul>

<h2 id="next">Next</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [Connect formbase to n8n](/guides/n8n/connect) — Create the credential, sign in, and pick the workspace.
  - [All guides](/guides/overview)
</div>
