NO-CODE · REAL-TIME · BACKTESTABLE

Your fraud logic.
Zero deploys.

Prynt's Rules Engine lets you combine any signal, score, or velocity metric into policies that automatically allow, block, or challenge visitors -- updated instantly, no code changes needed.

Start Building Rules → View Documentation
Visual Rule Builder

Point. Click. Protect.

Create, test, and deploy fraud policies from the dashboard. Combine conditions visually, backtest against real data, and go live in seconds.

app.prynt.io/rules
Overview
Events
Visitors
Rules
Lists
Analytics
Settings
Active Rules (4)
LiveBlock Bot Registrations
Priority 1
WHEREsignals.botistrue
ANDevent.typeis"registration"
Block+ add device to blocklist
Matched: 2,847 /24hFP Rate: 0.02%
LiveChallenge VPN + High Risk
Priority 2
WHEREsignals.vpnistrue
ANDscores.abuse>0.6
ANDsignals.incognitoistrue
Challenge+ require MFA
Matched: 891 /24hFP Rate: 1.3%
MonitorMulti-Account Velocity
Priority 3
WHEREvelocity.registrations_per_device_24h>3
ORbehavior.multiAccount.linked>2
Block+ webhook to Slack
Would match: 4,211 /24hObserving...
LiveAllow Trusted Devices
Priority 4
WHERElistsincludes"trusted_devices"
ANDscores.suspect<25
Allow+ skip MFA
Matched: 89,412 /24hFP Rate: 0.00%
How It Works

Event in. Verdict out.

Every identification request is evaluated against your rules in priority order. The first matching rule determines the verdict. If no rule matches, the default action applies.

Priority-Ordered Evaluation

Rules fire top-to-bottom. The first matching rule wins. Drag to reorder priorities -- the most critical rules should always be evaluated first.

🔗

AND / OR Logic

Combine conditions with AND (all must match) or OR (any must match). Nest groups for complex logic like "(bot AND registration) OR (abuse > 0.9)".

📊

Any Signal as a Condition

Use any Smart Signal, ML score, velocity metric, list membership, device attribute, or custom property as a rule condition. 50+ fields available.

🔄

Instant Propagation

Save a rule and it's live in under 2 seconds globally. No deploys, no SDK updates, no cache invalidation. Rules are evaluated at the edge.

🛡️

Default Fallback

If no rule matches, the default policy applies (configurable: allow, challenge, or block). Ensures every request gets a verdict -- no gaps.

📋

Side Effects

Every rule can trigger additional actions beyond the verdict: add to blocklist, send webhook, notify Slack, update a custom list, or log for review.

Rule Evaluation Flow
📥
Identification Event
Visitor ID + signals + scores + velocity
⚖️
Rule 1: Block Bot Registrations
bot = true AND event = registration
✗ No match
⚖️
Rule 2: Challenge VPN + High Risk
vpn = true AND abuse > 0.6
✓ Match!
ALLOW
Proceed normally
CHALLENGE
Require MFA ←
BLOCK
Deny access
Conditions

50+ fields. Infinite combinations.

Build conditions from any signal, score, metric, list, or custom property. Mix and match across categories for precise targeting.

🔑
Smart Signals
Boolean and enum signals from Prynt's detection engine.
signals.botistrue
signals.vpnistrue
signals.incognitoistrue
signals.tamperedistrue
🧠
ML Scores
Continuous risk scores from Prynt's ML models (0 to 1).
scores.abuse>0.7
scores.ato>0.8
scores.bot>0.5
scores.suspect>75
Velocity & Metrics
Rate-based counters across configurable time windows.
velocity.events_per_device_1h>50
velocity.registrations_per_ip_24h>5
velocity.failed_logins_per_user_1h>10
📋
Lists & State
Dynamic allow/block lists for devices, IPs, emails, and users.
listsincludes"blocked_devices"
listsincludes"trusted_users"
listsnot in"whitelisted_ips"
📧
Email & IP Intelligence
Email reputation, domain age, IP blocklist, and geolocation data.
email.disposableistrue
ip.countrynot in["US","CA","GB"]
ip.blocklistedistrue
🔧
Events & Custom
Event type, custom properties, and user-defined traits.
event.typeis"payment"
user.traits.tieris"free"
properties.amount>500
Actions

Three verdicts. Unlimited side effects.

Every rule returns one of three verdicts -- plus optional side effects that update lists, send alerts, or trigger workflows.

Allow

Let the visitor proceed. Use for trusted devices, known users, and low-risk traffic. Optionally skip MFA or bypass rate limits.

ALLOW
⚠️

Challenge

Require additional verification -- MFA, CAPTCHA, email confirmation, or a custom step-up flow. Friction only for suspicious traffic.

CHALLENGE
🚫

Block

Deny access immediately. Use for confirmed bots, blocklisted devices, and high-confidence fraud. Hard stop, no second chances.

BLOCK
Chain side effects to any verdict
📋

Update List

Add or remove visitor from blocklist, trustlist, or review queue.

🔔

Send Webhook

POST event data to any URL -- your backend, Zapier, or Segment.

💬

Slack Alert

Notify your team in real time via Slack channel integration.

📝

Log for Review

Flag the event for manual review in the Prynt case queue.

Safety Net

Test before you enforce.

Every new rule can be backtested against historical data and run in monitor mode before affecting real traffic. Zero risk to your users.

BACKTEST

Rule Backtesting

Run any rule against 30 days of historical events. See exactly how many visitors would have been blocked, challenged, or allowed -- before enabling.

Backtest: "Block Bot Registrations" Complete
84,291
Would block
1.2M
Would allow
0.02%
Est. false positive
MONITOR

Monitor Mode

Enable rules in observe-only mode. See what actions would fire against live traffic -- logged but not enforced. Switch to live when confident.

"Multi-Account Velocity" -- Monitoring Observing
14:23:08Blockpv_4xN7qKmR -- 6 registrations/24hNot enforced
14:22:41Blockpv_9wT2pLsN -- 4 linked accountsNot enforced
14:22:15Allowpv_7hG5cXwA -- 1 registration/24h
14:21:58Blockpv_2rF6gMdP -- 8 registrations/24hNot enforced
Templates

Start with battle-tested rules.

One-click rule templates for the most common fraud patterns. Customize thresholds to your risk tolerance, or use as-is.

🤖Anti-Bot Registration
Popular
Block bots and headless browsers from creating accounts. Catches Puppeteer, Playwright, Selenium, and automation frameworks.
signals.bot is true AND event = registrationBLOCK
🔐Account Takeover Defense
Popular
Challenge logins from new devices, VPNs, or high ATO-score traffic. Allow trusted devices to skip MFA.
scores.ato > 0.7 AND signals.newDevice = trueCHALLENGE
👥Multi-Account Prevention
Detect and block users creating multiple accounts from the same device to abuse promotions or referral programs.
velocity.regs_per_device_24h > 3 OR multiAccount.linked > 2BLOCK
💳Payment Risk Screening
Challenge high-value transactions from suspicious devices. Block known fraudsters and tampered browsers at checkout.
event = payment AND scores.abuse > 0.8CHALLENGE
📧Disposable Email Blocker
Block registrations from temporary/disposable email providers like Tempmail, Guerrillamail, and 10MinuteMail.
email.disposable is true AND event = registrationBLOCK
🛡️Trusted Device Fast-Track
Let recognized, low-risk devices bypass MFA and friction. Reward good users with a seamless experience.
lists includes trusted_devices AND scores.suspect < 20ALLOW
Rules API

Manage rules programmatically.

Everything you can do in the dashboard, you can do via API. Create, update, delete, and backtest rules from your CI/CD pipeline or internal tooling.

📝

CRUD Operations

Create, read, update, and delete rules via REST API. Version rules, roll back changes, and manage priorities programmatically.

🧪

API-Driven Backtesting

Trigger backtests via API and poll for results. Integrate into your CI pipeline to validate rule changes before merge.

🔄

Infrastructure as Code

Export and import rule configurations as JSON. Store in version control, diff changes in code review, and deploy via API.

📊

Rule Analytics API

Query match counts, false positive rates, and performance metrics for any rule over any time period. Build custom dashboards.

🔔

Webhook Configuration

Manage webhook endpoints, filters, and retry policies via API. Subscribe to specific rule matches or verdict types.

POST /v1/rules RULES API
{
  "name": "Block Bot Registrations",
  "priority": 1,
  "status": "live",
  "conditions": {
    "operator": "AND",
    "rules": [
      {
        "field": "signals.bot",
        "operator": "equals",
        "value": true
      },
      {
        "field": "event.type",
        "operator": "equals",
        "value": "registration"
      }
    ]
  },
  "action": {
    "verdict": "block",
    "sideEffects": [
      {
        "type": "addToList",
        "list": "blocked_devices"
      },
      {
        "type": "webhook",
        "url": "https://hooks.slack.com/..."
      }
    ]
  }
}

// Response
{
  "id": "rul_9a7f2c4e8b1d",
  "created_at": "2026-02-13T14:30:00Z",
  "status": "live",
  "propagated": true,
  "propagation_ms": 1840
}

Build your first rule in 2 minutes.

Free trial. Full rules engine. No credit card required.

Start Free Trial → View Rules API Docs