Kit

ConvertKit form not working

Kit is the product ConvertKit became. The embed still fails in the same places: the script never runs, the form id is stale, or the subscriber is pending and you are looking at confirmed contacts.

Symptoms

Common causes

The form id changed

Duplicating a form or rebuilding it issues a new id. The embed on the site still posts the old one, which Kit no longer accepts.

The script is blocked

Content-Security-Policy or a consent banner blocks the Kit script. The HTML form is on the page with no handler. Submit is a no-op or a full page reload.

A framework re-render removed the handlers

Client-side navigation replaces the node Kit enhanced. The form looks the same and no longer posts. A full reload sometimes works, which is the clue.

Double opt-in

The API returned success and the subscriber is unconfirmed. The confirmed list stays empty until they click the email. That email can itself fail. See the Resend and auth-email guides if you send it yourself.

The snippet was escaped into text

A page builder escaped the script tag. View source shows the tag as text, not as an element. The form never boots.

Fix it

  1. Open the hosted form

    Use the Kit-hosted form URL. If that subscribes you, the form and the account are fine and the embed is the bug.

  2. Compare the embed to the current form

    View source on your page. The script and the form id should match the embed code Kit shows for this form today, not the one in an old prompt.

  3. Look for a blocked script

    In the browser console, a CSP error or a consent tool blocking the request is the whole bug. Allow the Kit host in script-src and in the consent category that should load it.

  4. Watch the submit request

    On submit, the network panel should show a request to Kit. No request means JavaScript never bound the form. A 4xx means the id or the account is wrong.

  5. Check pending subscribers

    If the request is a success, look at unconfirmed subscribers before you change code. Resend the confirmation if the person is stuck there.

  6. Paste the embed again after a redesign

    Do not rebuild the markup by hand from memory. Paste the current snippet, then submit once on the production domain.

Catch it automatically

Describe the form in one sentence and replay it. The check fills a monitor address and asserts the success state. If a regeneration removes the script, the success state never shows and you get the step that failed.

Watch the next break before a customer does.

Map the path once. The next publish does not get to fail in private.

Questions

Is ConvertKit a different product from Kit?

Kit is the current name. Old embed URLs and docs still say ConvertKit. The form id and the script are what matter, not the name in the prompt that generated the page.

The hosted form works. Why doesn't the embed?

The account is fine. The script on your page is missing, blocked, or bound to a node your framework replaced.

Can a replay tell confirmed from pending?

It can assert the success message on the page. Confirmation email is a second step. If that message never appears, you do not need the subscriber list to know the embed is broken.

Related