Database Integrations

Automatically send user authentication data to your own database when users log in. Currently supporting Supabase (PostgreSQL) and Airtable (no-code) with more databases coming soon.

Privacy-First Architecture

EngagePlus never stores your user data. When a user authenticates, their profile information flows directly from the identity provider to your database — we just facilitate the connection.

How It Works

  1. Configure your database connection in the EngagePlus dashboard (Integrations tab)
  2. User authenticates via your EngagePlus widget (Google, Facebook, etc.)
  3. EngagePlus validates the authentication with the identity provider
  4. User data is sent directly to your configured database in real-time
  5. UPSERT logic automatically creates or updates the user record

No Manual Syncing Required

Unlike webhooks that require you to build an endpoint, database integrations work out of the box. Just provide your database credentials and we handle the rest.

Supabase

Supabase Integration

PostgreSQL database with instant REST API

Prerequisites

  • A Supabase account (free tier works perfectly)
  • A Supabase project created
  • Your Supabase service_role key (found in Settings → API)

Step-by-Step Setup

1

Create the auth_users Table

First, create a table in your Supabase database to store authentication data. Go to your Supabase project, open the SQL Editor, and run:

CREATE TABLE auth_users (
  id TEXT PRIMARY KEY,
  email TEXT,
  name TEXT,
  picture TEXT,
  provider TEXT,
  email_verified BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- Create indexes for common queries
CREATE INDEX idx_auth_users_email ON auth_users(email);
CREATE INDEX idx_auth_users_provider ON auth_users(provider);

-- Enable Row Level Security (optional but recommended)
ALTER TABLE auth_users ENABLE ROW LEVEL SECURITY;

-- Create policy to allow inserts (adjust as needed)
CREATE POLICY "Allow service role to insert" ON auth_users
  FOR INSERT
  TO service_role
  WITH CHECK (true);

Note: You can customize the table name and columns, but id must be TEXT to store the user's UUID from the identity provider.

2

Get Your Supabase Credentials

In your Supabase project, go to Settings → API and copy:

Project URL

https://your-project.supabase.co

service_role Key (secret)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

⚠️ Keep this key secret! It bypasses RLS policies.

3

Configure in EngagePlus Dashboard

Go to your EngagePlus Dashboard → Integrations → Databases and click "Add Database". Fill in:

  • Integration Name: Your choice (e.g., "Production User Database")
  • Database Provider: Supabase
  • Connection URL: Your project URL from step 2
  • Service Role Key: Your service_role key from step 2
  • Table Name: auth_users (or your custom table name)
  • Data Scope: Choose what data to send (see below)
4

Test the Integration

Click "Test Connection" in the dashboard. If the table doesn't exist, you'll see setup instructions. Once connected, authenticate a test user through your widget and verify the data appears in Supabase!

That's it! New users will automatically be added to your Supabase database, and existing users will be updated on subsequent logins.

Data Scope Options

Control exactly what user information is sent to your database:

UUID Only

Only sends the user's unique identifier (sub claim). Perfect for privacy-focused applications.

Data sent:

id, provider, created_at, updated_at

Include User Data (Recommended)

Sends basic profile information from the ID token. Most common option.

Data sent:

id, email, name, picture, provider, email_verified, created_at, updated_at

Include Provider Data

Sends all available claims from the identity provider's ID token. May include additional provider-specific fields.

Data sent:

All user data + provider-specific fields (locale, timezone, etc.)

UPSERT Behavior

EngagePlus uses UPSERT logic (INSERT or UPDATE) to handle user records:

First Login

If the user's id doesn't exist in your table:

INSERT a new record with all provided fields

Subsequent Logins

If the user's id already exists:

UPDATE the existing record with fresh data

Why UPSERT?

Users can change their email, name, or profile picture in their Google/Facebook account. UPSERT ensures your database always has the latest information without creating duplicate records.

Troubleshooting

"Table not found" error

Make sure you've created the table in Supabase (Step 1 above). The table name in your integration config must match exactly.

"Permission denied" error

Verify you're using the service_role key (not the anon key). The service_role key bypasses RLS policies.

Data not appearing in Supabase

1. Check the integration is set to "Active" in your dashboard

2. Verify the integration is listening to AUTH_SUCCESS events

3. Check your Supabase logs for any errors

4. Test with a fresh authentication (not an existing session)

email_verified is always FALSE

Make sure the email_verified column in your table is of type BOOLEAN (not TEXT). EngagePlus properly converts the value to a boolean.

Airtable

Airtable Integration

Spreadsheet-database hybrid with no-code UI

Perfect for Non-Technical Teams

Airtable combines the simplicity of a spreadsheet with the power of a database. Great for marketing, support, and operations teams who need to manage user data without SQL.

Quick Start

1

Get Your Base ID

Open your Airtable base and copy the Base ID from the URL:

https://airtable.com/appAbCd1234567890/tblXXX/viwYYY

The Base ID is the part that starts with "app" (17 characters total)

2

Create Personal Access Token

Visit airtable.com/create/tokens and create a new token with these scopes:

  • data.records:read
  • data.records:write

⚠️ Save the token immediately - you won't be able to see it again!

3

Create Your Table

In your Airtable base, create a new table with these fields:

Field NameAirtable TypeRequired
idSingle line text✅ Yes (Primary)
providerSingle line text✅ Yes
emailEmailOptional
nameSingle line textOptional
pictureURLOptional
email_verifiedCheckboxOptional
created_atDateOptional
updated_atDate✅ Yes

💡 Important: The "id" field must be set as the primary field in Airtable.

4

Configure in EngagePlus

Go to Dashboard → Integrations → Databases and add your Airtable configuration:

  • Base ID (from step 1)
  • Personal Access Token (from step 2)
  • Table Name (exact match)
  • Data Scope (what to sync)

Guaranteed Delivery

Just like Supabase, Airtable integrations have automatic retry logic (up to 5 attempts), complete event history, and manual resend for failed syncs.

Airtable Features

📊 Rich Views

  • Grid: Spreadsheet view
  • Gallery: Visual cards with user pictures
  • Calendar: Timeline of signups
  • Kanban: Organize by provider or status
  • Form: Collect additional user data

🔄 Automations

  • • Send Slack notification on new user
  • • Update CRM when user data changes
  • • Email team on enterprise signup
  • • Sync to other tools automatically
  • • No code required!

Troubleshooting Airtable

"Invalid Base ID" error

Base ID must start with "app" and be exactly 17 characters. Copy it from your Airtable base URL.

"INVALID_PERMISSIONS" error

Your Personal Access Token needs data.records:read and data.records:write scopes, and access to the specific base.

"Table not found" error

Table name is case-sensitive and must match exactly. Verify the name in Airtable matches your integration config.

"INVALID_VALUE_FOR_COLUMN" error

Field types in Airtable must match the data being sent:

  • email → Email field type
  • email_verified → Checkbox field type
  • picture → URL field type
  • created_at, updated_at → Date field type

Ready to Connect Your Database?

Start storing user authentication data in Supabase or Airtable today.