Identity & resource protection

Halo.
Different accounts.
Same person.

Another email. Another free trial.
Not necessarily another customer.

Connect the identities at signup. Check their spending after. Protect the value you meant to give away.

Find your duplicates Or investigate a sample
FIELD NOTES / 001Illustrative example
IDENTITY CONNECTION

Three accounts. Three free trials?

Email aliases and device signals, considered together.

For teams giving away real value. Not just a login.Follow the connection
THE MOMENT IT CLICKS
TinyKnotFounder
“It was eye opening to see the number of duplicate accounts in our platform.”— Founder of TinyKnot
01 / THE CONNECTION

An inbox isn't
an identity.

One clue is just a clue.
Together, they tell a different story.

ILLUSTRATIVE SIGNAL / 01

j.smith+trial@gmail.com

NORMALIZED EMAIL

jsmith@gmail.com

Dots, plus aliases and equivalent domains can make one inbox look like many. Halo normalizes them before comparison.

See the full evidence
AT THE DOOR / INGRESS

Is this really a new customer?

Check signup signals. Return a score and reasons. Let your application allow, review or flag.

AFTER THE DOOR / EGRESS

Should this request get more value?

Check the cost against a linked identity's allowance. Return allow, throttle, downgrade or block.

02 / THE COST OF LOOKING AWAY

Free for them.
Not for you.

Put a number on the duplicates.
Before you put a limit on your users.

%
$
ESTIMATED MONTHLY LEAK$14,000
Signups each month5,000
Estimated duplicate accounts350
Credit per account$40
Illustrative recovery / month$12,200

Recovery assumes an 87% catch rate, not measured performance. Credit value is not necessarily your actual cost. Use shadow mode to review real traffic before blocking.

See it in your own traffic
03 / LESS CEREMONY. MORE SIGNAL.

Your auth stays.
Halo plugs in.

Create a workspace. Get your key.
Send the signup. Read the evidence.

  1. 01

    Your workspace. Your signals.

    Sign in and create a workspace with its own API key and isolated customer data.

  2. 02

    One server-side request.

    Send the signup signals you have. Add browser telemetry when appropriate and with consent.

  3. 03

    Observe before you enforce.

    Start in shadow mode. Review the decisions before changing your signup experience.

Read the integration guide
const response = await fetch(
  "https://www.tryhalo.dev/api/public/v1/check",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": process.env.HALO_KEY,
    },
    body: JSON.stringify({
      email: user.email,
      ip: request.ip,
      device_fingerprint: deviceHash,
      mode: "shadow",
    }),
  }
);

if (!response.ok) throw new Error("Halo check failed");
const { verdict, risk_score, signals } = await response.json();
SHADOW MODEObserve first. Enforce when ready.
THE IMPORTANT QUESTIONS

No magic.
Just more context.

Will Halo block a real customer?

False positives are possible with any risk system. Halo returns evidence and a decision; your application controls the response. Start in shadow mode and review your own traffic before enforcing.

What happens after signup?

Your application can call the egress verification endpoint before an expensive action. Halo checks the cost against the linked identity's allowance and returns a recommendation. Your application implements the throttle, model change or block.

Do I need to change my authentication?

No. Keep your existing authentication. Your server sends signup signals to Halo using a workspace API key.

Is my customer data shared?

Identity data is scoped to your workspace, not pooled across customers. Access is limited by workspace membership. The default retention process anonymizes older identities after 90 days and deletes them after twice that window.

A better view of who's really there.

Give your next signup
a second look.