Implement social authentication in seconds

Say goodbye to the headache of adding social logins.
Authentication has never been this fast and easy.

Our Social SSO solution scales with you without breaking the bank or artificially limiting your user growth. We've streamlined the OAuth process, so you can focus on what really matters: building your product.

And the best part? Integration is a breeze!
All you need is a single line of code:

<a href="https://login.btn.social/{APPID}/facebook">Login with Facebook</a>
Get Started Documentation
Complete privacy and security.

Rest assured your users are safe with us. We never save, record, or log anything about them – they're your users, not ours!

Maintain full control over user data.

You're always in charge. We don't sit between you and your users, so you'll never need to ask us for your own data.

Scalable, predictable pricing.

No surprises here! Our pricing is always transparent and predictable, which takes the stress out of budgeting.

Simple and minimal code integration.

Get up and running in no time! Our SDK is easy-to-integrate, which allows you to focus on your product, not your setup.

Easy to customize and configure.

Make it yours — our platform is designed for maximum flexibility so it fits your brand and workflow seamlessly.

Supports webhooks for full flexibility!

We can forward OAuth profiles and access tokens in a more secure, server-to-server environment so that you can stay informed about everything that matters to you!

Lots of providers, with more to come!

Every product speaks to different audiences on different platforms.
You and your users deserve the freedom to choose the social network that works best for them.

That's why we support a variety of social OAuth providers.
From Facebook to GitHub to Instagram... our list is always expanding to keep up with your needs!

Affordable – at any scale!

Unlike other authentication services, we're not interested in tracking monthly active users and we don't believe in significant price jumps as a reward for growing your audience. Pricing should never be a guessing game. We charge for every login request with volume-based discounts. We let you decide how often a user must login. It's your application and your bill... you're in control!

Only pay for what you use

$0.0001 per login

That's $0.01 every 100 logins!

Hobby $0/mo

Includes 100 logins Extra 2,500 logins for $0.50

Starter $5/mo

Includes 50,000 logins Extra 10,000 logins for $1.00

Business $79/mo

Includes 1,000,000 logins Extra 12,500 logins for $1.00

Enterprise $169/mo

Includes 2,500,000 logins Extra 22,500 logins for $1.00

Pricing Calculator

It will cost$25.00for logins in a month.

All plans allow for unlimited applications.
All applications are billed together under one subscription per account.

Examples – Show, don't tell.

Don't miss the Usage documentation!

Attach in Seconds

Adding a Social SSO link with btn.social is just like adding any other HTML link:

<a href="https://login.btn.social/{APPID}/facebook">Login with Facebook</a>

You just need to include the JavaScript SDK once per page:

<a href="https://login.btn.social/{APPID}/facebook">Login with Facebook</a>
<a href="https://login.btn.social/{APPID}/google">Login with Google</a>

<script async src="https://btn.social/v1/web.js"></script>

This will allow the OAuth flow to work.

However, you must define an onlogin callback to receive the user's data upon successful logins. With the web SDK, this can be done by passing a data-jsonp attribute with the name of the callback function to run once the SDK has been initialized:

<a href="https://login.btn.social/{APPID}/facebook">Login with Facebook</a>
<a href="https://login.btn.social/{APPID}/google">Login with Google</a>

<!-- Call the "myCallback" global function when SDK is loaded -->
<script async data-jsonp="myCallback" src="https://btn.social/v1/web.js"></script>
<script defer>
  function myCallback() {
    console.log('the btn.social SDK is ready!');
    btnsocial.onlogin(function (payload) {
      let { network, user, token } = payload;
      console.log(`user logged in via "${network}" provider`, { user, token });
    });
  }
</script>

Fully Customizable

Because these are your links, you may customize the CSS and HTML to your heart's content.

The web SDK only requires that <a> tags be used with the "https://login.btn.social/" address.
<a class="btn social github" aria-label="login with github" href="https://login.btn.social/{APPID}/github">
  <svg>...</svg>
  <span>Login with GitHub</span>
</a>

<a class="btn social twitter" aria-label="login with twitter" href="https://login.btn.social/{APPID}/twitter">
  <svg>...</svg>
  <span>Login with Twitter</span>
</a>

<style>
  .btn.social {
    cursor: pointer;
    position: relative;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    text-decoration: none;
    border-radius: 0.25rem;
    transition: all ease-in 300ms;
    border: 1px solid var(--c);
    background-color: white;
    padding: 0.6rem 1.2rem;
    text-align: center;
    margin: 0 0.25rem;
    color: var(--c);
  }
  .btn.social:hover {
    background-color: var(--c);
    color: white;
  }
  .btn.social.github {
    --c: #181717;
  }
  .btn.social.twitter {
    --c: #1DA1F2;
  }
  .btn.social span {
    margin-left: 0.5rem;
  }
  .btn.social svg {
    fill: currentColor;
    height: 20px;
    width: 20px;
  }
  @media screen and (max-width: 600px) {
    .btn.social span {
      display: none;
    }
  }
</style>

Configure "popup" Mode

Redirects are used by default. You may opt into the "popup" mode, which will house the OAuth workflow within a dialog window (if possible).

The dialog's dimensions are 500×600 pixels by default, but may be customized with the data-width and data-height script attributes for the Web SDK.

<a class="btn social twitter" href="https://login.btn.social/{APPID}/twitter">Login with Twitter</a>
<a class="btn social github" href="https://login.btn.social/{APPID}/github">Login with GitHub</a>

<!-- Enable "popup" mode via the <script> tag -->
<script async data-mode="popup" src="https://btn.social/v1/web.js"></script>

When using the npm package, you may programmatically call the btn.popup() method and customize the width and height options:

// Use "popup" mode via the "btn.social" package
import * as btn from 'btn.social';

/*
  HTML:
    <button class="btn social" data-network="twitter">Login with Twitter</button>
    <button class="btn social" data-network="github">Login with GitHub</button>
*/

const APPID = 'btn-social-appid';
$('.btn.social').on('click', async evt => {
  evt.preventDefault();

  let width = 500, height = 700;
  let provider = evt.target.getAttribute('data-network');

  if (provider === 'twitter') {
    height = 600;
    width = 400;
  }

  let { network, user, token } = await btn.popup(APPID, provider, { width, height });
  console.log(`user logged in via "${network}" provider`, { user, token });
});

Frequently Asked Questions

See the FAQ for a full list!
How is this different than other OAuth services?

Most services that offer Social SSO will save and manage your users’ data. While this may initially seem like a benefit, most applications soon outgrow the service due to latency and/or pricing constraints.

Put simply, when Service manages user data for you, you don’t own your users… they do. You’re forced to rely on Service for accessing and/or updating profile data. You’re also subject to their price hikes and artificial audience limits.

While quick to set up, it’s not uncommon for product teams to grow, only to discover that Service is charging thousands of dollars a month and holding (access to) your users hostage.

btn.social maintains the easy setup, but offers significantly more flexibility, predictable and transparent pricing, and never stands between you and your users.

How much does btn.social cost?

Your account is subscribed to a monthly plan which includes a fixed number of logins and has its own additive pricing. The minimum monthly payment is $5.00 USD, which includes 50,000 logins. Each additional 10,000 logins is $1.00 extra.

NameLoginsPriceLogins/$0.01
Hobby Plan100$0.00
Hobby Addl2,500$0.5050
Starter Plan50,000$5.00100
Starter Addl10,000$1.00100
Business Plan1,000,000$79.00126
Business Addl12,5000$1.00125
Enterprise Plan2,500,000$169.00148
Enterprise Addl22,500$1.00225

Example
In your first month, you have 42,000 logins. This costs $5.00.

In your second month, you have 65,000 logins. This costs $7.00 as the 50,000 logins from the Starter plan are used and you need two additional 10,000 packs to cover the remaining 15,000 requests.

In your third month, you have 1.1M logins. With the Starter plan, this would cost $110 (50k + 105×10k), but it only costs $87 with the Business tier (1M + 8×12.5k). We automatically upgrade your subscription plan to Business so that you pay the cheaper price.

btn.social computes the cost using all pricing tiers and selects the cheapest available automatically. This means that your subscription may periodically upgrade or downgrade pricing tiers — it’s because you’re always getting the best price!

Is there a free tier?

Yes! btn.social offers a Hobby Plan that includes 100 free logins every month... perfect for testing the waters!

Usage beyond the free tier is sold in chunks of 2,500 logins for $0.50.

Why do you need a credit card?

Even though btn.social offers a Hobby Plan that includes 100 free logins, we want to ensure that your applications are well-equipped for their growth.

We think it's a much more graceful experience to allow your 101st user to log into your application than to shut down all operations while users wait for you to enter a card. We've been there... It's awkward, embarrassing, and leaves users confused and/or frustrated.

But rest assured that btn.social will always give you the best price! If you have a viral month that costs $1.00, we'll automatically downgrade you to the Hobby Plan if you return to ≤ 100 logins in the next month.

We're flexible — and on your team!

Will I own my user data?

Yes! btn.social does not save anything about your users, which means we won’t — and cannot — get in the way of your application’s requests for your users’ data.

Your application decides how, when, and what is stored and accessed; not us!

Is this GDPR compatible?

Yes. We are private by design. We intentionally do not save anything about your users so that you do not have to worry about sharing personal information with a third party. btn.social simply facilitates the handshakes between your users and your OAuth providers.

How well does it scale?

btn.social will handle as much as you can throw at it! You can scale from zero to billions (or more) without issues, worries, or changes. You won’t even have to contact support to raise a quota!

How do I use an OAuth provider that isn't listed?

If you need a provider that isn’t currently available, please contact support so that we can add it ASAP!