Guides

Screen form submissions

Keep bots, throwaway identities and duplicate submissions out of applications, orders and contact forms.

Any form that creates work for someone (an application, an order, a lead or contact form, a review) attracts bots and fake entries. The Submission Screening scenario checks each submission before you save it, using data your server already has.

When to call#

Call the Verify API from your backend when the form is submitted, before you store it or notify anyone.

const result = await iscredible.verify(
  {
    eventType: "submission",
    email: form.email,
    phone: form.phone,
    ip: req.ip,
    userAgent: req.get("user-agent"),
    headers: { accept: req.get("accept"), "accept-language": req.get("accept-language") },
    timeToSubmitMs: Date.now() - Number(form.renderedAt) // optional: when you showed the form
  },
  { scenarioId: "SYS_SUBMISSION_SCREENING_001" }
);

No browser script is needed. Server-side data is enough; a deviceId from your page (how) makes repeat-submission detection sharper.

What it catches#

  • Scripts and automated browsers.
  • Forms submitted faster than a person can fill them (with timeToSubmitMs).
  • Throwaway email addresses, and traffic through Tor, VPNs or hosting networks.
  • The same device or network submitting again and again.
  • The same person submitting again, including look-alike email addresses.

Suggested handling#

DecisionSuggested action
APPROVESave the submission as normal
CHALLENGEAsk for an email or phone code (or a CAPTCHA), then save
REVIEWSave it, marked as "possibly fake" for whoever handles it
DENYDrop it quietly. Don't tell bots why they failed

Regulated decisions

For applications such as credit or insurance, use isCredible to screen out fraud and bots, not to decide eligibility. Send borderline cases to a person rather than rejecting them automatically.