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#
| Decision | Suggested action |
|---|---|
| APPROVE | Save the submission as normal |
| CHALLENGE | Ask for an email or phone code (or a CAPTCHA), then save |
| REVIEW | Save it, marked as "possibly fake" for whoever handles it |
| DENY | Drop 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.