> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs/supabase-destination-schema.md).

# Why do my Supabase destination columns not match the docs?

The [Supabase destination](https://docs.tryterra.co/health-and-fitness-api/integration-setup/setting-up-data-destinations/supabase) uses both SQL tables and a storage bucket. Three tables are created automatically (users, data payloads, other payloads).

The data-payloads table references the full JSON via a column named `payload_id`. (Older docs showing `payload_url` are a display issue being corrected, use `payload_id`.) The complete JSON is stored in the bucket via its URL. Keep the full JSON in storage and build your own slim tables with only the fields you need.

**A `400` with PostgREST error `PGRST204` is your Supabase endpoint rejecting the insert before it reaches the table, not a Terra problem.** Common causes:

* Incoming JSON fields that don't exist in your table.
* Missing `NOT NULL` columns.
* An Edge Function not using the service role key.
* Type mismatches.

Log the payload, check Supabase API logs, and align your schema to the current Terra payload.

Each dev ID has its own destination config. To route test data to a dev Supabase project:

{% stepper %}
{% step %}
Switch to your testing dev ID.
{% endstep %}

{% step %}
Go to [Connections](https://github.com/tryterra/api-faqs/blob/main/dashboard/connections/README.md).
{% endstep %}

{% step %}
Add Supabase, authorise, and pick the dev project (disconnect and redo if the wrong project is connected).
{% endstep %}
{% endstepper %}
