{issued}

Iframe & HTML fallback

Two no-build embed options for cases where you can't or don't want to include JavaScript.

Iframe

We host the form on our side and you drop in an iframe pointing at it. Great for markdown files, email platforms, or places where you can't ship custom JS.

html
<iframe
  src="https://issued.dev/api/embed/your-project-id?config=<encoded-config>"
  width="100%"
  height="600"
  frameborder="0"
  title="Support Form">
</iframe>

The config query param is a base64url-encoded JSON field configuration — the in-app Embed Code page generates this for you.

HTML form (no-JS)

A plain HTML <form> that posts directly to our API. No JavaScript required on the page at all — submissions come in as a standard POST.

html
<form
  action="https://issued.dev/api/submissions"
  method="POST"
  enctype="application/x-www-form-urlencoded"
>
  <input type="hidden" name="projectId" value="your-project-id" />
  <input type="hidden" name="formType"  value="html" />

  <label>
    Subject
    <input type="text" name="subject" required maxlength="200" />
  </label>

  <label>
    Description
    <textarea name="description" required maxlength="5000"></textarea>
  </label>

  <label>
    Email
    <input type="email" name="email" />
  </label>

  <button type="submit">Submit</button>
</form>

When to pick which

Iframe
Best when you want our styling, validation, and success screen — without any JS on your page.

• Same rendering as the JS SDK.

• Fixed iframe height — set it generously.

• Origin ends up as issued.dev, so allowlist semantics shift slightly (we fall back to the referrer).

HTML fallback
Best when JS is off the table entirely (email, archived pages, markdown).

• You style it yourself.

• No live validation — users see errors after submit.

• Server responds with a redirect or success page.

Next steps
Generate the exact iframe URL + HTML fallback for your project.