Crove Docs
Crove Docs
Crove Documentation

Getting Started

IntroductionQuick StartKey Concepts

Templates

Templates OverviewTemplate EditorPage SettingsVariablesExpressionsForm BuilderSharing & embedding templatesTags & OrganizationVersion History

Documents

Documents OverviewCreating DocumentsFilling DocumentsSigner ManagementE-SignaturesPDF GenerationCancellationBulk Operations & Filters

API Reference

API OverviewAuthenticationTemplates APIDocuments APIRate LimitsAPI changelog

Webhooks

Webhooks OverviewOutgoing WebhooksIncoming WebhooksWebhook Events

Integrations

Integrations OverviewIncoming WebhooksZapier IntegrationPabbly ConnectPipedreamIntegratelyFlowMattic (WordPress)Google Drive & SheetsSlack & Microsoft TeamsPopular use casesAPI KeysEmbed Crove Forms

Account & Billing

Account OverviewWorkspace SettingsTeam ManagementBilling & PlansNotificationsSecurityAudit logData Processing Agreement (DPA)

Embed Crove Forms

Drop a Crove fill page into your website, landing page, or CMS via iframe — with optional branding suppression for white-label use.

Embed Crove Forms

Crove fill pages are designed to work inside an iframe. Embed any publicly-fillable template directly in your marketing site, customer portal, or CMS without sending users to a separate crove.app URL.

Quick start

  1. Open the template editor
  2. Click the Public Link Settings icon in the toolbar
  3. Toggle Enable Public Fill Link if it isn't already
  4. Scroll to </> Embed on your site
  5. Click the copy icon — the iframe snippet is ready to paste

The snippet

The default snippet looks like this:

<iframe
  src="https://hello.crove.app/fill/template/<TEMPLATE_ID>?embed=1"
  width="100%"
  height="800"
  frameborder="0"
  allow="clipboard-write"
  style="border:0;border-radius:12px;max-width:100%;"
  loading="lazy"
></iframe>

What each attribute does:

AttributeWhy
src includes ?embed=1Tells Crove to suppress branding (see below)
width="100%"Fluid width inside the host container
height="800"Reasonable default for most forms — bump for long forms
frameborder="0"Removes the legacy iframe border
allow="clipboard-write"Lets respondents copy values from the form (e.g. confirmation IDs after submit)
style="border:0;border-radius:12px;max-width:100%;"Soft rounded corners + responsive cap
loading="lazy"Defers the iframe until it scrolls into view — better Core Web Vitals on long landing pages

The ?embed=1 flag

Add ?embed=1 to any Crove fill URL — the public template URL or a per-respondent fill URL — to put the page in embedded mode:

  • The "Powered by Crove" footer at the bottom of the form is hidden (both the in-progress state and the post-completion state)
  • The fill page otherwise renders identically — same fields, same preview pane, same e-sign flow

This is meant for white-label hosting on your own site where Crove branding would feel out of place. The flag does not disable any functionality and doesn't affect Crove's audit logging.

Sizing for your form

The default height="800" works for most short-to-medium forms but isn't responsive to the form's actual height. Three approaches:

Static taller iframe

Set a height that's generous for your longest expected form:

<iframe ... height="1200" ...></iframe>

The iframe will be empty whitespace at the bottom for shorter forms. Acceptable on landing pages where the iframe is the only content in its section.

Dynamic height (advanced)

Use a library like iframe-resizer to auto-size the iframe to the embedded content. Requires including the resizer's child script — Crove doesn't ship one out of the box yet, but the iframe content has no headers or fixed-height containers that would block it.

Scrollable iframe

Leave a shorter height and the iframe scrolls internally. Less ideal — most visitors won't realize the form continues below.

Per-respondent embedding

The default snippet uses the public template URL (/fill/template/<TEMPLATE_ID>), which creates a fresh anonymous respondent on each load. For embedded experiences where a specific person should see a specific document, generate a respondent first via the API or UI and embed their personal fill URL with ?embed=1 appended:

<iframe
  src="https://hello.crove.app/fill/<RESPONDENT_AUTH_TOKEN>?embed=1"
  ...
></iframe>

Use this pattern in customer portals where you've already identified the user.

Security checklist

Before pasting an embed onto a public page:

  • Confirm the template's Limit Max Responses is set if you're embedding on a high-traffic page (otherwise a small script can flood your workspace)
  • Confirm the template's Link Expiry Date is set if the offer or campaign has a hard end date
  • If the form collects sensitive data, set a Password on the public link and share the password through a separate channel
  • Test the form on the host site under your CSP / framing rules — Crove allows being framed, but your CSP needs to permit it via frame-src or default-src

Browser CSP and X-Frame-Options

Crove serves fill pages with permissive X-Frame-Options so they can be embedded on third-party sites. Your host page's CSP controls whether the browser will load the iframe at all:

Content-Security-Policy: frame-src 'self' https://hello.crove.app;

Without this, browsers like Chrome and Safari may block the iframe even though Crove allows it.

Examples

Landing page hero

A SaaS landing page where the demo signup happens inline:

<section class="hero">
  <h1>Try our service in 30 seconds</h1>
  <iframe
    src="https://hello.crove.app/fill/template/abc123?embed=1"
    width="100%"
    height="600"
    style="border:0;border-radius:12px;"
    loading="lazy"
  ></iframe>
</section>

Customer portal

Authenticated customer dashboard where you've pre-generated a respondent:

<iframe
  src="https://hello.crove.app/fill/<%= currentUser.croveAuthToken %>?embed=1"
  width="100%"
  height="800"
  style="border:0;"
></iframe>

Notion / Webflow / WordPress

Most no-code site builders accept HTML embed blocks. Paste the default snippet — it works without modification. For Webflow, use a Custom Code embed; for WordPress, a Custom HTML block; for Notion, an Embed block (which auto-detects the URL but loses the branding suppression — paste the iframe directly via a code block in those cases).

See also

  • Public Link Settings — limits, expiry, password protection
  • Filling Documents — the respondent-side experience

API Keys

Create and manage API keys for integrating Crove with external systems.

Account Overview

Manage your Crove workspace, team, billing, and account settings.

On this page

Embed Crove FormsQuick startThe snippetThe ?embed=1 flagSizing for your formStatic taller iframeDynamic height (advanced)Scrollable iframePer-respondent embeddingSecurity checklistBrowser CSP and X-Frame-OptionsExamplesLanding page heroCustomer portalNotion / Webflow / WordPressSee also