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
- Configure your database connection in the EngagePlus dashboard (Integrations tab)
- User authenticates via your EngagePlus widget (Google, Facebook, etc.)
- EngagePlus validates the authentication with the identity provider
- User data is sent directly to your configured database in real-time
- 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 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
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.
Get Your Supabase Credentials
In your Supabase project, go to Settings → API and copy:
Project URL
https://your-project.supabase.coservice_role Key (secret)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...⚠️ Keep this key secret! It bypasses RLS policies.
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)
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_atInclude 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_atInclude 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 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
Get Your Base ID
Open your Airtable base and copy the Base ID from the URL:
https://airtable.com/appAbCd1234567890/tblXXX/viwYYYThe Base ID is the part that starts with "app" (17 characters total)
Create Personal Access Token
Visit airtable.com/create/tokens and create a new token with these scopes:
data.records:readdata.records:write
⚠️ Save the token immediately - you won't be able to see it again!
Create Your Table
In your Airtable base, create a new table with these fields:
| Field Name | Airtable Type | Required |
|---|---|---|
id | Single line text | ✅ Yes (Primary) |
provider | Single line text | ✅ Yes |
email | Optional | |
name | Single line text | Optional |
picture | URL | Optional |
email_verified | Checkbox | Optional |
created_at | Date | Optional |
updated_at | Date | ✅ Yes |
💡 Important: The "id" field must be set as the primary field in Airtable.
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 typeemail_verified→ Checkbox field typepicture→ URL field typecreated_at, updated_at→ Date field type
Ready to Connect Your Database?
Start storing user authentication data in Supabase or Airtable today.