Shield · Events
Events reference
The standard event catalog, how auto-detection classifies forms, and the payload the SDK sends.
Standard events
Unknown names are stored as custom.
| Event | Description |
|---|---|
page_view | Page loaded |
session_start | New or resumed session |
form_view | Form became visible |
form_submitted | Generic form submit (low confidence) |
signup_view / signup_attempt / signup_success | Signup funnel |
login_view / login_attempt / login_success / login_failed | Login funnel |
password_reset_view / password_reset_attempt | Password reset |
checkout_view / checkout_started | Checkout funnel |
payment_attempt / payment_failed | Payments |
lead_form_view / lead_submitted | Lead / contact forms |
api_request | API request event |
custom | Custom / manual event |
Auto-detection
Forms are classified by fields, button text, and URL.
{
"auto_detected": true,
"confidence": 0.94,
"detection_method": "form_fields_button_text_url"
}0.90–1.00Very likely
0.70–0.89Likely
0.50–0.69Maybe
Below 0.50Falls back to
form_submittedPayload schema
Sent to the ingest endpoint below.
POST https://shield.findip.net/v1/shield/track
The SDK sends the JSON payload as text/plain so requests stay CORS "simple requests" — no preflight, and sendBeacon delivery on page unload always works.
{
"site_key": "pub_xxx",
"sdk": { "name": "findip-shield-js", "version": "1.0.1", "integration": "javascript" },
"event": { "name": "signup_attempt", "timestamp": "...", "source": "auto_form_detect" },
"page": { "url": "...", "path": "/signup", "title": "...", "referrer": "...", "utm": {} },
"session": { "session_id": "sess_xxx", "visitor_id": "vis_xxx" },
"browser": { "user_agent": "...", "language": "en-US", "timezone": "..." },
"form": { "field_count": 5, "has_email_field": true, "has_password_field": true },
"customer_context": { "email_domain": "gmail.com", "plan": "free" },
"privacy": { "mode": "balanced", "consent": { "granted": true, "source": "default" } }
}