Skip to content
ContactForms

What your form gets back when you post a lead

How to read the answer: stored, refused, and what to do about each refusal.

The answer tells you whether the lead was stored.

Stored

A JSON post gets status 200 with success: true and an id that starts with sub_. A browser post is redirected (303) to the form's thank-you page.

Refused

A refusal never looks like a success. A JSON post gets the status for that error and a body with success: false, an error code, a message, a fix that says what to change, and a docs_url.

  • 415 unsupported_media_type: the content type is not form-encoded, multipart or JSON.
  • 413 payload_too_large: the post is over 64 KiB, or has too many fields.
  • 403 origin_not_allowed: the page is not on the form's list of allowed domains.
  • 429 rate_limited: too many posts; wait for the Retry-After time.

Every code is listed in the error catalog.

When the answer is 503

A 503 unavailable means it is not known whether the lead was stored. Send the same post again with the same _id; a lead that was stored is answered as a duplicate, not stored twice.