File DA-049 View as Markdown

Site profiles

Pick the profile that matches your site. It changes how strict the recommendation in each verdict is for each action, such as signup or checkout. It never blocks anything by itself: your code reads the recommendation and decides.

Set the profile

Set it in Sites › your site › Settings › General › Profile, or on the script tag:

<script>window.doubleagent=window.doubleagent||{q:[],push(){this.q.push(arguments)}};</script>
<script async src="https://cdn.doubleagent.so/v1/doubleagent.js" data-profile="ecommerce"></script>

The portal setting wins on the server. With auto (the default), the script picks a profile from the page:

The page hasProfile
Shopify, a product schema, WooCommerce, an add-to-cart formecommerce
An article, or ad scripts (Google Publisher Tag, Prebid)content
A HubSpot or Marketo form, or an ad click id in the URLleadgen
Comment boxes or other user postssocial
A card form or payment script, and nothing abovepayments
A login or signup page on an app. host or a dashboardsaas
None of thesegeneric

fintech, ticketing and gov are never picked by auto. Set them yourself.

How the recommendation is picked

A human always gets allow. For a bot or agent, Double Agent compares the chance it is not human with two thresholds for the action:

  • at or above the challenge threshold: challenge;
  • at or above the deny threshold: deny (or step_up where the table says so);
  • below both: tag.

The server makes two exceptions: a session in quarantine gets challenge, and so does a human verdict that rests on no evidence at all (confidence 0).

These are the thresholds every profile starts from (generic uses them as they are):

ActionChallenge atDeny at
pageviewTag onlyTag only
search0.85–
login0.60.9, as step_up
signup0.50.85
password_reset0.60.9
add_to_cart0.9–
checkout0.8–
payment0.8–
gift_card0.50.85
promo0.60.9
post, message0.70.95
lead_form0.7–
api_key0.60.9
Your own action0.8–

Each profile changes only a few rows:

ProfileChanges
genericNone
saaslogin: challenge at 0.7, step_up at 0.95
ecommercecheckout: challenge at 0.85, so fewer shoppers get a challenge
contentsearch is tag only
socialsignup: challenge at 0.45, deny at 0.85
paymentspayment: challenge at 0.75
fintechlogin: challenge at 0.5, step_up at 0.85
ticketingadd_to_cart and checkout: challenge at 0.6, deny at 0.9
leadgenlead_form: challenge at 0.75
govEvery built-in action is tag only. Public services should never turn people away

rate_limit is a valid recommendation, but no profile returns it today.

If you set an agent behaviour policy to Enforce, its decision overrides the profile: a rogue or denied agent gets deny, a friendly one gets allow.

Next: Verdict for the rest of the fields, or Verify tokens on your server to act on the recommendation.