User & Audience Management

Your users and your mailing list, kept apart and linked.

App users, workspace members and marketing contacts are separate records, so deleting a newsletter contact never touches anyone's account. Your app stores what it learns about a user as attributes, and you group contacts into smart lists that email campaigns and workflows can send to.

Your app is an organization in BuildBase. Your users sign in and work inside workspaces - one per team or customer.

You set up

In the console and the SDK

  • The details you want to remember about each user, like onboarding done
  • Lists of people to email, by hand or by filter
  • An import of your existing mailing list, from a CSV

You get

For you and your team

  • A record of every user, their devices and their activity
  • Lists that keep themselves up to date for campaigns
  • The power to sign out a device or block an account

The people tables you would otherwise design

Accounts, attributes and marketing contacts are already modelled and connected to email and workflows. You decide what to store.

Users and Contacts, Apart

Your app's users and your mailing-list contacts are separate records, so deleting a contact never deletes an account. Link them when they are the same person.

Remember Anything

Save details your app learns about a user - onboarding done, plan interest - and read them back anywhere in your app.

See When It Changed

Every change to those details is recorded, so you can see when a user finished onboarding, not just that they did.

Lists That Update Themselves

Build a list from filters - tags, details, who opened a campaign - and it refreshes every hour.

Bring Your List

Import a CSV, match its columns, skip or update duplicates, and export any filtered list back out.

Look After Accounts

See a user's sessions, devices and emails, sign out one device, or block the account without deleting it.

Attributes from a hook

useUserAttributes() reads and writes the signed-in user's fields, and every write lands in the history.

components/onboarding-gate.tsxTSX
import { useUserAttributes } from '@buildbase/sdk/react';

export function OnboardingGate({ children }: { children: React.ReactNode }) {
  const { attributes, loading, updateAttributes } = useUserAttributes();

  if (loading) return null;
  if (attributes.onboarded) return <>{children}</>;

  return (
    <button
      onClick={() =>
        updateAttributes({
          onboarded: true,
          plan_interest: 'scale',
          seats_estimate: 25,
        })
      }
    >
      Finish setup
    </button>
  );
}

Frequently Asked Questions

What people ask about Users.

Do my users see this?

No. This is your team’s view of the people using your app and of your mailing list. Your users only see their own profile.

What is the difference between a user and a contact?

A user has an account in your app. A contact is someone on your mailing list. They are separate records, so deleting one never deletes the other, and you can link the two when they are the same person.

How do I store details about a user?

From your app with useUserAttributes(), or in the console. Define the keys in the console first so lists and workflows can filter on them.

Can I import my existing users?

You can import contacts for your mailing list from a CSV. There is no bulk import of user accounts.

Start remembering things about your users

Define your attributes in the console, then read and write them with useUserAttributes(). When you are ready to email your existing list, import it from a CSV.

7-day free trialNo credit card requiredCancel anytime