Secure your business from login to chargeback
Stop fraud, break down data silos, and lower friction with Sift.
- Achieve up to 285% ROI
- Increase user acceptance rates up to 99%
- Drop time spent on manual review up to 80%
This guide helps companies identify suspicious logins and protect users from having their account hijacked, thus preventing loss of funds, content abuse, and other types of fraud caused by account takeover.
When there is a login attempt – whether successful or failed – send a $login
event. Here
are guidelines for sending the $login
event:
$user_id
: send when the email/username exists in your system$ip
: always send when you have it$session_id
: always send$browser
: send for all non-native-mobile-app login requests$app
: send for all native mobile app login requests$login_status
: this defines whether the username + password combination was correct. It does not
define whether or not the attempt failed or succeeded any other internal checks you may performVerification is a blocking event: once sent, the respective activity (login or another) cannot proceed
until with the verification is successfully completed. When a user is asked to verify a login attempt or
account activity (e.g., initiating a transaction), send one
$verification
event when the verification is sent with a $pending
status and one more $verification
event
the final status (i.e., $success
or $failure
).
A security notification is an informative, rather than blocking, event: the account can be used as usual
after a notification is sent, unless the user follows up to mark the account as compromised. When a user
is notified of a login attempt or account activity (e.g., initiating a transaction), send one
$security_notification
event when the notification is sent with a $sent
status and one more $security_notification
event the final status (i.e., $safe
or $compromised
).
When a user creates an account, send a $create_account event
. You can include custom fields to
capture any additional fields collected on signup.
When a user updates their account information send an $update_account
event. The
$update_account
call captures changes such as password changes, payment and billing changes, and
changes to name or email. You only need to send what information has changed.
Send additional events in order 1) capture known fraud patterns specific to your business or 2) create policies at points outside of a login. Here are some examples:
If users can create content – e.g. listings, profiles, postings, rentals, etc. – or send messages to other users, send the following events:
$create_content
$update_content
$flag_content
If users can purchase items or services, send the following events:
If users can deposit, send, or withdraw funds or points, send the following events:
You will need to inform Sift which accounts and sessions have been identified as compromised through Decisions. Decisions can be applied manually via the Sift Console or programmatically through the Decisions API. ATO Decisions need to be applied at both the user and session level.
When manually reviewing for ATO, fraud analysts should mark incidents of account takeover in the Sift Console using a “Compromised Account” Decision and flag the compromised login(s). Once the account is restored apply an “Account Recovered” Decision. You can connect Decisions made in the Sift to your backend by following this tutorial.
Scenario | Recommended Actions |
Account is taken over |
|
Account is restored |
|
One of the key strengths of the Sift Trust Platform is that it consistently learns as you send more data to it. You will see an increase in score accuracy during the first weeks as you send more Decisions and user events. During this stage, you should assess your Sift Scores in the Sift Console and determine which actions to take for different score thresholds. Since all businesses are different, finding a score threshold that achieves your business goals is key. The two metrics we recommend analyzing for score thresholds are 1) Fraud caught and 2) Verification rate.
Now that you are sending both user events and business decisions to Sift, you’re ready to start using Sift Scores in your business logic. Higher Sift Scores correlate to higher risk. Based on the Sift Score, you’ll set up different outcomes within your application (e.g., user with low score is allowed to proceed).
To build this logic, you'll want to evaluate a user's Sift Score at the key events where bad users can
hurt your business or good users should have a more frictionless experience. Note: currently ATO Scores can
only be returned in response to a $login
event.
For higher risk logins, you may want to do one or more of the following:
When you send a login event for a successful login, Sift will return the Sift Score in the response. There are two ways to receive Sift Scores:
Create a Sift Workflow (recommended): Workflows allow you to automate your Decisions without putting business logic in your code. With Workflows a business manager can use the Console and set up criteria to evaluate when a specified event occurs. These criteria route users to different outcomes based on Sift Score and other attributes of the user (e.g. User is from Canada and Sift Score is greater than 80). With Sift Workflows, the response will specify what Decision to take. A user can also be put into a Sift Review Queue for investigation. To learn more, see our Workflows tutorial.
Build logic in your application:You can synchronously request the Sift Score of a user. To receive a score in the response of a login
event, append "return_score=true"
to the endpoint of the $login
API call. Here’s a link to
more information on receiving risk scores synchronously with events. Upon receiving the Sift Score, you can decide what further action is required.
Any questions? Contact our support engineers. We're happy to talk it through!
Stop fraud, break down data silos, and lower friction with Sift.