← All guides

How to stop free trial abuse

Trial abuse is not usually a thousand people taking one trial each. It is a handful of people taking a thousand trials, which means the whole problem is linkage: recognising that the twelfth signup is the same person as the first. That is a different job from scoring a single signup in isolation.

  1. 1

    Find what the accounts share

    An abuser varies whatever is cheap and reuses whatever is expensive. Email addresses are free, so those change every time. Device fingerprints, IP ranges and phone numbers cost money or effort, so those repeat. Look for repetition in the expensive things.

  2. 2

    Catch email aliasing before you catch anything else

    Gmail ignores dots and anything after a plus sign, so user+1@gmail.com through user+400@gmail.com are all one mailbox. Normalising the address collapses a hundred trials into one visible account, and it costs nothing to implement.

    curl "https://www.layercall.com/v1/verify/email?email=user%2Btrial7@gmail.com" \
      -H "X-Api-Key: YOUR_KEY"
    # normalized_email collapses the alias back to the real mailbox
  3. 3

    Add a device signal

    A browser fingerprint survives a new email address and a fresh incognito window, which is exactly what a repeat trialist changes between attempts. It is not perfect and it should not be your only check, but it links accounts that otherwise look unrelated.

  4. 4

    Raise friction in proportion, not uniformly

    Requiring a card from everyone stops abuse and also stops your growth. Requiring a phone number or a card only from signups that already look linked keeps the front door open for the majority who are exactly who they say they are.

    const trust = await lc.scoreUser({ ip, email, device_id });
    
    if (trust.verdict === "block")  return requireCard();
    if (trust.verdict === "review") return requirePhoneVerification();
    return startTrial();

What this gets wrong

Every check here has a cost in real customers. These are the ones that actually bite — several because we shipped them ourselves.

  • Requiring a card from every trial. It works, and it will cost you more in lost signups than the abuse ever cost you in compute.
  • Blocking a whole IP range after one abuser. Shared addresses mean you will hit an office, a campus or a mobile carrier and never hear from the people you locked out.
  • Assuming a repeat device is always one person. Shared computers, family machines and library terminals are real.
  • Treating the second signup as abuse. People genuinely lose access to old email accounts and start again. Linkage is a reason to verify, not to accuse.

Try it before you integrate

Paste any IP, email, phone or domain into the playground — no signup. Or get a free API key for 1,000 lookups a month, no card.