How to integrate Release0 with Supabase to create, update, and query database records in your chatbot agent
Integrate Supabase with Release0 to create dynamic, data-driven chatbot interactions using PostgreSQL database management. Learn how to fetch, create, update, and delete records in your agent dialogs.
Overview
Supabase is an open-source backend-as-a-service that provides a PostgreSQL database with real-time capabilities, authentication, and APIs. When integrated with a Release0 agent, it enables powerful, data-driven interactions that enhance the functionality and personalization of your automated experiences.
Advantages of Using Supabase with Release0 Agent
Connecting Supabase to your Release0 agent allows you to:
- Store and retrieve user data in a robust PostgreSQL database
- Create responsive flows with real-time database-driven logic
- Adapt dialogs based on stored user preferences and history
- Create new records (e.g., user registrations, form submissions)
- Read data for personalization and decision-making
- Update existing records based on conversation outcomes
- Delete entries when necessary
Example: Store user preferences and retrieve them in future conversations using
{{user.preference_id}}
.
This guide explains how to use the Supabase block to interact with your PostgreSQL tables in an Agent Dialog. You can perform full CRUD operations (Create, Read, Update, Delete) on your Supabase tables.
Setting Up Supabase Authentication
To connect Release0 with Supabase, you’ll need:
1. Supabase Project URL
Your project URL can be found in your Supabase dashboard under Settings > API. It follows this format:
2. Service Role API Key
You’ll need the service_role
key (not the anon
key) for full database access:
- Go to your Supabase dashboard
- Navigate to Settings > API
- Copy the service_role key under “Project API keys”
The service_role key has full access to your database. Keep it secure and never expose it in client-side code.
Available Actions
The Supabase block provides four main actions:
1. Create Row
Add new records to your database tables.
Required Fields:
- Table Name: The name of the table to insert into
- Fields: Key-value pairs for the data to insert
Optional Fields:
- Schema: Database schema (defaults to “public”)
- Response Mapping: Map returned data to variables
2. Get Rows
Retrieve records from your database tables with advanced filtering.
Required Fields:
- Table Name: The name of the table to query
Optional Fields:
- Schema: Database schema (defaults to “public”)
- Return Type: Choose “All”, “First”, “Last”, or “Random”
- Order By Column: Column to sort results
- Order Direction: “asc” (ascending) or “desc” (descending)
- Filter Conditions: Add WHERE conditions
- Select Columns: Specify which columns to return (defaults to ”*”)
- Limit: Maximum number of records to return
- Response Mapping: Map returned data to variables
3. Update Rows
Modify existing records in your database tables.
Required Fields:
- Table Name: The name of the table to update
- Filter Conditions: Conditions to identify which records to update
- Fields to Update: Key-value pairs for the data to update
Optional Fields:
- Schema: Database schema (defaults to “public”)
- Response Mapping: Map updated data to variables
4. Delete Rows
Remove records from your database tables.
Required Fields:
- Table Name: The name of the table to delete from
- Filter Conditions: Conditions to identify which records to delete
Optional Fields:
- Schema: Database schema (defaults to “public”)
- Response Mapping: Map deleted data to variables
Complete Workflow Example
Let’s create a customer support ticket system using Supabase integration.
Step 1: Create a Support Tickets Table
First, create a table in your Supabase database with these columns:
- id: Primary key (auto-increment)
- customer_name: Text
- customer_email: Text
- issue_type: Text
- description: Text
- status: Text (default: “open”)
- created_at: Timestamp (default: now())
- priority: Text (default: “medium”)
Step 2: Collect Customer Information
Create a Text Block to collect the customer’s information:
Step 3: Create the Support Ticket
Add a Supabase Block with the Create Row action:
Configuration:
- Table Name:
support_tickets
- Fields:
customer_name
:{{customer_name}}
customer_email
:{{customer_email}}
issue_type
:{{issue_type}}
description
:{{description}}
priority
:{{priority}}
status
:open
Response Mapping:
- Map “Row Created” to variable
{{ticket_data}}
- Map “Table Name” to variable
{{table_name}}
Step 4: Confirmation Message
Add another Text Block to confirm ticket creation:
Step 5: Ticket Status Lookup
Create a flow for customers to check their ticket status:
Text Block to collect ticket ID:
Supabase Block with Get Rows action:
- Table Name:
support_tickets
- Filter Conditions:
id
equals{{ticket_id}}
- Return Type: “First”
Response Mapping:
- Map “Rows Found” to variable
{{ticket_info}}
Status Display Block:
Step 6: Update Ticket Status (Admin Flow)
For support staff to update ticket status:
Supabase Block with Update Rows action:
- Table Name:
support_tickets
- Filter Conditions:
id
equals{{ticket_id}}
- Fields to Update:
status
:{{new_status}}
Best Practices
Security
- Always use the service_role key for server-side operations
- Implement Row Level Security (RLS) policies in Supabase
- Validate user inputs before database operations
Performance
- Use specific column selection instead of
SELECT *
when possible - Add appropriate indexes for frequently filtered columns
- Use pagination with LIMIT for large datasets
Error Handling
- Always include filter conditions for UPDATE and DELETE operations
- Test your database operations thoroughly before deployment
- Use Response Mapping to capture and handle operation results
Data Validation
- Validate required fields before database operations
- Use appropriate data types in your Supabase schema
- Implement constraints and default values in your database
Filter Conditions
When using filters in Get Rows, Update Rows, or Delete Rows actions, you can use various operators:
- Equals: Exact match
- Not Equals: Exclude exact matches
- Greater Than: Numeric/date comparisons
- Less Than: Numeric/date comparisons
- Contains: Text search within fields
- Starts With: Text prefix matching
- Ends With: Text suffix matching
- Is Empty: Check for null/empty values
- Is Not Empty: Check for non-null values
Response Mapping Options
Each action provides different response mapping options:
Create Row:
- Row Created: The newly created record
- Table Name: Name of the table
Get Rows:
- Rows Found: Array of matching records
- Table Name: Name of the table
- Rows Count: Number of records found
Update Rows:
- Updated Rows: Array of updated records
- Table Name: Name of the table
- Updated Count: Number of records updated
Delete Rows:
- Deleted Rows: Array of deleted records
- Table Name: Name of the table
- Deleted Count: Number of records deleted
Troubleshooting
Common Issues
- Authentication Errors: Ensure you’re using the service_role key, not the anon key
- Table Not Found: Verify table names are correct and case-sensitive
- Permission Denied: Check your RLS policies if enabled
- Row Level Security (RLS) Policy Violations: If you get an error like
"new row violates row-level security policy for table"
with a 401 Unauthorized status, you need to either:- Disable RLS for your table (go to Authentication > Policies in Supabase dashboard)
- Create appropriate RLS policies that allow your service_role key to perform operations
- For testing purposes, you can temporarily disable RLS by running:
ALTER TABLE your_table_name DISABLE ROW LEVEL SECURITY;
- Filter Errors: Ensure filter conditions use correct column names and data types
Debugging Tips
- Use the browser’s developer tools to inspect network requests
- Check Supabase logs in your dashboard for detailed error messages
- Test database operations directly in Supabase SQL editor first
- Verify your table schema matches the data you’re sending
Validation and Testing
Before deploying your agent:
- Test Each Operation: Verify Create, Read, Update, and Delete operations work correctly
- Validate Filters: Ensure filter conditions return expected results
- Check Response Mapping: Confirm mapped variables contain the correct data
- Test Error Scenarios: Verify graceful handling of invalid inputs or database errors
- Performance Testing: Test with realistic data volumes
With these configurations, your Release0 agent can perform sophisticated database operations using Supabase, creating dynamic and personalized user experiences.