Scrapers built on Intuned typically run via Jobs on a schedule. When a JobRun completes, you want that data sent somewhere for processing or persistence.The Supabase integration delivers scraped data to your Supabase database.
While this guide focuses on scraping, Supabase integration works for any Intuned Job—delivering Run results from any automation.
This guide covers two approaches for connecting Intuned with Supabase:
Consideration
Supabase Storage
Webhook
Delivery guarantee
Intuned guarantees file delivery
Your endpoint must handle failures
Reprocessing
Re-trigger database webhooks anytime
Not possible without re-running Jobs
Complexity
Requires storage + webhook setup
Simpler setup
Debugging
Inspect files in storage + logs
Check Edge Function logs
Recommendation: Use Supabase Storage for production workloads. Intuned guarantees results are written to your bucket, and you can always reprocess by re-triggering the database webhook.
Both approaches require a table to store the scraped data. In your Supabase SQL editor, run:
create table products ( id serial primary key, name text unique not null, price numeric not null, url text, sku text, intuned_run_id text not null, created_at timestamptz default now());
Best for: Reliability and reprocessing capabilityIntuned writes results to Supabase Storage, then a database trigger invokes an Edge Function to process each file. This approach guarantees data delivery and lets you reprocess files if needed.
After triggering the Job, check your Supabase products table. As files are written to storage, the database webhook fires and your Edge Function processes each one.
Best for: Real-time processing with simple setupData flows directly from Intuned to your Edge Function, which inserts it into your database. Simpler to set up, but you’ll need to handle failures in your Edge Function.For more webhook options, see the Webhook integration.
After deployment, go to the Details tab of your Edge Function. You’ll need the Endpoint URL and anon key for the Intuned configuration.
Select Show anon key to reveal the key value.
Make sure Verify JWT with legacy secret is turned off in the Function Configuration section. This setting should be disabled for the webhook to work correctly.
Store your Supabase anon key in environment variables rather than hardcoding it.
For advanced webhook options like retry handling and authentication, see the Webhook integration.
4
Trigger the Job
Dashboard
TypeScript SDK
Python SDK
In the Jobs tab, find your Job
Select Actions > Trigger
import { IntunedClient } from "@intuned/client";const intunedClient = new IntunedClient({ workspaceId: "your-workspace-id", apiKey: process.env["INTUNED_API_KEY"] ?? "",});async function run() { const result = await intunedClient.project.jobs.trigger( "ecommerce-scraper-quickstart", "supabase-webhook" ); console.log(result);}run();
from intuned_client import IntunedClientimport oswith IntunedClient( workspace_id="your-workspace-id", api_key=os.getenv("INTUNED_API_KEY", ""),) as ic_client: result = ic_client.project.jobs.trigger( project_name="ecommerce-scraper-quickstart", job_id="supabase-webhook" ) print(result)
5
Verify the results
After triggering the Job, check your Supabase products table. As each Run completes, Intuned sends the results to your Edge Function, which inserts them into your database.
Cause: The Edge Function isn’t receiving webhook requests from Intuned. Common reasons include incorrect endpoint URL, missing authentication headers, or the function not being deployed.Solution: Verify the endpoint URL matches your Edge Function URL exactly. Check that apikey and Authorization headers are set correctly with your Supabase anon key. Confirm the function is deployed in your Supabase dashboard. Ensure Verify JWT with legacy secret is turned off.
Cause: Intuned can’t write files to your Supabase Storage bucket. This typically happens with incorrect S3 credentials, missing path-style URL configuration, or wrong bucket name.Solution: Regenerate S3 access keys in Supabase and update your Job configuration. Enable Force path-style URLs in the Job sink settings. Verify the bucket name and endpoint match your Supabase project exactly.
Cause: The database webhook isn’t firing when files are added to storage. The webhook may be configured for the wrong table or event type.Solution: Verify the webhook targets the storage.objects table. Ensure the Insert event is selected. Check Edge Function logs for errors. Make sure the Edge Function is selected as the webhook target.
Cause: The Edge Function is receiving data but can’t insert it into your database. Common issues include table schema mismatch, unique constraint violations, or missing database permissions.Solution: Verify your products table matches the schema from the “Create a products table” step. Check if products with the same name already exist (the upsert should handle this, but verify the onConflict clause). Ensure the Edge Function uses the service role key for database access.
Cause: For S3-compatible sinks, Intuned automatically pauses the Job when it fails to write data to storage.Solution: Check the Job status in the Intuned dashboard (shows as “Paused”). Fix the underlying credential or configuration issue. Update the Job configuration if needed, then select Resume from the dashboard. The Job continues from where it paused.